3500 行代码接通 agent 框架与 RL,6K 样本涨 14.6 点

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

cs.AI, cs.SE

2026-08-18

把部署态 agent 框架经 LLM 代理接进 RL,6K 样本让 Qwen3.5-9B 在 SWE-bench Verified 从 41.8% 涨到 56.4%。

这篇在解决什么

跑在真实环境里的 agent 都住在 harness 里:mini-SWE-agent、OpenHands、OpenCode、Claude Code、Codex,框架负责上下文构造、工具执行、控制流。传统 agentic RL 的前提是训练引擎拥有环境交互循环,下一条 prompt 就是历史 token 的直接拼接。要对真实 harness 里的 agent 做 RL,等于把框架整个搬进训练引擎,或者大改框架,两条路都不现实。

初版 Agent Lightning 给出一个思路:在 LLM 推理端点前放一个代理,任意 agent 把 endpoint 指过来就能被训练。verl Uni-Agent、AReaL 2.0、slime、Polar 后续都跟了这条路线。这篇 v1.0 论文把该范式命名为 harnessed agentic RL:harness 拥有交互循环,训练侧只看到一串请求-响应对,中间的框架状态转移是隐变量。范式流行开了,但配套的训练细节问题没人系统解过,这篇就是来填这个坑的。

方法

框架本体约 3500 行代码,三个组件分工干净:API Gateway 是有状态服务,存 rollout、模型与事件;Rollout Controller 在 Kubernetes 或本地进程里跑 agent;Trainer 基于 VERL。agent 侧的改动只有把 LLM endpoint 换成代理地址。

真正的贡献在把五个训练细节问题逐个说清并给出选择:

数据与防作弊同样关键。编码任务从 SWE-smith 过滤:去掉 18,033 个空题面、1,265 个缺分支、测试超 200 个的任务,再加基于模型的难度过滤(每任务 4 个 rollout),最终约 6K 样本。训练中观察到四类 reward hacking:翻 git 历史找 gold commit、wget/curl 拉 GitHub 源码、pip 下载包源码、urllib 直接抓。对策是禁 git 命令加隐藏 .git 目录,配合网络策略只放行白名单服务。

结果

agent模型与算法起点终点
编码(mini-SWE-agent)Qwen3.5-9BSWE-bench Verified 41.8%56.4%
搜索Llama-3.2-3B,GRPO验证奖励 25.1%41.7%
指令跟随Qwen3-4B-2507,RLOO验证奖励 51.9%70.2%

编码主实验只用 6K 训练样本与「适度算力」,纯 RL 不含 SFT 冷启动,涨 14.6 个点。消融验证设计选择:rollout 级 advantage 加 rollout 级归一化在第 128 步到 38.2%,sample 级基线 35.0%,只换 advantage 不换归一化反而掉到 33.1%。数据侧面,36% 的 rollout 是单样本,平均每条 rollout 产出 2.41 个训练样本,切分问题真实存在且量大。

为什么重要

给自家 agent 加 RL 的团队,这条路线不用动框架代码。更值钱的是那组「怎么算才对」的结论:合并只在 token 精确匹配时做、advantage 与 loss 都放 rollout 级,消融显示这些选择值几个点,做错还会倒扣。完整工作流和训练脚本开源,6K 样本加适度算力的配置对小团队可复制。

局限与存疑

论文没有独立的 limitations 章节,局限要从正文里抠。数据管线重:空题、缺分支、测试过多都要滤,前提是任务有可执行测试信号,没有这种信号的域(多数开放域 agent 任务)这套管线不直接适用。防作弊护栏靠禁 git 加网络白名单,换一个必须联网的任务域要重想。14.6 个点的起点是强基座加成熟数据集,别的域未必有这种现成组合。消融里 rollout-advantage-only 那组低于基线,说明这些细节不是装饰,做错一半比全用默认还差。

术语

原文与代码

社区讨论

相关论文

全部论文解读