返回

文章详情

我删除了168,000行评论。我的AI代理没有注意到

Hacker News2026年10月14日 16:34

我们源代码的近三分之一是评论。我删除了所有评论,让一个AI代理在两个版本的代码库上构建相同的功能,每个版本运行三次。它写出的代码在有评论和没有评论的情况下都同样好。如果你在真实的代码库上使用代理,并想知道评论是否对它们有帮助、是否会减慢它们的速度,或者根本无关紧要,以下是我的发现。为什么我会尝试这个。在这个视频中(大约23:07),Lauren提到他们不让代理在代码中写评论。我们的代码库则正好相反:充满了评论,其中大多数是由代理编写的。于是我想知道:所有这些评论是在帮助代理,还是只是它需要阅读的额外文本?实验的一段话:我制作了一个删除所有评论的代码库副本,总共约168,000行。然后我给这个代理在两个副本上执行相同的任务,每个副本运行三次,并以相同的方式检查结果。我为两个任务做了这个,一个小任务和一个大任务。结果:每次运行都通过了所有检查:lint、类型检查和现有测试;此外,在大任务中,还有一个代理从未见过的隐藏测试。一个独立的AI评审员在不知道每个结果来自哪个副本的情况下评估了每个结果(关于这一点更多说明如下)。小任务:平铺所有打开的窗口(总分19分) 分支 分数 代币 成本 有评论 18.3 2.18M $1.42 没有 19.0 1.71M $1.04 大任务:保持窗口在最上方(总分23分) 分支 分数 代币 成本 有评论 21.7 9.06M $3.84 没有 22.0 9.12M $3.95 这些数字是三次运行的平均值。分数差异在噪声范围内,大任务的成本也是如此。在小任务中,代理在没有评论的情况下大约使用了22%的代币,合理:阅读的内容确实少了。大任务有一个陷阱。固定状态必须在页面重新加载时保持有效,而保存窗口会话的PHP函数会丢弃它不知道的任何键。错过这个,特性在重新加载之前看起来正常。这正是你期望评论能帮助的地方。所有六次运行都找到了这个问题,无论有没有评论。为什么一次运行是不够的:我最初计划每个分支仅运行一次。我很高兴我没有。在大任务中,带有评论的三次运行分别使用了8.21M、8.79M和10.17M代币。没有评论的三次运行分别使用了7.01M、9.70M和10.64M。如果我从每个分支选择一次运行,我可能会写两篇相反的博客文章。将10.64M与8.21M进行比较,去掉评论使代理的成本增加了30%。将7.01M与10.17M进行比较,它使代理的成本降低了31%。同一任务,同一代码,同一天。代理不是确定性的。如果你在测量一个,运行多次。如何运行:代理:Claude,使用Opus 5.5高强度运行。每次运行使用相同的模型和设置。两个代码库:我们的主分支及一个删除了评论的副本。我编译了两个,并检查了结果代码是否相同。唯一剩下的评论是工具运行所需的,例如lint指令和插件头,大约800行。任务:两个真实功能,在两个分支上使用相同的提示。检查:项目自己的lint、类型检查和测试。在大任务上,我还添加了一个代理完成后才显示的隐藏测试,这样它就不能写出特定代码以通过测试。评审员:一个独立的Claude会话阅读每次更改并根据运行前编写的核对表进行评分:它是否有效,是否遵循项目的惯例,是否有测试,等等。更改被标记为随机名称,因此评审员不知道每个更改来自哪个分支。运行:每个任务每个分支三次,交替进行,以便时间因素对两个分支的影响相等。我的结论是:对于代理而言,代码注释对其编写的代码质量没有影响。它们既没有帮助,也没有伤害。因此,保留评论或删除评论应基于其对阅读代码的人所起的作用,而不是对代理的影响。这并不证明评论没有影响。我测试了一个模型、两个任务和每个分支三次运行,这足以排除大型影响,而不是小影响。下一步:评论没有影响,但删除我们的docs/文件夹和AGENTS.md就有了。这是下一篇文章。附录:数据和链接:带评论的代码库;没有评论的代码库;已删除的内容完全是(GitHub可能只显示其中一部分);两个小任务运行的拉取请求:有评论,PR 974;没有评论,PR 975;所有运行的完整结果:结果页面。如果你想查看实验脚本和评分标准,它们都在这里。代码行数,使用scc测量:有/没有。整个代码库765,491 597,332。插件源代码408,527 280,421。插件源代码是指在插件中交付的代码(src/、includes/、apps/和CSS),不包括测试、文档或工具。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡