← 返回 2026-08-19

Agent Lightning v1.0:迈向受控框架下的智能体强化学习 Agent Lightning v1.0: Towards Harnessed Agentic RL

Zhiyuan He, Siwei Zhang, Zhiwen Zhou, Yuqing Yang, Yu Kang, Yuge Zhang, Luna K. Qiu, Tin Yan Tsui, Jiahang Xu, Chong Luo 📅 2026-08-18 👍 29 2026-08-24 18:30
LLM后训练 代码智能体 强化学习 智能体训练 系统设计

提出harnessed agentic RL范式,RL提升编码智能体14.6个百分点

前置知识

GRPO 与优势计算

Group Relative Policy Optimization 是一种在线 RL 算法:对同一 prompt 采样一组 rollout,用组内奖励均值作基线,优势 $A=(r-\bar r)/\mathrm{std}(r)$,无需训练价值网络。优势决定每个动作 token 的梯度方向与权重,是策略梯度更新的核心统计量。

本文争论的核心正是:当 harness 使一个 rollout 展开为动态数量的训练样本时,优势应该在 rollout 层还是样本层计算,这直接影响训练稳定性。

Agent Harness

包裹 LLM 的运行时框架,管理工具调用、上下文构造、控制流与环境交互,典型代表有 mini-SWE-agent、OpenHands、Claude Code、Codex。它决定模型每一步看到什么 prompt、能执行什么操作、如何从失败中恢复。

harnessed agentic RL 的定义就是让这个部署时 harness 直接参与训练而不重写其循环,不理解 harness 的职责就无法理解各挑战的来源。

POMDP(部分可观测马尔可夫决策过程)

智能体无法观察完整状态 $s_t$,只能获得观测 $o_t$,策略在观测历史条件下输出动作。论文用它形式化两种范式:传统 agentic RL 的隐状态只有环境状态;harnessed RL 的隐状态是 $s_t=(s_t^{harness}, s_t^{env})$。

正是隐状态中多出的 harness 状态,导致策略只能看到独立构造的 prompt,从而引发重分词、动态样本数等新挑战。

重分词(retokenization)

同一段文本在不同上下文中被 tokenizer 切成不同的 token 序列。例如 having 先被切成 $h$+aving 两个 token,放到更长上下文里重新分词却可能切成 hav+ing,token ID 随之改变,而文本内容不变。

它破坏相邻 LLM 调用间的 token 级前缀连续性,是训练样本数变得动态、相邻调用无法安全合并的直接原因。

损失归一化:token-mean / seq-mean / rollout-mean

策略梯度损失的分母选择:token-mean 对 batch 内所有响应 token 求平均(DAPO 采用);seq-mean-token-mean 先在每个样本内平均再对样本均匀平均(GRPO 传统做法);rollout 级 token-mean 先把一个 rollout 的全部响应 token 汇总平均,再对 rollout 均匀平均(slime 采用)。

归一化粒度决定产生更多样本的 rollout 是否获得不成比例的梯度权重,是本文消融实验的关键变量之一。

同步 / 异步 / collocated 异步 RL

同步 RL 中一个 batch 的所有 rollout 完成后才能更新权重,GPU 大量空闲;异步 RL 把 rollout 与更新放到两组独立 GPU 上,总资源需求更高;collocated 异步让 rollout 与权重更新分时共享同一组 GPU,更新期间网关暂停新请求。

这是 Agent Lightning v1.0 系统层面最重要的效率设计,实验声称端到端约 2 倍于同步 RL 的加速且更省 GPU。

研究动机

传统智能体强化学习框架(verl、AReaL、slime)要求把整个 agent 循环实现在训练框架内部,难以复用 mini-SWE-agent、OpenHands、Claude Code 等独立维护、依赖复杂的 harness。后来的代理式框架(verl Uni-Agent、AReaL 2.0、slime v0.3.0、Polar)通过 LLM 端点代理连接任意 harness,却回避了一个根本问题:harness 以文本消息与模型 API 通信,而 RL 训练依赖精确 token ID 与 rollout 对数概率,重分词会破坏相邻调用间的 token 级前缀连续性。且 harness 的子代理、上下文摘要等操作使一个 rollout 展开成多少训练样本变得动态——实测平均每 rollout 产生 2.41 个训练样本、仅 36% 保持单样本。现有框架在优势按 rollout 还是样本计算、损失按 token 还是序列归一化等问题上选择互相冲突,处理不当会导致训练无效或不稳定,但此前从未被系统阐述。

本文的目标是本文有两个目标。第一,首次系统刻画 harnessed agentic RL——即部署时使用的同一个 agent harness 直接参与模型后训练——这一范式带来的一系列实现挑战:重分词与样本合并、优势计算、损失归一化、动态样本数下的训练后端调度,并给出每个挑战的数学形式化与现有框架不同选择的对比分析。第二,构建 Agent Lightning v1.0:一个约 3500 行代码的轻量框架,把简洁作为第一原则,支持任意 agent harness 通过切换 LLM 端点接入 RL 训练,并内嵌作者对上述挑战的设计选择(尽力而为的序列合并、rollout 级优势、rollout 级 token-mean 损失、collocated 异步调度),为研究这些问题提供透明测试床。同时在搜索智能体、通用指令遵循智能体、编码智能体三类场景上验证,并重点补齐编码智能体缺乏完整数据清洗流水线与可复现训练脚本的空白,让 RL 仅用约 6K 样本和适度算力就能显著提升模型表现。

与已有工作不同的是,独特切入角度在于把部署时 harness 直接参与后训练确立为独立范式,并用 POMDP 语言精确区分:传统 agentic RL 的隐状态只有环境状态,策略观察到连续延展的 token 历史 $p_t=(p_{t-1},a_{t-1},o_t)$;harnessed agentic RL 的隐状态是 $s_t=(s_t^{harness},s_t^{env})$,策略只能看到 harness 独立构造的每次调用 prompt,rollout 在模型边界暴露为 $(p_1,a_1),\ldots$ 的请求-响应对集合。作者首次系统展示文本级前缀成立不代表 token 级前缀成立,并识别出三种机制:聊天模板非组合性 $\mathrm{Template}(A\Vert B)\ne\mathrm{Template}(A)\Vert\mathrm{Template}(B)$、解码-重分词漂移、推理时输出变换。进而论证样本数由重分词等偶然因素决定,因此优势基线与损失归一化都应在 rollout 层面统计——这是此前所有框架都未明确回答的原则性判断。

核心方法

整体思路的直觉是:训练系统只负责创建 rollout 和收集轨迹,任何 harness 只需把 LLM 端点切到代理地址即可接入训练,训练与执行资源可独立供给甚至异地部署。技术路线是一个解耦的控制平面,由三个组件构成:API Gateway 是存储 rollout、模型与事件的事实来源,并把 harness 的 LLM 调用转发到训练引擎注册的模型端点;Rollout Controller 在 Kubernetes 集群(或本地进程池)上轮询 rollout 并调度 agent 执行,每个 agent 运行为标准 K8s Job,用自托管算力取代商业沙箱;Customized Trainer 基于 VERL,注册 rollout、等待完成、取回事件并组装训练样本。整个系统仅约 3500 行代码。训练管线内嵌四项关键设计:尽力而为的序列合并、rollout 级优势、rollout 级 token-mean 损失归一化,以及 rollout 与权重更新共享同一 GPU 池的 collocated 异步 RL——比同步 RL 端到端快约 2 倍且更省 GPU。

核心创新是把统计正确性锚定在 rollout 层面。关键洞察:一个 rollout 产生多少训练样本 $N_\rho$ 由重分词、子代理、上下文摘要等偶然因素决定(实测均值 2.41 个样本,仅 36% 保持单样本),因此优势基线和梯度归一化都不应随样本数改变。重分词源于三个机制:聊天模板非组合性、解码-重分词漂移(having 由 $h$+aving 变成 hav+ing)、推理时工具调用处理器对输出的重序列化。与 AReaL/verl Uni-Agent 用缓冲 token 替换历史不同——那会构造拼接 prompt $\tilde p_{i+1}^{tok}=p_i^{tok}\Vert a_i^{tok}\Vert\Delta_{i+1}\ne p_{i+1}^{tok}$,与响应采样条件不一致而引入 off-policy 偏差——本文采用 best-effort 合并:仅当精确 token 前缀条件 $p_i^{tok}\Vert a_i^{tok}\preceq p_{i+1}^{tok}$ 成立时才拼接连续调用,否则另起序列;重分词漂移只降低合并率而不破坏正确性。

方法步骤详情

流程:(1) Trainer 向 Gateway 注册 rollout。(2) Controller 调度 agent 为 K8s Job,只放白名单、隐藏 .git 防作弊。(3) harness 经代理调用模型,Gateway 记录 model_request 事件。(4) Trainer 去重相同 prompt 请求(重试只留末次),再 best-effort 合并:满足 $p_i^{tok}\Vert a_i^{tok}\preceq p_{i+1}^{tok}$ 则拼接,否则另起;序列带 rollout 标识 $\rho$ 与组标识 $g_\rho$,同 rollout 序列须在同一更新内。(5) 结果奖励赋给 rollout 内样本,rollout 级算 GRPO 优势。(6) 以 rollout 级 token-mean 损失 $\mathcal{L}=\frac{1}{R}\sum_\rho\frac{\sum_{j,t}\ell_{\rho,j,t}}{\sum_j L_{\rho,j}}$ 归一化后更新。(7) 数据足够即切换更新,Gateway 暂停新请求。

技术新颖性

技术新颖性有三处。其一,首次给出 harnessed agentic RL 的系统性问题定义与数学刻画,把现有框架的选择差异(AReaL/verl Uni-Agent 的缓冲 token 替换 vs slime/Polar 的不合并;rollout 级优势 vs 样本级优势)放同一框架比较,并指出缓冲替换在改变实际消费 prompt 时构成 off-policy 拼接。其二,统一对比三种损失归一化:DAPO 的 token-mean(式 14)、GRPO 的 seq-mean-token-mean(式 15)、slime 的 rollout 级 token-mean(式 16),论证样本级归一化会给产生更多样本的 rollout 不成比例的梯度权重,并从实验发现 token-mean 对长负样本敏感、后期不稳定,从而偏好 rollout 级归一化。其三,collocated 异步 RL 用一组 GPU 分时复用 rollout 与更新,比同步 RL 快约 2 倍且更省机器;配合幂等 API 与请求去重解决网络重试,用自托管 K8s 取代 Modal、veFaas、E2B 商业沙箱。

The overall framework of Agent Lightning v1.0
Figure 1: The overall framework of Agent Lightning v1.0
Traditional agentic RL, where each rollout is one training sample (left), versus harnessed agentic RL, where a rollout can expand into a dynamic number of samples that inherit its reward (right)
Figure 4: Traditional agentic RL, where each rollout is one training sample (left), versus harnessed agentic RL, where a rollout can expand into a dynamic number of samples that inherit its reward (right)
An example batch with three rollouts of different sample counts and response lengths
Figure 5: An example batch with three rollouts of different sample counts and response lengths
Sync RL, async RL, and our collocated async RL
Figure 6: Sync RL, async RL, and our collocated async RL

实验结果

搜索智能体:Llama-3.2-3B-Instruct+GRPO 训 HotpotQA(batch 512),验证奖励 25.1%→41.7%(+16.6)。通用指令:Qwen3-4B-Instruct-2507+RLOO,验证奖励 51.9%→70.2%(+18.3)。编码智能体:从 SWE-smith 59136 条任务清洗出约 6000 训练、400 测试(剔 18033 空 statement、1265 缺分支、测试超 200 者;再按 Qwen3.5-9B 每任务 4 采样过滤:全成功删、混合留 5000、全失败采 1000);禁 Git、K8s 白名单防 4 类 reward hacking 后,Qwen3.5-9B+mini-SWE-agent 于 SWE-bench Verified 41.8%→56.4%(step 208,+14.6)。消融(step 128):样本级优势 35.0%、仅改 rollout 级优势降 33.1%、加 rollout 级归一化达 38.2%,熵更稳。collocated 异步较同步 RL 快约 2 倍。

Search-agent training dynamics. From left to right: mean training reward and mean validation reward
Figure 7: Search-agent training dynamics. From left to right: mean training reward and mean validation reward
General instruction-following agent training dynamics. From left to right: mean training reward and mean validation reward
Figure 8: General instruction-following agent training dynamics. From left to right: mean training reward and mean validation reward
Coding-agent training dynamics for Sample-level Advantage, Rollout-level Advantage, and Rollout-level Advantage + Rollout-level Norm
Figure 9: Coding-agent training dynamics for Sample-level Advantage, Rollout-level Advantage, and Rollout-level Advantage + Rollout-level Norm
Rollout-merging behavior for the Rollout-level Advantage + Rollout-level Norm run
Figure 10: Rollout-merging behavior for the Rollout-level Advantage + Rollout-level Norm run
查看结构化数据
任务指标本文基线提升
编码智能体(SWE-bench Verified) 解决率 % 56.4%(step 208) 41.8%(Qwen3.5-9B 未训练) +14.6 个百分点
搜索智能体验证集(HotpotQA、2WikiMultiHopQA、MuSiQue、Bamboogle、TriviaQA、NQ 各抽 50 例) 验证奖励(EM)% 41.7% 25.1%(Llama-3.2-3B-Instruct 初始) +16.6 个百分点
通用指令遵循智能体验证集(Instruction Pre-Training 数据 20% 划分) 验证奖励 % 70.2% 51.9%(Qwen3-4B-Instruct-2507 初始) +18.3 个百分点
编码智能体消融(step 128 验证奖励) 验证奖励 % 38.2%(rollout 级优势 + rollout 级归一化) 35.0%(样本级优势 + token-mean 损失) +3.2 个百分点(且熵更稳定)

局限与改进

作者承认 rollout 内部的跨样本 credit assignment 仍待设计更好的方案,当前只是把任务级奖励直接赋给 rollout 内全部样本;损失归一化的偏好部分基于经验观察(token-mean 在长负样本多的 batch 中后期不稳定),理论保证有限。我的补充观察:其一,论文没有与 verl Uni-Agent、AReaL 2.0 等同类 harness RL 框架在同一任务上做端到端对比,所谓更稳定的结论主要靠自身消融支撑;其二,编码智能体主结果只用 Qwen3.5-9B 一个模型验证,跨模型与跨规模的泛化未知;其三,SWE-bench Verified 56.4% 与顶尖商业编码智能体仍有差距,且 6K 训练集虽高效但规模有限,难度过滤本身依赖被训练模型的四次采样成功率,存在自我选择偏差;其四,best-effort 合并意味着相当比例的共享前缀计算被放弃,效率上限受重分词漂移频率制约;其五,依赖 Kubernetes 集群对小团队仍是实际运维负担。

独立分析的弱点

独立分析四个弱点。第一,缺乏跨框架受控对比:作者主张 rollout 级优势更合理,但没有在同一 harness、同一数据、同一算力下复现 verl Uni-Agent 或 AReaL 的缓冲替换与样本级基线,改进方向是发布 head-to-head 基准套件,量化 off-policy 拼接造成的实际性能损失。第二,奖励信号粗糙:编码任务只有通过/失败两种结果,长轨迹中错误步骤与正确步骤获得相同的 rollout 级优势,改进方向是引入测试结果分解(失败测试聚类)或过程奖励模型做步级信用分配。第三,难度过滤依赖当前策略模型的四次采样,随模型能力变化过滤结果会漂移,改进方向是结合执行成本、测试覆盖度等静态指标做交叉校验。第四,重分词本质是 tokenizer 与聊天模板非组合性的工程缺陷,本文选择绕过而非根治,合并率因此受限(仅 36% rollout 完全合并);改进方向是让推理引擎导出带稳定 token 边界的 prompt 前缀或提供模板感知的 tokenization API,从源头消除漂移使合并率逼近 100%,或实现论文提到的树状注意力掩码训练。

未来方向

作者明确提出的方向:为 rollout 内多个样本设计更精细的 credit assignment,而不是简单让全部样本继承同一结果奖励;继续研究损失归一化与熵动态之间的理论关系——实验发现 rollout 级归一化能抑制纠正优势后的熵上升,但机制尚不清楚。基于本文成果可以延伸的工作:一是把树状/前缀共享训练与 best-effort 合并混合,在合并失败处自动分叉注意力掩码,兼顾正确性与算力复用;二是把论文中已有的 AI 监控(用 agent 自动审计 rollout 日志与 pod 日志发现 reward hacking,作者已借此发现四类作弊行为)发展为训练中的在线异常检测与自动环境加固;三是把 harnessed RL 扩展到多智能体与子代理交接场景,研究组内优势如何跨 harness 边界公平分配;四是探索离线 harnessed RL——若能完整记录 harness 状态转移轨迹,可做经验回放以降低在线交互成本;五是研究聊天模板与 tokenizer 的标准化设计,使训练与推理的 token 边界天然一致。

复现评估

复现条件较好。项目页面为 github.com/microsoft/agent-lightning,论文承诺发布完整工作流与脚本;harness 采用开源的 mini-SWE-agent,数据基于公开的 SWE-smith 数据集(59136 条任务,Docker 镜像约 295GB,远小于 R2E-Gym 的 4TB 和 SWE-Gym 的 6TB);四步数据清洗流水线(空 problem statement、缺分支、测试数阈值 200、模型难度四次采样过滤)与防 reward hacking 措施(禁 Git 并隐藏 .git、K8s 网络白名单)均有精确描述;训练规模刻意控制在约 6K 样本与适度算力(Qwen3.5-9B、GRPO、200 余步),不依赖商业沙箱,全栈可自托管。难点在于:需要一套 GPU 集群加 Kubernetes 集群并熟悉 VERL;三件套部署细节主要放在附录 A,正文信息有限;搜索与指令遵循实验未给出确切 GPU 时数。总体属于中等偏易的复现难度,主要风险在环境与集群配置而非方法本身。