Cursor使用指南

构建索引

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个解决方法

  1. 在agent中多次对话,让他逐步矫正问题
  2. 对于明确的规则和逻辑,在prompt中加上"严格按照"的话术,
  3. 如果添加"严格按照"的话术后还是出现幻觉和忽略,那就有可能是上下文内容过多,建议自行先拆开生成任务,分多次对话窗口实现。

行内对话框

选中代码后ctrl/cmd+k,注意这里建议选择gpt-4o-mini这个模型,代码块的修改90%的场景gpt-4o-mini都是胜任,出现修改结果不理想的情况下再切换claude模型。

因为cursor的收费模式是按高级模型调用次数收费的,因此行内对话框建议默认改成gpt-4o-mini,减少高级模型调用次数。

最佳实践

1、mermaid 流程图驱动开发

代码迭代的时候,可以让大模型分析完代码后输出mermaid流程图,开发基于流程图调整逻辑,再把修改后的流程图以prompt的方式给到大模型,让大模型按照流程图修改代码,修改过程准确度非常高。

例如:

  1. 我让大模型帮我分析某个vue文件的逻辑,并输出流程图。
  1. 得到流程图代码后,复制到mermaid.live,可以在网页上实时修改流程图逻辑。
  1. 将修改后的流程图代码写到notePads中,并详细描述流程图修改的分支需要实现什么逻辑
  1. 最后在对话框中引入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(项目完成)

步骤描述:

  1. 整理项目需求文档

  2. 让cursor根据项目需求文档生成流程图代码

  3. 审计流程图代码是否合理

    1. 合理:执行步骤4
    2. 不合理:重新修改流程图,让cursor根据流程图优化需求文档(回到步骤2)
  4. 让cursor将项目需求拆分成多个任务,得到需求任务markdown文档。

  5. 在开发需求任务文档添加开发步骤、开发要求、业务逻辑说明

  6. 将每个任务分成多个NotePads,每个NodePads对应一个新窗口Agent。

  7. 每个Agent输出代码后都要再次输出详细逻辑流程图,用于代码审计

  8. 每个Agent都完成开发任务后,如果需要Agent和Agent间上下文关联,进行联合修改。

    a. 是:使用@Summarized Composers 让两个对话内容关联,执行高阶业务组合修改

    b. 否:到步骤9

  9. 审计代码、代码单元测试、功能验证,完成后git commoit

  10. 使用@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

相关推荐
软件技术NINI21 分钟前
html css 网页制作成品——HTML+CSS非遗文化扎染网页设计(5页)附源码
前端·css·html
fangcaojushi22 分钟前
npm常用的命令
前端·npm·node.js
阿丽塔~34 分钟前
新手小白 react-useEffect 使用场景
前端·react.js·前端框架
鱼樱前端1 小时前
Rollup 在前端工程化中的核心应用解析-重新认识下Rollup
前端·javascript
m0_740154671 小时前
SpringMVC 请求和响应
java·服务器·前端
加减法原则1 小时前
探索 RAG(检索增强生成)
前端
禁止摆烂_才浅2 小时前
前端开发小技巧 - 【CSS】- 表单控件的 placeholder 如何控制换行显示?
前端·css·html
烂蜻蜓2 小时前
深度解读 C 语言运算符:编程运算的核心工具
java·c语言·前端
PsG喵喵2 小时前
用 Pinia 点燃 Vue 3 应用:状态管理革新之旅
前端·javascript·vue.js
鹏仔工作室2 小时前
vue h5实现车牌号输入框
前端·javascript·vue.js