从今年年初开始,我把主力编辑器从VS Code换成了Cursor。
Cursor是一个基于VS Code的AI编程编辑器,内置了GPT-4和Claude等大模型,能帮你写代码、改代码、解释代码、debug。用了半年之后,我已经完全离不开它了。
但我发现,很多人用Cursor,只是把它当作一个"自动补全工具",按Tab接受建议,这样只能发挥Cursor不到30%的能力。
这半年,我一直在探索Cursor的进阶用法,总结了一些最佳实践。用了这些方法之后,我的开发效率提升了至少一倍。这篇文章,就来分享这些经验。
Cursor是什么
先简单介绍一下Cursor。
Cursor是一个AI原生的代码编辑器,基于VS Code开发,所以VS Code的插件和快捷键在Cursor上都能用。它的核心功能是AI编程助手,内置了多个大模型,包括GPT-4、Claude 3.5 Sonnet等。
Cursor的主要功能有:
- Tab补全:写代码的时候,AI会自动给出补全建议,按Tab接受
- Chat:和AI对话,让它帮你写代码、解释代码、debug
- Edit:选中代码,让AI帮你修改
- Composer:让AI帮你生成或重构多个文件
- Agent模式:AI可以自动读取文件、执行命令、修改代码,完成复杂的任务
这些功能,配合得当,能大大提升开发效率。
基础用法的误区
在讲进阶技巧之前,先说说很多人用Cursor的几个误区。
第一个误区,是只用Tab补全。
很多人用Cursor,就是写代码的时候按Tab接受AI的补全。这样确实能提升一些效率,但Cursor的能力远不止于此。Tab补全只是最基础的功能,Chat、Edit、Composer、Agent这些功能,才是Cursor的核心。
第二个误区,是提示词太简单。
很多人用Chat功能的时候,只是简单地说"帮我写一个登录接口"或者"这段代码有什么问题"。这样的提示词太模糊,AI给出的回答也很泛泛,质量不高。
好的提示词,应该包含足够的上下文和明确的要求,这样AI才能给出高质量的回答。
第三个误区,是不管理上下文。
Cursor的Chat功能,是有上下文限制的。如果你在一个对话里聊了很多东西,后面的回答质量会下降,因为上下文被前面的内容占满了。
所以,要学会管理上下文,及时开启新的对话,或者用@文件的方式精准引用需要的文件。
第四个误区,是完全相信AI的输出。
AI生成的代码,不一定是正确的,有时候会有bug,有时候会有安全漏洞,有时候会不符合项目的编码规范。所以,AI生成的代码,一定要仔细审查,测试通过之后才能提交。
进阶技巧一:提示词工程
第一个进阶技巧,是提示词工程。
好的提示词,是用好Cursor的关键。一个好的提示词,应该包含以下几个部分:
第一部分,是角色设定。告诉AI它是谁,应该以什么身份来回答。比如:"你是一个资深的Go后端工程师,有十年开发经验,精通微服务架构和高并发系统设计。"
第二部分,是任务描述。清楚地告诉AI你要做什么。比如:"请帮我实现一个用户登录接口,支持手机号和密码登录,返回JWT token。"
第三部分,是具体要求。列出你对代码的具体要求。比如:
- 使用Gin框架
- 密码用bcrypt加密
- JWT用HS256算法,有效期24小时
- 输入参数要校验
- 错误处理要完善
- 遵循项目现有的编码规范
- 添加必要的注释
第四部分,是上下文。告诉AI相关的上下文信息,比如项目结构、使用的库、现有的代码等。可以用@文件的方式,让AI读取相关的文件。
第五部分,是输出格式。告诉AI你希望的输出格式。比如:"请先给出实现思路,然后给出完整的代码,最后说明需要注意的地方。"
一个完整的提示词示例:
你是一个资深的Go后端工程师,有十年开发经验,精通Gin框架和微服务架构。
请帮我实现一个用户登录接口,支持手机号和密码登录,返回JWT token。
具体要求:
1. 使用Gin框架,遵循项目现有的分层架构(handler -> service -> repository)
2. 密码用bcrypt加密,校验时用bcrypt.CompareHashAndPassword
3. JWT用HS256算法,有效期24小时,secret从配置文件读取
4. 输入参数要校验,手机号格式、密码长度
5. 错误处理要完善,返回统一的错误格式
6. 遵循项目现有的编码规范,参考@user.go和@auth.go的写法
7. 添加必要的注释
请先给出实现思路,然后给出完整的代码,最后说明需要注意的地方。这样的提示词,AI给出的回答质量会比简单的"帮我写一个登录接口"高很多。
进阶技巧二:上下文管理
第二个进阶技巧,是上下文管理。
Cursor的AI模型,有上下文窗口的限制。比如GPT-4的上下文窗口是128K token,Claude 3.5 Sonnet是200K token。看起来很大,但如果项目文件很多,或者对话很长,很快就会占满。
所以,要学会管理上下文。
第一个方法,是精准引用文件。
Cursor支持用@文件名的方式,让AI读取指定的文件。比如,你可以说"参考@user.go的写法,帮我写一个@order.go的类似接口"。这样,AI只会读取你指定的文件,而不是整个项目,节省上下文。
第二个方法,是及时开启新对话。
当一个对话聊了很久,或者已经完成了一个任务,应该及时开启新的对话。这样,新的对话不会被之前的内容干扰,AI的回答质量会更高。
第三个方法,是用代码片段代替整个文件。
如果只需要AI参考某个函数或者某段代码,可以直接把代码片段复制到对话里,而不是让AI读取整个文件。这样更精准,也更节省上下文。
第四个方法,是利用Composer的多文件功能。
如果需要同时修改多个文件,可以用Composer功能,指定需要修改的文件,让AI一次性处理。Composer会自动读取这些文件的内容,在上下文中管理,比在Chat里一个个文件处理更高效。
进阶技巧三:善用Edit功能
第三个进阶技巧,是善用Edit功能。
Edit功能,是Cursor最实用的功能之一。选中一段代码,按Cmd+K(Mac)或者Ctrl+K(Windows),就可以让AI帮你修改选中的代码。
很多人用Edit的时候,只是简单地说"优化这段代码"或者"修复bug"。但实际上,Edit功能可以做得更精细。
第一个用法,是指定修改方向。
比如,你可以说:"给这段代码添加错误处理","把这段代码重构为函数","给这段代码添加单元测试","优化这段代码的性能"。明确告诉AI你想要什么样的修改,而不是泛泛地说"优化"。
第二个用法,是保留原有逻辑。
在修改代码的时候,可以告诉AI:"保持原有逻辑不变,只优化代码结构",或者"不要改变函数的输入输出,只优化内部实现"。这样可以避免AI在修改的时候,无意中改变了代码的行为。
第三个用法,是逐步修改。
对于复杂的代码,不要一次让AI做太多修改。可以分步骤来:第一步先重构函数结构,第二步添加错误处理,第三步添加注释。每一步都检查一下,确保修改正确,再进行下一步。
第四个用法,是对比修改。
Edit功能会显示修改前后的对比,你可以逐行查看,接受或者拒绝每一处修改。不要直接全部接受,要仔细检查每一处修改,确保是你想要的。
进阶技巧四:Agent模式的正确用法
第四个进阶技巧,是Agent模式的正确用法。
Agent模式是Cursor最新、最强大的功能。在Agent模式下,AI可以自动读取文件、执行终端命令、修改代码,完成复杂的任务,不需要你一步步指导。
比如,你可以说:"帮我给这个项目添加一个用户注册功能,包括数据库迁移、接口、前端页面"。然后AI就会自动分析项目结构,读取相关文件,生成代码,甚至执行命令来测试。
但Agent模式也不是万能的,用不好可能会搞乱你的项目。这里有一些使用建议。
第一,先用在小任务上。
不要一上来就让Agent做整个项目的大改动。先从简单的任务开始,比如"帮我给这个函数添加单元测试","帮我修复这个bug"。熟悉了Agent的行为之后,再尝试更复杂的任务。
第二,明确范围。
在让Agent执行任务之前,明确告诉它修改的范围。比如:"只修改user目录下的文件,不要动其他目录",或者"不要修改配置文件和数据库迁移文件"。这样可以避免Agent改到不该改的地方。
第三,随时监控。
Agent执行任务的时候,要随时监控它的操作。Cursor会显示Agent的每一步操作,包括读取了什么文件、执行了什么命令、修改了什么代码。如果发现它走偏了,及时停止,纠正方向。
第四,仔细审查。
Agent完成任务之后,一定要仔细审查所有的修改。用git diff查看所有改动,确保每一处修改都是正确的、必要的。不要因为是AI生成的就盲目相信。
第五,在Git分支上使用。
Agent模式可能会修改很多文件,建议在一个新的Git分支上使用。这样如果改坏了,可以随时回滚,不会影响主分支。
进阶技巧五:自定义规则和快捷键
第五个进阶技巧,是自定义规则和快捷键。
Cursor支持自定义规则,可以在设置里配置AI的行为。比如,你可以设置:
- 默认使用的模型(GPT-4还是Claude)
- Tab补全的触发方式(自动还是手动)
- AI生成代码的风格(比如总是添加注释,遵循特定的编码规范)
- 自定义提示词模板(比如代码审查模板、单元测试模板)
自定义规则可以让AI更符合你的习惯,减少重复的提示词输入。
另外,Cursor的快捷键也很重要。熟练使用快捷键,能大大提升效率。常用的快捷键有:
- Cmd+K:Edit选中的代码
- Cmd+L:打开Chat
- Cmd+I:打开Composer
- Tab:接受补全
- Esc:拒绝补全
- Cmd+Shift+L:切换模型
可以根据自己的习惯,自定义快捷键,让操作更流畅。
进阶技巧六:工作流优化
第六个进阶技巧,是优化整个工作流。
用好Cursor,不只是用好某个功能,而是要优化整个开发工作流。我总结了一个高效的工作流:
第一步,需求分析。在写代码之前,先和AI讨论需求。把需求告诉AI,让它帮你分析实现方案、可能的问题、需要的技术选型。这一步,能帮你理清思路,避免走弯路。
第二步,代码生成。方案确定之后,让AI帮你生成代码。用Chat或者Composer,给出详细的提示词,让AI生成完整的代码。这一步,要注意上下文管理和提示词质量。
第三步,代码审查。AI生成代码之后,仔细审查代码。检查逻辑是否正确、是否有bug、是否符合编码规范、是否有安全漏洞。可以让AI自己审查代码,说"请审查这段代码,找出潜在的问题"。
第四步,测试。代码审查通过之后,让AI帮你写单元测试。用Edit功能,选中函数,让AI生成对应的测试用例。然后运行测试,确保代码正确。
第五步,重构。代码能跑通之后,可以让AI帮你重构。优化代码结构、消除重复、提升性能、添加注释。重构之后,再跑一遍测试,确保没有改变行为。
第六步,文档。最后,让AI帮你写文档。包括接口文档、代码注释、README等。AI生成的文档,可能需要人工调整,但能节省很多时间。
这个工作流,把AI融入到了开发的每个环节,能大大提升效率。但要注意,每个环节都需要人工参与和审查,不能完全依赖AI。
实际案例:用Cursor开发一个接口
最后,分享一个实际案例,看看我是怎么用Cursor开发一个接口的。
需求:开发一个用户修改密码的接口。
第一步,需求分析。我在Chat里说:"我要开发一个用户修改密码的接口,需要验证旧密码,设置新密码,返回成功或失败。请帮我分析实现方案,需要注意哪些安全问题。"
AI给出了方案:验证旧密码、新密码强度校验、密码加密、防止暴力破解、记录操作日志等。
第二步,代码生成。我用@引用了现有的用户相关文件,然后说:"参考@userhandler.go和@userservice.go的写法,帮我实现修改密码接口。要求:旧密码验证、新密码长度至少8位、包含大小写字母和数字、用bcrypt加密、返回统一格式。"
AI生成了handler、service、repository层的代码。
第三步,代码审查。我仔细看了AI生成的代码,发现有一个问题:没有校验新密码和旧密码不能相同。我用Edit功能,选中service层的代码,说:"添加校验,新密码不能和旧密码相同,如果相同返回错误。"
AI修改了代码,添加了校验。
第四步,测试。我选中service层的函数,用Edit说:"给这个函数写单元测试,覆盖正常情况、旧密码错误、新密码太弱、新旧密码相同等场景。"
AI生成了单元测试,我运行测试,全部通过。
第五步,重构。我看了一下代码,觉得错误处理可以更统一。我用Edit说:"把错误处理统一用项目的errors包,参考@errors.go的写法。"
AI修改了代码,统一了错误处理。
第六步,文档。我让AI帮我写接口文档,包括请求参数、响应格式、错误码等。
整个过程,大约用了20分钟。如果不用Cursor,可能需要一个小时。而且,AI生成的代码质量不错,测试覆盖也比较全。
注意事项和局限性
最后,说说使用Cursor的注意事项和局限性。
第一,代码安全。AI生成的代码,可能有安全漏洞,比如SQL注入、XSS、权限绕过等。一定要仔细审查,特别是涉及用户输入、权限控制的代码。
第二,代码质量。AI生成的代码,有时候会有冗余、不符合项目规范、性能不佳等问题。不要盲目接受,要根据项目的实际情况调整。
第三,版权问题。AI生成的代码,可能涉及版权问题。特别是在商业项目中,要注意AI生成代码的版权归属,避免法律风险。
第四,隐私问题。Cursor会把代码发送到AI服务器进行处理。如果是涉密项目或者有保密要求的项目,要谨慎使用,或者用Cursor的企业版(支持私有部署)。
第五,不要过度依赖。AI是助手,不是替代品。核心的架构设计、业务逻辑、技术选型,还是要靠人来决策。AI可以帮你写代码,但不能帮你思考。
第六,持续学习。AI工具发展很快,Cursor也在不断更新功能。要持续学习新功能,探索新用法,让工具更好地服务于自己。
写在最后
Cursor是我这两年用过的最强大的开发工具。它不是简单地帮你写代码,而是改变了整个开发工作流。
但工具只是工具,关键还是使用工具的人。同样的Cursor,有的人用了效率翻倍,有的人用了反而更慢。区别在于,有没有掌握正确的用法,有没有形成好的工作流。
这篇文章分享的六个进阶技巧:提示词工程、上下文管理、善用Edit、Agent模式、自定义规则、工作流优化,是我这半年总结的经验。希望能帮你更好地使用Cursor,提升开发效率。
最后想说的是,AI编程是未来的趋势。与其抗拒,不如拥抱。学会用好AI工具,让它成为你的得力助手,你会发现,编程可以更高效、更有趣。
愿每个程序员,都能在AI的帮助下,写出更好的代码,做出更好的产品。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录