Windsurf使用技巧分享

最近使用了差不多半个月的Windsurf,使用下来的感觉就是这玩意血强,不比cursor差。之前体验过免费的cursor,但completion的次数很快就用完了,体验的确很好,但20美刀的价格的确需要仔细考虑考虑,后来就开始体验Windsurf,只有cursor一半的价格(不知道啥时候会变成15),但也依然保持着优秀的体验,因此今天我就写几点关于我使用Windsurf的一些心得。

善用rules配置

Windsurf应该是上周左右推出的rules功能,之前没有这个最明显的麻烦之处在于,对话开始如果不特别说明,回复都是英文,因此如果只是想让它说中文的话,可以直接在rules里面配置让其说中文,这个rules可以理解成System Prompt,因此一个优秀的rules可以大大的提升模型的输出效果。这个功能在cursor上早就推出了,网上也有一个仓库收集了很多优秀的配置: https://github.com/PatrickJS/awesome-cursorrules ,各位可以自行去看看有没有适合自己的。

我这边对于rules配置的建议是这样的,首先要明确角色背景,比如我是个Java开发工程师,因此我会告诉它:

角色背景:
    -   您是一名经验丰富的资深 Java 开发架构师。
    -   始终坚持 SOLID 原则、DRY 原则、KISS 原则和 YAGNI 原则。
    -   遵循 OWASP 最佳实践。
    -   善于将任务分解为最小单元,并以循序渐进的方式解决问题。
    -   使用中文回答我的问题。

这一段也是来自于刚刚仓库里面的推荐,主要可以让模型提供提供最佳实践的代码,避免一些低质量的代码影响整体的代码效果。

此外,rules可以设置global的或者workspace的,对于workspace的rules,可以给予其技术栈以及目录结构的说明,举个例子:

技术栈:
    -   框架: Java Spring Boot 2,Maven,Java 8
    -   依赖: MybatisPlus, Lombok, PostgreSQL driver, Redis, ShardingJDBC

项目背景:xx引擎系统,主要用来解决。。。

项目结构:
- common 通用依赖包,core和starter都会依赖此模块
    - constants 常量类
    - mq 消息传输定义的对象
- core 核心业务开发模块
    - entity 数据库实体
    - mapper 数据库mapper
    - service  服务类及接口
        - db  基于Mybatis Plus 框架生成的简单service及其实现
        - biz  业务具体实现的服务
    - controller  RestController层
    - mq 消息处理的处理器
    - filter 一些过滤器
    - config 系统配置
- starter 给予其他业务系统的springboot starter
    - config starter的配置
    - client  一些用于请求当前项目封装好的客户端

明确这些背景知识的好处在于,可以让其更加针对于此项目来做代码设计,尤其是经常会跨文件修改时,能避免找错文件位置或者用了不适合当前技术栈的解决方案。

良好的代码风格

在新项目的开发过程中,尽量做好代码架构的初步设计,可以使用一些设计模式或架构设计思想来构建整体的开发风格,举个例子,比如说你用模版模式,那你最终要实现的实际上是基于模版提供的几个方法的实现,相当于把业务进行了逻辑上的拆分,那么当你实现其中一个业务上的代码后,那么实现其他继承该模板类的子类时,你可以将已经实现好的代码作为参考代码给予模型,具体操作就是选中你要提供给模型的参考代码,然后点击chat,右侧的输入框就会出现引用,这样就类似于few shot的方式让其回答的效果更加准确,实际prompt大致是这样的:

请你参考(选中代码的引用)来完成(要修改的代码的引用):
(额外可以补充一点需求内容)

如果你不知道怎么设计更好的代码架构时,你也可以直接通过对话让其给你建议,这不仅是对于使用Windsurf的建议,也是现在有AI辅助时代的程序员新的开发思路,AI就是跟你一起思考的小黄鸭。

这里的代码风格包括但不限于设计模式,还有良好的命名规范、合适的模块拆分、准确的代码注释等,对于模型理解当前仓库的代码都有很大的帮助。

适当使用提示词技巧

在Windsurf中,对于提示词的要求相对于直接使用模型对话已经低了不少,但高效的提示词依然还是能带来更好的反馈。比如上面使用的few shot,在实际业务开发中逻辑接近的代码其实很多,因此能用上的时候尽量用上,避免模型放飞自我写出其他风格的视线。

此外很重要的一个技巧就是思维链,就算Windsurf在对话过程中我们能看出它也是在一步步的思考并解决问题,但如果你已经有很清晰的思路,不妨多打几行字把你的思路告诉它,这比它自己跑偏了你再纠正效率要高得多。

最后想说的是,作为程序员,一定要跟上当前AI的时代,既不要听信什么AI能取代程序员,也不要排斥使用AI工具,因此对于AI要保持一个客观的态度,多使用一段时间就能差不多感知到模型能力的边界,自然就能很好的利用好它来提升自己工作的效率。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇