论文

教会智能体可靠地编程

Teaching Agents to Code Reliably

模型训练强化学习RLVRAgentic RL

摘要

自主编程智能体通过阅读代码、运行命令、编辑文件和提交补丁解决仓库问题。额外推理时计算只有产生有效修复,并提供可信的修复选择证据,才会带来收益。三种行为同时决定这两点。我们认为这些行为可以教会模型,而不只是规模扩大后的副产物,因此能够由策略本身承载,而不必依赖外层编排。首先,定位多样性通常不足:多次尝试仍回到同一位置,增加采样没有扩大覆盖。其次,编辑多样性未被充分利用:不同修复方法可以解决互补问题,单次运行无法覆盖它们。再次,验证可能误导选择:智能体为自身补丁编写的测试,会放过许多错误补丁。以执行反馈引导搜索,并将每个补丁在其自身回退后的代码树上作对照评分,可解决 SWE-bench Verified 中 52.8% 的问题,而智能体步骤数仅为八次采样基线的 48.1%。训练能够将这些行为迁入策略。在未用于 SFT 或 RL 训练的 270 个留出问题上,加权监督微调将 pass@1 从 31.9% 提高至 35.2%,pass@8 从 46.7% 提高至 51.1%。随后,强化学习目标使用带真实标签的正确修复和错误变体训练验证器,并奖励能够检出错误的断言。最终 pass@1 达到 43.0%,pass@8 达到 60.7%,验证器精确率从 26.8% 提高至 41.7%,错误接受次数减少一半以上。在三个分布外测试集中的两个上,问题解决率提高;三个测试集的验证器精确率均提高。相对公开编程模型基线,这些收益在 7B、14B 和 30B 规模上仍然成立。

教会智能体可靠地编程的原论文方法或结果图
图 1:两种行为、一个奖励。左为探索:基线重复提交同一位置(lib/ascii.py)的修复,覆盖范围有限;先阅读代码的并行链则分别到达真正缺陷(lib/utils.py),编写复现并提交。右为验证:Harness 生成错误补丁变体,并记录哪些断言检出了各变体。只有测试排除所有错误变体,门控才通过,因此奖励针对的是区分能力。