SlopCodeBench: Benchmarking How Coding Agents Degrade Over Long-Horizon Iterative Tasks
Gabriel Orlanski, Devjeet Roy, Alexander Yun, Changho Shin, Alex Gu, Albert Ge, Dyah Adila, Nicholas Roberts, Frederic Sala, Aws Albarghouthi
www
cs.SE, cs.AI, cs.CL
2026-03-26
SlopCodeBench 让编码 Agent 在 36 道题、196 个检查点上反复修改自己的代码。15 个模型无一做完全程,严格通过率最高 14.8%,77% 的轨迹出现复杂度集中。
编码 Agent 的主流榜单测的是这一版对不对。题面一次给全,或是在别人的仓库里打补丁。后面才会暴露设计债:第一关把语言写成死分支,再加三种语言,架构就得推倒。通过率还可以,代码已经不好改了。
多轮基准常常不让模型承担这笔账。完整解答被拆成有序小题,内部接口等于提前公开;沿着成熟仓库的提交往下做,起点是人已经选好的架构。
SlopCodeBench 用 36 道手写题、196 个检查点来测。威斯康星大学麦迪逊分校、华盛顿州立大学和 MIT 只写命令行或 API 上看得到的行为。Agent 从空目录做第一关,之后每关只收到新规格和自己的工作区。对话不保留,测试集也不给。
每一关都在上一关的代码上加功能,不中途换上参考实现。跑通的例子 codesearch 有五关,从 Python 精确匹配和正则,加到 JavaScript、C++、AST 模式、自动修复,再加到 Go、Rust、Java。语言写死在分支里,每加一种语言就得再抄一遍。
回归测试会把旧错带进新关,通过率因此拆成三档。Strict 看本关全部测试,分母固定为 196,没跑到算失败。Isolated 去掉回归,只留这一关新写的部分。Core 只覆盖规格写明或举过例的行为。隐藏测试另含穷尽功能和错误路径。中途崩溃,剩余关卡正确性记 0;侵蚀和冗长只算写出了代码的关。
结构性侵蚀看复杂度有没有堆进少数函数。函数质量等于圈复杂度乘以源码行数的平方根,免得行数盖过分支。侵蚀度是圈复杂度大于 10 的函数占全部质量的比例,10 沿用静态分析工具 Radon 的上界。冗长度等于废代码行除以总行数,分子是 137 条 AST-grep 规则命中的行,加上结构克隆,同一行只计一次。两个分数都在 0 到 1 之间,可以分开变化。
评测走各家原生命令行,不用 SWE-agent。每关新开容器,只留工作目录,限时两小时,不限轮次和费用。just-solve 只要求做对、管好依赖。题目手写,另一位作者复核。一次能做完,或看不出设计取舍的,筛选时删掉。因成本只评了 Python。
15 个模型、六家供应商,没有任何运行把一道题从第一关做到最后一关。
| 模型 | Strict | Isolated | Core | 每关美元 | 侵蚀 | 冗长 |
| GPT 5.5 | 14.8% | 28.1% | 66.8% | 1.51 | 0.49 | 0.32 |
| GPT 5.4 | 10.7% | 23.5% | 62.8% | 0.72 | 0.51 | 0.33 |
| GPT 5.3 Codex | 11.2% | 26.0% | 60.7% | 0.66 | 0.64 | 0.46 |
| Opus 4.6 | 9.7% | 20.9% | 67.3% | 3.17 | 0.75 | 0.44 |
| Opus 4.5 | 9.2% | 17.3% | 57.7% | 2.53 | 0.70 | 0.43 |
Strict 最高为 GPT 5.5 的 14.8%,Isolated 也是 28.1%。Core 最高 67.3%,按表在 Opus 4.6,正文记在 Opus 4.5。至少做对一关的题目,GPT 5.5 占 50%。
从起始到最后,Core 从 64.6% 降到 35.5%,与 Isolated 的差距从 2.5 倍扩到 5.4 倍。隐藏功能测试从 62.7% 到 57.7%,错误路径从 80.1% 降到 62.2%。每关花费增至起始的 2.2 倍,相对改动行数从早期 97.4% 降到后期 29.5%。
77% 的轨迹侵蚀上升,75.5% 冗长上升。圈复杂度至少为 10 的函数从平均 3.6 个增到 23.7 个,最大圈复杂度从 27.5 升到 69.0。结构克隆增 96%,规则违规密度只增 0.3%。Opus 4.7 做 forge 时,main() 从 38 行长到 240 行,圈复杂度涨 7 倍。
473 个 Python 仓库的当前版本,冗长 0.19,侵蚀 0.34。2869 个 Agent 检查点是 0.44 和 0.68,约 2.3 倍和 2.0 倍。只有 18 个仓库的冗长高过 Agent。Agent 每关冗长增加 0.0144,侵蚀增加 0.0264,人类中位数是 0.0022 和 0.0053,约慢 6.6 倍和 5.0 倍。人类仓库里侵蚀上升的占 53%。2024 年前后各至少三次提交的 321 个仓库,内部中位数只移动冗长 0.002、侵蚀 0.014。
anti-slop 点名禁止啰嗦和过度设计。GPT 5.5 的侵蚀从 0.49 降到 0.21,冗长从 0.32 降到 0.21。GPT 5.4 与 GPT 5.3 Codex 的冗长分别低 27.5% 和 32.8%。plan-first 要求先写计划,降幅更小。严格通过率平均下降 2.4 个点(anti-slop)与 3.6 个点(plan-first),GPT 5.5 从 14.8% 掉到 9.2% 和 8.2%。每关成本平均多 12.1%。从开头到结尾质量好转的,只有 GPT 5.4 配 anti-slop。论文给出的质量速度约为每关 1.3 个百分点。
单次榜单回答当前规格能不能交差。SlopCodeBench 测的是,测试不可见、架构只能自己定,仓库会不会越改越难改。
提示词可以直接试。禁令能把侵蚀压下一大截,GPT 5.5 从 0.49 到 0.21,但每关仍在变差,严格通过率下降,花费平均多 12.1%。
人类仓库对照里,差距主要在累积速度。2024 年后仓库内部的移动,远小于 Agent 单独一关。
只评了 Python。别的语言会不会同样把逻辑堆进大函数,没有结果。
两条分数都是代理。大于 10 的圈复杂度界限沿用 Radon,没有在这 36 道题上重标。冗长度靠 137 条手写规则,材料含社区流传的反模式,惯用法和废话可能进同一栏,没覆盖的膨胀会漏。没有后续实验让人接着改这些仓库,去验证分数高是不是真的更难改。
人类样本是 473 个仓库里至多 30 次改源码的提交,任务和这 36 道题不同。Agent 每关被清掉对话,只留目录,比留着聊天记录接着改更苛刻。崩溃后剩余关卡正确性记 0,质量只统计有代码的关,更常崩溃的模型会显得没那么差。一次能做完的题已被删掉,14.8% 外推不到日常小改。提示词只试了三条 GPT。表 1 取各模型 just-solve 的最佳一轮。正文把 67.3% 的 Core 记在 Opus 4.5,表上这个数在 Opus 4.6。