编程智能体在真实仓库里会压缩上下文、反复调用工具、重启环境,训练器很难精确知道哪些Token由当前策略生成。华为、香港中文大学提出LEGO-RL,在不改动Agent内部控制流的前提下,把OpenHands SDK、Claude Code和OpenCode接入可扩展策略梯度训练。
同一个Qwen3.5-35B-A3B模型经过训练后,在SWE-bench Verified上分别从64.0%升至70.4%、从62.4%升至68.2%、从57.2%升至66.6%。三套框架的绝对增益为6.4、5.8和9.4个百分点,采样与训练概率相关性保持在0.99以上。
原生Agent轨迹为何难以直接训练
Agent框架会把仓库状态、工具返回、压缩摘要和模型消息重新组织。训练端若只拿到整理后的文本,很可能无法还原模型当时逐Token的生成概率;轨迹经过序列化或压缩后,重新分词也会改变边界,导致计算出的策略损失与真实采样不对应。
LEGO-RL在Agent进程内代理LLM请求,直接捕获原始生成流,并在训练侧重新计算稳定的对数概率。框架仍决定何时调用模型、如何压缩上下文和怎样结束任务,代理只承担观测与对齐,不要求把Claude Code或OpenCode改造成训练器的子模块。
LEGO-RL通过进程内代理连接多种Agent工作器、统一模型接口、轨迹缓冲区和训练后端。
论文把这部分称为忠实优化。它针对的是训练—推理错位,而不是简单收集聊天记录;当相关性超过0.99时,训练器计算的概率变化才较可信地反映Agent实际执行时的策略。
沙箱先挡崩溃,再挡奖励投机
编程任务的奖励通常来自测试是否通过,但环境崩溃、依赖失败和超时可能被误记为模型失败。更棘手的是奖励投机:Agent可能修改测试、绕过验证或利用环境漏洞拿到高分,却没有真正修复问题。
LEGO-RL用可扩展沙箱编排处理仓库执行,加入镜像缓存缩短准备时间,并按阶段设置防护与验证。训练器获得的不只是最终0或1,还能区分环境故障、无效补丁和可验证成功,减少污染策略更新的错误信号。
Live UI把任务轨迹、执行结果和训练状态放在同一界面,便于定位失败与异常奖励。
集成插件和Live UI提供轨迹级诊断。长时间强化学习出现奖励突然上升时,工程人员可以回到具体命令、补丁和验证日志,检查是能力增长还是评分漏洞。可观测性本身不会提高基准分数,却决定训练异常能否在扩大算力前被发现。
三套框架都提升,但幅度并不相同
实验用GSPO训练稀疏MoE模型Qwen3.5-35B-A3B。OpenHands SDK由64.0%升到70.4%,Claude Code由62.4%升到68.2%,OpenCode由57.2%升到66.6%。框架改变了工具、上下文和控制策略,因此相同模型得到的起点和增益不同。
论文按任务与Agent框架比较训练前后成绩,最大绝对增益出现在OpenCode。
采样—训练概率相关性超过0.99,是判断优化是否忠实的关键证据。高相关不等于高准确率,它只说明训练器更新的对象与运行时模型输出基本一致;任务是否完成仍由SWE-bench测试决定。
概率相关性实验检查Agent端原始生成流与训练端重算结果是否一致。
论文结果集中在SWE-bench Verified。真实代码库还会遇到私有依赖、人工审批、网络权限和多小时任务,沙箱成本与超时策略可能改变训练分布,不能从当前分数推断生产可靠性。
下一步是把同一策略带到更多Agent外壳
LEGO-RL提供了一种比较框架差异的实验方式:固定基础模型、数据和训练算法,只替换Agent外壳,观察轨迹长度、工具使用、奖励质量与最终成绩。团队也可以先在隔离环境训练,再把策略部署回原生框架,减少维护两套Agent代码的负担。
后续应报告跨仓库泛化、训练资源、奖励投机率和环境故障率,并测试一个框架训练的模型迁移到另一个框架后是否保留收益。论文已证明三种原生编程Agent可以接入同一训练底座,真正的工程门槛将转向数据质量、验证器安全和长任务调度。