Cursor 不是聊天机器人,是我现在改代码时的第二双眼睛。这篇不讲安装,只讲一次我真实遇到的情况:一个让我头疼两天的 bug,Cursor 怎么在 20 分钟内帮我把代码理顺。
一个 bug,我手动修了两天都没修利索。丢给 Cursor,20 分钟搞定。不是它多神,是我终于学会怎么「喂」它了。
![]()
上周那个登录模块,接口字段改了三次,注释没同步,测试一半是红的。我想加个新字段,结果前端、后端、类型定义三个地方字段名对不上。这种 bug 最烦:不是不会改,是不敢乱改,你改一处不知道另外两处会不会崩。
![]()
简单还原一下当时的混乱。后端返回的字段叫userToken,前端类型里写的是token,测试文件里直接用了auth。三个名字,指向同一个东西。
// types.ts interface AuthResponse { token: string; expiresAt: number; } // api.ts const res = await fetch('/api/login'); const data = await res.json(); localStorage.setItem('token', data.userToken); // 字段名对不上 // auth.test.ts expect(result.auth).toBeDefined(); // 又一个名字
这就是小项目长大的通病。单独看每段都没错,合起来就炸。我一开始只在 api.ts 里把data.userToken改成data.token,结果测试继续红,因为测试还在找result.auth。
![]()
Cursor 真正有用的第一步,不是打开聊天框,是Open Folder把整个项目目录丢进去。它会把整个项目先读一遍、记在脑子里,之后你说的每句话,它都知道上下文在哪。
![]()
▲ Cursor Open Folder 后,整个项目进入 AI 上下文
我选中api.ts里的那段代码,按Cmd/Ctrl + K,然后输入:
@types.ts @auth.test.ts 这个项目的登录接口返回字段叫 userToken,但前端类型里叫 token,测试里叫 auth。帮我把三处命名统一成 token,保持现有功能不变。先告诉我你打算怎么改,再给出 diff。
注意我加了两个@。这就是 Cursor 和普通 AI 最大的区别:它真的能读你引用的文件,而不是靠我粘贴进去的那几行。它会看到types.ts里的接口定义,也会看到auth.test.ts里在测什么。
![]()
▲ 用 @ 引用多个项目文件,让 Cursor 看到完整上下文
它回复的思路是:先把types.ts改成userToken对齐后端,然后把api.ts和auth.test.ts一起改成userToken。我看完说不对,业务上应该统一叫token,于是它立刻换方案,把后端返回映射成token,三处改完。我只负责确认方向,剩下的 diff 它出。
![]()
![]()
▲ Cursor 一次性改完三处命名:types/api/test 统一对齐
// types.ts interface AuthResponse { - token: string; + userToken: string; expiresAt: number; } // api.ts - const data = await res.json(); - localStorage.setItem('token', data.userToken); + const data = await res.json() as AuthResponse; + localStorage.setItem('token', data.userToken); // auth.test.ts - expect(result.auth).toBeDefined(); + expect(result.token).toBeDefined();
三处一起改,没有遗漏。如果我手动翻,大概率会漏掉测试文件里那个result.auth。Cursor 的好处不是写得比我快,是它不会累,也不会漏。
Cursor 最强的不是生成新代码,是把你已经写烂的代码重新对齐。
![]()
同一个项目,我不想每次都解释一遍代码风格。于是在项目根目录放了.cursorrules,以后 Cursor 每次写代码都会先读它。
# .cursorrules(可直接复制进你的项目根目录) 你是一位熟悉 TypeScript 的资深后端工程师。 - 命名:采用 camelCase,接口字段优先对齐后端返回 - 流程:复杂改动先给出修改思路,确认后再给 diff - 测试:涉及字段变更时,同步更新对应的单元测试 - 注释:不解释显而易见的代码,只写“为什么”
放上这个文件后,类似的字段对齐问题它基本能一次性处理到位,不用我反复强调。
![]()
这些不是炫技,是我真实天天在用的。按场景挑着说就行:
1. 重构这段代码,保持功能不变,只提升可读性。 2. 先解释这个 bug 为什么会出现,再给出最小的改法。 3. 给这个函数补三个边界情况的单元测试。 4. 把这个回调地狱改成 async/await,并处理错误分支。
顺序不重要,重要的是先给上下文(@文件名)再提要求。上下文给得越全,它越不会胡说。
![]()
用了三个月,该翻的车都翻过。它真不是万能的。
第一,你没给全上下文,它就会自信地编一个变量名出来。解决方法就是@文件,别偷懒粘贴。
第二,它生成的代码一定要 review。有次它把类型改对了,却漏了个空判断,我上线后才发现页面白屏。从此我生成的代码必 review,一条都不信。
第三,免费版每月 50 次高级请求(GPT-4o 级别)很快用完。你是职业开发、每天高频用,Pro 基本躲不掉。只是周末写点小项目,免费版完全够。
![]()
▲ Cursor 免费版额度与升级入口
![]()
别一上来就让它重写整个项目。找个你最近懒得修的小 bug,把项目 Open Folder 进去,选中那段代码,按 Cmd/Ctrl + K,输入「帮我修这个 bug,先解释原因再给 diff」。你会比我说的更快感受到它的价值。
下篇我准备写 Cursor 的 Agent 模式:怎么让它自己读报错、自己改文件、自己跑测试。不过 Agent 模式新手最容易翻车,绳子拴不好反而更乱,下篇重点讲怎么把绳子拴稳。先记一句:你把文件@进去了,却没说清想让它做什么,它就会自作主张。先说目标,再给上下文,顺序别反。
· 以上 ·
关于作者
叶蔚卿,90 后,穿梭互联网二十年,团广网创始人,现为自雇者,热爱写作,研究AI 领域。
本公众号专注解读技术与文明博弈,带你见证数字世界的全新纪元。
#Cursor #AI编程 #代码助手 #.cursorrules
叶蔚卿
数据来源:Cursor 官方公开定价与功能说明、作者真实项目实测整理(2026.08.14)
☆ 星标「砚数」,第一时间收到推送
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.