Appearance
我用了Cursor一年多,从最初的月抛选手到现在的精打细算,踩了不少坑。这篇文章把我积累的实战技巧全部分享出来,没有废话,只有可操作的策略。
一、上下文控制——省Token最大的杠杆
反常识的事实:你消耗的token里,80%不是模型思考用的,而是上下文塞进去的。
❌ 反例:让Agent自由扫描项目
让Agent"帮我改一下用户注册表单的邮箱验证"——Agent开始自动分析项目结构,翻遍路由、控制器、模型、组件、样式文件。为了改一个邮箱验证规则,读了几十个无关文件。
💸 浪费:8000~15000 token
✅ 正确做法
| 做法 | 说明 |
|---|---|
| 用@精准引入 | 能@函数不@文件,能@文件不依赖自动扫描 |
| 用Cmd+K | 选中代码后直接修改,上下文天然就是选中部分 |
| 用.cursorignore | 把node_modules、dist、*.lock排除掉 |
❌ 反例:一个对话用到底
一个Chat从周一开到周五,经历了47轮。到第47轮,你只是想加一个简单的排序功能,但对话上下文已经塞了几万token的历史。
💸 浪费:第47轮一个简单问题,光历史上下文就多消耗3000~5000 token。开新对话只需300~500 token描述背景。
Cursor每轮都携带完整历史,第10轮的成本约是第1轮的10倍。
二、Prompt工程——一次问对,减少来回
结构化描述替代段落
❌ 反例:200字自然语言啰嗦描述
✅ 正确做法:
用户列表搜索
- 搜索字段:用户名、邮箱、手机号、注册时间范围
- 分页:20条/页
- 排序:注册时间↓、用户名↑
- UI:搜索框+搜索按钮+重置按钮
- 状态:loading/空结果/错误
NE(no explanation,只给代码)三个实战技巧
| 技巧 | 说明 |
|---|---|
| 建立个人缩写词典 | 在.cursorrules里定义:NE=no explanation、TS=add TypeScript types |
| 指定输出范围 | 末尾加"只输出需要修改的行,不要解释" |
| 用@Docs替代粘贴 | 让Cursor按需检索,只读相关部分 |
三、模式选择——按任务匹配成本
从省到贵排序:Tab < Cmd+K < Chat < Plan < Agent
| 任务类型 | 推荐模式 | 预估消耗 |
|---|---|---|
| 改变量名、格式化、加注释 | Tab补全/Cmd+K | 极低 |
| 单文件逻辑修改 | Chat + 精准@ | 低 |
| 架构讨论、方案调研 | Plan(不写代码) | 低~中 |
| 跨文件复杂功能 | Agent | 高 |
四、黄金工作流——Ask → Plan → Edit
核心原则:用Ask对齐理解,用Plan对齐方向,用Agent执行确定的事。越晚进入Agent,浪费的token越少。
❌ 反例:还没想清楚就开干
想把用户认证从JWT换成Session,直接在Agent里输入需求。Agent做到一半突然发现,Session方案需要Redis,项目环境不支持。
💸 直接浪费:20000~30000 token,时间成本2小时变4小时。
✅ 正确姿势
Step 1 — Ask:"当前JWT改成Session有哪几种方式?需要什么基础设施?"
→ 发现需要Redis,环境不满足
→ 直接毙掉方案,零token浪费
Step 2 — Ask:"不换Session,JWT有什么改良方案?"
→ 得到答案:加Refresh Token + 黑名单机制
Step 3 — Plan:列出需要改的文件和步骤 → 审查确认
Step 4 — Agent:按计划执行修改Ask + Plan阶段用了不到1000 token,避免了20000+ token的错误执行。
五、任务拆解策略——三段式工作流
❌ 反例:一次让模型写完整功能
✅ 三段式工作流:
| 轮次 | 内容 | Token |
|---|---|---|
| 第一轮 | 生成数据库模型→审查→确认 | ~5000 |
| 第二轮 | 生成API接口(基于已确认的模型) | ~4000 |
| 第三轮 | 生成前端页面(基于已确认的API) | ~4000 |
| 第四轮 | WebSocket+邮件通知补充 | ~3000 |
总消耗:16000~18000 vs 单次完整功能25000~40000
六、Rules与系统提示优化
❌ 反例:.cursorrules写了200行
💸 200行 ≈ 1000~1500 token/轮对话。假设每天30轮,一个月浪费约90万token。
新版.cursor/rules/目录结构
.cursor/rules/
├── typescript-rules.mdc # 只在编辑.ts文件时注入
├── python-rules.mdc # 只在编辑.py文件时注入
├── frontend-rules.mdc # 只在编辑frontend/目录时注入
└── global-rules.mdc # 始终注入七、复用与缓存
错误修复时只贴报错
❌ 差:把整个600行文件@进去问为什么报错
✅ 好:
报错:TypeError: Cannot read property 'id' of undefined
位置:src/api/user.ts line 87
相关代码:
const userId = user.id ← 第87行
user来自:listUsers()的返回值八、Token消耗速查
| 操作 | 典型消耗 | 一句话原则 |
|---|---|---|
| Tab补全 | 几乎免费 | 小改动用Tab |
| Cmd+K选中修改 | 200~500 | 单函数修改用它 |
| Chat + 精准@ | 500~2000 | 单文件逻辑用Chat |
| Plan模式 | 500~2000 | 先计划再执行 |
| Agent模式 | 5000~20000+ | 复杂的、确定的再用 |
九、核心心智模型
把模型当成一个记忆力极强但注意力有限的同事。你给他的材料越精准,他的注意力越集中,结果越好,消耗越少。堆砌上下文不等于给更多帮助,往往适得其反。
| 原则 | 说明 |
|---|---|
| 上下文是最大变量 | Agent自动扫描虽方便,但可能引入大量无关代码 |
| 对话长度复利递增 | 第10轮成本约是第1轮的10倍 |
| Rules是隐形消耗 | 精简到只留真正改变行为的规则 |
| Agent是最后的手段 | 单文件改动用Cmd+K足够 |
