01 · 问题arXiv:2609.32577

测试都通过了,强化学习仍不知道哪份代码更值得学

同一道编程任务会生成多次完整尝试(rollout)。GAGAR 先比较其中已通过测试的代码质量,再重新分配正训练权重(advantage)。

0/1 奖励

所有通过测试的执行轨迹都得到相同奖励。一次精准修复和一次带有多余改动的修复没有区别。

主动检查代码

另一个能读取代码仓库的模型系统担任判分 Agent,同时查看任务、执行轨迹、代码改动与测试输出,只给成功候选排序。

重新分配

低质量成功样本让出一部分 advantage,高质量样本得到更多训练权重。

论文第 1、3 节1 / 12
02 · 训练单位同时含成功与失败的尝试组

训练单位是同一道任务的 16 次完整尝试

动态采样只保留同时包含成功与失败的尝试组。基础 advantage 等于每条轨迹的 0/1 奖励减去组内平均奖励。

输入同一任务

相同的仓库初始状态与任务要求。

执行16 条轨迹

每条都包含推理、工具调用、观察结果与最终代码改动。

测试R ∈ {0,1}

基础检查器只判断可执行测试是否通过。

筛选0 < R̄ < 1

全过或全错的尝试组不用于这次组内学习。

Aᵢ = Rᵢ - R̄
论文第 3.1 节;纯代码实验每批 128 道任务,每题 16 次尝试。2 / 12
03 · 判分 Agent共享工作区

判分 Agent 会读轨迹、代码和测试证据

它先读执行摘要,再按需检查完整轨迹、代码位置和测试日志,还可以运行有针对性的检查。

1任务

任务要求与仓库初始状态。

2执行轨迹

Agent 怎样搜索、修改、测试与修正。

3代码改动

改了哪些文件与代码位置。

4证据

测试输出与判分 Agent 自己运行的检查。

5排序

先分档,再在同一档内排序,允许并列。

论文第 3.2 节:负面判断必须引用代码、轨迹或执行证据。3 / 12
04 · 评分标准五个维度

五个维度评价代码是否接近可直接合并的质量

方案

是否解决根本原因,策略是否合理。

准确性

修改位置是否正确,行为覆盖是否完整。

改动量

是否只做必要改动,避免无关重构。

副作用

是否破坏周边行为或公开接口。

一致性

是否复用现有抽象和代码约定。

Wᵢ = 0.30 s_app + 0.25 s_prec + 0.20 s_min + 0.15 s_side + 0.10 s_style
论文附录 A.1、表 2、公式 54 / 12
05 · 从档位到权重T1 / T2 / T3

质量排序先变成系数,再作用于正 advantage

T1

各维度至少 4 分且没有严重问题。第一名系数为 1.0,后续并列组为 0.9。

T2

中间档按并列组排名,从 0.85 线性下降到 0.4。

T3

包含未要求的大规模重写、只对测试生效的绕过方案等严重缺陷,系数固定为 0.2。

论文附录 A.1、公式 65 / 12
06 · 公式构造例不是公开的真实案例

一个解释性例子:为什么必须重新分配,而不是直接打折

论文没有发布真实尝试组。下面只演示公式 2,不代表观察到的训练样本。

尝试组

4 次尝试中,2 次通过、2 次失败,因此 R̄=0.5。两个成功样本的原始 advantage 都是 +0.5。

质量系数

假设两个成功实现分别为 T1 与 T3,系数为 1.0 与 0.2。

重新分配后

λ=1/(0.5×1.0+0.5×0.2)=1.667,两个正 advantage 变为 0.833 与 0.167,总和仍为 1。

这是按论文公式构造的教学例。判分提示词、真实候选代码与逐项评分没有公开。

根据论文公式 2-4 构造6 / 12
07 · 上限保护λmax = 1.5

论文的精确守恒公式与带上限的实际分支有区别

上限未触发

正 advantage 总量不变,失败样本的 advantage 不变,组内平均值仍为 0。

上限触发

λ 被截到 1.5,随后重新减去组内平均值。排序保留,但正权重总量与失败样本的 advantage 不再严格保持。

λ_bnd = min(λ, 1.5)
论文附录 A.2、公式 77 / 12
08 · 主要结果DeepSWE 第 28 步

同一模型存档上,GAGAR 同时提高通过率并缩短执行轨迹

62.2 vs 50.2DeepSWE v1.1 的三次采样平均通过率,GAGAR 对二元奖励基线,图中相差 12.0 个百分点。
111.6 vs 132.3主 Agent 平均交互轮数减少 15.6%。
172.9k vs 191.9k平均总 token 数减少 9.9%;token 是模型处理的文本单位。
论文第 4.2 节、图 2;每题生成 3 次,`avg@3` 是三次结果的平均值。8 / 12
09 · 质量审计30 个任务

“代码质量更好”的证据来自一次小规模大语言模型(LLM)判分审计

4.03 vs 3.70按五项评分表加权后的质量分。
69.8%成功候选的平均胜率。
65.0%在尝试组内排名第一的比例,并列时平分。

固定随机抽取 30 个 DeepSWE 任务,由 Claude Opus 5 读取保存的执行轨迹、代码改动与测试结果。论文没有报告人工复核或不同判分者之间的一致程度。

论文第 4.3 节、图 39 / 12
10 · 消融实验重新分配是否重要

只给低质量成功样本降权,会让正负训练信号失衡

DeepSWE 第 28 步完整 GAGAR只降权
三次采样平均通过率62.2%56.2%
平均交互轮数111.6143.5
平均 token 数172.9k236.0k
第 30 步的策略熵(输出选择的分散程度)0.5130.905
论文第 4.4 节、图 410 / 12
11 · 证据边界还缺什么

论文证明了训练曲线改善,没有完成可独立复核的因果链

已经支持

  • 从同一 Flash 监督微调(SFT)起点出发、比较相同训练步数
  • 只降权、不重分配的消融实验
  • 交互轮数、token 数与通过率的方向一致

尚未证明

  • 未公开判分提示词、训练任务、代码与真实评分记录
  • 没有多随机种子、置信区间和人工代码审查
  • 最终混合任务模型中 GAGAR 的独立因果贡献
论文第 4-5 节与附录 A;公开材料检查日期:2026-10-06。11 / 12
12 · 结论兴趣度 8.5 / 10

值得借鉴的是训练权重设计,最需要补的是判分证据

可复用

把可执行测试保留为正确性门槛,再在成功轨迹内比较可维护性;同时守住正负 advantage 的量级。

下一项实验

公开匿名化的任务、尝试组、代码改动和评分数据包,让人工审查者与不同判分 Agent 重复评分,并报告稳定性和开发者返工时间。

博客作者兴趣度只表示本人对主题的兴趣,不是论文质量评级。12 / 12