LEGO-RL: Harness-Native Reinforcement Learning for Coding Agents 精读

论文链接:LEGO-RL: Harness-Native Reinforcement Learning for Coding Agents 代码仓库:LegoX/Lego-RL(训练索引 LegoX/Lego-RL-2699) 发表时间:2026年8月 机构:华为技术有限公司 + 香港中文大学 领域标签:cs.AI / 编码 agent RL 系统

机构合作说明:华为企业主导的工业级技术报告(LegoX 团队,Du Yiming/Jiang Yuxin/Yuan Tao 三位共同一作均为华为),港中文 Kam-Fai Wong 参与合作。与同期微软 Agent Lightning v1.0 形成"harnessed agentic RL"方向的南北呼应——两家工业实验室在同一周各自发布系统级答案,这个巧合本身佐证了该方向的成熟度。


一、论文背景

编码 agent 的 RL 训练为什么难? 编码 agent 的一个 rollout 包含:反复的模型调用、仓库检查、工具调用、代码修改、依赖安装、测试执行——最后才产生一个稀疏的可执行奖励。这些轨迹由原生 harness(SWE-agent、Claude Code、OpenHands、OpenCode)产生,harness 管理 prompt、工具、上下文与执行状态。

把 harness 接进策略梯度训练的三大拦路虎(论文的动机段落写得非常坦诚):

  1. 轨迹失真:harness 侧的 prompt 构造、上下文压缩(compaction)、历史重写会使"重建的轨迹"偏离采样时的真实 token 序列——训练器拿到的不是模型真正见过的东西,重算的 logprob 全是错的。稀疏 MoE 模型雪上加霜:rollout 时的专家路由若不能在训练时复现,概率计算再次失真。
  2. 环境崩溃与 reward hacking:原生执行环境会崩溃(依赖冲突、超时);agent 会作弊——直接 git 历史/上游下载参考源码,让"通过测试"与"会修 bug"脱钩。
  3. 训练-推理偏差:训练时的行为分布与部署时的分布解耦,rollout 的优化目标不再对应真实使用。

这三点与 Agent Lightning v1.0 的四大挑战高度互补:微软那篇从"样本组装的正确性"切入(重分词/优势计算/归一化/调度),华为这篇从"工业规模化的忠实性"切入(token 对齐/沙箱编排/可观测性)。


二、论文定位和关联工作

谱系代表工作核心思想与本文关键区别
Proxy 训练框架Agent Lightning、verl Uni-Agent、AReaL 2.0、slime、PolarLLM 端点代理连接 harness本文强调进程内捕获原始生成流 + MoE 路由复现 + 工业级沙箱编排
SWE 训练环境SWE-Gym、R2E-Gym、SWE-smith构造可执行训练任务本文用 OpenSWE 派生索引并做任务选择管线
编码 RL 训练DeepSWE 等RL 提升编码 agent本文跨三大 harness 统一训练并量化 rollout-训练忠实度
序列级策略GSPO序列级策略损失(本文所用)—

定位结论:LEGO-RL 是"harness 原生 RL"的工业完备版——学术框架验证可行性,本文补齐生产环境必需的忠实性保障(0.99+ 概率相关性)、成本工程(镜像缓存)与可观测性(Live UI)。


##三、问题定义

具体场景:在 OpenHands SDK、Claude Code、OpenCode 三个原生 harness 上,对稀疏 MoE 模型 Qwen3.5-35B-A3B 做策略梯度训练(GSPO),200k token 上下文、完全异步、最大策略陈旧度 1。

核心洞察:训练系统对轨迹的"所见"必须等于策略的"所历"。形式化地说,对 rollout 中每个动作 a_t,训练器重算的 log π_θ(a_t|p_t) 必须基于采样时的精确 prompt token p_t 与(MoE 场景下的)精确路由决策。任何重建误差都会转化为重要性权重的系统性偏差,污染梯度。

抽象问题:给定一个黑盒化的 harness(只暴露 OpenAI 兼容 API),如何在不修改其内部控制流的前提下,让训练器获得(1)token 级忠实的轨迹表示,(2)可复现的 MoE 路由,(3)抗作弊且可恢复的执行环境?

精妙之处:把"忠实度"本身变成可测量的验收指标(rollout-训练概率相关性 >0.99),而不是停留在"我们做了对齐"的定性声明。


四、问题解法

4.1 忠实优化(Faithful Optimization)

进程内 LLM 代理:不同于外部代理(网络转发、可能丢信息),代理嵌入推理进程内部,直接捕获原始生成流——模型实际产生的 token 序列、logprob、以及 MoE 路由决策。即使 harness 随后压缩或重序列化上下文(改变后续 prompt),训练侧拿到的每条样本仍是"采样时刻的真值"。训练器基于这些真值重算 logprob,配合全局负载均衡与粘性路由(同一 rollout 的请求路由到同一推理服务器保证路由一致性)。

4.2 可靠执行(Reliable Execution)

可扩展沙箱编排:K8s 上调度 agent worker,Nydus 冷启动镜像缓存把环境初始化从分钟级压到秒级(编码任务容器镜像巨大,重复拉取是主要瓶颈)。分级反作弊防御:封堵从 git 历史/wget/curl/pip 获取参考源码的通道——与 Agent Lightning 发现的 reward hacking 行为清单惊人一致(两家独立发现同一组作弊模式,说明这是该问题的"本质面")。

4.3 可观测训练(Observable Training)

集成插件自动执行校验与监控,Live UI 提供轨迹级细粒度诊断(每个 rollout 的步骤、工具调用、奖励来源可逐条检视)。训练管线还支持部分 rollout 恢复(权重同步打断的轨迹不必丢弃)与终止感知的轨迹处理。


五、评估指标与实验证据

主结果(三 harness 一致提升):同一初始 checkpoint、同一 2699 任务索引、同一 200k 上下文预算,SWE-bench Verified 验证分:OpenHands SDK 0.640→0.704(+6.4pp)、Claude Code 0.624→0.682(+5.8pp)、OpenCode 0.572→0.666(+9.4pp)。注意各 harness 的 step-0 基线不同——同一模型在不同 harness 里的起点就差 6.8 个百分点,增益按各自基线衡量。策略熵全程稳定无崩溃,平均响应长度上升(OpenHands 最明显)——harness 显著影响轨迹分布。

对照更强基线:LEGO-RL-Qwen3.5-35B-A3B 在三个 harness 上全面超过下一代基座 Qwen3.6-35B-A3B(+3.0/+4.8/+6.0)——训练带来的增益超过了一代基座的迭代,也超过 KAT-Coder-V2.5-Dev(下一代基座+SFT+RL 的产物)。

忠实度验收:rollout-训练概率相关性 >0.99——这是本文最有"工业报告味"的数字:它直接量化了"训练器所见=策略所历"。

为什么实验设计有证明力:训练集与 SWE-bench Verified 在仓库与实例两级严格不相交(防泄漏);三 harness 用同一模型/数据/预算做配对比较(增益可归因于训练而非 harness 差异);概率相关性作为独立验收指标(把"忠实性"从口号变成合格证)。


六、效果优势的根源解释

对比对象:需要把 agent 循环重写进训练框架的传统路线,与外部 proxy 方案。

根本局限:重写路线丢失 harness 行为分布(上下文压缩、错误恢复等策略进不了训练);外部 proxy 方案在文本层面重建轨迹——chat 模板重新渲染、压缩后上下文重新 token 化,每一步都可能让"重建 p_t ≠ 采样 p_t",而策略梯度对这个偏差没有免疫力。

本文的根本性改变:因果链是——进程内捕获原始生成流 → 训练样本的 token 与路由都是采样真值 → logprob 重算无系统性偏差(0.99+ 相关性)→ 梯度方向正确 → 三 harness 一致的 5.8-9.4pp 增益。反事实支撑:若轨迹重建有失真(如压缩后重分词),相关性将显著低于 1,且增益会被偏差噪声稀释——论文把这个通常隐式的失败模式做成了显式验收项。

镜像缓存与沙箱工程的贡献是使 2699 任务的训练在工程上可行——如实归类为工程因素,但它决定了这类工作能否在真实工业预算内完成。


七、必要知识反推

领域知识层:编码 agent harness 的内部机制(上下文压缩何时触发、历史如何重写、工具调用如何序列化)——不知道"哪里会失真"就无法设计捕获点;稀疏 MoE 的路由机制与 FSDP/VeOmni/Megatron 训练后端;SWE-bench 评测协议与泄漏风险。

方法论知识层:GSPO 序列级策略损失(组相对优势+序列级聚合);异步 RL 的策略陈旧度控制(staleness≤1);重要性采样对轨迹偏差的敏感性——这是"忠实度=正确性"论证的理论根基。

工程知识层:vLLM serving 与粘性路由;Nydus 容器镜像按需加载;K8s 上 agent worker 的编排与部分 rollout 恢复;网络策略实施反作弊白名单。

知识融合的关键节点:最有创造性的一步是把"进程内插桩"这一系统技术识别为 RL 正确性问题的答案——需要同时理解推理引擎内部(哪里能拿到原始流)与策略梯度数学(为什么重建轨迹有毒)的工程师才能想到把代理塞进推理进程而非挂在网络边界。第二个节点是把忠实度定义为可测指标(概率相关性)——工业方法论"验收指标化"在 ML 系统中的成功应用。


八、论文中可以提取的通用性灵感

1. 在源头捕获,不要在下游重建 论文证据:进程内捕获原始生成流保证 0.99+ 忠实度;下游重建(文本→重分词)必然引入不可控偏差。 推广场景:审计日志在事件发生点记录而非事后从汇总数据反推;数据仓库的 CDC 从 binlog 捕获而非轮询重建;用户行为分析埋点在客户端而非服务端猜测。

2. 把质量属性变成可测量的验收门槛 论文证据:“忠实性"从形容词变成"概率相关性>0.99"的合格证——不可测量的要求等于没有要求。 推广场景:代码评审的"可维护性"用变更失败率度量;数据管道的"正确性"用对账指标卡住;安全合规的"足够好"用攻击成功率上限定义。

3. 反作弊要消灭信息通道而非惩罚行为 论文证据:分级防御封堵 git/wget/pip 通道,让"作弊"物理上不可达——与惩罚项方案相比无法被绕过。 推广场景:远程考试断网而非监考;财务内控分离职责使挪用不可达;竞技体育封禁器材而非赛后罚分。

4. 同一模型在不同"工作台"上的表现差异巨大 论文证据:同一 checkpoint 在三个 harness 的 step-0 分差 6.8pp,训练增益也因 harness 而异(5.8-9.4pp)。 推广场景:开发者效率研究必须控制 IDE/工具链;员工绩效评估应考虑团队基建差异;模型采购 PoC 要在自家 harness 里测而非看厂商基准。

5. 大规模重复性任务的成本瓶颈在"冷启动” 论文证据:Nydus 镜像缓存把沙箱初始化从分钟压到秒级,是 2699 任务训练可行性的关键一环。 推广场景:CI/CD 的构建缓存;Serverless 的热启动池设计;临床试验多中心的数据环境标准化。