构建索引
Cursor实际上一个内置了RAG的AI智能体,默认情况下首次加载项目会自动构建索引,日常开发过程中也会自动添加新增文件,但是如果临时要拉入其他项目的文件夹,需要手动点一次Resync Index重建索引。
Rules
Cursor的rules可以理解成如何描述智能体角色。例如前端开发者使用Cursor时,可以通过rules让Cursor定位成一名精通特定技术栈的前端专家,并按照你的给定的规则来回答和编写代码。
全局rules
全局rules或作用在每一次prompt,因此全局rules只能填入最通用的规则,比如"所有回答内容都要是中文","每一次思考都输出逻辑流程图"
Project rules
Project rules是针对项目自身的规则,添加project rules后会在项目的根目录创建.cursor/rules文件夹,每一条rules都会在rules文件夹内生成一份.mdc文件,文件内容是markdown。
规则文件中的auto Attach是基于globs路径规则,当引入的上下文和输出文件命中路径规则才是触发此rules。基于这一思路,用户在创建rules的时候,可以根据不用的文件类型定制不同的规则,这样有利于提高Prompt时的准确率。
rules建议用英文写,目前能力最强的claude 3.7模型对英文Rules识别精准度最高。rules文件可以通过@ 添加文件
目前网上有开源的rules范本:github.com/PatrickJS/a...
0.47更新内容
0.47将rules分为以下4种类型
- Always: 全局rules,所有请求都会参与
- Auto attached: 文件触发类rules,主要用于代码规范
- Agent requested:智能体任务描述,主要内容包括智能体角色、工作内容、处理步骤、返回要求
- Manual:手动rules,需要再对话框中手动引入才生效的规则。可以简单理解成临时任务需要的rules,比如特殊的语法糖,特殊的逻辑处理方式等
NotePads
NotePads是cursor 0.45添加的feature功能,未来有可能废弃,也有可能变成别的方案
NotePads主要用于增强上下文和整理长Prompt,编写方式和rules一致。因此可以理解为他是一份临时rules,NotePads同样可以通过@添加文件。 在对话框中,使用@ 添加到对话上下文,
使用场景
- 当需要cursor生成复杂和逻辑链条较长的代码时,一般都需要通过多次prompt不断修正大模型的理解,但是会导致单次对话内容过多,容易让大模型产生幻觉,这个时候就可以把当前每一次修成的结果都先保存到NotePads。整理完成后新开对话框,引用notePads让大模型一次生成所有代码。
- 日常需求开始,可以将Api文档和需求描述写成一份notePads,这样就可以让大模型生成业务代码的时候,根据nodepads的接口关系直接生成逻辑代码。
Tab
Tab操作是Cursor的一个亮点交互(尤其是Vim使用者!!太爽了!),开发过程中,按tab建使用代码建议,每一次tab后都会自动预测下一次可能需要tab的地方,再按一次tab就会跳转到预测的地方。
Agent/Ask
功能介绍
Agent模块主要用于多文件生成/修改的场景,需要尽可能提供清晰的prompt和足够的上下文,建议单个Agent对话窗口不要超过20次对话,20次以上容易出现幻觉,所以使用的时候需要先拆分好任务,不同的任务用不同的Agent窗口执行。
Ask模块主要用于方案咨询和问答解读,通常用于分析项目代码,生成业务流程图,优化项目文档和配合@docs快速查找官方内置文档内容和@web参考第三方网页,
- 默认快捷键:ctrl/cmd + I
- 拖拽文件/文件夹到对话框作为上下文
- 可以复制图片,或者点击图片图标选择图片
- 使用@添加上下文/文档/历史对话/notePads/git提交等
-
使用/ 添加上下文便捷操作
- Reset Context: 重置当前上下文文件
- Disable iterate on Lints: enable/disable 自动修复Lint问题,如果代码的类型关系比较混乱,建议关闭
- Add Open Files to Context: 将所有打开的文件添加到上下文
- Add Active Files to Context: 将当前窗口活跃的文件添加到上下文
-
使用# 添加文件,文件列表按照最新打开时间排序
- 选中代码或终端信息,ctrl/cmd + L 添加到对话框
使用建议
Agent模式下,需要用户灵活运用NotePads、项目md文档和#Files引用来丰富prompt的上下文。遇到复杂的步骤,可以先使用chat模式整理长prompt到NotePads,整理完毕后新开窗口最对话框中引入Notepads,并要求大模型严格按照nodepads生成代码。
Agent模式下使用大模型时,多多少少会有自动总结prompt的行为,会出现生成代码过程中没按到你的要求,这里有3个解决方法
- 在agent中多次对话,让他逐步矫正问题
- 对于明确的规则和逻辑,在prompt中加上"严格按照"的话术,
- 如果添加"严格按照"的话术后还是出现幻觉和忽略,那就有可能是上下文内容过多,建议自行先拆开生成任务,分多次对话窗口实现。
行内对话框
选中代码后ctrl/cmd+k,注意这里建议选择gpt-4o-mini这个模型,代码块的修改90%的场景gpt-4o-mini都是胜任,出现修改结果不理想的情况下再切换claude模型。
因为cursor的收费模式是按高级模型调用次数收费的,因此行内对话框建议默认改成gpt-4o-mini,减少高级模型调用次数。
最佳实践
1、mermaid 流程图驱动开发
代码迭代的时候,可以让大模型分析完代码后输出mermaid流程图,开发基于流程图调整逻辑,再把修改后的流程图以prompt的方式给到大模型,让大模型按照流程图修改代码,修改过程准确度非常高。
例如:
- 我让大模型帮我分析某个vue文件的逻辑,并输出流程图。
- 得到流程图代码后,复制到mermaid.live,可以在网页上实时修改流程图逻辑。
- 将修改后的流程图代码写到notePads中,并详细描述流程图修改的分支需要实现什么逻辑
- 最后在对话框中引入nodepads,让Agent执行。
2、基于文档管理开发计划
明确需求后,工作开始前先梳理需求,对于工作量比较大的任务,最好将需求保存在md文件中或者NotePads,方便回溯和记录进度,记录进度可以让cursor将工作内容补充到需求md文件中。
以下是一个标准的开发流程:
流程图:
markdown
flowchart TD
A[1.整理项目需求文档] --> B[2.生成流程图代码]
B --> C{3.审计流程合理性?}
C --> |3a.合理| D[4.拆分需求任务]
C --> |3b.不合理| E[修改流程] --> B
D --> F[5.添加开发步骤/要求]
F --> G[6.分解为多个NodePads/Agent]
G --> H[7.Agent开发代码+生成逻辑流程图]
H --> I{8.需要跨Agent修改?}
I --> |8a.是| J[使用@Summarized Composers联合修改]
J --> K[9.代码审计与测试]
I --> |8b.否| K
K --> L[10.生成迭代文档]
L --> M(项目完成)
步骤描述:
-
整理项目需求文档
-
让cursor根据项目需求文档生成流程图代码
-
审计流程图代码是否合理
- 合理:执行步骤4
- 不合理:重新修改流程图,让cursor根据流程图优化需求文档(回到步骤2)
-
让cursor将项目需求拆分成多个任务,得到需求任务markdown文档。
-
在开发需求任务文档添加开发步骤、开发要求、业务逻辑说明
-
将每个任务分成多个NotePads,每个NodePads对应一个新窗口Agent。
-
每个Agent输出代码后都要再次输出详细逻辑流程图,用于代码审计
-
每个Agent都完成开发任务后,如果需要Agent和Agent间上下文关联,进行联合修改。
a. 是:使用@Summarized Composers 让两个对话内容关联,执行高阶业务组合修改
b. 否:到步骤9
-
审计代码、代码单元测试、功能验证,完成后git commoit
-
使用@git 选中本次需求开发commit,让cursor生成项目迭代文档。
3、模型选择场景和省钱技巧
Agent模式: claude 3.5 、 claude 3.7
Chat模式: claude 3.5 、 claude 3.7、gpt-4o-mini(配合@docs和@web使用)
行内模式:gpt-4o-mini