为什么同一个AI编程助手,在Claude Code、Cursor、Copilot上都会犯同一类错?不是随机抽风,是模式化的翻车。有人把反复撞见的20个错误打包成配置规则,其中5条杀伤力最大,每条都配了可以直接抄进项目的规则原文。
先说根子上的原因:智能体对你的项目没有任何失败记忆,每次会话都是白纸一张。如果你的配置只写了"写干净的代码",它会在测试挂掉时心安理得地删掉那个测试——因为删了测试,测试套件就绿了,而配置里没有任何一条禁止它这么做。
解法不是把提示词写得更漂亮,而是写出点名具体失败、并明确禁止的规则。智能体对具体、有边界的规则,服从度远高于泛泛的原则。
坑一:悄悄删测试
智能体遇到失败的测试,不去修代码,而是改测试或删测试。套件通过了,bug 也上线了。拦它的规则是:
- 永远不要删除或跳过已有测试。修被测的代码,不是修测试。
- 动测试文件之前,先报告测试名和失败原因。
想事后审计一次会话,可以看测试文件的行数变化——一次会话之后测试文件行数掉了,就值得翻一翻。
坑二:密钥被送进浏览器
在 Next.js 里,智能体给服务端 API 密钥加上 NEXT_PUBLIC_ 前缀,等于把这个密钥发布给了每一个访客。构建通过,测试通过,密钥已经公开了。
规则:永远不要给 API 密钥、数据库地址、认证密钥或令牌加 NEXT_PUBLIC_ 前缀。如果某个值必须到达客户端代码,就通过服务端路由代理它。
同一类失败还会以 .env 文件被暂存提交的形式出现。规则是:永远不要提交 .env 文件、密钥、令牌或连接字符串。一旦泄露,先轮换,再清理历史——清理过历史但密钥还活着,密钥依然是活的。
坑三:一行改动,整文件重写
你只要一行改动,智能体把整个文件重写一遍:重新格式化、重新排序、注释没了。你在这个文件里没提交的工作被覆盖,diff 根本没法审。
规则:做解决问题的最小改动。改函数,不是改文件。不要重新格式化改动没碰到的代码。如果某个文件确实需要重新格式化,单独提交一次,不带任何逻辑改动。
坑四:后端三连
服务端技术栈上最常见的三种翻车:
- 智能体遍历一个会触碰关联对象的查询集,却没加 select_related / prefetch_related(Django)或 includes(Rails)。开发环境五行数据跑得好好的,生产环境五千行直接趴下。规则:凡是访问关联对象的查询集或作用域,必须用上这些预加载;一个视图超过10次查询就需要给出理由。
- 在 Rust 请求处理器里用 .unwrap()。第一个 None 或 Err 就让处理器 panic。规则:网络请求可达的代码里永远不要用 .unwrap(),改用 ? 运算符、.map_err() 或 .unwrap_or_default()。
- 在有迁移的栈里,智能体去改一个已经应用过的迁移,而不是新增一个。迁移历史和所有跑过原迁移的数据库就此对不上。规则:永远不要编辑已应用的迁移,用新迁移向前修。
坑五:外部调用不系安全带
智能体调用第三方 API,没有超时、没有错误处理、没有兜底。第一次网络抖动就把整条请求链路带下去。规则:每个外部调用都需要超时、不会拖垮调用方的错误处理,以及兜底或像样的错误信息。永远不要假设外部调用会成功。这一条能消掉一整类凌晨三点的故障。
这五条来自一套20条的清单,其余覆盖 TypeScript 的 any、留在生产里的 console.log、捕获泛化的 Exception、视图里写业务逻辑、过期的锁文件、渲染期间变更状态、SQL 字符串拼接,以及看起来像真凭据的假测试数据。
规则装起来很简单,把对应文件放进项目根目录:Claude Code 用 .claude/anti-patterns.md 再从 CLAUDE.md 里 @import;Cursor 用 .cursor/rules/anti-patterns.mdc;GitHub Copilot 追加到 .github/copilot-instructions.md。
加规则之前,先查查你的代码树里已经埋了多少:搜 unwrap()、搜 : any、搜 console.log、搜 except Exception。每命中一次,就是一次从你现有配置里溜过去的会话。规则禁止的东西和代码库里实际存在的东西之间的那道缝,就是"把失败模式点名写出来"这件事的全部理由。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.