揭秘单元测试奖励副作用!PreciseCoder 根治编程模型“过度修改与无病乱改”:平均改动行数从 15 行锐减至 3 行
基于单元测试通过与否的强化学习(Unit-Test RL)是当前后训练代码模型的标准范式,但研究发现仅靠测试通过率奖励会诱导模型‘胡乱扩大修改范围’甚至在原本正确的代码上产生幻觉式改写。研究团队提出 PreciseCoder,在单元测试奖励之上引入语义验证的局部化精准编辑奖励。在 4B、9B 与 27B 模型上将平均修改代码行数从 7–15 行压缩至仅 3 行,零样本迁移至仓库级修复解决更多 Issue,且将 9B 推理轨迹提供给 GPT-5.6 Sol 与 Qwen3.8-Max 可直接提升 4.6–12.4 个百分点的编辑精度。
核心要点速览
- 揭示纯单元测试 RL 隐患:仅靠测试通过率奖励会诱导代码模型大面积过度编辑,甚至在正确代码上产生幻觉修改
- 平均改动从 7–15 行压缩至 3 行:引入语义验证局部编辑奖励,在 4B/9B/27B 模型上实现外科手术式精准修复并泛化至仓库级任务
- 9B 思维链跨代赋能旗舰模型:将 9B PreciseCoder 的推理轨迹喂给 GPT-5.6 Sol 与 Qwen3.8-Max,零训练直接提升 4.6–12.4 个百分点编辑精度