跳到正文
原文
论文追踪· arXiv:2610.13356· Jiajun Hu, Chun Yong Chong·本站收录· 原文发表

SWE-Critix:用于评估编码 Agent 轨迹的后训练通用验证器

SWE-Critix: Post-Training Generalist Verifiers for Assessing Coding-Agent Trajectories

论文速读

防御

据论文 PDF 整理(AI 生成),以原文为准

SWE-Critix 用 SFT 与 RL 训练轨迹验证器,全体测试集 Accuracy 从基座 0.57 到 RL 后 0.78。

问题
编码智能体做长程软件工程时,成功标准常常没有现成 oracle,轨迹又可含数百轮交互。作者认为现有验证器多直接用通用 LLM,或训练后主要产出标量奖励,面向过程的通用验证仍少。
方法
SWE-Critix 让验证器先写思维链再判断任务是否完成。教师模型 GPT-5.5 只为少量 SFT 样本做成败轨迹的差分标注;其余数据以单元测试是否一致为 +1 或 -1 奖励,用 GRPO 从 SFT 检查点继续训练。
实验与结果
全体测试集上,基座、SFT、RL 的 Accuracy 为 0.57、0.66、0.78。基座负类 Recall 为 0.00,9.6% 输出抽不出判断;RL 负类 Recall 为 0.64。R2E-Gym 上 RL Accuracy 为 0.62(Table II)。
局限与可以继续做的
作者称 R2E-Gym 更弱、失败轨迹更难识别,并计划扩展轨迹来源与类别比例、试冷启动 RL 和过程奖励、考察纠错与代理奖励,以及补对照和定性分析。当前实验未与外部验证器比较。
实验设置Qwen3-30B-A3B-Thinking-2507、SWE-Critix SFT 等 · CodeForge-Preview、R2E-Gym 等 · Accuracy、Precision+ 等
被测模型
Qwen3-30B-A3B-Thinking-2507SWE-Critix SFTSWE-Critix RL
基准
CodeForge-PreviewR2E-GymSWE-RebenchSWE-Smith
指标
AccuracyPrecision+Recall+F1+Precision-Recall-F1-
AI 导读论文提出 SWE-Critix,一套用于训练编码 Agent 轨迹通用验证器的后训练流程。给定任务及其执行轨迹,训练出的验证器会预测完成标签,并生成解释其判断的自然语言分析。该流程结合监督微调(SFT)与强化学习(RL),在 CodeForge-Preview 的轨迹上训练一系列 30B 模型。在留出测试集上,分类准确率从基础 Qwen3-30B-A3B 推理模型的 57% 提升到 SFT 后的 66%、RL 后的 78%。作者公开了模型、数据集和训练代码。

论文提出 SWE-Critix,一套用于训练编码 Agent 轨迹通用验证器的后训练流程。给定任务及其执行轨迹,训练出的验证器会预测完成标签,并生成解释其判断的自然语言分析。该流程结合监督微调(SFT)与强化学习(RL),在 CodeForge-Preview 的轨迹上训练一系列 30B 模型。在留出测试集上,分类准确率从基础 Qwen3-30B-A3B 推理模型的 57% 提升到 SFT 后的 66%、RL 后的 78%。作者公开了模型、数据集和训练代码。

深度解读

6个问题,点开问题读完整回答

  1. 这篇论文试图解决什么问题?

    端到端编码任务常无现成判据,SWE-Critix 用 SFT 与 RL 训练能判成败并写分析的验证器。

    编码智能体的长轨迹常无现成成功判据,需要判断任务是否完成并解释原因的验证器。

    • 场景:作者称编码智能体已从一次性代码生成转向仓库级问题求解和长程开发,会检查仓库、改文件、执行命令并依据反馈迭代。真实任务的成功标准往往没有现成 oracle;轨迹可含数百轮用户输入、环境反馈和模型响应。文中举例,LoLBench 的轨迹跨 53–532 轮,平均含数百万 token。
    • 现有方法:作者按验证对象(只看最终结果或同时看过程)和是否训练,把已有验证器分成训练无关、训练得到的标量奖励、训练得到的通用自然语言评估(Table I)。作者认为,训练得到且面向过程的通用验证仍相对较少被探索;现有做法或直接调用通用 LLM,或主要产出标量奖励。
    • 本文提出:SWE-Critix 是后训练流水线。给定任务和执行轨迹,验证器预测完成标签,并生成解释判断的自然语言分析。流水线结合 SFT 与 RL,在 CodeForge-Preview 的轨迹上训练 30B 模型。训练和当前评测的标签来自单元测试是否通过。
    • 作者给出的区别:相对同属该格的 Gandhi et al. [30] 与 Scout [31],作者称区别在于对象是整条轨迹而非规划阶段,标注是差分分析而非逐步稠密标注,规模是 119K 样本与 30B、相对 2–8K 样本与 4–8B,算法是 GRPO 而非 DPO,奖励是结果奖励而非过程奖励。
  2. 有哪些相关研究?

    作者按结果或过程、以及是否训练分类验证器,并认为面向过程的通用验证仍少。

    作者在引言和 Table I 里用验证对象与是否训练来归类,Related Work 再按有没有训练专门模型展开。

    训练无关的验证

    • 测试生成与扩展:Agentless [7]、Trae [9] 用通用 LLM 通过测试生成评估执行;LLM-as-a-Verifier [8] 做验证扩展。论文只作归类,没有在实验里复现。
    • Rubric 与过程检查:Agentic Rubrics [10]、SWE-PRM [11]、Wink [12] 被归入基于 rubric 的评分。过程侧还包括失败归因 TrajDebug [13]、反模式检测 SWE-Prime [14]、ProcCtrlBench [15]、LivePlan [17]、AgentLens [18],以及变质关系 RETRACE [16]。
    • 作者的归类:这些方法直接使用通用 LLM 或规则判断,不训练专门验证模型。

    训练得到的标量奖励验证器

    • 结果侧:SWE-Gym [19]、R2E-Gym [20]、DeepSWE [21]、SWE-RM [22]、Dockerless [23]、SWE-TRACE [24]。
    • 过程侧:OpenHands Critic [25]、Zainullina et al. [26]、Critic Rubrics [27]。
    • 学习方式:Related Work 将这类专门 critic 归到 TD learning、自回归下一 token 预测、多标签分类、DPO、Bradley-Terry 或 policy gradient。当前实验没有复现这些方法。

    训练得到的通用验证器

    • 结果侧:Agentic Rubrics [10]、ExecCritic [28]、SWE-Review [29],产出自然语言评估而不只是标量奖励。
    • 过程侧:Gandhi et al. [30] 被作者称为针对规划阶段、使用 DPO;Scout [31] 被作者称为逐步稠密标注、使用过程奖励。作者称二者的规模是 2–8K 训练样本和 4–8B 模型。
    • 定位:作者认为这一格仍相对较少被探索,并把 SWE-Critix 放在过程侧通用验证。区别是整条轨迹、差分分析、作者所称的 119K 与 30B、GRPO 和结果奖励。

    数据来源与当前对照

    • 基准/数据集:轨迹来自 CodeForge-Preview(正文 II-A 亦作 CoderForge-Preview),任务源为 R2E-Gym、SWE-Rebench、SWE-Smith。
    • 基线方法:初步评测只比较基座 Qwen3-30B-A3B、SFT 检查点与 RL 检查点。作者计划日后与前沿开源/闭源模型及 Table I 的代表方法比较,当前实验没有这些对照。
  3. 论文如何解决这个问题?

    教师模型做差分 CoT,SFT 学推理,再用单元测试一致与否作奖励做 GRPO。

    SWE-Critix 先让教师模型比较同一 issue 的成功与失败轨迹,得到结构化思维链(chain-of-thought, CoT),再用 SFT 学这种推理,最后在没有 CoT 的数据上用单元测试结果做 GRPO。

    输入、输出与判定

    • 输入:一条 issue 求解轨迹。验证器先写 CoT,再给出二值判断:issue 是否已被成功解决。推理沿用 Qwen 的 thinking 模板。
    • 分析结构:Figure 1 的应用示例分三步:轨迹摘要、按预定义分类刻画错误模式、因果摘要。具名类别包括误解规格、改动不够局部、代码不完整、核心逻辑错误、边界情况、库或 API 约束、异常处理、性能、安全、向后兼容、环境配置、确定性与可测试性、测试或 harness 完整性;14–20 标为 others。
    • 训练与使用的差别:标注阶段做轨迹对比较;训练后的验证器做逐点判断。成功样本的判断为 YES,失败为 NO。提示词模板不计入 SFT 损失,响应模板计入损失(Figure 1)。

    数据划分

    • 来源与过滤:CodeForge-Preview 含 258K 条轨迹(155K pass、103K fail),覆盖 51K 个 issue、1,655 个仓库。轨迹由 OpenHands 与 Qwen3-Coder-480B 在三个带可执行环境的任务源上生成。丢掉超过 64K token 或没有提交补丁的轨迹,滤掉 16%。
    • 划分规则:随机取 20% 的 issue,其全部轨迹作测试集。其余 issue 中,同时有成败轨迹的各随机抽一条进 SFT。剩下的失败轨迹全部进 RL,再按 issue 轮询抽成功轨迹,直到两类数量平衡。
    • 规模:Figure 1 的全体为 48,489 个 issue、216,711 条轨迹(142,467 成功、74,244 失败)。SFT 为 5,195 个 issue、10,390 条,成败各 5,195,占训练集 8.7%。RL 为 38,511 个 issue、108,690 条,成败各 54,345。测试为 9,698 个 issue、43,445 条(28,741 成功、14,704 失败)。

    CoT 标注与 SFT

    • 教师标注:GPT-5.5 对 SFT 集中的成败轨迹对做比较,写出过程摘要、按预定义分类的错误模式,以及导致成败的因素。作者采用成对比较,依据是先前工作认为 LLM 在成对评估上优于单独判断。生成后再后处理成逐点判断用的 CoT。正文未列出完整提示词。只标注这 10,390 条。
    • 优化:从 Qwen3-30B-A3B-Thinking-2507 微调,最小化响应的负对数似然;响应含 CoT 和最终判断,损失是标准 SFT 交叉熵。
    • 实现:MindSpeed-LLM v2.3.0,128 块昇腾 910B1/B2-64GB、16 个节点。3 个 epoch、975 步,约 15 小时。全局 batch 32,序列长度 70K;TP=2、PP=2、EP=16、ETP=1、CP=16。第 975 步检查点记为 πSFT。

    RL

    • 数据与目标:对其余 91.3% 有单元测试结果、没有 CoT 的样本做 RL。最大化期望奖励,并用 KL 项限制策略偏离 πSFT。论文未给出 β 的取值。
    • 奖励:规则型结果奖励。预测判断与单元测试一致时 r(x,y)=+1,否则为 -1。一致包括两种情况:判 YES 且轨迹通过测试,或判 NO 且轨迹未通过测试。
    • 实现:以 πSFT 初始化。VeRL v0.8.0,GRPO,group size 8。128 块昇腾 910C-64GB、8 个节点。1 个 epoch、3,396 步,约 533 小时。全局 batch 32,mini-batch 32,PPO epoch 1。最大 prompt 长度 68K,最大响应长度 60K。推理后端 vLLM,训练后端 Megatron。得到的检查点记为 πRL。
  4. 论文做了哪些实验?

    全体测试集 Accuracy 由基座 0.57 经 SFT 0.66 到 RL 0.78;作者称失败轨迹更难认。

    实验设置

    • 被测模型:基座 Qwen3-30B-A3B(正文写 Qwen3-30B-A3B-Thinking-2507)、πSFT、πRL。没有外部验证器对照。
    • 数据:Section II-A 的测试划分,共 43,445 条。R2E-Gym 5,846 条(3,965 成功、1,881 失败),SWE-Rebench 11,872 条(7,774、4,098),SWE-Smith 25,727 条(17,002、8,725)。
    • 指标:Accuracy,以及正类(成功轨迹)和负类(失败轨迹)的 Precision、Recall、F1。
    • 标签:单元测试是否通过。没有 LLM 裁判。评测只看分类,不给自然语言分析打分。
    • 次数与服务:每个模型对每条样本只评一次。用 vLLM Ascend,1 个节点、16 块昇腾 910C-64GB。论文未报告温度等解码设置。
    • 格式:作者报告基座有 9.6% 的响应不符合要求的输出格式,无法抽出判断。

    主结果

    表格较宽,可左右滑动

    模型全体 Accuracy正类 Recall负类 RecallSWE-Smith AccR2E-Gym Acc
    Qwen3-30B-A3B0.57 (24587/43445)0.85 (24536/28741)0.00 (51/14704)0.56 (14417/25727)0.60 (3495/5846)
    SWE-Critix SFT0.66 (28521/43445)0.67 (19340/28741)0.62 (9181/14704)0.66 (17018/25727)0.52 (3027/5846)
    SWE-Critix RL0.78 (33925/43445)0.85 (24499/28741)0.64 (9426/14704)0.82 (20971/25727)0.62 (3646/5846)

    据 Table II。SWE-Rebench 未放入表中。

    • 作者的解读:作者称从通用语言模型到专用轨迹验证有递进。基座在各子集上负类 Recall 接近 0。SFT 之后,πSFT 的响应全部符合提示词要求,作者认为正类偏向减轻。
    • 两阶段的分工:作者认为 SFT 主要处理正类偏向,随后的 RL 恢复正类 Recall,并认为没有实质牺牲负类 Recall。正文把这一恢复写成从 67% 到 85%。
    • 未入表的子集与反例:SWE-Rebench 上三者 Accuracy 为 0.56(6675/11872)、0.71(8476/11872)、0.78(9308/11872)。R2E-Gym 上,RL 负类 Recall 为 0.52(975/1881),低于该子集 SFT 的 0.64(1210/1881)。作者称 R2E-Gym 低于 SWE-Rebench 和 SWE-Smith,一种可能解释是数据量较小;Figure 1 中三者轨迹数为 29,061、59,405、128,245。

    失败轨迹与格式

    • 测了什么:三个子集的负类识别,以及基座的输出格式(Section III、Table II)。
    • 结果:SWE-Rebench 负类 Recall 为基座 0.00(19/4098)、SFT 0.76(3107/4098)、RL 0.77(3150/4098)。SWE-Smith 为 0.00(20/8725)、0.56(4864/8725)、0.61(5301/8725)。基座全体负类 Precision 为 0.75(51/68),负类预测只有 68 条。
    • 作者的解读:作者称 πRL 识别失败轨迹仍较弱,全体负类 Recall 为 64%。作者认为失败轨迹更难与成功轨迹区分,可能因为失败模式更多样,失败信号更难辨认。

    训练动态

    • 测了什么:Figure 2 画了 SFT 的 LM loss,以及 RL 奖励的 100 步移动平均。
    • 结果:图中文字只给出坐标刻度,没有标出损失或奖励的具体数值;正文也没有报告这些数值。SFT 为 975 步,RL 为 3,396 步。
    • 作者的解读:正文只说明曲线见图,没有另外解释走势。

    其他消融与分析

    • 全体正类 Precision 为基座 0.66(24536/37091)、SFT 0.78(19340/24863)、RL 0.82(24499/29777);负类 Precision 为 0.75(51/68)、0.49(9181/18582)、0.69(9426/13668)(Table II)。
    • 全体 F1+ 为 0.75、0.72、0.84;F1- 为 0.01、0.55、0.66(Table II)。
    • 论文未报告去掉 CoT 或 SFT 的冷启动、不同奖励、不同类别比例的结果;2:1、1:2、4:1 只出现在 Section IV 的计划中。
    • 论文未报告与 Table I 其他方法或前沿模型的对照分数,也未报告对分析文本的定性评分。
  5. 有什么可以进一步探索的点?

    作者称 R2E-Gym 更弱、失败轨迹更难认,并计划扩展数据、奖励、下游用途和对照。

    作者指出的局限与后续方向

    • R2E-Gym:作者称其上的表现低于 SWE-Rebench 和 SWE-Smith,一种可能解释是数据量相对较小(Section III)。
    • 失败轨迹:作者称 πRL 识别失败轨迹仍较弱,全体负类 Recall 为 64%,并认为失败模式更多样、失败信号更难辨认(Section III)。
    • 训练数据:作者写明 CodeForge-Preview 的样本都由 OpenHands 与 Qwen3-Coder-480B 生成。计划加入 Open-SWE-Traces 等来源,用不同 LLM 与 harness 组合合成轨迹,并考察 2:1、1:2、4:1 等类别比例(Section IV)。
    • 训练方法:作者称单独使用 RL 是否足够仍是开放问题。计划去掉 CoT 标注和 SFT 做冷启动 RL,并在奖励中加入中间推理过程的信号,而不只用最终测试结果(Section IV)。
    • 下游用途:作者计划考察验证器能否指出并修正失败轨迹中的错误、从而找回正确解,以及在没有测试结果时能否作为 RL 的代理奖励(Section IV)。
    • 对照与定性:作者计划与前沿开源/闭源模型及 Table I 的代表方法比较,并检查推理是否连贯、是否有证据依据,以及错误判断从何而来(Section IV)。

    实验覆盖范围

    • 被评测的检查点是基座 Qwen3-30B-A3B、πSFT 和 πRL;测试集 43,445 条,每个模型每条样本评一次(Section III、Table II)。
    • 轨迹来自 CodeForge-Preview 过滤后的划分,任务源为 R2E-Gym、SWE-Rebench、SWE-Smith;作者写明生成使用 OpenHands 与 Qwen3-Coder-480B(Section II-A、Section IV)。
    • 分类标签来自单元测试是否通过;报告 Accuracy 及正负类 Precision、Recall、F1。当前评测聚焦判别能力(Section III、Section IV、Table II)。
    • CoT 由 GPT-5.5 标注,只覆盖 SFT 的 10,390 条;RL 使用 GRPO、group size 8、1 个 epoch、3,396 步(Section II、Figure 1)。
    • 论文未报告 β、解码温度、与外部验证器或前沿模型的对照分数、分析文本的定性评分,以及与人工判断的一致性。
  6. 总结一下论文的主要内容

    SWE-Critix 用 SFT 与 GRPO 训练 30B 轨迹验证器,全体测试集 Accuracy 从 0.57 到 0.78。

    SWE-Critix 是一条后训练流水线,用来训练能判断编码智能体整条轨迹是否完成任务、并写出分析的通用验证器。

    • 问题:端到端软件工程常常没有现成 oracle,轨迹又可含数百轮交互。作者认为,训练得到且面向过程的通用验证仍相对较少被探索。
    • 做法:GPT-5.5 比较同一 issue 的成败轨迹,再整理成逐点判断用的 CoT,只监督 10,390 条 SFT 样本。基座是 Qwen3-30B-A3B-Thinking-2507,SFT 做 3 个 epoch。其余 108,690 条没有 CoT,用判断是否与单元测试一致给出 +1 或 -1,以 GRPO 训练 1 个 epoch,得到 πRL。
    • 全体结果:43,445 条测试轨迹上,Accuracy 为基座 0.57、SFT 0.66、RL 0.78(Table II)。基座负类 Recall 为 0.00(51/14704),且 9.6% 的响应抽不出判断;πSFT 的输出全部符合格式。RL 的正类 Recall 为 0.85,负类 Recall 为 0.64。
    • 子集:RL 的 Accuracy 在 SWE-Smith 为 0.82,SWE-Rebench 为 0.78,R2E-Gym 为 0.62。R2E-Gym 上 SFT 的 Accuracy 为 0.52,低于该子集基座的 0.60。
    • 作者的结论:作者认为 SFT 主要减轻把轨迹判成成功的偏向,RL 再加强判别;同时认为失败轨迹仍更难认。作者计划扩展数据来源、奖励和下游使用,并补外部对照与定性分析。作者称已公开模型、数据集与训练代码。
阅读原文arxiv.org