Agentic RL 10 分钟

面试官追问:Agent 已经会 ReAct,为什么还要做 Agentic RL?

会调工具只说明流程能跑。Agentic RL 真正要学的是,在不断变化的环境里,什么时候搜索、什么时候执行、什么时候停止,以及失败后该把责任分给哪一步。

简历翻到项目经历那一页,面试官用笔圈住 ReAct、Function Calling 和 RAG,停了两秒。

👔 面试官

你的 Agent 已经能搜索、跑代码、把结果交回来,为什么还要做 Agentic RL?拿一批成功轨迹做 SFT,不就行了吗?

🙋‍♂️ 候选人

SFT 只能模仿已有轨迹,RL 可以继续探索。

👔 面试官

探索什么?工具返回的网页要不要算 loss?二十步之后任务失败,第一步写错 query 和第十九步点错按钮,谁该背多少锅?服务器超时造成失败,也要惩罚模型吗?

这道题听着像在问算法,真正想看的却是三件事。

第一,你有没有分清“把流程跑通”和“把决策学会”。第二,你知不知道多步交互训练最容易在哪里坏。第三,你是不是亲手处理过轨迹、奖励和环境,而不只是把 GRPO 写进简历。

方向没错,但说到这里还只是概念题。面试官真正等的是:你能不能把动作、观察、延迟奖励和环境故障拆开。

如果这些问题答不出来,ReAct、RLHF、R1 和 Agentic RL 就还是四个挤在一起的名词。

下面把它们拆开。

先说结论:ReAct 是运行方式,Agentic RL 是学习方式

ReAct 解决的是推理时如何组织一次循环:模型先思考,再选择工具,环境返回观察,模型根据观察继续行动。

它让模型“可以”做多步任务,却不保证模型“擅长”做多步任务。

举个很实际的例子。我们做一个代码仓库修复 Agent,给它四个工具:搜索文件、读取代码、执行测试、提交补丁。只靠提示词,它已经能走完整流程。

但跑一百个任务后,日志里可能出现这些问题:

  • 一看见报错就全仓库搜索,读了几十个无关文件;
  • 测试失败后不断改同一处代码,没有回到假设层重新判断;
  • 明明已经得到足够证据,仍继续调用工具,成本一路增加;
  • 局部测试通过就停止,没有验证真正的验收条件;
  • 工具超时后把“没有返回”理解成“没有问题”。

流程没有断,决策却很差。

SFT 能把优秀工程师的成功轨迹教给模型,让输出格式、工具参数和常见步骤迅速变得像样。这一步很重要,通常也比直接上 RL 划算。但 SFT 学的是数据里已经出现过的动作。在新仓库、新错误和新工具组合下,模型仍要决定下一步做什么,而训练数据不可能把所有状态列完。

Agentic RL 要优化的正是这些选择:什么时候搜,搜什么;什么时候执行,执行哪个工具;什么时候回滚;什么时候停止。它不是给 ReAct 换个更时髦的名字,而是把 ReAct 循环里的决策变成可以从环境反馈中更新的策略。

为什么它不只是“把 RLHF 拉长”

传统 RLHF 或偏好优化,常被抽象成一次回答的选择问题。给一个 prompt,模型生成完整回复,奖励模型或人类偏好给一个分数,回合结束。

Agent 任务不一样。

模型在第 3 步执行搜索后,第 4 步看到的内容已经变了;第 7 步修改文件后,第 8 步的测试结果也会变。环境并不会把全部状态直接摆在模型面前,模型只能根据当前上下文、工具观察和自己保存的记忆判断。

更接近的描述是一个部分可观测的多步决策过程:

状态:仓库、页面、数据库、历史操作等真实环境状态
观察:搜索结果、文件片段、测试输出、页面文本
动作:生成文字、选择工具、填写参数、停止或交付
奖励:任务是否完成、过程是否合规、成本与时延

真正困难的不是把一条回答打成 0.8 分,而是环境每走一步都在变化,奖励还可能等到几十步以后才出现。

这也是为什么 Agentic RL 的工程量往往大于算法代码。PPO 或 GRPO 的公式可能已经有实现,难的是把环境做得稳定、把每一步记录清楚,并让训练系统知道哪些 token 是模型动作,哪些只是外部观察。

环境返回的文字,不能假装是模型生成的

这是一道很容易暴露实践经验的追问。

假设模型生成:

<search>LangGraph checkpoint concurrent state</search>

搜索引擎随后塞回两千字网页。模型读完,再生成下一段分析。

整条序列虽然都在上下文里,却有两种完全不同的 token:模型自己选择并生成的动作,以及环境返回的观察。策略梯度只能更新前者。如果把网页、终端日志或工具 JSON 一起算进 loss,相当于要求模型为它没有选择的文字负责。

Search-R1 在开放域问答里明确使用了 retrieved token masking。检索结果可以影响后续决策,但不参与策略损失。把这个原则换到代码 Agent 上也是一样:traceback、测试日志、文件内容和浏览器 DOM 都是 observation,不是 action。

工程实现时,我会让每个 token 或消息都带来源标记,而不是训练前再靠字符串猜:

{
  "role": "assistant",
  "source": "policy",
  "loss_mask": 1,
  "content": "调用 run_tests,范围为 tests/auth"
}
{
  "role": "tool",
  "source": "environment",
  "loss_mask": 0,
  "content": "2 failed, 18 passed"
}

这里还要防两个坑。

第一个是工具参数。参数由模型生成,当然属于动作,不能因为它包在 JSON 里就全部 mask。第二个是环境内容回显。有些框架会把模型刚才的工具调用再原样放进 tool message,如果不去重,同一动作会被计算两次。

面试时可以把原则说得很短:我更新的是模型作出的决策,不更新环境碰巧返回的字;数据管道必须在采集时保留 action 和 observation 的边界。

最终答案对了,不代表中间过程值得学习

很多任务最容易得到的是结果奖励。

数学题答案对了得 1 分,错了得 0 分;代码任务隐藏测试通过得 1 分,失败得 0 分;网页任务到达目标页面得 1 分,没有到达得 0 分。结果奖励客观、便宜,也不容易被“语言写得像正确答案”欺骗。

它的问题是太晚。

一条 25 步轨迹最后成功,前面可能有 18 步无效搜索。把同一个正奖励平均广播给整条轨迹,模型不仅会学到真正有用的动作,也可能把绕路、重复读取和碰巧成功一起强化。

失败轨迹更麻烦。也许第 4 步已经选错文件,后面每一步只是在错误前提下做得越来越认真。最终给所有动作同样的负反馈,模型很难知道该改哪里。

这就是 credit assignment,信用分配。

工程上常用的处理不是只选一种,而是分层:

  1. 任务级奖励:最终目标是否完成,是最硬的信号。
  2. 约束奖励:是否越权、是否修改禁区、是否满足格式和资源预算。
  3. 过程信号:工具名称、参数类型、引用有效性、测试范围等可验证步骤。
  4. 成本项:工具次数、token、时延和重复动作,只做温和惩罚,避免模型为了省钱直接不干活。
  5. 失败归因标签:区分策略错误、环境错误、评测器错误和不可判定样本。

最后一项经常被忽略,却最影响训练质量。

如果依赖安装失败、搜索服务返回 503、浏览器页面结构变化,这次低奖励未必说明模型动作差。把环境故障直接喂给策略,会让模型学到奇怪的回避行为。它可能减少使用本来很有价值的工具,只因为那个工具在采样时经常超时。

所以我们在 rollout 回执里至少要保留:环境版本、工具版本、随机种子、每步耗时、异常类型、最终评测证据和可重放标识。没有这些字段,后面再高级的优势估计也只是给脏数据算小数点。

一个训练项目最常见的失败:奖励上涨,任务没有变好

假设我们训练一个搜索 Agent,目标是回答技术问题并给出有效引用。

最初的奖励写成:答案关键词命中 0.6 分,包含两个链接 0.2 分,格式完整 0.2 分。训练曲线很漂亮,三天后接近满分。

人工检查却发现,Agent 学会了三件事:把问题里的关键词原样重复;无论查到什么都附两个链接;为了格式稳定,尽量提前停止。引用是否真的支持结论,奖励根本没检查。

这不是模型突然“变坏”,而是它非常认真地优化了我们写下来的目标。

修复不能只靠再写一句提示词“请诚实”。更可靠的做法是改验证链:先检查链接能否访问,再定位引用片段是否存在,最后判断片段是否支持对应结论。对于不能自动判定的样本,单独进入人工池,不要用一个大模型裁判的模糊分数强行覆盖。

改完奖励后,还需要一组训练外对抗集。故意放入标题相似但内容无关的页面、失效链接、相互冲突的资料和工具超时,让 Agent 不能只靠表面特征拿分。

一个好用的看板至少分开四条曲线:训练奖励、独立评测成功率、平均工具成本、约束违规率。只看 reward,会把“会考试”误认成“会工作”。

GRPO 能省掉价值模型,但省不掉 rollout 工程

面试官继续追问:“那为什么现在 Agentic RL 经常提 GRPO?”

可以这样答。

GRPO 对同一个问题采样一组候选轨迹,用组内相对奖励估计优势,不必再单独训练一个与策略同规模的价值模型。对于答案可验证、能并行采样的任务,它降低了训练组件和显存压力。

但它没有消除最贵的部分:rollout。

Agent 轨迹会调用搜索、沙箱和浏览器,速度差异很大。一个样本 20 秒结束,另一个可能卡 5 分钟。GPU 在等环境,吞吐就掉下来。为了提高利用率,团队会把采样和训练异步化;异步之后,又会出现策略陈旧问题——轨迹由旧参数采出,梯度却更新到更晚的策略上。

因此“用了 GRPO”不是工程回答。更有内容的回答应该包括:

  • 同一 prompt 每组采几条轨迹,为什么这个方差能接受;
  • 超时轨迹如何处理,能不能和真正失败混成 0 分;
  • rollout 使用哪个策略版本,最大允许落后多少步;
  • 采样环境是否可复现,隐藏测试会不会泄漏;
  • 训练前后除了 reward,还看哪些任务指标;
  • 轨迹是否能重放,重放失败如何归因。

2026 年关于异步 RLHF 的研究进一步讨论了 staleness 与学习率的耦合。直觉并不复杂:采样策略落后得越多,更新就越不该激进。这个结论对 Agent 尤其重要,因为工具调用天然把采样拖得长短不一。

什么时候只做 SFT,什么时候值得上 Agentic RL

Agent 项目能跑,不等于该训。

我会先问四个问题。

一,成功能不能稳定验证?

如果每条结果都要专家讨论半小时,RL 会把裁判噪声放大。代码测试、数学答案、结构化检索相对适合;开放式研究报告则要更谨慎。

二,环境能不能稳定重置?

同一个动作今天成功、明天因为镜像和接口变化失败,策略学不到稳定关系。先做版本化、缓存、超时与故障隔离。

三,SFT 和提示词是否已经到瓶颈?

工具格式都不稳定时,先做 SFT。只有当 Agent 已经会基本流程,剩下的问题集中在何时行动、如何权衡和如何恢复,RL 的价值才明显。

四,收益是否覆盖采样成本?

如果规则或搜索排序就能解决,没有必要为了“用上 RL”搭一条昂贵训练线。Agentic RL 是手段,不是项目毕业证。

一个稳妥的落地顺序通常是:先做可重放环境和评测集,再用提示词建立基线;然后用高质量轨迹做 SFT;确认决策瓶颈后,才做小规模 RL 实验;最后用训练外任务、成本和安全指标决定是否扩大。

面试官真正想听到的项目细节

如果简历写“完成 Agentic RL 训练”,最好能拿出一条完整样本讲清楚,而不是背算法定义。

比如:任务是多跳检索问答,模型先判断是否搜索;搜索结果作为 observation 写入轨迹,loss mask 为 0;模型生成 query、继续推理和最终回答的 token 才参与更新。最终答案由精确匹配或规则验证,引用有效性单独计分。搜索超时标记为环境错误,不直接当策略负样本。训练时记录策略版本与环境版本,评测使用未进入训练的主题,并同时报告成功率、平均搜索次数、无效引用率和 P95 时延。

这一段已经覆盖了动作边界、奖励、故障隔离、复现和业务指标。面试官可以不同意你的参数,但很难说你没做过。

反过来,如果回答只有“用了 GRPO,reward 上涨 20%”,问题会很多。什么 reward?和什么基线比?任务成功率涨没涨?训练样本是否泄漏?搜索服务故障怎么算?一问就散。

60 秒面试回答

ReAct 是推理时的工具循环,它让模型可以观察环境并继续行动;Agentic RL 是学习方式,目标是把什么时候搜、什么时候执行、什么时候停止这些多步决策优化出来。

它和单轮 RLHF 的区别在于环境会变化、观察不完整、奖励常常延迟。工程上我首先保证 action 和 observation 分开:模型生成的思考、工具名和参数参与策略更新,检索片段、终端日志和页面内容全部 mask。然后把最终任务奖励、可验证过程约束、成本和故障归因拆开,避免把环境超时当成模型错误。

GRPO 可以用组内相对奖励省掉独立价值模型,但省不掉 rollout、复现和陈旧策略问题。没有稳定环境、可靠验证器和训练外评测时,我会先做提示词、SFT 和评测基础设施,不会直接上 RL。

回到开头的问题:“拿成功轨迹做 SFT 不就行了吗?”

更准确的答案是:SFT 先教会 Agent 一条像样的路,Agentic RL 再用环境反馈决定,在没见过的路口到底该往哪边走。前者解决基本能力,后者优化连续决策。两者不是替代关系,也不该倒着做。


参考资料

  1. The Landscape of Agentic Reinforcement Learning for LLMs: A Survey
  2. Search-R1: Training LLMs to Reason and Leverage Search Engines with Reinforcement Learning
  3. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models
  4. From Reasoning to Agentic: Credit Assignment in Reinforcement Learning for Large Language Models
  5. Staleness-Learning Rate Scaling Laws for Asynchronous RLHF

AgentAlpha 大模型 Agent 训练营

AgentAlpha 的路线不是把面试题背一遍,而是从 RAG、记忆系统、单 Agent、多 Agent、DeepSearch、高效推理、Code Agent、自进化编码,一路做到第 9 阶段的 Agentic RL 和最后的综合项目。

Agentic RL 阶段已经确认的内容包括 Search-R1、GRPO / PPO、奖励函数和搜索触发;阶段交付是一份小规模问答或推理任务上的 RL 微型实验报告。课程按周任务、作业检查、代码 Review 和项目验收推进,完成项目后再继续打磨 README、技术报告、简历项目段落和面试讲法。

查看 AgentAlpha 大模型 Agent 训练营

如果你只想先看路线图,发「路线」;想判断自己适合从哪个项目开始,发「项目」;正在准备面试,发「追问」。

做能落地的 Agent,我们一起造轮子。下篇见。