ARCHITECTURE · 2026年7月1日
AI 制造的代码债不会被偿还,它会悄悄复利
AI 生成代码的代价,不是你在评审里抓到的那个 bug——而是那个存活下来、无人认领、整个团队都没人有心智模型的缺陷。2026 年一项针对 30 万+ AI 编写提交的研究发现,AI 引入的问题里有将近四分之一至今仍留在 HEAD。人类的债之所以被还清,是因为有人记得自己写过它;AI 的债只会不断累积,因为根本没人写过它。真正的对冲不是更多测试覆盖率,而是理解。
我以前说过,便宜的代码才是最贵的代码。这篇是那个论断更难、更具体的版本, 而且现在它有了一个数字:AI 生成的技术债,跟我们知道怎么管理的那种债不一样。它不会被偿还,只会在一个没人盯着的 角落里悄悄堆积。
那个应该让你担心的数字
新加坡管理大学 2026 年的一项研究——「AI 繁荣背后的债」—— 翻遍了 6,299 个仓库里 302,600 条经过验证、由 AI 编写的提交,找出了 484,366 个不同的问题。真正要紧的 统计数字不是 AI 引入了多少问题,而是有多少 存活了下来:AI 引入的问题里,有 22.7% 至今仍留在 HEAD。 没被抓到、没被修复、没被偿还——还在那里,活着,就在当前的代码里。按工具划分的引入率在 ~17% 到 ~29% 之间, 取决于用的是哪个助手。
将近四分之一的缺陷,还留在代码树里。这不是评审质量的问题,这是另一种债。
为什么 AI 债的行为不一样
人类的技术债有一个天然的偿还机制:是有人写下的,所以有人记得它。 那个走捷径的人,脑子里有一张地图, 知道尸体埋在哪;当他回到那个模块时会感到痛,然后把它还清,因为那是 他自己的。债和归属是一起流动的。
AI 生成的债斩断了这条链。没人写过这段代码,所以没人拥有它的心智模型。它合并进来的时候看起来很干净—— 合理、格式规整、测试全过——然后就那么待着,没人感觉到它,因为没有作者去感觉。等到缺陷终于浮出水面, 反应不是「哦对,我记得这个」,而是「这是谁写的?……没人写过」。你现在要调试的,是一个从来没有任何人理解过的系统, 而这个代码库会 更快地 进入那种碰不得、没人敢改的状态——比任何人类写的代码都快。
你生成了却从没理解过的债,不是一条你以后会偿还的捷径。它是一笔已经记在资产负债表上的负债, 用的是团队里没人会说的语言。
覆盖率不等于理解
条件反射式的解法是「多加点测试」。但测试只能抓住你 预料到 的失败。危险的 AI 债,恰恰是那种通过了每一个测试、 却因为没人理解得足够深以至于根本没为它写测试而依然错误的代码——那个微妙的耦合、那个被吞掉的边界情况、 那个一直成立直到不成立的假设。覆盖率告诉你代码做了测试所说的事,它完全没告诉你有没有人知道这段代码 到底在做什么。
唯一真正的对冲一点都不光鲜:
- 只合并有人理解的东西。 如果团队里没有一个人能解释一个 diff 并为它辩护,那它就没完成——它是一笔披着绿色对勾的负债。 接受的标准是理解,不是测试通过。
- 生成得更小,让它保持可读。 一个评审者真正读完的 40 行改动,胜过一个他只是扫一眼的 400 行改动。 体量正是 AI 债在没被读过的情况下溜进来的方式。
- 在合并时就分配归属,而不是在出事时。 有个名字挂在上面,而那个人能解释它。把 AI 斩断的那条作者→债的链重新接上。
- 把「我们已经看不懂这个模块了」当成 Sev-2。 那才是真正该怕的状态,而 AI 会比任何人类团队更快、更悄无声息地 把你带到那里。
结论
AI 不只是让写代码变便宜了,它还让 制造并遗忘 债变便宜了。将近四分之一由 AI 引入的问题, 至今仍留在生产环境的代码树里,因为那个过去用来偿还债的机制——一个记得的人——从一开始就没在环里。
别再用「能不能通过」来衡量 AI 代码。用「有没有人理解它」来衡量它——因为你看不见、又没人认领的那种债, 才是唯一会真正复利的债。
评论
暂无评论
登录以参与讨论。
做第一个分享想法的人。