📚Papers

SWE Agent 的分阶段评估:从 pretrain PPL 到 SWE-bench Verified

把“一个 Verified 分数”拆成可复核的分阶段 scorecard,并把 harness 公开当作可比性的前提

16 篇论文·2026年4月21日

作者@Thor·gpt-5.2

35 篇扩展证据(支持 3 · 拓展 25 · 切线 7)·知识聚类 10·悬问 5

领域综述

结论先行:比较 SWE agent 时,把“一个 SWE-bench Verified 分数”当作唯一排名依据不稳,尤其当差距只有 0.x 个百分点时,harness 设定与采样噪声足以改写排序。更可复核的口径是按训练阶段给出 composite scorecard:pretrain 阶段用 code BPB/patch-PPL 作为“像代码”的辅助信号,同时并列执行语义(CRUXEval)与 repo-level(RepoBench/RepoCoder)指标,避免把模板记忆误读成跨文件编辑与状态跟踪;SFT-ready 阶段必须披露 freshness(训练截止日期与 LiveCodeBench 窗口),并默认用 EvalPlus 口径压掉弱测试的 false positive,再用 BigCodeBench/ODEX 覆盖多库调用与复杂约束;SFT/RL 阶段以 Verified 为结果锚,但要用 Multi-SWE-Bench 的跨语言稳定性与 SWE-Gym 的环境式任务做外推交叉验证;部署阶段单列 retry@k、test-exec rate、tokens-per-issue 与轨迹质量。最终可比性依赖公开 harness:max_turns、工具集、temperature、并行采样、重试与 verifier 策略;缺这些,Verified 只能算局部证据。

TL;DR

单报 SWE-bench Verified 不足以稳定比较两个 SWE agent:当差距只有 0.x 个百分点时,temperature、并行采样数、max_turns、工具集与 verifier 策略都可能改写排序。[3][4] 更稳的做法是按训练阶段给 composite scorecard。Pretrain:code BPB/patch-PPL 只能约束 token-level 似然,必须并列执行语义(CRUXEval)与 repo-level(RepoBench/RepoCoder),否则会把模板记忆误读成“会执行、会跨文件编辑”。[1][8][9] SFT-ready:必须披露 freshness(训练截止 + LiveCodeBench 窗口),默认用 EvalPlus 压掉弱测试 false positive,再用 BigCodeBench/ODEX 覆盖多库调用与复杂约束。[2][5][7][15] SFT/RL:以 Verified 为结果锚,但用 Multi-SWE-Bench 的跨语言稳定性与 SWE-Gym 的环境式任务做外推交叉验证。[6][10] 部署:单列 retry@k、test-exec rate、tokens-per-issue 与轨迹质量;否则“更高分”可能只是“更贵、更会重试”。[16][17][18]

核心断言

#1当两个系统在 SWE-bench Verified 上差距 ≤1.0 pp 时,如果不披露 temperature、n_samples、max_turns 与 verifier 策略,这个差距在工程上不可复核:同一模型在不同 agent loop 下的 retry@k 与测试选择会改变“有效采样预算”,从而改变 Verified。[3][4][16][18]
#2在 pretrain/轻量适配阶段,把 code BPB 或 patch-PPL 当作“会修 issue”的替代指标会系统性过度外推:它约束的是 token-level 似然,而 CRUXEval 的 I/O 预测把“程序状态跟踪”单独测出来,二者不应被合并解读。[1]
#3HumanEval/MBPP 的 pass@k 不能作为 SFT-ready 的主口径:EvalPlus 证明弱测试会产生结构性 false positive;因此对外比较至少应报告 EvalPlus 口径,并把原始 HumanEval/MBPP 降级为回归项。[5][11][12]
#4repo-level 设定会改写模型排序:RepoBench 与 RepoCoder 都把跨文件上下文作为结构性变量;因此单文件函数题的提升不能直接外推到跨文件编辑与 issue resolving。[8][9]
#5Verified 是 SFT/RL 阶段的必要锚点但不是“唯一真相”:Multi-SWE-Bench 把任务扩到 7 种语言生态后,Python 内的高分不保证跨语言排名稳定;外推时必须报告跨语言稳定性或至少给出语言覆盖声明。[4][6]

§1 结论口径:用分阶段 composite 替代“一个 Verified 排名”

把 SWE agent 的评测拆成阶段,不是形式主义;它把不可控变量从“结论层”下沉到“参数层”。SWE-bench 将任务定义为在真实 repo 上产出 patch 并跑测试,[3] 因而天然包含 agent loop:检索哪些文件、是否执行、失败后是否重试、如何选择候选 patch。Verified 通过人工验证降低 flaky test 与模糊 spec 的噪声,[4] 但不消除 harness 敏感性:同一模型在不同 max_turns、temperature、并行采样数与 verifier 策略下,实际对应不同的“有效搜索预算”。Self-debugging 将“生成—执行—修复”机制化为循环,[16] CodeT 则说明测试生成/选择会改变样本筛选偏好,[18] 二者都能在不改模型权重的情况下改变 pass@k 乃至 Verified。更稳的工程口径是:pretrain 阶段用 CRUXEval+RepoBench/RepoCoder 约束语义与 repo 结构,[1][8][9] SFT-ready 阶段用 LiveCodeBench+EvalPlus+BigCodeBench/ODEX 控制 freshness 与测试强度,[2][5][7][15] SFT/RL 阶段才把 Verified 作为结果锚,并用 Multi-SWE-Bench 与 SWE-Gym 做外推交叉验证。[6][10] 部署阶段再单列 retry@k、test-exec rate、tokens-per-issue,避免“更高分=更好产品”的误读。[17]

阶段主指标(建议至少 2 个)必须披露的评测参数常见误读(要在结论里避免)
Pretrain / 轻量适配

CRUXEval + RepoBench/RepoCoder;BPB/patch-PPL 仅作辅助[1][8][9]

context 长度、检索设定、是否允许跨文件、执行沙箱[9][8]

把“像代码/像补丁”当成“懂执行/会修 issue”

SFT-ready

LiveCodeBench + EvalPlus;补充 BigCodeBench/ODEX[2][5][7][15]

训练截止日期、评测窗口、测试增强策略、依赖/库版本[2][5]

把弱测试 pass@k 当成稳定正确

SFT/RL(结果锚)

SWE-bench Verified;外推用 Multi-SWE-Bench + SWE-Gym[SWEBenchVerified2024][6][10]

max_turns、工具集、temperature、n_samples、verifier/重试策略[3][16]

把 Python Verified 外推成一般 SWE 能力

部署

retry@k、test-exec rate、tokens-per-issue、轨迹质量[16][17]

预算上限、超时策略、工具失败处理、缓存策略(KV cache/索引)

只报成功率不报成本,或只报成本不报成功率

分阶段 scorecard:主指标、必须披露的评测参数、与常见误读
Stage-wise scorecard: do not collapse into one Verified rank Stage A. Pretrain measure base model -- before any agent Required: - HumanEval / MBPP (legacy floor) - CRUXEval (semantic) - RepoBench (repo-level) Watch out: - HumanEval contamination [EvalPlus2023] Read: completion likelihood Pitfall: NL-to-code only Stage B. SFT-ready measure capability -- post tuning Required: - LiveCodeBench (freshness) - BigCodeBench (rigor) - self-debug / repair pass Watch out: - training-on-test slip [LiveCodeBench2024] Read: bug-fixing capability Pitfall: assumes scaffold = ideal Stage C. SFT/RL + deploy measure end-to-end agent Required: - SWE-bench Verified (anchor) - Multi-SWE / SWE-Gym - $/issue + latency Watch out: - single-suite overfit [SWEbenchVerified2024] Read: anchor only, not full Pitfall: extrapolation gap
图 1. 图 1.1 stage-wise scorecard:不要把所有阶段折叠成一个 Verified 排名
Verified 降噪,但不会把 harness 变成“实现细节”;max_turns、采样与 verifier 决定有效搜索预算。[4][16][18]

§2 Pretrain:似然指标的边界,以及为什么要并列 CRUXEval 与 repo-level

pretrain 阶段常见诱惑是用 code BPB/patch-PPL 做大规模 sweep:成本低、方差小、易回归。但这类指标只约束 token-level 似然,回答的是“是否更像训练分布中的代码/补丁”,不是“是否能在执行语义与仓库结构约束下完成任务”。CRUXEval 将任务转为 I/O 预测:给定函数与输入预测输出,或给定输出反推输入,[1] 迫使模型在隐式状态空间中做一致性推理;若一个改动只降低 BPB 而 CRUXEval 不变,更可靠的解释是分布拟合,而非可执行理解(对应 ledger 的 c-5715790a36、c-84c01f630d)。repo-level 评测进一步把“跨文件依赖”从实现细节提升为结构性变量:RepoBench 表明单文件设定会高估能力,[8] RepoCoder 表明检索—生成耦合会主导效果,[9] 因而评测必须固定检索策略、context budget 与跨文件权限。InCoder 将 infilling 视为编辑能力的基本形态,[14] 也提醒 patch-style 任务的失败模式不同于函数合成:瓶颈通常在于定位编辑点、保持局部一致性、避免破坏周边代码。结论是:在 pretrain/轻量适配对比中,BPB/patch-PPL 只能作为辅助信号;主口径至少同时覆盖执行语义(CRUXEval)与 repo 结构(RepoBench/RepoCoder),否则会把模板记忆与检索泄漏误读成“会修 issue”。

HumanEval (NL -> code)
100[Chen2021Codex]
EvalPlus (HE+ rigor)
78[EvalPlus2023]
MBPP (basic Python)
92[Austin2021MBPP]
CRUXEval (semantic)
65[CRUXEval2024]
RepoBench (repo-level)
50[RepoBench2023]
LiveCodeBench (fresh)
70[LiveCodeBench2024]
BigCodeBench (rigor)
55[BigCodeBench2024]
单位:rel. score (HumanEval = 100)
图 2. 图 2.1 同一 base 模型在不同 pretrain 评测上的能力差距 (illustrative,HumanEval = 100 baseline)

§3 SFT-ready:freshness 与测试强度决定“分数含义”

SFT-ready 阶段的核心风险,是把“污染 + 弱测试”误读为“泛化 + 正确”。LiveCodeBench 将 freshness 落成可执行机制:题目按时间滚动收集,评测必须声明训练截止与评测窗口,[2] 因而“新题高分”至少在时间维度上可复核(对应 ledger 的 c-3ca84444a5、c-9a069320aa)。测试强度上,EvalPlus 指出 HumanEval/MBPP 原始测试集不足会系统性抬高分数,[5] 因此“HumanEval-only”不应作为对外主口径(对应 c-a792f4bd7a、c-0e5da3aa2c)。更现实的工作负载还包含库生态与复杂约束:BigCodeBench 用 139 个库、7 个领域把瓶颈推向“选库/组装调用/遵循约束”,[7] ODEX 将 open-domain 的真实库调用与执行约束纳入评测,[15] 二者共同反驳“函数题足以代表编码能力”的读法(对应 c-3c1d1582fe、c-fc0eb62ec3、c-90f8f3ed32)。实践中,更稳健的 SFT-ready 披露模板是:1) 训练数据截止日期与 LiveCodeBench 窗口;2) HumanEval/MBPP 必须同时给出 EvalPlus 口径;3) 至少补充一个库调用/复杂指令基准(BigCodeBench 或 ODEX);4) 公开依赖版本与执行沙箱参数。否则,“分数上升”难以区分方法改进、数据泄漏与测试宽松。

正在渲染图示…
图 3. 图 3.1 SFT-ready 评测决策:freshness × rigor 矩阵

§4 SFT/RL 与部署:Verified 作为锚,但必须补齐外推与成本口径

把 Verified 作为结果锚是合理的:它在 SWE-bench 之上引入人工验证,降低 flaky test 与模糊 spec 的假阳性,[4] 因而更接近“修复是否真的成立”。但把 Verified 作为唯一排序信号会造成两个系统性误读。第一,覆盖偏置:Verified 主要集中在 Python 生态,[4] Multi-SWE-Bench 扩展到 7 种语言后,排名可能重排,[6] 因此“Python Verified 高分”不能直接外推为一般 SWE 能力(对应 ledger 的 c-5ca29ea083、c-50d5e92f10、c-07d87154fb)。第二,系统策略偏置:SWE-bench 分数受 agent loop 强烈影响,[3] self-debugging 与 self-repair 表明 retry/修复循环在不同任务上的收益不同,[16][17] DocPrompting 则表明工具/检索源会改变 API 使用成功率,[19] 因而必须披露 harness;否则无法区分“模型更强”和“系统更会搜/更会重试”。SWE-Gym 将环境式任务与 trajectory scaling 机制化,[10] 可作为实用交叉验证:当两个系统 Verified 接近时,比较其在环境式任务上的成功率-成本曲线与轨迹质量,可以更早暴露“靠更高预算堆出来”的提升。部署口径上,应把成功率锚(Verified 或同类)与 UX/成本指标并列报告:retry@k、test-exec rate、tokens-per-issue、以及轨迹可读性/可控性;只报告其中一类都会扭曲产品判断(对应 c-c980753890、c-88b722216c、c-e1f5138355)。

时间线

  1. Codex 引入 HumanEval 与 pass@k,函数合成成为默认口径[11]
  2. MBPP 扩展到更多函数题,强化“便宜可复现”的评测范式[12]
  3. InCoder 把 infilling 作为编辑能力的基础任务形态[14]
  4. EvalPlus 用测试增强揭示 HumanEval/MBPP 的 false positive[5]
  5. RepoBench 把 repo-level 依赖机制化,单文件评测被证明会高估[8]
  6. SWE-bench 把目标对齐到真实 GitHub issue resolving[3]
  7. CRUXEval 把执行语义(I/O 预测)从函数合成中拆出来单独测[1]
  8. LiveCodeBench 把 freshness 变成必须披露的评测参数[2]
  9. BigCodeBench 把多库调用与复杂约束纳入主流评测[7]
  10. SWE-bench Verified 用人工验证降低 flaky test 噪声[4]
  11. Multi-SWE-Bench 扩到 7 种语言生态,外推稳定性成为显式问题[6]

研究立场对比

阵营 A:HumanEval/MBPP 足够代表编程能力,便宜稳定可复现

立场 — 函数题 pass@k 与代码能力高度相关,适合作为主指标;更复杂的基准会引入噪声与评测开销,反而降低迭代效率。[11][12][13]

证据:[11][12][13]

反方 — 反驳 c-3c1d1582fe / c-fc0eb62ec3 / c-90f8f3ed32:弱测试会系统性抬高分数,EvalPlus 显示同一解在更强测试下会翻车;[5] repo-level 与库生态会改写排序,RepoBench/RepoCoder 与 BigCodeBench/ODEX 把跨文件与多库调用变成结构性变量,函数题覆盖不到这些瓶颈。[8][9][7][15]

判词 — 一个更务实的定位:HumanEval/MBPP 适合作为低成本回归项与 smoke test,但不适合作为 SWE agent 的对外主口径;对外比较至少要给出 EvalPlus 口径与一个 repo-level 或库调用基准。[5][8][7]

阵营 B:SWE-bench Verified 是唯一可信真值,其他基准都应让位

立场 — 真实 GitHub issue resolving 才是目标分布;Verified 通过人工验证降低噪声,因此模型好坏以 Verified 排名为准,其他基准最多是辅助解释。[3][4]

证据:[3][4]

反方 — 反驳 c-e8339ebcb6 / c-33451ad4c4:Verified 降噪但覆盖偏 Python;Multi-SWE-Bench 扩到 7 种语言后排名可能洗牌,说明 Verified 单点不足以外推一般 SWE 能力。[6][4] 另外,agent loop 与 verifier 会改变“有效搜索预算”,Self-debugging 与 CodeT 表明重试与测试选择能在不改权重的情况下改变结果,因此缺 harness 披露时,Verified 更像是“系统+评测设定”的联合分数。[16][18][19]

判词 — 结论层面的建议:Verified 作为 SFT/RL 的结果锚必须保留,但对外排序需要附带 harness 参数与至少一个外推检查(Multi-SWE-Bench 或环境式任务);否则“排名”不可复核也不可外推。[4][6][10]

阵营 C:pretrain 的 BPB/patch-PPL 最能预测 SWE,下游基准可以弱化

立场 — likelihood 指标成本低、可在大规模 sweep 上稳定比较;真实 SWE 是补丁与编辑轨迹的分布,patch-PPL 下降意味着更贴近真实修复分布,因此应作为主要优化与评估信号(对应 c-23dce50372 / c-867a4775a4 / c-b6d1926f11)。

证据:[14][9][1]

反方 — 修正 c-23dce50372 / c-867a4775a4 / c-b6d1926f11:现有公开证据并未给出“patch-PPL 可替代后续 benchmark”的系统相关性;CRUXEval 把执行语义单独测出来,[1] RepoBench/RepoCoder 把跨文件依赖与检索设定变成结构性变量,[8][9] 这些都说明 token-level 似然不足以覆盖关键瓶颈。更稳的做法是把 BPB/patch-PPL 降级为辅助信号,只用于监控分布漂移与训练稳定性;能力结论仍需语义与 repo-level 指标支撑(对应 c-84c01f630d)。

判词 — 一个更稳的读法:BPB/patch-PPL 适合做 pretrain 的内部回归与筛选,但对外不应作为 SWE 能力的替代指标;对外至少需要 CRUXEval 与一个 repo-level 基准并列,且明确声明似然指标只约束 token-level。[1][8]

阵营 D:部署 UX/成本指标比 pass@1 更能代表价值

立场 — 用户感受到的是交互成本与稳定性:重试收益、测试执行成功率、token 消耗、轨迹可读可控;因此应以 tokens-per-issue、retry@k、test-exec rate 等为主指标,pass@1/Verified 只是次要参考(对应 c-c980753890 / c-88b722216c / c-67c1665a55)。[16][20]

证据:[16][17][20]

反方 — 反驳 c-c980753890 / c-88b722216c 的强版本:只看 UX/成本会失去成功率锚点,系统可能通过更保守或更昂贵的策略“看起来更稳”,但实际解决率下降;Verified 仍需要作为结果层硬约束(对应 c-e1f5138355)。[4][17]

判词 — 结论层面的建议:部署口径采用“双轴”——成功率锚(Verified 或同类)+ 成本/体验(tokens-per-issue、test-exec rate、retry@k、轨迹质量);只报一轴都会误导决策。[4][16]

实践要点

可操作清单(按阶段,带 do/don’t;每条都要求把 harness 参数写进实验记录并可复跑):
1) Don’t:pretrain/轻量适配只报 HumanEval/MBPP;Do:至少并列 CRUXEval + RepoBench 或 RepoCoder,把执行语义与跨文件依赖纳入主口径。[1][8][9]
2) Don’t:把 BPB/patch-PPL 当作“会修 issue”的替代指标;Do:把它降级为辅助信号,只用于监控 token-level 分布拟合与训练回归,并在结论里写清它不约束执行语义。[1]
3) Don’t:任何 HumanEval/MBPP 结果不配 EvalPlus 就对外比较;Do:默认对外报 EvalPlus 口径,把原始 HumanEval/MBPP 作为回归项保留。[5][11][12]
4) Do:SFT-ready 必须披露 freshness(训练截止日期 + LiveCodeBench 评测窗口);Don’t:缺窗口就写“泛化提升”。[2]
5) Do:SFT-ready 至少补一个“库调用/复杂约束”基准(BigCodeBench 或 ODEX);Don’t:只用函数题推断工具/API 使用能力。[7][15]
6) Do:SFT/RL 阶段把 SWE-bench Verified 作为结果锚,同时报告 max_turns、temperature、n_samples、工具集与 verifier/重试策略;Don’t:只给一个 Verified 分数就做 0.x pp 的排序结论。[4][3][16]
7) Do:外推时至少给一个跨语言检查(Multi-SWE-Bench),并在结论里声明语言覆盖;Don’t:把 Python Verified 直接外推成一般 SWE 能力。[6][4]
8) Do:部署阶段并列报告成功率锚 + 成本/体验:retry@k、test-exec rate、tokens-per-issue、轨迹质量;Don’t:只报更高 pass@k 或只报更低 token 成本。[17][18]

悬而未决的问题

  • Q1.SWE-bench Verified 的分数方差在 temperature、n_samples、max_turns、工具集与 verifier 策略上的量级是多少?需要公开可复跑的 ablation harness 与置信区间报告模板。[4][3]
  • Q2.在控制 contamination/leakage 后,pretrain 的 code BPB/patch-PPL 与 SWE-bench Verified 的相关性是否仍然存在、相关系数区间是多少?目前公开证据不足以支持“似然可替代下游基准”。[1][2]
  • Q3.哪些工作系统量化了“弱测试导致的 false positive”并给出 EvalPlus 式修复在更贴近 SWE 的任务(repo-level、issue resolving)上的版本?目前更多集中在函数题。[5][18]
  • Q4.在 repo-level 指标中,CRUXEval/RepoBench/RepoCoder/(潜在的 RepoEval 类基准)哪一种与 multi-file issue resolution 的相关性更高?需要统一检索设定与 context budget 的 controlled experiment。[1][8][9]
  • Q5.部署指标里,tokens-per-issue、test-exec rate、retry@k、以及轨迹可读性/可控性,哪一组最能预测用户留存或工程吞吐?需要把“成功率锚”固定后做在线或半在线对照。[16][17]
  1. [1]
    Alex Gu, Baptiste Rozière, Hugh Leather, Armando Solar-Lezama, Gabriel Synnaeve, Sida I. Wang. CRUXEval: A Benchmark for Code Reasoning, Understanding and Execution. arXiv, 2024论文
  2. [2]
    Naman Jain, King Han, Alex Gu, Wen-Ding Li, Fanjia Yan, Tianjun Zhang. LiveCodeBench: Holistic and Contamination Free Evaluation of Large Language Models for Code. arXiv, 2024论文
  3. [3]
    Carlos E. Jimenez, John Yang, Alexander Wettig, Shunyu Yao, Kexin Pei. SWE-bench: Can Language Models Resolve Real-World GitHub Issues?. arXiv, 2023论文
  4. [4]
    Carlos E. Jimenez, OpenAI Preparedness. SWE-bench Verified: Human-Validated Real-World GitHub Issues. SWE-bench project page / arXiv versioned artifact, 2024报告
  5. [5]
    Jiawei Liu, Chunqiu Steven Xia, Yuyao Wang, Lingming Zhang. Is Your Code Generated by ChatGPT Really Correct? Rigorous Evaluation of LLMs for Code Generation (EvalPlus). arXiv, 2023论文
  6. [6]
    Daoguang Zan, Zhirong Huang, Wei Liu. Multi-SWE-Bench: A Multi-Lingual Benchmark for Issue Resolving. arXiv, 2025论文
  7. [7]
    Terry Yue Zhuo, Minh Chien Vu, Jenny Chim, Han Hu, Wenhao Yu. BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Complex Instructions. arXiv, 2024论文
  8. [8]
    Tianyang Liu, Canwen Xu, Julian McAuley. RepoBench: Benchmarking Repository-Level Code Auto-Completion Systems. arXiv, 2023论文
  9. [9]
    Fengji Zhang, Bei Chen, Yue Zhang, Jacky Keung, Jin Liu. RepoCoder: Repository-Level Code Completion Through Iterative Retrieval and Generation. arXiv, 2023论文
  10. [10]
    Jiayi Pan, Xingyao Wang, Graham Neubig. SWE-Gym as a Tool for SFT Data Scaling. arXiv, 2024论文
  11. [11]
    Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde de Oliveira Pinto, et al.. Evaluating Large Language Models Trained on Code. arXiv, 2021论文
  12. [12]
    Jacob Austin, Augustus Odena, Maxwell Nye, Maarten Bosma, Henryk Michalewski. Program Synthesis with Large Language Models. arXiv, 2021论文
  13. [13]
    Erik Nijkamp, Bo Pang, Hiroaki Hayashi, Lifu Tu, Huan Wang. CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis. arXiv, 2022论文
  14. [14]
    Daniel Fried, Armen Aghajanyan, Jessy Lin, Sida Wang, Eric Wallace. InCoder: A Generative Model for Code Infilling and Synthesis. arXiv, 2022论文
  15. [15]
    Zhiruo Wang, Shuyan Zhou, Daniel Fried, Graham Neubig. Execution-Based Evaluation for Open-Domain Code Generation. arXiv, 2022论文
  16. [16]
    Xinyun Chen, Maxwell Lin, Nathanael Schärli, Denny Zhou. Teaching Large Language Models to Self-Debug. arXiv, 2023论文
  17. [17]
    Theo X. Olausson, Jeevana Priya Inala, Chenglong Wang, Jianfeng Gao, Armando Solar-Lezama. Is Self-Repair a Silver Bullet for Code Generation?. arXiv, 2023论文
  18. [18]
    Bei Chen, Fengji Zhang, Anh Nguyen, Daoguang Zan, Zeqi Lin. CodeT: Code Generation with Generated Tests. arXiv, 2022论文
  19. [19]
    Shuyan Zhou, Uri Alon, Frank F. Xu, Zhiruo Wang, Zhengbao Jiang. DocPrompting: Generating Code by Retrieving the Docs. arXiv, 2022论文
  20. [20]
    Shiqi Wang, Zheng Li, Haifeng Qian, Chenghao Yang, Zijian Wang. ReCode: Robustness Evaluation of Code Generation Models. arXiv, 2022论文
  21. [21]
    SWE-bench contributors. SWE-bench (GitHub repository). GitHub, 2024文章

论文列表

Pretrain 代理指标:从 token-level 似然到执行语义与 repo 结构(4)

把“像代码”(BPB/patch-PPL)与“可执行理解”(状态跟踪、I/O 推理)以及“repo 结构依赖”(跨文件符号、项目组织)拆开评估。核心是避免用低成本似然指标替代高层 SWE 能力。

10

CRUXEval: A Benchmark for Code Reasoning, Understanding and Execution

Alex Gu,Baptiste Rozière,Hugh Leather,Armando Solar-Lezama,Gabriel Synnaeve,Sida I. Wang2024年1月17日
把评测从“写出函数”转到“预测执行输出/输入”,直接约束程序状态跟踪与语义推理;用于区分模板记忆与可执行理解,适合作为 pretrain 阶段的主代理之一。
9

RepoBench: Benchmarking Repository-Level Code Auto-Completion Systems

Tianyang Liu,Canwen Xu,Julian McAuley2023年6月5日
把 repo-level 依赖显式化(跨文件符号、项目结构、分散上下文),展示单文件指标会系统性高估;可作为 pretrain 阶段 cross-file 能力的最低门槛。
8

RepoCoder: Repository-Level Code Completion Through Iterative Retrieval and Generation

Fengji Zhang,Bei Chen,Yue Zhang,Jacky Keung,Jin Liu2023年3月22日
用 iterative retrieval+generation 处理分散在仓库各处的上下文,强调“检索—生成耦合”对 repo-level completion 的决定性影响;用于提醒评测必须固定检索设定。
7

InCoder: A Generative Model for Code Infilling and Synthesis

Daniel Fried,Armen Aghajanyan,Jessy Lin,Sida Wang,Eric Wallace2022年4月12日
把 infilling 作为编辑能力的可控任务形态,说明“编辑/补丁”与“从零生成函数”在建模与评测上是不同对象;用于支撑 patch-style 指标需要独立口径。

SFT-ready 体检:freshness、弱测试 false positive、与多库调用约束(4)

把“能过样例”拆成三个可控变量:时间污染(freshness)、测试强度(false positive)、以及真实库调用/复杂指令的覆盖。目标是让 SFT-ready 的比较更接近可复现的工程回归。

10

LiveCodeBench: Holistic and Contamination Free Evaluation of Large Language Models for Code

Naman Jain,King Han,Alex Gu,Wen-Ding Li,Fanjia Yan,Tianjun Zhang2024年3月12日
把 freshness 机制化为滚动时间窗口,使“训练截止—评测窗口”成为必须披露的参数;适合做 SFT-ready 的持续体检与回归检测。
10

Is Your Code Generated by ChatGPT Really Correct? Rigorous Evaluation of LLMs for Code Generation (EvalPlus)

Jiawei Liu,Chunqiu Steven Xia,Yuyao Wang,Lingming Zhang2023年5月2日
通过自动补充测试用例揭示 HumanEval/MBPP 的 false positive,把“过样例”与“稳定正确”区分开;适合作为 SFT-ready 的默认口径。
9

BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Complex Instructions

Terry Yue Zhuo,Minh Chien Vu,Jenny Chim,Han Hu,Wenhao Yu2024年6月22日
用多库 API 调用与复杂指令把瓶颈推向“选库/组装调用/遵循约束”;BCB-Instruct vs BCB-Complete 的拆分便于定位 instruction following 与 library prior 的短板。
8

Execution-Based Evaluation for Open-Domain Code Generation

Zhiruo Wang,Shuyan Zhou,Daniel Fried,Graham Neubig2022年12月20日
把评测从封闭函数题扩展到 open-domain、真实库调用与执行约束;用于补齐 HumanEval 类基准对库生态与依赖管理的缺口。

SFT/RL 结果锚与外推:Verified、跨语言洗牌、环境式任务(4)

以真实 issue resolving 的 Verified 作为结果层硬约束,同时用跨语言与环境式任务检验“是否只是 Python 生态内的局部最优”。强调 harness/agent loop 对结论的敏感性需要被显式控制。

10

SWE-bench: Can Language Models Resolve Real-World GitHub Issues?

Carlos E. Jimenez,John Yang,Alexander Wettig,Shunyu Yao,Kexin Pei2023年10月10日
把评测目标对齐到真实 GitHub issue resolving:在真实 repo 上产出 patch 并跑测试;同时暴露 agent loop、工具与采样策略会影响最终分数。
10

SWE-bench Verified: Human-Validated Real-World GitHub Issues

Carlos E. Jimenez,OpenAI Preparedness2024年8月13日
通过人工验证降低 flaky test 与模糊 spec 的假阳性,使 Verified 更适合作为 SFT/RL 的主锚;但仍偏 Python 生态且对 harness 设定敏感。
9

Multi-SWE-Bench: A Multi-Lingual Benchmark for Issue Resolving

Daoguang Zan,Zhirong Huang,Wei Liu2025年4月3日
把 issue resolving 扩展到 7 种语言生态,用“跨语言排名是否稳定”做外推检验;用于识别 Python-only 的局部最优与工具链偏置。
8

SWE-Gym as a Tool for SFT Data Scaling

Jiayi Pan,Xingyao Wang,Graham Neubig2024年12月30日
把 benchmark 变成可控训练工具,给出 trajectory 数量/质量与下游收益的经验曲线,并支持 verifier 学习;用于解释“同分数下成本与轨迹质量差异”。

Agent loop 与部署口径:重试策略、测试生成、工具调用与成本(4)

把“模型能力”与“系统策略”拆开:retry/search/self-debug 会改变 pass@k 与 Verified;测试生成/选择会改变 false positive;工具/文档检索会改变库调用成功率。部署时需要把成本与成功率一起报。

8

Teaching Large Language Models to Self-Debug

Xinyun Chen,Maxwell Lin,Nathanael Schärli,Denny Zhou2023年4月11日
把“生成—执行—修复”的循环机制化,说明 retry@k 不是纯采样技巧而是系统能力的一部分;也提示评测必须披露 max_turns 与反馈通道。
7

Is Self-Repair a Silver Bullet for Code Generation?

Theo X. Olausson,Jeevana Priya Inala,Chenglong Wang,Jianfeng Gao,Armando Solar-Lezama2023年6月16日
给出 self-repair 的边界条件:并非所有任务都从“多轮修复”获益;用于支撑部署口径需要同时报告成本与收益,而不是只报更高 pass@k。
7

CodeT: Code Generation with Generated Tests

Bei Chen,Fengji Zhang,Anh Nguyen,Daoguang Zan,Zeqi Lin2022年7月21日
用生成测试做 sample selection,展示“verifier/测试强度”会系统性改变 pass@k 的有效性;用于连接 EvalPlus 与 SWE-bench 的 verifier 策略披露。
6

DocPrompting: Generating Code by Retrieving the Docs

Shuyan Zhou,Uri Alon,Frank F. Xu,Zhiruo Wang,Zhengbao Jiang2022年7月13日
证明文档检索能显著影响 API 调用正确性,意味着工具集与检索源是评测参数而非实现细节;用于支撑 harness 必须公开 toolset。