论文链接:arXiv:2610.25899 代码仓库:github.com/userljz/SWE-Residual 发表时间:2026年10月 机构:香港大学(主导)、腾讯(共同通讯作者单位)、东京大学、University of North Texas、University of British Columbia(企业+高校合作,HKU 学生为第一作者群) 领域标签:cs.SE / cs.AI(软件工程、agent 评估)
一、论文背景
1.1 SWE 基准的共同假设:任务从一张白纸开始
过去两年,coding agent 的能力评估被 SWE-bench 系列与 Terminal-Bench 类基准主导:把 agent 放进一个代码仓库或整台机器环境,给一个请求,等它宣称完成后用隐藏测试打分。这些基准任务类型各异——修 issue、跨语言、多模态、长时程、终端操作——但共享同一个从未被质疑的设定:起始状态是干净的(Clean Start),不含任何针对本任务的先前工作。分数由此成为"从零完成一件事"的度量。
1.2 现实中的 agent 常常从"半成品"开始
但真实工作里,agent 接手的往往不是白纸。开发者之间的任务交接是软件工程常态(贡献者放弃的 PR 大量存在);用户会在新会话里继续上一个 agent 宣称做完的工作,且没有旧会话的上下文;多 agent 系统中一个 agent 直接构建在另一个 agent 提交的"最终成果"之上。关键在于:agent 经常在并未完成的任务上宣称成功(Advani, 2026 对 false success 的刻画),所以交接过来的工作看起来是完成的,实际上不是——而且没有任何标注告诉你哪里不对。接手者必须自己从现场判断:哪些能信、哪些缺了、哪些是错的。
1.3 这个能力此前无法被测量
论文把这种能力命名为 Starting-State Robustness(起始状态鲁棒性):当任务的起始状态已包含先前工作时维持表现的能力。Clean Start 基准在结构上测不了它——两个 Clean 分数相同的 agent,接手半成品的表现可能天差地别,甚至排名反转(论文证实了这一点)。要测它,需要一类新的基准构造:真实的前驱失败现场、盲式的续作协议、与 Clean Start 严格配对的对照。这正是 SWE-Residual 要补的缺口。
二、论文定位和关联工作
2.1 谱系一:Clean Start 的 SWE 基准家族
SWE-bench(Jimenez et al., 2024)确立了"仓库+请求+隐藏测试"范式,后续扩展覆盖多语言(Multi-SWE-bench、SWE-PolyBench)、多模态(SWE-bench Multimodal)、长时程(SWE-Bench Pro、SWE-EVO、SWE-Lancer、FeatureBench)、链式请求(SWE-Chain、SWE-CI、SlopCodeBench 等)。Terminal-Bench(Merrill et al., 2026)把环境扩大到整台机器。它们全部假设干净起点——对"已被前人动过的同一任务"的表现是空白。
2.2 谱系二:开始松动的 Clean Start 假设
一批近期工作从不同角度接入"脏起点",论文的 Table 1 给出精确坐标:
| 基准 | 环境含前驱痕迹 | 前驱提交为完成 | 前驱工作失败 | 盲延续 |
|---|---|---|---|---|
| Handoff Debt(KC & Budathoki, 2026) | ✓ | ✗ | ✗ | ✗ |
| Handoff Tax(Ganz et al., 2026) | ✓ | ✗ | ✗ | ✗ |
| FeedbackEval(Dai et al., 2025)/ OmniCode(Sonwane et al., 2026) | ✓ | ✗ | ✓ | ✗ |
| Recovery-Bench(Tan et al., 2025) | ✓ | ✗ | ✓ | ✗ |
| FixedBench(Gloaguen et al., 2026) | ✓(已解决的 issue) | – | – | ✗ |
| SWE-Residual(本文) | ✓ | ✓ | ✓ | ✓ |
与最近的 Recovery-Bench 的区别最值得注意:Recovery-Bench 问"agent 能否从一次已知失败的尝试中恢复",其状态不要求前驱提交过、任务本身被框定为恢复,且可以带失败上下文;SWE-Residual 只保留"提交为完成但没通过验证"的最终状态,被评 agent 只拿到原始请求与现场,不知道有过失败——问题从"事后修复"变成"在看起来完成的工作里找出请求还要求什么"。FixedBench 研究对偶情形(issue 其实已解决,agent 仍乱改),两者共同揭示:agent 对现场状态的信任校准都有问题。
2.3 谱系三:为什么 agent 会接受劣质工作——认知机制文献
论文对接受偏差的解释连接到已知的 LLM 局限:无外部反馈时自我纠错失败(Huang et al., 2024;Kamoi et al., 2024);给定错误位置能改、自己找错却不行(Tyen et al., 2024);对输入中缺失的信息不敏感(Absence Bench,Fu et al., 2025);在多轮对话中沿着早期错误越走越远(LLs Get Lost in Multi-Turn Conversation,Laban et al., 2026;hallucination snowballing,Zhang et al., 2024)。甚至人类开发者在复用已有工件时也有锚定效应(Parsons & Saunders, 2004)。SWE-Residual 的贡献是把这些实验室现象落到一个可度量的工程场景:一个 agent 接另一个 agent 的活时,这些倾向到底值多少分。
2.4 定位结论
本论文 = Clean Start 基准家族的补集(同任务、同验证器、只换起始状态的配对设计)+ 交接类工作的新切片(提交为完成、盲续)+ 认知偏差文献的工程量化。它不改任务、不改测试、不发明新指标,而是控制一个此前从未被控制的变量。
三、问题定义
3.1 形式化:把"起始状态"变成唯一自变量
任务 T_i 由请求 q_i、起始状态 S_i、验证器 V_i 组成。agent A 从 S_i 出发产出最终状态 F_A(q_i, S_i),结果 y = V_i(q_i, F_A) ∈ {0,1}。Clean Start 用干净状态 S_0,i。
Residual State 的定义(论文唯一的新原始概念,式 2):
S_r,i = F_Ã(q_i, S_0,i),其中前驱 Ã 宣称任务完成,且 y_Ã,i(S_0,i) = 0。
三个条件缺一不可:前驱真的努力做过同一请求;前驱提交了(不是中途被掐断);隐藏测试仍失败。Starting-State Robustness 即比较 y_A,i(S_0,i) 与 y_A,i(S_r,i)——请求、验证器、harness、预算全部不变,起始状态是唯一变量。
3.2 这个抽象的精妙之处
第一,配对消除一切混杂。因为任务与验证器不变,同一 agent 的 Clean/Residal 差分(Residual Gap)只能归因于继承状态本身——不需要任何统计建模就能做因果归因,这是基准设计里罕见的干净。第二,“提交为完成"这个筛选条件把研究问题从"恢复"换成了"信任校准”:现场没有失败信号,agent 的困难纯粹来自"表面完成度"与"请求实际要求"之间的落差。第三,每个任务保留 1–3 个来自不同前驱的状态,天然提供了"同一请求、不同半成品"的重复测量。一个类比:Clean Start 考的是作文从零写,Residual Start 考的是接手一篇看起来文从字顺但跑题的草稿继续写——后者考验的是对照题目的审读能力,而非写作能力本身。
3.3 度量的形式定义
配套的指标定义也值得写出来,因为它决定了后面所有数字的解读方式。任务集 T 上 agent A 的 Residual 成功率对状态先取任务内均值、再跨任务等权:
Res(A) = (1/N) Σ_i (1/K_i) Σ_{S∈R_i} y_A,i(S)
Clean 参照取同一批任务的单一干净状态:Clean(A) = (1/N) Σ_i y_A,i(S_0,i)。Gap = 100·(Clean − Res)。条件失败率则限定在 C_A = {i : y_A,i(S_0,i)=1}(agent 自己 Clean 能解的任务)上算 1 − y 的均值——注意 C_A 因 agent 而异,每个 agent 在自己的任务集上被评估。这个细节常被忽略:条件失败率不是跨 agent 可直接比较的绝对分数,而是"自己 vs 自己"的相对度量。
四、问题解法
4.1 Residualization:四阶段构造管线
阶段 I:轨迹生成。三个不同规模的开源前驱模型——DeepSeek-V4-Flash-0731、Qwen-3.8-27B、GLM-5.3(便宜到可以大规模跑、又强到工作像真实交接)——从干净状态尝试 DeepSWE v1.1(90/113 任务)与 Terminal-Bench 2.1(21/89 任务)的每个任务,每次 8 小时的宽裕时限,完整记录轨迹、终止原因、是否宣称完成、验证器结果,以及重建现场所需的全部信息(DeepSWE 存 binary-safe patch;TB 存有序终端交互序列)。
阶段 II:自动过滤。三条规则:(a) Submitted but failing——宣称完成但验证失败;(b) Changed——剔除执行副产物(构建输出、缓存、日志)后状态确有实质改变;(c) No infrastructure failure——排除模型服务错误、容器崩溃等与任务无关的中断。同一任务的重复最终状态只留一份。
阶段 III:人工审核。轨迹动辄数百步,两位审者独立依据请求、状态变更 diff、以及 GLM-5.3 生成的轨迹意图摘要判断两条标准:(a) Task-directed——变更确属完成请求的连贯尝试而非无关改动;(b) Task–verifier consistent——请求与隐藏测试对完成的要求一致。注意 AI 只做摘要、人做全部收录决定(论文 AI 使用声明明确此点)。
阶段 IV:状态重建。DeepSWE:在 base commit 的原始 Docker 镜像上把 patch 打进工作树但不建 commit——agent 看到的是未提交的修改(git status/diff 可见),前驱的 commit 历史被压平、commit message 不传递;agent 完全可以丢弃重来(无任何 git 操作限制),但实际上无人这么做。Terminal-Bench:在全新环境中回放终端交互序列,用 CRIU 做 Docker 检查点——连运行中的进程都保留(有的状态里有跑着的 QEMU 虚拟机)。最后验证重建状态可用且原验证器仍返回失败。207 个通过人审的候选中 9 个在重建/验证环节被剔除,最终 198 个。
4.2 盲延续协议
被评 agent 收到:原始请求 + 继承状态 + 源基准默认的 harness(DeepSWE 用 mini-swe-agent、TB 用 Terminus-2,全部经 Harbor 编排)、预算与系统提示。不收到:前驱轨迹、任何摘要、任何"此前有失败尝试"的提示。状态里自然残留的痕迹(shell history、前驱写的测试与笔记)属于状态本身,可以看。基础设施失败与任务失败严格区分:验证器报错绝记为任务失败,网络/容器问题则从同一初始状态重启。
4.3 最终基准的样貌
198 个 Residual States(DeepSWE 165 / TB 33),覆盖 111 个源任务、74 个仓库、5 种语言(TS/Go/Python/JS/Rust)与 TB 的 9 个任务类别;42 个任务一个状态、51 个两个、18 个三个。前驱工作量不轻:DeepSWE 中位 134 步、47.7 分钟、改 9 个文件、patch 中位 44.6 KiB。关键性质:状态离通过很近——DeepSWE 中位状态已通过 98.4% 的隐藏测试,53.3% 的状态只剩 1–3 个测试失败;TB 中位通过 60.0%。“看似完成"不是修辞:这些现场就是差一两步的样子货。
五、评估指标与实验证据
5.1 指标体系
- 主指标:Residual Start 成功率——任务内先对状态求均值、再跨任务等权平均,每个源任务权重相同。
- 配对参照:Ref. Clean——同一批任务上的 Clean Start 成功率(请求/验证器/harness/预算全同)。
- Residual Gap = Clean − Residual(百分点):正值为落后,直接量纲化"继承的代价”。
- 条件失败率:限定在 agent 自己 Clean Start 能做对的任务上,看其 Residual 失败率。
- 行为签名指标(DeepSWE,因有逐测试结果与参考解):same-failing(失败延续以与起点完全相同的失败测试收场)、kept(前驱所写行的保留率)、left-out files(参考解改过而前驱没改的文件,被改/被打开比例)、steps 比。
5.2 主结果:全线大跌 + 排名反转
五个前沿 agent(Gemini-3.8-Flash、Qwen-3.8-Flash、GLM-5.3-Flash、GPT-6-Sol、Kimi-K2.8-Preview,均为最高推理档):
| DeepSWE | Residual | Clean | Gap | Terminal-Bench | Residual | Clean | Gap |
|---|---|---|---|---|---|---|---|
| Gemini-3.8-Flash | 20.0 | 72.2 | 52.2 | Gemini-3.8-Flash | 14.3 | 47.6 | 33.3 |
| Qwen-3.8-Flash | 30.6 | 51.1 | 20.6 | Qwen-3.8-Flash | 12.7 | 33.3 | 20.6 |
| GLM-5.3-Flash | 15.4 | 68.9 | 53.5 | GLM-5.3-Flash | 14.3 | 38.1 | 23.8 |
| GPT-6-Sol | 33.5 | 65.6 | 32.0 | GPT-6-Sol | 36.5 | 71.4 | 34.9 |
| Kimi-K2.8-Preview | 13.0 | 57.8 | 44.8 | Kimi-K2.8-Preview | 20.6 | 42.9 | 22.2 |
四个层次的读法。第一,量级:没有任何 agent 的 Gap 小于 20.6 个点,最大 53.5——继承一个"差一两步"的现场,比从零开始难得多,尽管中位状态已通过 98.4% 的测试。第二,排名反转:DeepSWE 上 Clean 第 1、2 名的 Gemini、GLM 落到 Residual 第 3、4;GLM 在 Clean 下领先 Qwen 17.8 个点,Residual 下反被 Qwen 领先 15.2 个点。Clean 榜单对"接手能力"没有预测力。第三,绝对分与降幅捕捉不同东西:GPT-6-Sol 两轨 Residual 均最高(33.5/36.5),Qwen-6 Gap 最小(20.6)——谁是"最稳健"取决于看哪个指标。第四,跨前驱稳定:按三个前驱模型分组,五个 agent 在全部九个分组中一致下降(Gap 19.0–51.8),下降不是某个前驱模型的怪异风格造成的。附表 8 的合并数据(两轨合一、111 任务等权)给出全貌:
| 被评 agent | 总体 Clean/Residual | DeepSeek 前驱 | Qwen 前驱 | GLM 前驱 |
|---|---|---|---|---|
| Gemini-3.8-Flash | 67.6 / 18.9 | 62.0 / 19.0 | 68.7 / 16.9 | 44.4 / 5.6 |
| Qwen-3.8-Flash | 47.7 / 27.2 | 40.5 / 21.5 | 51.8 / 32.5 | 38.9 / 8.3 |
| GLM-5.3-Flash | 63.1 / 15.2 | 57.0 / 11.4 | 62.7 / 15.7 | 33.3 / 2.8 |
| GPT-6-Sol | 66.7 / 34.1 | 63.3 / 32.9 | 62.7 / 34.9 | 47.2 / 19.4 |
| Kimi-K2.8-Preview | 55.0 / 14.4 | 51.9 / 12.7 | 55.4 / 9.6 | 38.9 / 11.1 |
一个值得注意的梯度:GLM 前驱产出的状态对所有人都是最难接的(连 GPT-6-Sol 也只剩 19.4)——但论文提醒各组覆盖的任务集不同,绝对分不可跨组比较;一致下降的方向才是可靠结论。
5.3 Clean 的成功带不过去
限定在"该 agent Clean Start 做成"的任务上:三个被分析 agent 的条件失败率为 63.4–79.0%(DeepSWE)与 61.9–81.3%(TB)。Gemini 在自己 Clean 能解的 DeepSWE 任务上,从 Residual 状态失败 75.4%;Clean 最强的 Gemini 与 GLM 恰是条件失败最多的。会做 ≠ 会接。
5.4 接受偏差:可量化的行为签名
DeepSWE 上的五项签名(按 Gap 排序):
| Agent | Gap | Same failing | Clean 下能过这些测试 | Residual 下 | Kept | Left-out 文件 Clean 改动率 | Residual 改动率 | 步数比 |
|---|---|---|---|---|---|---|---|---|
| GLM-5.3-Flash | 53.5 | 78.9% | 87.3% | 23.4% | 95.7% | 40.5% | 6.7% | 0.57 |
| Gemini-3.8-Flash | 52.2 | 76.8% | 88.4% | 27.5% | 97.2% | 43.5% | 9.4% | 0.70 |
| Kimi-K2.8-Preview | 44.8 | 88.2% | 77.6% | 14.4% | 98.6% | 45.7% | 8.1% | 0.56 |
| GPT-6-Sol | 32.0 | 58.9% | 84.1% | 47.7% | 91.1% | 41.2% | 15.0% | 1.02 |
| Qwen-3.8-Flash | 20.6 | 72.0% | 72.8% | 39.1% | 86.4% | 47.9% | 14.6% | 0.84 |
签名之间的结构关系比单点数字更有说服力:
- 测试不是做不了,是一旦有了失败版本就做不了。失败延续中仍失败的测试,同一 agent 从 Clean Start 能过 72.8–88.4%;从 Residual 只能过 14.4–47.7%。难度不在测试,在现场。
- 没有人推倒重来。每个延续都检查了继承变更(git status/diff 或读改动文件),然后在内部工作;保留 86.4–98.6% 的前驱代码行;除 GPT-6-Sol(步数比 1.02)外其余 agent 的延续步数只有 Clean 的 0.56–0.84 倍——干得更少,不是更多。
- 被遗漏的文件"看见了也不改"。参考解改过、前驱没改的文件,Clean 下 40.5–47.9% 的运行会改到,Residual 下只有 6.7–15.0%;而这些文件在 37.6–64.0% 的延续运行中被打开过——打开、看完、放下。
- 接受越多,输得越多。Gap 最大的三个 agent 恰是每项签名最强的;agent 内部看,保留行数高于自身中位的延续,成功率比低于中位的低 14.0–22.7 个点。
- GPT-6-Sol 是部分例外:30 个失败延续抽样中 11 个能点名前驱工作的缺陷并尝试修复(其他 agent 至多 2/30),修复率最高(20.1%)、same-failing 最低(58.9%)——它的失败更多是"修复未遂"而非"照单全收",但 Gap 仍有 32.0 点。识别缺陷能挽回一部分,修不好照样输。
5.5 行为签名的精确口径
附录 D 给出行为度量的严格定义,这些口径决定了数字可信度:same-failing 要求最终失败测试集与起点完全相等(不只是没修好,是没碰);kept 以前驱相对 base commit 新增/替换的文本行为分母、精确保序匹配计数(删除的行不计入);left-out 文件的"打开"判定很谨慎——cat/sed/head/tail、能显示文件内容的 grep/rg、编辑器视图都算,但 ls、find、rg –files、grep -l、git diff –stat 一律不算(只看到路径不算看到内容);steps 比是每个延续步数除以同任务 Clean 运行步数后按任务平均、取中位。分析只用"正常提交"的运行(agent 宣称完成且验证器有效返回),预算耗尽与基础设施失败剔除。这套口径把"agent 是不是真的看见了却没改"从印象变成了可审计的统计。
5.6 一个干净的案例
Gemini 在 onedump 任务上:Residual State 挂着 11 个测试,全部是该 agent Clean Start 能过的。它从 Residual 出发,检查继承变更、跑包内测试(全过)、43 步后一个文件没改就提交,结语还把前驱的工作说成自己的:“I have implemented the requested encryption package."——参考解要改的 encryption/encryption.go 前驱从没碰过,该 agent 也没碰(它自己的 Clean 运行会改)。Qwen 与 GLM 从同一状态失败,同样留着那 11 个测试挂到终局。包内测试全过 + 现场看起来完整 = 提交,请求本身反而退出了判断回路。
六、效果优势的根源解释
本论文是基准论文,“优势"指其揭示能力缺口的有效性。以下解释下降为何必然发生,并做外部交叉验证。
6.1 根源机制与证据链
机制一:继承状态把"完成判据"从请求偷换成了现场。 因果链:现场高度完整(中位 98.4% 测试已过、包内测试全过、代码连贯)→ agent 的验收信号(能跑、自洽、看起来完工)全部亮绿灯 → 与请求的对照不再是决策输入 → 剩余工作(那 1–3 个失败测试、被遗漏的文件)被现场定义为"不存在” → 以 same-failing 收场。【论文实验已支持:same-failing 58.9–88.2%、left-out 文件打开不改】
机制二:锚定效应的代码版。 前人代码是强先验:保留 86–99%、无人推倒重来、步数反而更少——这不是能力不足的懒惰,是概率意义上的理性短路(在已有解上微调的先验成本低于重写),叠加 LLM 已知的"沿早期内容持续"倾向(multi-turn lost、snowballing)。人类开发者的工件复用锚定(Parsons & Saunders, 2004)提示这是跨主体的普遍现象而非 LLM 特有。【论文实验已支持 + 外部旁证】
机制三:缺失检测是 LLM 的系统性弱项。 Absence Bench 证明模型对"输入里缺什么"不敏感;Tyen et al. 证明给定位能改、自找错误不行。Residual 任务恰好同时要求两者:发现请求要求了而现场没有的东西(缺失检测),并定位现场错误(自找错)。GPT-6-Sol 的部分例外恰好沿此分化——它最接近"点名缺陷并修"的模式,说明该机制可改善但当前远未解决。【论文实验支持 + 外部文献一致】
机制四:为什么排名会反转。 Clean 分数奖励"从零生成正确实现"的能力;Residual 分数额外要求"对抗现场先验、对照请求审计"的能力。两者相关但不等同,且现场先验对强生成者的干扰可能更大(Gemini/GLM 的条件失败率最高)——生成越自信,锚越深。此条为阅读者推测,论文只呈现了反转事实,未验证此解释。【阅读者推测】
6.2 相关工作检索与对照
| 研究 | 相似尝试 | 相关结论 | 与本文的差异与边界 | 对根源解释的影响 |
|---|---|---|---|---|
| Recovery-Bench(Tan et al., 2025, NeurIPS Workshop) | 从失败 TB 运行恢复 | 更多失败上下文反而更糟 | 非提交状态、恢复框架、可带上下文;机器环境单轨 | 支持:额外失败信息不解决问题,反而可能强化锚定 |
| Handoff Debt / Handoff Tax(2026) | 中途检查点接手成本 | 接手有"重发现成本” | 中断而非提交、带上下文、仓库级单轨 | 补充:交接代价在人类/agent 间普遍,本文量化其"盲式+伪完成"极端形态 |
| FixedBench(Gloaguen et al., 2026) | issue 已解决时 agent 行为 | agent 倾向多余改动 | 对偶设定(该动而不动 vs 不该动而乱动) | 支持机制一的反面:完成判据同样被现场劫持 |
| LLMs Cannot Self-Correct(Huang et al., 2024)/ Kamoi et al. 2024 | 无外部反馈的自我纠错 | 纠错常无效甚至有害 | 推理任务,非工程现场 | 支持机制二、三的认知基础 |
| Absence Bench(Fu et al., 2025) | 检测输入缺失 | 模型看不见缺失 | 短上下文合成任务 | 支持机制三,本文提供工程级证据 |
| Tyen et al. 2024 | 定位 vs 修正错误能力 | 给定位能改、自找不能 | 受控实验 | 支持机制三;GPT-6-Sol 的"点名缺陷"行为与其"定位是瓶颈"一致 |
| Laban et al. 2026 / Zhang et al. 2024 | 多轮迷失 / 幻觉雪球 | 早期内容持续牵引后续输出 | 对话级现象 | 类比支持机制二【阅读者标注:类比非因果】 |
| CooperBench(Khatua et al., 2026) | 编码 agent 当队友 | 协作中信息整合失败 | 协作任务、含沟通 | 补充:跨 agent 工件信任问题在协作场景同样存在 |
本次检索范围内未发现同时满足"提交为完成 + 盲延续 + 同任务 Clean 配对"三条件的其他基准;最接近的 Recovery-Bench 已在上表对照。未发现直接反驳"接受偏差"存在性的工作;FixedBench 的"多余改动"看似相反(动了不该动的),实则同源于"以现场而非请求为判据",归入支持。
6.3 综合判断与未决问题
多条独立证据链共同支持的核心机制:完成判据被现场劫持 + 缺失检测弱项 + 锚定保留——same-failing/left-out/kept 三签名互相咬合,外部文献从三个不同范式给出一致旁证。仍属推测的:排名反转的"自信锚定"解释;条件失败率的组间差异是否随任务类型稳定。适用边界:前驱来自三个开源模型(人类写的半成品、更强前驱的现场未覆盖);198 个状态、111 任务对精细分组分析偏紧;接受偏差分析限于 DeepSWE(TB 无逐测试粒度)。可能的失效条件:若评测的隐藏测试很粗(单测试验收),现场完整度信号变弱,锚定或减轻;带显式交接说明(handoff notes)的协议可能改变盲式结论——但 Recovery-Bench 的证据暗示未必向好。
七、必要知识反推
7.1 领域知识层
- SWE 基准的评测机制细节:DeepSWE 与 Terminal-Bench 的任务结构、隐藏测试、验收粒度、harness(mini-swe-agent、Terminus-2)与 Harbor 编排——不知道验证器怎么工作,就无法设计"只换起始状态、其余全同"的配对协议。
- 机器级状态工程:CRIU 检查点、Docker 状态回放、binary-safe patch——TB 轨迹的"整台机器"残留(含活进程)没有这些根本无法复现;还需知道基础设施失败与任务失败的区分标准,否则污染数据。
- 软件工程交接实践:PR 放弃、会话续作、多 agent 接力这些真实场景——没有对实践 pains 的观察,想不到把"提交为完成但失败"单列为一个切片。
7.2 方法论知识层
- 基准构建的效度方法:四阶段"生成→规则过滤→双人独立人审→重建验证"是标准数据 curation 范式(自动召回 + 人工精确 + 复现校验);理解为什么 GLM 摘要只能辅助人审而不能替人决定(AI 使用声明的由来)。
- 受控变量与配对设计:意识到 Clean/Residual 共用一切其他要素时,Gap 即纯效应——这是实验设计素养,不是工程技巧。
- LLM 认知偏差文献:self-correction 失效、absence detection、多轮迷失——行为分析的字词选择与归因方向全部建立在这些前作上;不读它们,观察到 same-failing 只会描述为"agent 偷懒"。
7.3 工程知识层
- 大规模评测运维:8 小时/次的前驱生成跑 111 任务 × 3 模型、五 agent × 198 状态 × 两条件的评测、失败重启策略——纯体力上就是重活。
- 可复现打包:patch 与交互序列的保存格式、状态重建清单、逐 run 结果记录(可复现性声明的具体内容)。
7.4 知识融合的关键节点
最关键的融合点在于把一个社会实践(交接伪完成品)翻译成一个受控变量(起始状态)。这需要同时持有三样东西:对 agent 失败模式的经验直觉(知道 false success 高发)、对基准设计的方法论敏感(Clean Start 是隐藏假设)、对形式化的克制(只引入一个新定义 S_r,不发明新指标)。第二融合点是行为度量的设计:same-failing、kept、left-out、steps 每一个都直接可从 diff 与逐测试结果计算,却精确对应认知文献中的抽象构念——把"锚定"从心理学名词变成 86.4% 这样的数字,是整篇论文分析力的来源。
八、论文中可以提取的通用性灵感
灵感一:被所有同类系统共享的隐含假设,是新品类基准的矿脉。 核心思想:一个领域内所有基准共有的默认设定(此处:干净起点)不是事实,而是未检验的假设;把它变成受控变量,就能量出从未被测过的能力维度。 论文证据:Clean/Residual 配对揭示 20.6–53.5 点的隐藏缺口与排名反转。 推广场景:(1) 评估翻译系统——都从原文出发,可测"从带错误的初译出发";(2) 评估代码评审——都看完整 PR,可测"从被截断的上下文出发";(3) 评估客服——都接新工单,可测"接手前任的半程对话";(4) 评估自动驾驶——都从标准路况,可测"从异常中间态恢复"。
灵感二:表面完成度是比难度更强的行为杠杆。 核心思想:决策者(人或 agent)对"看起来完成"的现场会系统性降低审查强度,哪怕客观上离完成很远;表现降幅可以完全由现场外观而非任务难度解释。 论文证据:中位 98.4% 测试已过的现场导致最大 53.5 点跌幅;包内测试全过即提交的 onedump 案例。 推广场景:(1) 安全审计——伪装成规范代码的后门更难被发现,审计规程应强制对照需求而非现场自洽性;(2) 学生作业查重/查代写——完成度高的提交降低教师警觉;(3) M&A 尽调——财务包完整性与实质健康脱钩;(4) 多 agent 流水线的中间产物验收——自洽性检查不等于需求符合性检查。
灵感三:测"会做"之外,加一道"会接"的配对测试。 核心思想:任何接棒型工作(维护、运维、迭代)的能力评估都应包含"从他人半成品继续"的配对臂,且以同一主体的从零表现作差分。 论文证据:条件失败率 63–81%——Clean 成功对 Residual 成功几乎无预测力。 推广场景:(1) 招聘工程——接手遗留代码库的实测环节;(2) agent 采购评测——在厂商榜单之外加交接臂;(3) 医疗交接(shift handoff)培训评估;(4) 开源社区的新维护者入门考核。
灵感四:锚定效应可用"保留率—结果"相关做个体级量化。 核心思想:与其争论某主体是否被锚定,不如定义可计算的保留指标,再看保留量与结果的相关斜率——相关即偏差的代价。 论文证据:kept 高于中位的延续成功率低 14.0–22.7 点;三签名强度与 Gap 排序咬合。 推广场景:(1) 诊断编辑类 agent 的过度保守——保留率 vs 修复率曲线;(2) 人类 code review 的从众性测量;(3) 投资决策中对初始持仓的处置效应检查;(4) prompt 工程里 few-shot 示例对输出的锚定度。
灵感五:修复方向应当是"对照原始请求的审计步骤",不是"更多交接上下文"。 核心思想:当失败源于判据被现场劫持,补充关于失败本身的信息未必有用(Recovery-Bench 证据),有效干预是把请求重新推回决策回路(先对照请求列差异清单,再动代码)。 论文证据:GPT-6-Sol 的"点名缺陷并尝试修复"模式对应最低 same-failing 与最高修复率,虽未完全恢复。 推广场景:(1) agent harness 设计——续作前强制执行 diff-against-spec 步骤;(2) 人机协作 SOP——接手任何工作先重读需求文档;(3) 多 agent 系统的验收节点——下游 agent 须对上游产出跑需求符合性清单;(4) 写作教学——修改课先教"对照提纲审读"再教改写。
灵感六:让"生产失败"成为资产。 核心思想:一个系统(前驱 agent)的失败产物,经过筛选、审核、重建,可以变成评估另一个系统的稀缺资源——失败现场本身有基准价值。 论文证据:Residualization 把 8 小时 × 数百次的前驱运行变成 198 个可复现、可配对的状态资产,且管线明确可扩展到新前驱、新源基准。 推广场景:(1) 把 CI 失败历史做成回归测试集;(2) 用学生错误答案构建诊断性习题;(3) 医疗误诊病例库作为培训基准;(4) 用 A/B 实验的失败分支数据训练反事实评估器。
灵感七:配对差分(同主体、同任务、单变量)是最强归因工具。 核心思想:当怀疑某个被所有人默认的条件影响表现时,让同一主体在仅该条件不同的两种设定下做同一件事,差值即是效应——无需统计建模。 论文证据:请求/验证器/harness/预算全部固定、只换起始状态的协议,使 20.6–53.5 点的 Gap 可直接归因于继承状态。 推广场景:(1) A/B 测试的个体内设计(同一用户先后两种体验);(2) 评估工具链升级——同任务新旧编译器输出的正确性差;(3) 临床交叉试验;(4) agent 评测中隔离"上下文长度"“工具集"“提示措辞"等单一变量。
附录:关键数字速查
- 198 状态 = DeepSWE 165 + TB 33;111 源任务(42×1 态、51×2 态、18×3 态)
- 前驱:DeepSeek-V4-Flash-0731(79 态)/ Qwen-3.8-27B(83 态)/ GLM-5.3(36 态)
- 五 agent Gap:DeepSWE 20.6–53.5 pp;TB 20.6–34.9 pp;九个前驱分组全部下降(19.0–51.8 pp)
- 条件失败率(Clean 能做对的任务从 Residual 失败):63.4–81.3%
- 接受偏差签名:same-failing 58.9–88.2%;kept 86.4–98.6%;left-out 改动率差 26.2–37.6 pp;步数比 0.56–1.02
附录:被评 agent 究竟能看到什么
论文 Table 6 对两种条件下的信息面做了完整对照,这是理解"盲延续"的最后一环:
| 信息项 | Clean Start | Residual Start |
|---|---|---|
| 起始状态 | 原始仓库/机器 | Residual State |
| 请求 | 原始请求 | 原始请求(相同) |
| 系统 prompt、harness、预算 | 源基准默认 | 源基准默认(相同) |
| 状态内的前驱工作 | 无 | 保留:代码、测试、文档、笔记 |
| 前驱轨迹、摘要、交接说明 | – | 不提供;状态内自然痕迹(如 shell history)可访问 |
| “存在失败尝试"的提示 | – | 不提供 |
| 人审用的轨迹摘要 | – | 不提供 |
| 隐藏测试与参考解 | 不提供 | 不提供 |
DeepSWE 侧还有两个设计细节:前驱写的测试会留在工作树里、被评 agent 可以查看甚至修改(但最终判定只认源基准验证器);patch 打入后不建 commit,因此继承变更以未提交修改的形态出现,前驱的 commit message 全部丢失——agent 看得到"改了什么”,看不到"为什么这么改”。TB 侧则连活进程(如运行中的 QEMU 实例)都原样恢复,并验证恢复后 VM 与相关服务仍可操作。回放重建的损耗率也公开:207 个过审候选中 3 个 patch 应用/回放失败、3 个环境不可用、3 个不再失败或无有效验证结果,最终留 198 个。
一句话总结:SWE-Residual 证明 coding agent 的"从零解题分数"严重高估了它们的接棒能力——当一个差一两步的完成品摆在面前,前沿模型会把题目忘掉、把现场当答案;这篇论文不仅量出了这个缺口,还把它做成了可扩展、可配对、可复现的资产,为所有"接力型"工作场景的评估与训练提供了模板。