论文解读·

[2026-09-26] Groupwise Agentic Grading and Advantage Redistribution for Code Agent RL

GAGAR 如何在测试通过的 code-agent trajectories 之间比较 patch 质量,再重分配 advantage;拆解 grader、公式、训练结果、bounded implementation 与未公开证据。

页数
12
形式
交互图解
更新
2026.10.06
文章目录

Xiaomi MiMo · arXiv:2609.32577v1 · 最早公开于 2026-09-26

12 页交互图解 · grader、advantage、实验结果与证据边界大屏阅读 ↗

使用按钮或 ← → 翻页,F 进入或退出全屏独立打开后可点左下角返回文章

GAGAR 处理的是 code-agent RL 里一个很具体的问题:同一道任务生成 16 条 trajectories,几条都通过测试时,binary reward 会给它们相同的训练信号。论文增加一个 agentic grader,让它联合查看 repository、完整轨迹、patch 与 test output,再把正 advantage 从质量较差的 passing trajectory 转给更好的实现。

博客作者兴趣度 8.5 / 10评分只表示博客作者本人兴趣程度;主题与 code agent、RL harness 和 agentic judge 直接相关
16rollouts per prompt
62.2%DeepSWE step 28 avg@3
-15.6%mean turns at step 28
30 tasks独立质量审计样本量

Q1. 为什么 executable tests 还不够?

测试能验证结果,却不会自动评价实现质量。

同一个 test suite 可能同时接受两种 patch:一种修复 root cause,只改必要文件;另一种增加特殊分支、修改无关模块,甚至写出只针对已知测试的 workaround。它们的 binary reward 都是 1。训练继续强化这两条 trajectory 时,policy 得不到“应该更像第一种实现”的信号。

GAGAR 要求 grader 比较同一任务的 passing candidates。这样的比较比独立打分多了一层上下文:grader 能看到不同 Agent 如何理解同一个 bug,哪些改动是必要的,哪些只是掩盖症状。failed trajectories 也会放进共享 workspace,帮助 grader 识别已经试过但无效的路线,不过失败样本不参加质量排序。

GAGAR 从 rollout group 到 agentic grading 和 advantage redistribution 的流程
根据论文 Figure 1 与 Sections 3.1-3.3 重绘。图中最后一项特意标出:实现中的 λ 上限触发时,正文给出的精确守恒性质不再全部成立。

Q2. 它和 outcome reward、process reward、LLM judge 有什么区别?

GAGAR 的边界是:保留测试作为 correctness gate,再让一个能操作 repository 的 grader 比较多条完整 trajectory。

路线输入输出信号与 GAGAR 的区别
Binary outcome RL / GRPO最终 test resultpass / fail同一 group 内的所有 passing trajectories 得到相同 advantage。
Process reward / step-level credit中间步骤或匹配后的 state逐步 reward 或 token creditcode-agent trajectories 很长且 repository state 各自分叉,跨 rollout 对齐中间状态很难。
Static LLM-as-a-judgeprompt、answer 或 patch 摘要分数或偏好GAGAR 的 grader 可以继续读代码、测试日志,并运行 targeted checks。
Agent-as-a-Judgetask environment 与 candidate artifactsagentic evaluationGAGAR 把相似思想放进 online RL,并把排序转成 advantage redistribution。

论文的贡献主要在 credit assignment 组合方式,不是发明了新的 code benchmark,也不是用 grader 覆盖 executable tests。评测仍使用 DeepSWE v1.1 与 SWE-bench Pro。

Q3. 一组 trajectories 怎样变成新的训练信号?

流程包含 test filtering、agentic grading、tier-to-factor、redistribution 和 training 五步。

  1. 1 · VERIFY先运行任务测试。infrastructure-invalid trajectories 会被 mask;确认的 hack 被改成 reward 0。
  2. 2 · GRADEgrader 读取 task、repo、trajectories、patches 与 test outputs,只排序有效的 passing candidates。
  3. 3 · MAPT1 factor 为 1.0 或 0.9;T2 从 0.85 降至 0.4;T3 为 0.2。
  4. 4 · RESCALE对 passing advantages 乘 factor,再用共同的 λ 恢复原有 positive sum。
  5. 5 · TRAIN结果作为 sequence-level advantage,广播到该 trajectory 的 model-generated tokens。

grader 使用五项 1-5 分标准:Approach Suitability、Implementation Precision、Minimality of Changes、Unintended Side Effects 与 Codebase Consistency。初始加权分数为:

Wᵢ = 0.30s_app + 0.25s_prec + 0.20s_min + 0.15s_side + 0.10s_style

它随后根据严重问题划分 T1、T2、T3,并允许在 tier 内调整排序或保留 ties。论文要求负面判断引用具体 patch location、trajectory event 或 execution result。

一个明确标注的 constructed example

这个例子只解释公式,不是论文公开的真实训练样本

  1. 四条 rollout 中两条 pass、两条 fail,因此 `R̄=0.5`。两个 passes 的初始 advantage 都是 `+0.5`。
  2. 假设 grader 把第一个 patch 归为 T1,factor 为 `1.0`;第二个归为 T3,factor 为 `0.2`。
  3. 简单降权后,positive sum 从 `1.0` 变成 `0.6`。GAGAR 计算 `λ=1/0.6≈1.667`。
  4. 两个 passes 的新 advantage 分别为 `0.833` 与 `0.167`,总和仍为 `1.0`;两个 failures 仍为 `-0.5`。

论文没有发布真实 task、candidate patches、grader reasoning 或最终 tier assignment,所以无法从公开材料复原一个真实 GAGAR grading case。这里宁可保留这个缺口,也不把合理猜测写成事实。

正文公式和 bounded implementation 的差别

正文 Equation 2 的 rescaling factor 可以精确保持 positive-advantage sum。Appendix A.2 说明训练实现还会使用 λ_max=1.5:

λ_bnd = min(λ, 1.5)

当上面的 constructed example 需要 λ≈1.667 时,上限会触发。实现随后重新减去 group mean,因此 ranking 仍在,但 positive sum 和 failed-trajectory advantages 不再严格等于原值。论文附录明确承认这一点;解读时不能只引用正文的 exact conservation。

Q4. 实验怎样做,结果具体说明了什么?

最可靠的结论来自 MiMo-V2.6-Flash 的 code-only controlled run,而不是最终 mixed-task 模型与外部模型的横向比较。

主要对照从同一个 pre-RL SFT checkpoint 出发。训练 batch 为 128 prompts,每个 prompt 生成 16 条 rollouts。评测使用 DeepSWE v1.1 与 SWE-bench Pro,每题生成 3 个 samples,报告 avg@3。binary baseline 在 step 28 因性能快速下降而停止,因此共同训练区间只到 step 28。

GAGAR 在 DeepSWE step 28 的结果与 30 task 质量审计
根据论文 Figures 2-3 重绘。62.2 与 50.2 是图表显示值,直接相减为 12.0 points;论文正文写 12.1 points,可能使用未四舍五入的内部数值。
DeepSWE v1.1 · step 28Binary baselineGAGAR差值
Pass rate avg@350.2%62.2%+12.0 displayed points
Mean main-agent turns132.3111.6-15.6%
Mean total token length191.9k172.9k-9.9%

只降权、不重新分配的 ablation 在 step 28 得到 56.2%,低于完整方法的 62.2%;mean turns 为 143.5 对 111.6,tokens 为 236.0k 对 172.9k。这个对照支持“保持正负 credit 的量级有助于稳定训练”。

另一个结果是 30 个随机 DeepSWE tasks 的质量审计。Claude Opus 5 同时查看两种方法的匿名 trajectories、patches 与 test outcomes。在两组都训练到的最后一个 checkpoint 上,GAGAR 的 rubric-weighted quality 为 4.03,对照为 3.70;passing candidates 的平均 win rate 为 69.8%。样本量较小,而且 judge 仍是 LLM,不能把它等同于真实工程师的 code review。

Q5. 这套方法下一步最值得验证什么?

下一步应该把 grader 变成可重复评测的公开对象,并把质量收益连接到真实开发成本。

第一项需要公开匿名化的 task + repository snapshot + trajectories + patches + tests + grade bundle。这样才能检验不同 grader model、prompt 与 temperature 是否产生稳定排序,也能让人类 reviewer 测量 agreement。

第二项需要把 λ_max 单独做 ablation。当前论文把 exact sum-preserving method 与 bounded implementation 放在正文和附录两个位置,却没有报告上限触发频率。这个频率决定训练过程中有多少 groups 真正满足正文的守恒性质。

第三项是把“质量”落到开发者成本。比如让 reviewer 在不知道模型来源的情况下记录发现问题所需时间、requested changes 数量,以及 patch 是否能直接 merge。这样的指标比另一个 LLM 的 1-5 分更接近论文声称的 maintainability。

Q6. 最终应该怎样评价 GAGAR?

方法抓住了 code-agent RL 中真实存在的盲点,受控实验也有一致信号;公开证据尚不足以判断 grader 是否可靠地识别了好代码。

论文已经支持在同一 Flash SFT 起点与 shared training steps 下,GAGAR 的 DeepSWE pass rate 更高,trajectories 更短;downweight-only ablation 也明显更不稳定。
论文没有支持没有多 seed、置信区间、人工 code-review study,也没有公开 grader prompt、training tasks、真实 case 或实现。
不要误读step 44/52 的继续训练结果只能说明 GAGAR run 还能继续优化,不能与 step 28 停止的 baseline 当成同预算比较。
可复用的设计保留 executable correctness gate,在通过样本内部增加质量偏好,并避免简单 downweight 破坏正负 advantage 平衡。

如果研究目标是 Claude Code、Codex 一类完整 software-agent harness,这篇值得读。它提供了一种把 repository-aware review 接进 RL 的方式。复现门槛目前很高;接下来的研究需要公开 grader 的输入和判据,并测量排序稳定性以及它与人工 code review 的一致程度。

主要来源:论文 v1 Sections 1-5、Appendix A、Figures 1-4、Tables 1-2。公开 artifact 检查日期:2026-10-06。未发现官方代码仓库、grader prompt、训练任务或逐组 grading records。

留言

留言正在载入…

搜文章