12|AI Coding 反模式清单:14 个让项目失控的错误

12|AI Coding 反模式清单:14 个让项目失控的错误

2026-10-21 17:53:42 0点赞 0收藏 0评论

本篇是《从头重新学 AI 编程》系列第 12 篇,也是正文的最后一篇。

上一篇聊了 CI、Hooks 和测试,怎么给 AI 写的代码加护栏。

到这篇,正文就要收尾了。我想做个不太一样的总结。

前面十一篇,我一直在跟你讲「应该怎么做」。这一篇,我想反过来,讲「不该怎么做」。

为什么?因为我自己的经验是,正确的做法你听一遍可能记不住,但那些坑,你一旦踩过、疼过,就再也忘不掉了。我把这个系列里反复提到的、加上我自己实打实踩过的坑,整理成了 14 条反模式。

你不用一次记住。把它当成一份自查表,每隔一阵子拿出来对一遍,看看自己有没有不知不觉又掉进去了。

12|AI Coding 反模式清单:14 个让项目失控的错误

我大概把它分成三段。前面是工作方式上的坑,中间是验证环节的坑,最后是安全上的坑。越往后,出事的代价越大。

先从最常见的开始。

第 1 个,让 AI 直接动手,不先出计划。

你跟它说「帮我加个搜索功能」,它立刻就开写了。十分钟后给你看一堆改动,你一看,方向完全不对,它做的是全局搜索,你要的是列表内筛选。

推倒重来,前面那一通全白费。

这个坑第 1 篇就讲过了,正确的做法是先让它说它打算怎么干。先告诉我你打算怎么实现、改哪些文件、有什么边界情况。花三十秒对齐方向,省下后面三十分钟返工。

第 2 个,需求只甩一句话,没有验收标准。

「帮我做个导出功能」,导出什么格式,导出哪些字段,筛选条件带不带上,导出失败怎么办。这些 AI 不会主动问你,它会自己替你做决定。做完你才发现,又不是你要的。

第 2 篇讲的 Spec 就是干这个的。给需求的时候至少说清三件事,做什么、不做什么、怎么算做完。

第 3 个,上下文越塞越多,舍不得开新会话。

你在一个会话里聊了五十轮,改了十个文件,中间还推翻过三个方案。AI 的上下文窗口早就满了,它开始忘前面的约束,开始自相矛盾,开始走偏。

你以为它变笨了,其实是上下文被污染了。第 5 篇讲过那几个信号,忘记约束、反复改同一个地方、解释越写越长但 diff 越来越差。一旦出现,别恋战,果断换会话。

第 4 个,不看 diff,只看 AI 的总结。

它跟你说「已完成,添加了导出功能,测试通过」。你信了,合并了。

但你没看到的是,它顺手改了你的路由配置,把一个不相关的组件重命名了,还删了几行它觉得没用的代码。

AI 的总结是它的视角,diff 才是事实。永远自己看 diff,重点看改动范围有没有超出任务、有没有顺手动了无关文件、有没有删掉你看不懂的代码。

第 5 个,不跑测试,信 AI 那句「应该没问题」。

上一篇刚用一整篇讲过这事。AI 说测试通过了,不代表测试真的跑了。可能是旧测试,可能测试被它改过了,可能压根没跑。

让它把命令和输出贴出来,或者你自己跑。「应该没问题」不是验证结果,「测试跑了,输出贴在这」才是。

第 6 个,一个会话从头聊到尾,从不压缩和交接。

你在一个会话里,从需求讨论聊到方案设计,聊到实现,再聊到修 bug,整整聊了一天。到下午 AI 已经开始重复上午讨论过的东西,你解释过的约束它又问了一遍。

这不是 AI 的问题,是上下文太长了。每个阶段结束,让它写一份交接总结,第 5 篇有模板,然后开新会话。需求归需求,实现归实现,修 bug 归修 bug,别全堆在一个会话里。

第 7 个,让同一个 Agent 又做实现又做 review。

你让 AI 写完代码,又在同一个会话里让它审自己写的代码。结果当然是「一切正常」。

这就像让考生自己批卷子。第 7 篇讲的 Subagent 就是为这个设计的,实现和 review 必须分开,要么开新会话让另一个 AI 审,要么你自己审。

第 8 个,没有 AGENTS.md,AI 全靠猜。

你的项目没有 AGENTS.md,每次开新会话 AI 都从零开始猜。它不知道你的目录结构,不知道你的编码规范,不知道你的红线。有时候猜对,有时候猜错,而你也不知道它这次猜得对不对。

第 3 篇有模板,花二十分钟写一次,后面每次对话都省心。

第 9 个,没有 git 回滚点,改坏了回不去。

你让 AI 一通改,改了十几个文件,改完发现不对,想退回改之前的状态。但你一次都没 commit 过,git 里没有记录。

你只能一个个文件手动改回去。或者更惨,你已经不记得改之前长什么样了。

让 AI 每完成一个独立改动就 commit 一次。出问题就 git reset,不用心疼。git 就是你的 ctrl-z,多按几次不丢人。

第 10 个,把 AI 的解释当成验证结果。

AI 给你解释了一大段「为什么这样写是对的」,逻辑清晰,条理分明。你觉得有道理,就信了。

但「说得通」和「跑得通」是两码事,而 AI 最擅长的恰恰就是生成看起来很合理的解释。解释只是它的假设,验证才是结论。让它跑给你看,跑测试、贴输出、给证据,别被「解释得通」迷惑了。

聊到这,前十条基本都是工作方式和验证上的坑。接下来这四条,性质不太一样,它们关乎安全。

我把安全放在最后,不是因为它不重要,恰恰相反,是因为前面那些坑顶多让你返工、让你这次白干,而安全这几条,一旦出事,可能就是不可逆的。

第 11 个,让 AI 直接接触生产密钥。

你把 .env 里的生产数据库密码、API key 直接贴给 AI 让它帮你调试。或者你的 .env 没加进 .gitignore,AI 读文件的时候顺手就把它读进了上下文。

这些信息可能被存储、被转发、被记在日志里。一旦泄露,你只能轮换密钥,而且你根本不知道已经泄露多久了。

生产密钥永远不要进 Agent 能读到的文件。开发环境用单独的 dev 凭证,权限给到最小。.env 必须在 .gitignore 里,而且要确认它从来没被 commit 过。

第 12 个,让 Agent 不设权限边界地访问外部工具。

你给 AI 接了 GitHub MCP、数据库 MCP、浏览器 MCP,每个都用 admin 权限,图个方便,省得一个个配。

方便是方便了。但 AI 现在能读你的私有仓库、能改你的数据库、能访问任意网页。万一它被 prompt injection 攻击,也就是有人在它读到的网页或 issue 里埋了一段恶意指令,后果不堪设想。

第 6 篇讲过 MCP 的正确用法,核心就一条,最小权限。能用只读 token 就别用写权限,能用受限 token 就别上 admin,不需要的 MCP 干脆别接。

第 13 个,把内部敏感数据随手塞进上下文。

你把客户的订单数据、员工的薪资信息、公司的内部文档,直接贴给 AI 帮你分析。

这些数据现在就躺在 AI 的对话记录里了。这些记录会被存多久、谁能访问、会不会被用来训练,你都不知道。

敏感数据别直接往上下文里塞。如果非处理不可,用脱敏后的数据,或者干脆在本地跑模型。

第 14 个,让 AI 自动执行危险命令。

你开了 auto-run 模式,AI 不用确认就能跑 shell 命令。大多数时候确实没事,直到有一天它跑了一句 rm -rf,或者 git push --force。

一条命令,不可逆。

危险命令永远要留一道确认。用 Hooks 把 rm -rf、git push --force、DROP TABLE 这类操作拦下来,第 11 篇讲过怎么配。

这十四条过完,你可能也发现了,后面那四条全跟安全有关。这不是我硬凑的。

AI Coding 的安全风险,比传统开发大一个量级。因为 Agent 能读文件、能跑命令、能联网、能提交代码,它的攻击面实在太大了。

业内有个说法叫致命三重,Lethal Trifecta,说的是当一个 Agent 同时具备这三样能力的时候,被攻击的后果就是灾难性的。

  • 第一,能接触私有数据,源码、.env、客户数据。

  • 第二,能接触不可信内容,网页、外部 issue、用户输入。

  • 第三,能把数据发出去,网络请求、git push、发消息。

你想想看,如果一个 Agent 这三样齐了,攻击者只要在它读得到的某个网页里埋一段话,就有可能让它把你的私有数据打包发出去。

所以防御的关键,不是把 AI 调得更聪明,而是想办法拆掉这三者的交集。不可信的内容,丢给一个只读、隔离的 subagent 去处理。MCP 一律用最小权限的 token。生产密钥,永远不进 Agent 能读的文件。

我一直觉得,安全这东西,不是拖住你用 AI 的刹车,反过来才对,它是让你敢放手用更多自动化的前提。权限锁得越死、hook 设得越严,你心里越有底,越敢让 Agent 在后台自己跑。

12|AI Coding 反模式清单:14 个让项目失控的错误

这份清单怎么用,我也说一下我的习惯。

它不是让你一口气背下来的。它是给你定期对照用的。

刚开始上手 AI Coding 的时候,你重点看第 1、2、8、9 这几条,先把基本习惯立住。等你开始频繁用了,再回头看第 3 到第 7 条,上下文和 review 的问题会越来越明显。等你开始在正经项目里用了,第 10 到 14 条就得拎出来反复看了,因为安全这事一旦出岔子就是大事。

每隔一阵子回来对一遍,你大概率会发现自己又不小心踩进了某个坑。没关系,踩过才知道疼,下次自然就知道绕了。

写到这,正文十二篇就全部结束了。从第 1 篇的角色转变,一路走到这份反模式清单。我陪你快速捋一遍。

第 1 篇说的是,你不是在写代码,你是在管 AI 的注意力。
第 2 篇,用 Spec 把需求说清楚,别让 AI 自由发挥。
第 3 篇,写 AGENTS.md,让 AI 一开对话就懂你的项目。
第 4 篇,接手旧项目,先让 AI 看懂再动手。
第 5 篇,上下文管理,知道什么时候该停、该换会话。
第 6 篇,MCP,给 AI 接上真实环境。
第 7 篇,Subagent,把不同工种分开。
第 8 篇,把前七篇串成一套完整流程。
第 9 篇,Git worktree,让多个 Agent 并行又互不打架。
第 10 篇,Skill,把重复的话固化成模板。
第 11 篇,CI、Hooks、测试,给代码加护栏。
第 12 篇,也就是这篇,反模式清单,定期自查。

你回头看会发现,这些不是十二个孤立的知识点,它是一整套连贯的工作方式。从怎么定义需求、到怎么管上下文、到怎么接工具、到怎么拆工种、到怎么加护栏、再到怎么避坑,每一步都有章可循。

回到这个系列最开始说的那句话,你和 AI 写代码之间,差的从来不是一句更厉害的 prompt,是一整套工作流。走到这里,我希望你手里已经有这套东西了。

它不会让你从此再也不踩坑,我自己到现在也还在踩。但它会让你每次踩坑之后,知道是哪一环出了问题,知道下次该在哪里补一道防线。这就够了。从碰运气,变成有手感,这中间的距离,就是这十二篇。

正文到此为止,但还没完全结束。

番外篇我会用一个完整的需求,从第一天到第四天,把这十二篇的所有能力真刀真枪地串成一个实战案例,让你看看一套完整的 AI Coding 工作流跑起来到底长什么样。

我们番外见。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
京东京享红包
距结束::
领京东现金红包 天天领3次 最高26888元
红包按钮
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松