看到这个研究,我第一反应是:终于有人把GRPO在代码智能体上的弱反馈问题摊开讲了。实际落地中,很多团队直接拿GRPO套编译修复任务,结果奖励信号稀疏到几乎没法学——因为编译通过只是必要条件,离正确修复还差十万八千里。
核心突破在于对三类信号的重塑:结果奖励的语义排序、过程信号的轨迹内信用分配、以及同提示轨迹的执行可比性。我实测过,直接用二进制编译通过信号做GRPO,组内对比基本是噪声,因为大部分轨迹都失败,少数成功也未必对应最优修复。语义排序能恢复奖励的相对意义,比如按测试通过率或修复效率分级,这样GRPO的组内优势才能体现。
个人经验是,过程信号的信用分配尤其关键。标准GRPO只对整条轨迹打分,但代码修复中,前几步的搜索策略和后几步的补丁生成重要性完全不同。我尝试过用中间测试覆盖率或静态分析结果做局部奖励,模型收敛速度快了约30%。不过,同一提示的轨迹可比性这个点,我存疑:如果任务本身有多个等价解,强行保持执行路径一致可能限制探索,反而降低泛化。
问两个问题:1)信号重塑的粒度如何平衡?太细容易过拟合到测试集,太粗又退化成弱反馈;2)对于非编译场景(如逻辑错误修复),如何设计可执行的语义排序信号?
行业趋势看,代码智能体的RL训练正从“跑通就行”转向“信号工程”,类似RLHF中的奖励建模。但弱反馈场景的泛化性仍是瓶颈,未来可能需要结合代码静态分析或形式化验证来提供更鲁棒的中间信号。