Back to Blog

我在用 Cursor 写管理后台时,靠这 3 个文件把 AI 的胡说八道减少了 70%

2026/9/23 min read

我在用 Cursor 写管理后台时,靠这 3 个文件把 AI 的胡说八道减少了 70%

上周重构管理后台,Cursor 生成的登录接口错得离谱:它把 NextAuth v5 的配置和老版 v4 混为一谈,还给我写了一个直接在组件里查库的函数。我测了三次,平均少错 2 行——但前提是,我给它塞对了上下文。

很多人以为 AI 编程慢是因为推理速度,其实不是。瓶颈在上下文管理。项目越大,AI 越容易“幻觉”,因为它根本分不清哪些是规范,哪些是它自己瞎编的。别信它说“已理解架构”——它根本没读过你的 README。我试过,它连自己刚生成的 hook 名都记混。

我的解法很简单:在项目根目录建三个 Markdown 文件。就三个。

第一个文件:技能指令

docs/skills/auth.md。内容不长,就这几条:

# Auth Skill

- 必须用 NextAuth v5,别给我整 v4 的 legacy 写法
- 所有 API 路由先调 auth() 验证 session
- 错误统一返回 { code: string, message: string }
- 禁止在组件内直接访问 Prisma,必须走 service 层

以前每次让 AI 写登录逻辑,我得重复说“用 NextAuth”“别查库”“返回格式是这样”……现在,只要我在 Chat 里 @docs/skills/auth.md,它就会严格按这个来。这不是什么高级技巧,就是人工给 AI 设了个 Linter,只不过管的是语义,不是语法。

上周我删掉了 3 个重复粘贴的 config 片段,context token 从 12K 降到 4.8K。AI 生成代码的错误率肉眼可见地下降了。

第二个文件:记忆档案

docs/memory/architecture.md。记的是那些“一旦忘了就得重看文档”的东西。

比如:

“状态机只有 three 种状态:idle / submitting / error。别加任何新状态。”

“敏感字段(password、secret)永远不要出现在前端响应里,哪怕是在调试日志中。”

我在 Cursor 的系统提示词里加了这一行:

@docs/memory/architecture.md

这样每次新建对话,AI 都会先读一遍这个文件。它不会主动去翻,但只要你引用了,它就会遵守。 我吃过亏:有一次没沙箱,AI 把 .env.local 生成进 PR 了——从那以后,凡是涉及密钥或数据库的操作,我都先在隔离环境里跑一遍再生成。

还有个“车辙记录”文件,叫 docs/memory/known-pitfalls.md,专门记 AI 犯过的错:

“AI 经常把 useSession() 和 getSession() 混用。前者在客户端,后者在 server 端。别让它乱用。”

这些记录不是给人类看的,是给 AI 看的。每次它再犯同样的错,我就加一条进去。改完代码顺手更新技能文档,比事后 debug 快得多。

第三个文件:元策略

这个我没写进文件,是我给自己定的规矩:不要一次性把整个代码库喂给 AI。

Cursor 有个“符号搜索”功能,我每次只导入当前编辑文件依赖的接口定义。比如写一个用户列表页面,我只 @User.ts、@api/user.ts,不 @整个 pages/ 目录。噪音少了,AI 反而更准。

另外,每次 AI 生成代码不符合预期,我不直接接受或拒绝,而是分析原因,更新对应的 skill 文件或 memory 文件。这种迭代式优化,让 AI 随着项目推进越来越“懂”你的代码风格——不是它变聪明了,是你帮它记住了该记住的事。

写在最后

现在我的 .claude/skills 目录比 src 还乱——但它真管用。AI 编程不是靠模型多强,而是靠你怎么管住它的上下文。三个文件,花了半小时建,省了我三天 debug。

如果你也用 Cursor(内置 Claude)、GitHub Copilot、或本地运行的 Ollama + Code-LLaMA,不妨试试这套方法。别指望它一上来就懂你,你得教它。

相关阅读