cursor 使用技巧和一些坑

36 阅读7分钟

用 Cursor 也已经一年多了,最近正在深度用它写一个 PPT 转数字人培训的系统(马上要出来了)

遇到一堆坑,也摸索出一些技巧,给大家分享下。


1. 写之前一定要先写 Rule

不然出来的代码没法看。

尤其是 Python,代码太灵活了,没有强制的分层约束。Cursor 写起来很容易所有逻辑都堆在一个文件里,不分层,不考虑扩展性。

我之前没在意这点,写了两周回头一看——一个 main.py 2000 多行,全是函数和逻辑混在一起。

后来学乖了,开始用 .cursor/rules/ 目录下的规则文件来约束它。给它一个明确的结构要求,比如分层(service/handler/model)、命名规范、注释风格。

效果立竿见影,代码可读性直接上一个台阶。

下面是我的 rules,仅供参考

python

---
alwaysApply: true
---

你是一个用于15年工作经验的Python专家,请严格按照以下规范写代码:

### 代码规范
1. 必须分层结构(controller/service/utils)
2. 必须使用类型注解(typing)
3. 必须有异常处理
4. 必须有日志(logging)
5. 不允许写在一个文件
6. 每个函数必须有docstring
7. 命名要清晰(禁止 a,b,c)
8. 代码要可扩展(不要写死)
9. 代码要考虑可维护性
10.系统依赖要放在requirements.txt里面维护
11.配置要放在.env里面
12.系统启动要用虚拟环境
13.保持项目结构清晰,遵循模块化原则
### 解决问题时
全面阅读相关代码文件,理解所有代码的功能和逻辑。
分析导致错误的原因,提出解决问题的思路。
与用户进行多次交互,根据反馈调整解决方案。
在整个过程中,始终参考@Python官方文档,确保使用最新的Python开发最佳实践

【输出要求】
1. 给出完整项目结构
2. 每个文件单独展示
3. 代码可直接运行


2. 别让它一次改太多东西

Cursor 最大的坑之一,是它改文件特别"勤快"。

你可能只是想改一个函数,结果它顺便把旁边三个文件也改了一遍,还都改得不太对。

说白了,它上下文窗口大,容易"联想过度"。

我的经验是:一次只提一个需求。让它做一件事,改完确认没问题了,再提下一个。

尤其是涉及重构的时候,千万别说"帮我把这个模块重构下",这种模糊指令出来的结果基本是灾难。


3. 充分利用 Rules 目录

Cursor 支持在 .cursor/rules/ 下放规则文件,.mdc 格式。

这个功能很多人忽略了,其实非常好用。

你可以针对不同类型的项目、不同的技术栈,写不同的规则文件。Cursor 在处理对应文件时会自动参考这些规则。

规则写清楚了,输出质量完全不一样。

规则里可以写:

  • 项目结构要求
  • 代码风格规范
  • 输出格式要求
  • 工作流程约定

4. 给它足够的上下文

Cursor 幻觉多不多,和你给它的上下文质量直接相关。

上下文给得少,它就靠"猜",猜出来的东西自然不准。

有用的上下文:

  • 项目结构截图或描述
  • 相关代码文件路径
  • 报错信息完整粘贴
  • 你之前是怎么想的/尝试过什么

没用的上下文:

  • 太大段的代码(它会截断)
  • 和任务无关的历史对话
  • 太模糊的需求描述

学会喂上下文,是用好 Cursor 最重要的技巧。


5. 给 Cursor 试错的机会

很多人用 Cursor 的心态是"一步到位",提一个需求就要完美结果。

但 AI 不是这样工作的。

它需要迭代。你提一个需求,它给一个版本,你看,指出哪里不对,它再改。

这个过程比你想的快多了,比你自己写可能还快。

所以别怕让它改。改个两三版是常态,这是正常的交互节奏,不是它不行。


6. 陷入"死亡螺旋"

这是 ai 助手的通病

让他改了一个地方,它改出了一些问题,反复推理反复改,token 烧了一堆,代码越改越乱,最后面目全非。

我的做法是:每完成一个能跑通的版本,就提交一个 commit

不用等代码完美,只要功能跑通、没有明显问题,就 commit 一下。commit message 写清楚这次做了什么。

这样万一后面改乱了,直接 git reset 回上一个稳定版本,重新来。

另外 Cursor 也支持 "Continue and revert" 的操作模式,改出问题的时候可以回退,配合 commit 使用效果更好。

养成小步提交的习惯,关键时刻能救你一命。


7. Agent 超时的处理方法

Cursor Agent 模式偶尔会遇到超时问题,界面提示:

很多人在这里卡住,不知道怎么办。

我总结了几个有效方案:

方案一:拆分问题

超时很多时候是因为任务太大,Cursor 消化不过来。把问题拆小,分步提问,减少单次请求的信息量。

方案二:换个简单问题测试

先问一个简单的问题,比如"你好",看能不能正常回答。

  • 如果能回答,说明连接没问题,是当前任务太重。去掉图片、去掉附件文件,只用纯文本试试。
  • 如果也不能回答,说明是连接本身的问题。

方案三:重试或新开对话

点击 Try again,或者直接新开一个对话。有时候是偶发的网络问题,重试就好了。

方案四:重启 Cursor

这是官方提供的标准方案:

  1. 完全关闭 Cursor
  2. 修改项目文件夹的名称(加个后缀,比如 my-project-v2
  3. 重新打开 Cursor

听起来玄学,但实测有效。


9. 新开后会丢失历史对话?

首先 Cursor 官方是鼓励拆分任务的,根据任务多新开对话,这样模型回答更智能,也更省 Token。

同时,可以通过如下方式引用历史对话:在对话框输入 @p,选择 Past Chats 即可!


10. 为啥不用 Claude Code?

可能有人要问:Claude Code 那么强了,你咋还在用 Cursor?

说两个真实原因。

第一,Cursor 改前端页面太方便了。

直接截图丢给它,标个圈说"这里改一下",它就能理解我的意思。比起写文字描述,截图更直接,出错概率更低。前端页面这种视觉类的东西,截图比代码更说明问题。

第二,我买的 Cursor 账号便宜,而且很耐用。

说白了就是性价比。这东西好用,能解决问题,够用了。

工具没有最好,只有最适合。Claude Code 有它的优势,Cursor 也有 Cursor 的场景。选哪个,看你手里有什么,以及你要解决什么问题。


总结

Cursor 不是银弹,用好它需要配合一些方法:

  1. 先写 Rule,约束比修复便宜
  2. 一次做一件事,减少它"联想过度"
  3. 充分利用 Rules 目录,不同项目不同规则
  4. 给足够的上下文,减少幻觉
  5. 接受迭代,改两三版是正常的
  6. 小步提交 commit,防止死亡螺旋,有回滚点
  7. 超时不要死磕,拆分任务、重试、重启 Cursor
  8. 新开对话不怕丢,用 @p 引用历史对话
  9. 选工具看场景,Cursor 截图改前端 + 性价比,真香

工具始终是工具,用法对了,效率翻倍。用法不对,就是给自己挖坑。