这周,Cursor 的主设计师 Ryo Lu 在 X 上亲自分享了一条关于如何正确使用 Cursor 的实践帖,并强调了一个核心理念:
使用得当 = 快速、干净的代码
使用不当 = 你会在「AI 意大利面代码」里清理一整周
以下是他的12 条建议,总结得非常实用👇,同时,我看了网上的一个解释,也很好,也一起整理过来了
(解释来源:https://piedpay.medium.com/deep-interpretation-of-cursor-chief-designers-12-golden-rules-f5d45b518d8c)。
一、正确使用 Cursor 的方法
1、设定 5-10 条清晰的项目规则 开始前先用 /generate rules
给项目设定清晰结构和约束,帮 Cursor 明确框架。
a、操作方式: 使用 /generate rules
自动生成,或手动设定 5–10 条约束(如技术栈、编码规范等)。
b、关键点:
cursor/
中存放设计文档,帮助 AI 理解全局架构例如:禁止使用 var
,可设定 "强制使用 ES6 语法",避免 AI 自行发挥
2、提示要具体,像写 Mini Spec 一样指明使用的技术栈、行为逻辑与限制条件。模糊的提示 = 模糊的代码。
a、结构公式: 技术栈 + 行为要求 + 限制条件示例对比:
模糊提示:写一个登录功能
精确提示:使用 React+TypeScript 实现 OAuth2.0 登录组件,不依赖第三方库,按钮需支持暗黑模式
3、逐个文件处理,细分任务一次处理一个文件,生成 → 测试 → 评审,分块进行更有效率。
策略: 每次只处理一个文件,生成 → 测试 → 评审 → 下一步 示例: 构建电商系统,从 "购物车组件" 单独开发开始
4、先写测试,再生成代码写好测试并锁定,直到代码全部通过测试为止。
测试驱动开发(TDD):给 AI 套上紧箍咒
手动写测试(如 Jest 单元测试) 让 Cursor 补代码直到测试全部通过 错误信息直接反馈给 AI 修复
5、始终手动评审并修复有问题的输出修正后告诉 Cursor 这些是"正解",以利后续生成更准。
原则: 修完 bug 后用 @fixed
注释告诉 AI 正确做法
示例: 如果 AI 忘记为 API 添加认证头,修复后添加:"所有 API 必须包含 JWT 鉴权头"
6、使用 @file
、@folder
、@git
来聚焦范围精准定位代码上下文,让 Cursor 不跑偏。
命令:
@src/components
限定修改范围@git#main
对比主分支变更@file:utils.js
修 utils 时避免误伤其他模块
7、将设计文档和 checklist 放在 .cursor/
文件夹中提供完整上下文,AI Agent 会"知道接下来该做什么"。
做法: 把架构图放在 .cursor/docs
,并随代码更新及时维护
8、错了别废话,直接改 Cursor 从实际修改中学得最快,胜过文字解释。
真相: AI 从你手动修改中学习的速度是文字解释的 10 倍
示例: 重写低效的排序算法并附注释:"优先使用 quicksort,禁用 bubble sort"
9、用对话记录持续迭代回头更新旧的 prompt,无需重头开始。
历史记录:你的第二大脑,建议:
使用 /history
调取旧对话常用提示语整理成模板复用(如代码风格规范)
10、有意识地选择模型
Gemini:高精准度 - 算法实现
Claude:理解更广泛 - 创意型任务(UI/文案)
11、遇到不熟悉的栈,贴上文档链接并要求 Cursor 逐行解释错误及修复方法。
操作: 贴上官方文档,逐行解释报错 示例:
@https://xxxx/docs
解释 useEffect 的依赖更新规则
12、大项目建议让 Cursor 过夜 index 完成再通过限制上下文范围来提速、降噪。
预索引 + 限定上下文,策略:
项目 index 预处理让 AI 充分掌握结构 使用 @scope:core
等关键词聚焦核心模块,提升响应速度
二、一个比喻:把 Cursor 当作「聪明但初级的实习生」
只要你给它明确方向,它能飞得很远。 但如果你对它「放任自流」,你只会得到一团AI 意大利面代码。
正如 Cursor 团队所言:
"AI 编程的终极形态,是人类负责战略,AI 负责战术。"
附赠一个其他网友的使用心得:
总结起来一句话就能说清楚:多写文档少聊天。
在使用Cursor的时候,我更倾向于人机协作开发而不是让你当甩手掌柜。你需要给Cursor提供必要的指导,从而让它顺着你的思路来做开发。你的脑子里面要有这个系统的开发路线和架构,你需要知道系统由哪些部分组成,每个部分需要怎么做。软件开发是系统设计+编码。让Cursor去做编码工作,而不是去做设计工作。
不要相信网上那些完全不懂代码的人纯靠文本描述就做出复杂功能的说辞,要不就是他们嘴里的复杂功能其实是简单功能,要不就是他在吹牛。
你应该多写文档,通过文档来描述你的需求。这样Cursor以后的每次修改都会注意不违背你的需求文档。聊天窗口一般是告诉Cursor应该使用哪个文档来进行开发。尽量不要在聊天窗口里面提需求。
没有评论:
发表评论