补丁被拒不再白费:失败反馈喂给下一轮,SWE-bench 五百题解出率从38.9%升到41.7%
导语
仓库级修 bug 的智能体开始把失败补丁和验证器反馈当作下一轮的上下文来训练,在全部 500 道 SWE-bench Verified 题上把首轮解出率从 GRPO 的 38.9% 提到 41.7%。
正文
仓库级软件工程智能体的训练多了一条恢复轨迹:补丁被验证器判失败后,仓库回到原始任务状态,失败补丁和验证器诊断输出一起作为下一轮尝试的上下文。 此前的强化学习训练对同一 issue 独立采样多条轨迹,只把每条轨迹的终局奖励放进组内比较,失败补丁的测试报错和回溯信息不会被后续尝试复用。 在全部 500 道 SWE-bench Verified 题上,用 Qwen3.5-4B 和 SWE-agent、同一套带反馈的评测控制器与尝试预算,FC-SWE 取得 41.7% Resolved@1 和 52.8% Resolved@2,GRPO 为 38.9% 和 48.5%。
训练时每条轨迹只拿自己那份验证器结果,比较组则把同一 issue 上真正执行过的初始轨迹和恢复轨迹放在一起。 若把链条最终结果广播给链上每条轨迹,一次恢复成功会给先前被拒的补丁记上正奖励;若只优化最后一条轨迹,被拒行为就从策略损失里消失。 去掉训练期失败上下文的变体在同样评测下降到 40.4% 和 47.9%,条件恢复率从 19.0% 降到 12.6%;改用共享奖励的变体条件恢复率为 17.7%,低于轨迹局部奖励的 20.4%。
接下来
下一步可以把恢复训练接到部署时可用的验证器上,例如学习型评审、智能体自生成测试或混合验证,并让引导恢复的验证器与最终打分的留出测试分开。评测这类系统时,验证器成本、误接受、误拒绝和诊断有用性都值得单独测量,因为发现补丁错误与说明如何修复是两件事。
评测假设每次尝试后都能拿到基准测试反馈,部署场景下这一条件未必成立。反馈不完整、有噪声或具误导性时恢复训练是否仍有效,以及策略是否会核查证据而非照单全收,都还没有答案。受控训练只用了 Qwen3.5-4B 和一种配置,部分消融只跑了一个解码种子,训练算力也未与基线对齐。
