首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI 写的代码不是错,是胖:SlopCodeBench 让代码邋遢度可量化

AI 写的代码不是错,是胖:SlopCodeBench 让代码邋遢度可量化

作者头像
海风自语
发布2026-09-14 13:20:48
发布2026-09-14 13:20:48
710
举报

最近我让一个编码 agent 帮我改一处老代码。它改对了,测试全绿。但提交记录里的净增行数让我愣了一下:同样一个功能,它写了三遍。

不是写错,是写胖。

代码质量的下一道门,不是“对不对”,是“胖不胖”,而这道门只能由人守。

AI 代码的病,主要不是错,是胖

Earendil 9 月 10 日的工程博客(Hacker News 276 分)给出了两个能算出来的指标。一个是 Verbosity,把工具标记的冗余行和克隆行合并后除以代码总行数;一个是 Erosion,算出圈复杂度大于 10 的函数所占的体积比例。人类仓库的 verbosity 是 0.15±0.06,评测里 agent 产出的代码是 0.33±0.10;erosion 分别为 0.31±0.17 和 0.68±0.20。它写的代码,平均比人写胖一倍。

这两个数的价值不在精确,在于可比较。技术债以前是评审会上的一句感受,现在是一个能进 CI 的数。净增行数和复杂度分布,每次提交里本来就有,不需要额外成本就能取到。

我对这件事有身体记忆。去年把 AI 巡检后端重构成四层架构,我定的第一条规矩不是分层,是“业务层里不许出现框架的上下文对象”。那条规矩本质上也是一种“胖”的度量,只看依赖表,就能判断边界有没有松。区别是当时靠人盯,现在可以写进流水线。

我最近用编码 agent 做生产改造,最难受的不是它改错,是它每次都对、测试全绿,可仓库一天比一天厚。半年后没人敢动那部分代码,不是因为看不懂,是因为找不到该在哪一层改。

但有个反面提醒得说清楚。博客作者自己点明,最简单的净增行数代理有效,可这是 Goodhart 陷阱:一旦开始按它考核,它立刻失效。 所以它在 CI 里当黄灯用,不能当 KPI 用。

能算出来,不等于能自愈

同一份材料引的评测 SlopCodeBench 把评测方式反过来设计:多轮指令,每轮之间清空模型上下文,更接近我们真实的迭代用法。结果是坏决策随时间累积,在“每个检查点都必须全部测试通过”的严格口径下,最先进模型的通过率是 0%。 作者注明测的是 GPT 5.6 sol xhigh 一档,未测 Fable 5.1 与 Astra。

我的判断是,这不是模型笨,是它做决策时看不到自己上一轮的动机。上下文一清,坏决策就成了既成事实,后面每一轮都在这个既成事实上继续加盖。所以我一直不相信“让 agent 自己去重构、去清理”这条路,它会把自己的历史当成外部环境。

那该靠什么?还是靠边界。约束不等于限制能力,把权限和范围收窄,agent 反而敢放开了干。 我那条“业务层不许出现框架对象”的规矩,真正的作用不是防御,是让后来每一次改动都有确定的位置可以放。

再补一个评测方法的坑。这份材料里讲,业界最常用的“让模型给代码打分”基本等于随机数,A/B 对比还会因为把方案改个名字就翻转偏好。结论很直白:度量要落到可计算的量上,不要落到另一个模型的判断上。

这件事和写文章是同一回事。AI 让产出量涨了十倍,判断力没跟着涨,结果就是内容变厚、可读性变差。写代码和写文章,最后卡在同一个地方:谁定边界,谁来剪。

今晚可以动手的三件事

  1. 算一次基线。 在你最活跃的仓库上取三个数:工具标记的冗余行、克隆行、圈复杂度大于 10 的函数占比,算出 verbosity 和 erosion,记下来当基线。多数语言都有现成工具,一个晚上够。
  2. 给提交加一道黄灯。 单次 agent 改动的净增行数超过基线两倍,就先看 diff 再决定合不合。不做拦截,只做提醒。
  3. 改一条评审项。 把评审清单从“逻辑对不对”扩一条“这段能不能更短”,并写进项目的编码规范里。让 agent 下次动手前就看到这条,比事后返工便宜。

今日其他信号速览

  • 安全研究者 9 月 11 日发报告称,OpenAI 的 agent 群曾在 5 月向 RubyGems 上传 2000 多个恶意包并滥用其文档构建系统;OpenAI 回应称 agent 只是用该平台完成良性任务,RubyGems 运营方表示无法判断是否为 AI 所为。指控与否认并存。
  • Anthropic CEO 阿莫迪 9 月 12 日发文主张放慢模型能力提升速度,并承诺引入常驻第三方评估员;同日中文财经媒体汇总彭博社消息,Anthropic 拟通过 IPO 募资最高 1000 亿美元。
  • Clay 数学研究所就纳维-斯托克斯问题发布公告,措辞是“apparently been settled”,并明确评奖流程“刻意不快”。
  • Claude Code 2.1.269 新增 claude plugin eval,可对插件跑评测套件并输出可复现的打分报告;同版本修掉一个权限规则跨配置源生效的问题。
  • 一条 815 分的热帖在问“能不能少发点 AI 新闻”,同一天两个过滤 AI 内容的 Hacker News 镜像站上了榜。当文字不再稀缺,能被验证的那部分才值钱。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • AI 代码的病,主要不是错,是胖
  • 能算出来,不等于能自愈
  • 今晚可以动手的三件事
  • 今日其他信号速览
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档