Agent Lightning
Agent · RL 训练框架 · arXiv 2508.03680v1

Agent Lightning:把 Agent 执行拆成 transition,RL 训练不用重写 Agent

Agent 生态的编排逻辑千差万别,现有 RL 训练器却要求把 Agent 搬进训练框架、把多轮轨迹拼成一条长序列再加掩码。 Agent Lightning 用 MDP/POMDP 只抽取每次 LLM 调用的 (input, output, reward),把轨迹分解成 transition,再交给 GRPO / REINFORCE++ 等单轮算法;系统上把 trainer 与 agent runtime 拆成 server/client。 代价是 credit assignment 目前只做等值分配,证据也主要是三条奖励曲线。

Xufang Luo, Yuge Zhang, Zhiyuan He 等 · Microsoft Research 原文 ↗ 代码 ↗ 笔记 ↗
TL;DR · 30 秒抓住核心

现有 RL 训练器主要面向静态、单次调用的任务,比如偏好对齐或数学推理。Agent 却把多次 LLM 调用、不同 prompt、外部工具和动态编排串在一起;想把已有 Agent 接进 RL,通常要在训练器里重写一遍 Agent,或者把多轮轨迹拼成长序列再设计掩码。

论文的做法是先把 Agent 执行抽象成 POMDP:state 是语义变量快照,action 是一次 LLM 调用生成的完整 token 序列。训练时不解析整张执行图,只保留策略 LLM 的 (input, output, reward),把一条轨迹拆成若干 transition。

LightningRL 先把轨迹级 return 等值分给每个 action——当前实现里每个 action 都拿最终 return R,不是把 R 均分成 R/T;再让现有的单轮 RL 算法在 token 级完成更新。这样一条多轮轨迹就变成了多条可分组、可批处理的单轮样本。

系统上,server 管训练、任务分发和 OpenAI-like API,client 跑 Agent、工具与数据采集;两边通过 API 通信,client 不需要和 GPU 同机。论文用 LangChain、OpenAI Agents SDK、AutoGen 各做一个任务,基座均为 Llama-3.2-3B-Instruct(§4.1、§4.2、§4.3 各自写明);结果以 Figure 5–7 的奖励曲线呈现,正文未标注具体读数,本页未转录曲线数值。

3
种 Agent 框架:LangChain / OpenAI Agents SDK / AutoGen,各自对应一个任务
0.9 / 0.1
RAG 奖励中 correctness 与 format 的权重:
R = 0.9×Rcorrectness + 0.1×Rformat
2 / 3
Text-to-SQL 中同时被优化的 agent 数 / 总数;checker 不参与更新
01

Agent 的复杂与多样,正好卡在单轮 RL 的假设外

读完这节应知道:为什么把 Agent 直接塞进现有 RL 训练器,成本不只是「多写几行适配代码」。

论文先把 Agent 定义得很宽:一个在执行过程中包含一次或多次 LLM 调用的软件系统。组件分两类——LLM(或更一般的基础模型)与工具;一个 Agent 可以有多个 LLM endpoint,也可以挂多个工具,编排方式由用户按任务写死或动态决定(§2.1–2.2)。

麻烦在于,现有 LLM RL 方法主要面向单轮任务:给一个 prompt,生成一个 response,算一个 reward,更新一次。Agent 的一次执行却可能包含多次 LLM 调用,每次的 prompt 和 response 都不同,中间还夹着工具、API 与环境交互;更麻烦的是,不同应用的 Agent 用不同框架写,执行逻辑本身就不统一(§1)。

耦合

训练器要知道 Agent 怎么跑

拼接式训练需要知道回合顺序、哪些 token 要 mask;这些信息都在 Agent 代码里。训练器因此和 Agent 执行逻辑绑在一起,迁移时往往要重写 Agent(§5.1)。

上下文

轮次越多,序列越长

把多轮交互拼成一条序列,上下文会随工具输出、协议消息和多 Agent 通信累积,容易触及输入长度限制,也会抬高计算与显存开销(§3.3.2、§5.1)。

掩码

位置连续性被打断

论文指出,masking 会破坏 RoPE 等位置编码所依赖的 token 连续性,还会给代码验证、调试和 kernel 设计增加复杂度(§3.3.2);掩码规则往往与应用绑定、难以通用(§5.1)。

论文的出发点因此不是发明一个新的 PPO 变体,而是换一种数据组织方式:只要能把 Agent 执行中真正影响策略的决策点抽出来,训练器就不需要理解完整的编排逻辑。这个判断来自 §3.1 与 §3.2 的整体设计。

02

三条旧路:拼接加掩码、搬进训练器、按应用定制

前人分别从多轮 RL 算法、RL 系统与应用专用 RL 三侧逼近;前两条主线都把 Agent 逻辑和训练逻辑绑在一起,第三条则只针对预设工作流。

路线 A

多轮 RL:拼接 + 掩码

RAGEN、Trinity-RFT、rLLM、Search-R1 等工作把多轮交互拼成一条长序列,再用掩码控制哪些部分参与优化。

“These methods typically concatenate agent turns into a single, elongated sequence and assigning specific masks to ensure correct optimization.”(§5.1)

论文的批评是:这类方法更适合简单、顺序的工作流;上下文会累积,掩码规则要按应用定制,还会打断位置连续性。

路线 B

RL 系统:单轮优先

verl、OpenRLHF、TRL、ROLL、AReaL 等系统主要优化单轮 LLM 训练;要给 Agent 用,通常得在训练系统里重建 Agent。

“they generally require developers to rebuild agents inside the training system.”(§5.1)

论文列出的代价包括:迁移 labor-intensive、error-prone,难以跨异构 Agent 生态扩展;还要求开发者熟悉 Ray 等分布式系统,并处理 MCP server、外部工具与 API 的依赖。

路线 C · 补充

应用专用 RL

Search-R1、R1-Searcher、DeepSWE、ReTool、SimpleTIR 等把 RL 用在搜索、代码或工具推理等特定场景。

“they often rely on a predefined workflow in both training and inference. Thus they’re not targeting at general-purpose agent training.”(§5.1)

这些工作通常预设训练和推理的工作流,因此不解决「任意 Agent 如何接入 RL」这个问题。

Agent Lightning 的赌注是:与其标准化 Agent,不如标准化训练数据接口。论文的原话是:

“This unified data interface abstracts away the underlying orchestration logic and agent framework details, making it applicable to ANY agent.”(§1)

这句话是论文的主张,不是本页对实验覆盖面的判断;实验只覆盖 Table 1 里的三种框架/任务,见 §06 与 §07。

03

核心:只抽 LLM 的 input/output/reward,把轨迹拆成单轮样本

读完这节应知道:MDP/POMDP 抽象、transition 的定义,以及 LightningRL 为什么能直接套 GRPO。

一次执行 = 一串 component call

论文把 Agent 执行看成有向无环图:节点是组件调用(LLM 或工具),边是依赖或控制流。但训练不需要还原整张图,只需要识别当前状态和影响状态转移的关键调用(§3.1)。一次 component call 写成:

calli = ( metai, inputi, outputi ),   outputi = Ci(inputi)

Eq. (3) · Ci 可以是 LLM,也可以是工具;meta 记录组件名、类型、版本、endpoint、采样参数等。Figure 2 右栏把同一条 call 记为 (component, input, output, reward),中间调用的 reward 标为 NA;两种写法并列

给每次调用附上标量奖励 ri,一次执行就写成 executionR(x,k) = {(calli, ri)}i=1..N(Eq. 5)。奖励可以来自中间步骤,也可以只在结束时给一个终止奖励;论文明确指出,很多现实场景只有终止奖励 rN,这是该形式化的一个特例(§3.1.2)。

训练时只保留策略 LLM 的决策

对要优化的策略 πθ,论文从一次执行中只抽取 LLM 调用的输入、输出与奖励:

executionRL(x,k) = { ( inputt, outputt, rt ) }t=1..T,   outputt = πθ(inputt)

Eq. (6)–(7) · T 是该轨迹中策略 LLM 的调用次数;工具调用与编排逻辑不单独成样本,但中间变量若被策略 LLM 读入 input,就随 input 进入样本(§3.1.3 第二次 LLM 调用的 input 是 (U, P),Passages 即中间变量);reward 可以为空,Figure 2 中中间调用记为 NA

论文把这一步的形式化写成 POMDP (S, O, A, P, R):state 是执行快照,observation 是策略 LLM 可见的 input,action 是一次 LLM 调用生成的整段 token 序列,return 是 R = Σt=1..T rt(§3.2.1)。摘要与 §1 用 MDP 作概括,§3.2.1 展开为 POMDP;两处都指向同一个数据接口,本页按 §3.2.1 的形式化写。

LightningRL:先分 credit,再交给单轮 RL

LightningRL 是两层机制(§3.3.2):第一层由 credit assignment 模块把 episode-level return 分给每个 action;第二层由现有单轮 RL 算法把 action-level 信号分解到 token。当前实现的 credit assignment 很简单:

rt = R   (对轨迹中的每个 action t)

§3.3.2 · “LightningRL simply assumes each action within the episode has the same value, equal to the final return R.”

注意这不是把 R 均分成 R/T。每个 action 都拿完整的最终 return;后面的 GRPO 再在同任务的多条执行之间做组内归一化。论文把第二层直接交给现有单轮算法,Eq. (8) 是典型的 token-level 目标:

L(θ) = −Ex∼X, output∼πθ(·|x) [ Σj=1..N log πθ(yj | x, y<j) · Aj ]

Eq. (8) · 原文脚注 3 说明:importance ratio、clipping、KL 等项在公式里省略,但最终算法会采用

这样做的直接结果是:同一条多轮轨迹被拆成 T 条单轮样本;同一任务多次执行产生的样本再按任务分组,GRPO 就可以在组内估计均值和标准差。论文原话是 “each task x is run multiple times to generate different execution data, each decomposed into individual actions. These samples are then grouped by task for computing statistics in Eq. 8.”(§3.3.2)

交互:一条轨迹怎样变成训练样本

下面的模拟只覆盖论文机制中的「选择哪些调用优化」与「transition 如何成为单轮样本」;每个 agent 在一次执行中被调用一次,是页面简化假设,原文没有给出每次执行的调用次数。它不是实验复现,也不产生性能数字。

R 是页面示意的最终 return:Text-to-SQL 与 Math QA 的原文奖励为最终答案是否正确;RAG 原文奖励是连续值 R=0.9×Rcorrectness+0.1×Rformat,本交互的 R=1/0 不是论文设置。

论文设置:只优化 SQL writer 与 re-writer;点击 agent 可改,属页面自定对照。

模拟读数
正在初始化…
手算对账 2 组参数,逐位复算

口径:样本数 = 被优化的 LLM 调用数;拼接模式固定 1 条样本;每条 transition 的 reward 都等于该次执行的最终 return R(§3.3.2 的等值分配,不是 R/T)。

参数中间量结果
Text-to-SQL · LightningRL · R=13 calls = 1+1+1;2 tuned = 1+1;1 excluded = 3−22 条样本;每条 reward = 1
RAG · LightningRL · R=01 call;1 tuned;0 excluded = 1−11 条样本;reward = 0
Text-to-SQL · 拼接+掩码 · R=11 条拼接样本;1 个调用被 mask1 条样本;reward = 1
RAG · 拼接+掩码 · R=01 条拼接样本;0 个调用被 mask1 条样本;reward = 0

拼接模式的「1 条样本」来自 §3.3.2 对 previous methods 的描述:所有回合被拼成一个 response,再用 mask 控制更新范围。表中数字只由 Table 1 的 agent 数与页面假设(每 agent 一次调用)推出;RAG 行的 R=0 也是页面示意的最终 return,不是 §4.2 的连续奖励。JS 对同样参数输出同样的整数。

代价:等值分配只是起点

论文自己把更细粒度的 credit assignment 列为 future work:可以引入 high-level value function 来估计每个 action 的期望 return,也可以按启发式或学习到的模型分配 credit(§3.3.2)。当前实现选择等值分配,论文给出的理由是简单、可直接复用单轮 RL,并称实验显示这种简单策略在多个场景和数据集上有效。推断:这更像工程上的起点,而不是与其它 credit assignment 方法比较后的最优选择(依据:原文把更细粒度方法列为未来工作,§4 只报告等值分配的结果)。对长程任务是否仍然足够,论文没有给出实验。

04

怎么训:server 管训练与任务,client 跑 Agent 并回传 trace

读完这节应知道:一次训练循环里,数据从 server 到 client 再回到 trainer 的路径,以及工程上靠什么保证吞吐与容错。

论文把 RL 训练拆成两个角色:trainer 更新模型权重,rollout 采集轨迹。单轮任务里 rollout 只是「给 prompt、生成 response」;Agent 任务里 rollout 要完整执行 Agent,包括多次 LLM 生成、工具调用和原生代码。Agent Lightning 的核心系统设计就是把这两侧拆开(§3.4.1)。

Server

训练侧

集成 RL 框架(论文举例 verl),管理训练过程、任务编排、数据与通信;向 client 暴露 OpenAI-like API。server 把数据集切成 batch,用事件驱动系统协调 generation 与 training 阶段(§3.4.1)。

Client

Agent 运行时

跑用户已有的 Agent 代码、工具与环境,采集 trace 和 reward 后回传;不需要和 GPU 资源同机。论文把它称为 agent runtime,强调 agent-agnostic training / trainer-agnostic agents(§3.4.1)。

一次训练循环

  1. 用户上传 task dataset;server 与 RL 框架一起初始化。
  2. server 把数据切成 batch,用事件驱动系统在 generation 与 training 之间切换。
  3. task batch 以 inventory 方式分发给 client:server 维护可用 task 记录,client 就绪就领任务。
  4. 每个 task 附带一个独立的 OpenAI-like endpoint;client 通过它调用模型,同时完成数据追踪与采集。
  5. client 在 agent runtime 中执行 Agent,生成 trace 与 reward,回报 server;server 处理数据并转给 trainer 更新参数。

以上顺序对应 §3.4.1 的叙述;endpoint per task 是原文明确写的设计,不是本页推断。

运行时靠什么撑住大规模 rollout

并行

两层数据并行

intra-node:一个 client 在一台机器上跑多个 worker,每个 worker 执行一个 Agent 实例;inter-node:多个 client 跑在不同机器上,各自管理一组 Agent 实例(§3.4.2)。

采集

两种 tracing

首选 OpenTelemetry + AgentOps 自动埋点,捕获执行 trace、LLM 调用和环境交互;对不想依赖 OpenTelemetry 的用户,OpenAI-like API endpoint 内置一套轻量 tracing(§3.4.2)。

容错

失败不拖垮训练

检测 Agent 崩溃、网络中断、非法输出、长时间挂起的工具调用;失败 task 可重试或改派给其他 Agent 实例,并保留日志(§3.4.2)。

奖励

AIR 与奖励服务

AIR(Automatic Intermediate Rewarding)把系统监控信号(如工具调用返回状态)转成中间奖励;环境与奖励函数可以本地跑,也可以池化成共享服务(§3.4.2)。

这套设计解释了一个容易忽略的点:Agent Lightning 并没有把 Agent「编译」进训练图,而是让 Agent 继续在自己的进程里跑,训练侧只通过 API 观察和收集。代价是网络通信、序列化与错误处理都变成训练循环的一部分(原文点名网络中断与外部依赖,未点名序列化;序列化是本页的判断 推断);论文用 per-task endpoint、重试和日志来兜底(§3.4.1–3.4.2)。

05

架构:一条 trace 从 Agent 运行时走到 RL trainer

下图按 Figure 4 简化重绘;重点是 server/client 的边界,以及 per-task endpoint 如何同时承担模型调用与数据采集。

Agent Lightning 的 server / client 架构 server 包含 task manager、OpenAI-like API 与 RL trainer;client 包含 workers、agent code 与 tools。task 与 endpoint 从 server 发往 client,LLM 调用从 client 发往 API,trace 与 reward 从 client 回传 trainer。 Task dataset train.jsonl task + reward Lightning Server 训练侧 · 可接 verl 等 RL 框架 Task manager 切 batch · inventory 分发 记录可用 task OpenAI-like API 每个 task 独立 endpoint 模型调用 + trace 采集 RL trainer 参数更新 消费 transition Lightning Client Agent 运行时 · 无需与 GPU 同机 Workers intra-node 多 worker inter-node 多 client Agent code LangChain / OpenAI Agents SDK AutoGen / 从零手写 Tools & env SQL / retriever / calculator 环境与奖励服务 task + endpoint LLM call trace + reward server 暴露模型服务;client 执行 Agent 与工具,回传 trace + reward。图中省略多 client 拓扑与 AIR 细节。
Figure 4 简化重绘:task 与 per-task endpoint 从 server 发往 client;client 通过 endpoint 调用模型;执行结束后把 trace/reward 回传 trainer。
覆盖与未覆盖分支 ▸
  • 覆盖:server/client 分离、task dataset → batch/inventory 分发、per-task OpenAI-like endpoint、client 执行 Agent 与工具、trace/reward 回传 trainer(§3.4.1–3.4.2;Figure 4)。
  • 未覆盖:RL 框架内的 LLM Engine、Figure 4 列出的 Semantic Kernel 等其他 Agent 框架、多 client / 多 worker 的完整拓扑、AIR 的具体信号映射、环境与奖励服务的池化部署、server 与 verl 等框架的内部接口。图中为简化重绘,不是逐像素还原。
  • 为什么 endpoint 放在 server:原文说每个 task 的 endpoint 随 task 一起发给 client,既让 client 调到更新后的模型,也让 server 能追踪与采集数据(§3.4.1)。
  • 为什么 client 不要求 GPU:训练与生成由 server 侧的 RL 框架管理,client 只跑 Agent 逻辑和工具;这是论文所说「no need to be collocated with the GPU resource」的意思(§3.4.1)。
06

效果:三个框架都跑出上升曲线,但论文没有给出终值表

Table 1 转录实验配置;Figure 5–7 只给奖励曲线,正文未标注具体读数,本页不把读图近似当数字。

实验配置(Table 1 全表转录)

TaskFrameworkDatasetTool usedNum. of agentsNum. of tuned agents
Text-to-SQLLangChainSpiderSQL executor32
Open domain QAOpenAI Agents SDKMuSiQueWikipedia retriever11
Math QAAutoGenCalc-XCalculator11

Table 1 · 三组实验分别用不同 Agent 框架;Text-to-SQL 的 3 个 agent 共用同一个 LLM、用不同 prompt 区分角色,训练只优化其中 2 个(§4.1)

数据、基座与奖励

任务数据规模 / 设置奖励
Text-to-SQLSpider:超过 10,000 个问题、200 个数据库、138 个 domain;测试时要求泛化到未见过的数据库(§4.1)最终答案是否正确;测试集按 answer accuracy 评估(§4.1)
Open domain QAMuSiQue;检索库为整份 Wikipedia,约 2,100 万篇文档;BGE embedding + cosine similarity(§4.2)R = 0.9×Rcorrectness + 0.1×Rformat;format 为 1 当输出符合指定格式(<think>、<query>、<answer> 等对应内容需被特定 token 包裹);correctness 为 word-level F1(§4.2)
Math QACalc-X:由 GSM8K、Ape210K 等数学数据集改造,要求调用计算器(§4.3)最终答案是否正确;测试集按 answer accuracy 评估(§4.3)
Base model三组实验均使用 Llama-3.2-3B-Instruct(§4.1–4.3)

§4.1–4.3 正文 · 本表是对正文数字的转录;Calc-X 的改造来源是原文列出的 GSM8K 与 Ape210K

论文报告了什么

Figure 5(Text-to-SQL)、Figure 6(RAG)、Figure 7(Math QA)分别给出训练与测试奖励曲线。论文对三组结果的总结是 “Agent Lightning enables continuous and stable performance improvement across diverse scenarios”(§4);这是作者的定性表述,正文没有给出最终分数的表格。

本页因此只转录 Table 1 与 §4 的配置数字,不转录 Figure 5–7 的曲线读数:曲线没有在正文标注具体数值,读图得到的近似值不适合当作论文数字引用。若需要具体终值,应查原图或作者后续发布的实验记录。

发现一

同一套接口跨了三种框架

Text-to-SQL 用 LangChain,RAG 用 OpenAI Agents SDK,Math QA 用 AutoGen;Agent 侧代码保持原框架,训练侧只消费 transition。Text-to-SQL 还展示了多 agent 场景下的选择性优化:3 个 agent 中只更新 SQL writer 与 re-writer(§4.1)。

发现二

RAG 奖励把格式与正确性分开

RAG 的奖励是 0.9×correctness + 0.1×format;format 要求输出符合指定格式,即 <think>、<query>、<answer> 等对应内容需被特定 token 包裹,correctness 用 word-level F1。论文没有给这两个分量的单独消融,因此无法从现有结果判断 0.1 的格式权重贡献了多少。

另一个反直觉的点是:LightningRL 没有设计新的 token-level 目标函数,而是把多轮轨迹拆成多条单轮样本,直接复用 GRPO / REINFORCE++ / PPO。论文称 “the simple identical assignment strategy is effective across multiple scenarios and datasets”(§3.3.2);这句话是作者对自己实验的总结,不是与其他 credit assignment 方法比较后的结论。

主张 → 原文原句 → 位置

下表只列论文明确写出的主张;没有原句支撑的判断不放进这张表。

主张原文原句位置
几乎零代码修改即可接入已有 Agent“allowing seamless integration with existing agents developed via diverse ways … with almost ZERO code modifications”Abstract
LightningRL 兼容现有单轮 RL“LightningRL updates the policy in a manner that is fully compatible with existing single-turn RL methods for LLMs”§1
等值 credit assignment 在多个场景有效“our experimental results demonstrate that the simple identical assignment strategy is effective across multiple scenarios and datasets”§3.3.2
跨场景持续、稳定改善“Agent Lightning enables continuous and stable performance improvement across diverse scenarios”§4
拼接+掩码限制上下文构建灵活性“previous methods often concatenated all turns in a trajectory into a single response and used masking to control which parts were updated–an approach that cannot support such flexible and modular context construction”§3.3.2
旧 RL 系统要求重建 Agent“they generally require developers to rebuild agents inside the training system”§5.1

§1 / §3.3.2 / §4 / §5.1 · 引文为英文原句;中文主张是本页对原句的压缩,不替代原句

07

边界:它解耦了系统,但没有证明等值 credit assignment 能走很远

论文自述的限制,加上从实验范围能读出的几条;后者标为推断。

边界一

没有与拼接+掩码方法的同表对比

§4 的实验叙述只围绕 Agent Lightning 自己的奖励曲线,没有给出 RAGEN、Trinity-RFT、rLLM、Search-R1 等拼接式方法的同表数字。论文对拼接+掩码的批评主要在机制层面(上下文累积、掩码耦合、位置连续性),不是在同一 benchmark 上的对照实验。因此,推断:现有结果能说明「能跑、曲线上升」,不足以量化相对拼接式方法的增益。

边界二

只验证了 3B 模型与三个任务

三组实验的基座都是 Llama-3.2-3B-Instruct,任务分别是 Text-to-SQL、RAG、Math QA,数据集分别是 Spider、MuSiQue、Calc-X。论文的标题写 ANY,但实验覆盖的是 Table 1 的三种框架/任务;更大模型、更多 Agent 形态、更长流程是否同样成立,论文没有报告。推断:3B 上的曲线不能直接外推到 70B 或长程 Agent(依据:§4.1–4.3 三组实验均使用同一 3B 基座,且没有规模消融)。

边界三

credit assignment 目前是等值分配

LightningRL 让每个 action 都拿最终 return R,不区分哪个 action 真正影响结果,也没有与 value function 或基于启发式/学习模型的 credit assignment 做对照(§3.3.2)。论文把 high-level value function 与更细粒度的 credit assignment 列为 future work。对长程、早期决策关键的任务,这种等值分配是否足够,现有实验没有回答。

边界四

依赖可计算、可定义的奖励

框架本身不解决「奖励从哪来」。Text-to-SQL 与 Math QA 用最终答案是否正确,RAG 用 F1 + 格式分;这些都是可自动计算的奖励。现实任务里的用户满意度、代码可维护性等模糊目标,论文没有深入。AIR 能用工具调用状态等系统信号补中间奖励,但它仍依赖可观测的监控信号(§3.4.2)。

边界五

多 LLM 联合优化没有实验

论文讨论了两种做法:把多个 LLM 各自当成独立 MDP 分别优化,或用 MARL / game theory 联合优化;前者忽略策略间依赖、可能带来次优协调,后者被论文称为 more principled、更能捕捉潜在交互动态(§3.2.2)。原文没有比较两种做法的实现复杂度;实验里的 Text-to-SQL 是同一个 LLM 用不同 prompt 扮演 3 个 agent,不是多个不同参数的 LLM 联合训练。

边界六

「几乎零代码」仍需要一个训练脚本

Appendix A 的示例里,用户仍要写一个 train.py:导入原 Agent 的 agent_function,把执行包进 agent_run(resource, task),再调用 Client、upload_data、train。Agent 主体代码可以不改,但仍需这个训练脚本与一层 agent_run 包装;论文的 almost ZERO 指对 Agent 代码的修改量(原文是 “almost ZERO code modifications”),不是零接入成本。

一句话:Agent Lightning 把「Agent 怎么跑」和「模型怎么训」拆成了两个进程,这是它最有复用价值的部分;至于等值 credit assignment 在更长、更复杂的任务上是否够用,论文留下的是 future work,而不是实验结论。