删掉 16.8 万行注释,AI 写的代码没变差
一个开源项目删光了三分之一的注释,让同一个 agent 在两份代码上做同样的活,各跑三次。结论不是"AI 没发现",而是注释没能改变它写出来的东西。
把代码里的注释全删掉,让 AI 在删过的版本上继续写功能。它写出来的东西,和在有注释版本上写的一样好。
这倒不是说它读不懂注释,而是这些注释没能改变它写出来的东西。
一、发生了什么
10 月 13 日,OpenStation(一个 WordPress 开源插件项目)的作者 Roberto Aranda 公开了一组实验。
他复制了一份代码库,删掉所有注释,约 16.8 万行,接近整个仓库的三分之一。为了不把工具跑挂,只留下约 800 行工具必需的注释,比如 lint 指令和插件头。
然后他给同一个 agent 派同样的活:本体是 Claude Code,模型 Opus 5.5,推理强度设为高,两次实验的设置完全一致。两个任务,一个小任务(把所有打开的窗口平铺),一个大任务(让某个窗口保持置顶)。每个任务在两份代码上各跑三次,交叉进行,避免时间段带来的偏差。
验收有三层:项目自带的 lint、类型检查和测试;大任务额外加了一个 agent 没见过的隐藏测试,专门用来抓"只让测试通过"的作弊;最后由另一个 Claude 会话做盲评,改动用随机名字标注,评审不知道来自哪份代码。
结果:六次运行全部通过所有检查。小任务得分 18.3 对 19.0,大任务 21.7 对 22.0,都在噪声范围内。小任务上,无注释版本少用了约 22% 的 token,成本从 1.42 美元降到 1.04 美元;大任务几乎打平,3.84 对 3.95。
最能说明问题的是大任务里埋的坑:置顶状态要在页面刷新后仍然保留,而保存窗口会话的那个函数会丢掉它不认识的键。这种细节,通常正是注释存在的理由。六次运行全都找到了,有注释没注释都一样。
作者还做了一件很实在的事:把三次运行的 token 数摊开。有注释组是 821 万、879 万、1017 万,无注释组是 701 万、970 万、1064 万。如果只挑一对来比,可以写出两篇结论完全相反的博客。
规模上也能看出删了多少:整个仓库从 76.5 万行降到 59.7 万行;只算真正发出去的插件源码(src、includes、apps 和样式),从 40.9 万行降到 28.0 万行。也就是说,这个项目的注释密度远高于一般代码库,实验结果对"注释很多"的项目更有参考价值。
二、跟你有什么关系
天天让 agent 写代码的人:别指望注释能约束它。它遵守的是测试、类型和你的指令文件,不是注释里的叮嘱。
维护老项目的人:注释的价值回到原点——给下一个接手的人看。这个"人"目前还是人。
做 AI 代码审查的团队:这次实验顺带证明了一件事,agent 的"我检查过了"没有覆盖它没读的东西。
三、怎么给审查补上盲区
四步,明天就能用。
- 先测它读没读。让它复述这段代码的约束条件、边界情况、已知的坑。答不上来,就说明它只看了签名。这比问"你检查完了吗"有效得多。
- 把注释和文档的改动单独拆成一个 diff。混在功能 PR 里,删除注释会被当成格式调整一笔带过;单独提出来,人才会看见。
- 用机器判据替代人眼。测试、类型、快照、隐藏用例,能自动判的都自动判。人的注意力应该花在"这段逻辑该不该存在"上。
- 一次不算数。这个实验里同一份代码三次运行的 token 差了 30% 以上。任何"AI 快了/慢了 X%"的结论,单次运行都不作数。
四、三个别信的说法
"注释对 AI 没用,所以删掉。" 实验证明的是注释不影响 agent 的产出质量,不是注释没有价值。作者自己的结论很清楚:留不留,看它对读代码的人有没有用。
"AI agent 没发现注释被删,说明审查失灵。" 它没发现,是因为任务里不需要。真正该担心的是另一种情况:你让它审查一个删除注释的 PR,它回复"看起来没问题"。这次的实验没有测这个,别顺手扩大结论。
"六次运行足够下结论。" 作者自己写了限制:一个模型、两个任务、每组三次,足以排除大的差异,排不出小的。诚实的实验都带这句话,不带的要小心。
五、一句话结论
AI 不会因为你在注释里写了"小心这里"就小心;能让它小心的,是能自动判对错的检查。
信息来源
- OpenStation 博客上删注释对照实验的记录,2026-10-13:https://openstation.blog/2026/10/13/i-deleted-168000-lines-of-comments-my-ai-agent-didnt-notice/
功能与价格以官方公告为准。本文写于 2026 年 10 月 17 日。