Windsurf使用技巧分享

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

善用rules配置

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

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

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

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

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

text 复制代码
技术栈:
	-	框架: 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大致是这样的:

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

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

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

适当使用提示词技巧

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

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

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

相关推荐
Leweslyh2 小时前
物理信息神经网络(PINN)八课时教案
人工智能·深度学习·神经网络·物理信息神经网络
love you joyfully2 小时前
目标检测与R-CNN——pytorch与paddle实现目标检测与R-CNN
人工智能·pytorch·目标检测·cnn·paddle
该醒醒了~2 小时前
PaddlePaddle推理模型利用Paddle2ONNX转换成onnx模型
人工智能·paddlepaddle
小树苗1932 小时前
DePIN潜力项目Spheron解读:激活闲置硬件,赋能Web3与AI
人工智能·web3
凡人的AI工具箱2 小时前
每天40分玩转Django:Django测试
数据库·人工智能·后端·python·django·sqlite
大多_C2 小时前
BERT outputs
人工智能·深度学习·bert
Debroon3 小时前
乳腺癌多模态诊断解释框架:CNN + 可解释 AI 可视化
人工智能·神经网络·cnn
反方向的钟儿3 小时前
非结构化数据分析与应用(Unstructured data analysis and applications)(pt3)图像数据分析1
人工智能·计算机视觉·数据分析
Heartsuit3 小时前
LLM大语言模型私有化部署-使用Dify的工作流编排打造专属AI搜索引擎
人工智能·dify·ollama·qwen2.5·ai搜索引擎·tavily search·工作流编排
剑盾云安全专家3 小时前
AI加持,如何让PPT像开挂一键生成?
人工智能·aigc·powerpoint·软件