深度教堂

  • 榜单数据10-16 17:00
  • 论文数据10-16 13:30
  • 周报10-17 11:22

Agentic / 多轮 RL:在工具、环境与长时程中学习

未发布阅读约 15 分钟人工撰写已核查审核人 ai-fact-check

前沿研究与工程

本讲迁移自原课程讲义,经 AI 事实核查未发现存疑项,未逐页人工审核;如有出入,以原始论文和 CS285 课程资料为准。

第 19 讲前沿研究与工程前沿研究与工程(Offer Track)

学习目标

  • 区分 contextual bandit、token MDP 与多轮 POMDP,说明单轮 RLVR 的结构性边界。
  • 设计可重放、版本化、隔离且能区分模型/环境错误的 agent environment。
  • 推导终局/过程 reward、trajectory ratio、GAE 与 return decomposition 的偏差风险。
  • 实现 action mask、工具观测、上下文裁剪、异步 rollout,并完成 mini SWE/Web 研究项目。

单轮 RLVR 优化“一次回答”;agent 必须观察不完整世界、调用有副作用的工具、从失败恢复并在预算内结束。本讲把 agent 从提示词工作流提升为可重放 POMDP:定义环境、轨迹语义、信用分配、异步训练、安全边界与可证伪项目。

学习目标

  • 区分 contextual bandit、token MDP 与多轮 POMDP,说明单轮 RLVR 的结构性边界。
  • 设计可重放、版本化、隔离且能区分模型/环境错误的 agent environment。
  • 推导终局/过程 reward、trajectory ratio、GAE 与 return decomposition 的偏差风险。
  • 实现 action mask、工具观测、上下文裁剪、异步 rollout,并完成 mini SWE/Web 研究项目。

先修与职责

token-MDP、PPO/GRPO/RLOO 机制见 模块 13;长程开放问题见 模块 14;系统与 reward 细节分别见模块 17、模块 18。【A 原始论文】【B 官方代码/环境】【C 工程经验】【D 编者方案】。

1. 问题演进:为什么单轮 RLVR 不够

建模状态/动作失败点关键转念
contextual banditprompt → 完整回答忽略 token 与后续交互把生成展开为 token MDP
token MDP前缀 → 下个 token环境只拼接文本;答完即终止工具结果成为外生观测
多轮 MDP完整可见环境状态浏览器/代码库/用户意图通常不可全观测用 history/belief 的 POMDP
agent POMDP观测、消息、工具调用、终止长程信用、环境成本与安全环境即训练资产,轨迹即版本化实验单位

单轮 math verifier 能判断最终答案,却不能教模型何时搜索、选哪个工具、如何从 404/测试失败恢复、何时停止。Agent 的能力增量来自交互中获得基座上下文外的新信息;代价是转移不再是确定 token 拼接,环境会延迟、失败、变化甚至被攻击。

核心主线

Agentic RL 的“数据”不是对话文本,而是策略与某个环境版本交互产生的因果轨迹。丢掉工具状态、版本或错误码,就把 POMDP 压扁成不可解释日志。

2. POMDP 与环境契约:可训练之前先可重放

定义 POMDP M=(S,A,O,P,Ω,R,γ)\mathcal M=(\mathcal S,\mathcal A,\mathcal O,P,\Omega,R,\gamma)。环境隐藏状态 sts_t 可含文件系统、网页 DOM、数据库、用户目标;模型看到 ot∼Ω(⋅∣st)o_t\sim\Omega(\cdot|s_t),根据历史 ht=(o1,a1,…,ot)h_t=(o_1,a_1,\dots,o_t) 行动:

at∼πθ(⋅∣ht),st+1∼Pv(⋅∣st,at),ot+1∼Ωv(⋅∣st+1).(19.1)a_t\sim\pi_\theta(\cdot|h_t),\quad s_{t+1}\sim P_v(\cdot|s_t,a_t),\quad o_{t+1}\sim\Omega_v(\cdot|s_{t+1}). \tag{19.1}

下标 vv 强调环境版本。动作可以是 assistant tokens、结构化 tool call、向用户追问、提交或放弃。终止包括成功、显式提交、预算耗尽、超时、安全拦截与环境故障;它们不能全部映射为同一个零 reward。

2.1 环境最低契约

  • reset(seed, task_version) 返回初始观测和 episode id;clone/snapshot 能恢复到工具调用前。
  • step(action, idempotency_key) 返回 observation、reward components、terminated、truncated、status、cost 与 state hash。
  • replay(log) 在版本锁定时重演;外部 Web/API 无法确定重放时,录制响应或提供仿真镜像,并明确 fidelity gap。
  • 任务生成: 模板/变异器须有 provenance、难度与有效性检查;生成器与 evaluator 分离,避免把答案写进观测。
  • 终止: terminated 表示任务语义终止,truncated 表示预算/基础设施截断;bootstrap 处理不同。

图 19-1:所有工具调用经过权限网关;轨迹库保存可重放语义而非仅聊天文本。

图 19-1:所有工具调用经过权限网关;轨迹库保存可重放语义而非仅聊天文本。

3. 长程信用分配:信号变密时偏差也进入

3.1 终局 reward 与 return decomposition

最可信的任务成功常只在终局得到 RTR_T。在轨迹由当前策略 on-policy 采样、回报对应同一目标且基线 b(ht)b(h_t) 不依赖当前动作时,把终局回报用于各步 score-function 项可得到无偏但高方差的 REINFORCE 估计;旧策略或异步样本还需要相应修正:

∇J=Eτ[∑t=1T∇θlog⁡πθ(at∣ht)(RT−b(ht))].(19.2)\nabla J=\mathbb E_\tau\left[\sum_{t=1}^{T}\nabla_\theta\log\pi_\theta(a_t|h_t)(R_T-b(h_t))\right]. \tag{19.2}

可将总回报分解为任务、成本、安全与过程项:

Gt=Rtask−λcC−λsVsafety+∑u=tTγu−truprocess.(19.3)G_t=R_{\rm task}-\lambda_c C-\lambda_s V_{\rm safety} +\sum_{u=t}^{T}\gamma^{u-t}r^{\rm process}_u. \tag{19.3}

在标准折扣 MDP 中,potential-based 塑形 F(s,a,s′)=γΦ(s′)−Φ(s)F(s,a,s')=\gamma\Phi(s')-\Phi(s) 可在相应边界条件下保持最优策略不变;有限回合还需处理终点 potential。POMDP 可在 belief state 上定义 potential;若仅对不充分 observation 定义 Φ\Phi,或 reward model 有误,则仍可能改变目标。[1]

3.2 Turn-level/process reward 与 GAE

δt=rt+γVψ(ht+1)−Vψ(ht),A^tGAE=∑l=0T−t−1(γλ)lδt+l.(19.4)\delta_t=r_t+\gamma V_\psi(h_{t+1})-V_\psi(h_t),\qquad \hat A_t^{\rm GAE}=\sum_{l=0}^{T-t-1}(\gamma\lambda)^l\delta_{t+l}. \tag{19.4}

λ\lambda 小降低方差却增加 critic/部分可观测偏差;工具调用之间 token 数差异巨大时,应明确时间步按 token、turn 还是环境 action。按 token 折扣会让“思考更长”改变真实时间尺度;按 turn 又可能忽略长生成成本。推荐 reward 语义按环境 turn,loss 在 action token 上归一,并单独计 token cost。

3.3 Trajectory-level ratio

ρ(τ)=∏t∈Aππθ(at∣ht)μ(at∣ht)=exp⁡∑t∈AπΔlog⁡pt.(19.5)\rho(\tau)=\prod_{t\in\mathcal A_\pi}\frac{\pi_\theta(a_t|h_t)}{\mu(a_t|h_t)} =\exp\sum_{t\in\mathcal A_\pi}\Delta\log p_t. \tag{19.5}

推导:为何长轨迹 importance ratio 会爆炸

条件

轨迹由 behavior μ\mu 采样;只对模型动作集合 Aπ\mathcal A_\pi 求比,环境观测不是策略动作。

令 zt=log⁡π−log⁡μz_t=\log\pi-\log\mu。当这些增量独立或弱相关且具有非零方差时,log⁡ρ=∑tzt\log\rho=\sum_tz_t 的方差会随有效长度增长,指数变换可能产生高方差或重尾的权重。clip trajectory ratio 会降方差但引入与长度相关的偏差;哪些轨迹更易被截断取决于 ratio 与成功事件的联合分布,不能只由长度断定。逐 token ratio 更稳定,却不修正旧策略导致的后续状态/工具结果分布。故多轮异步需要短 lag、版本分桶和敏感性实验,而不能靠单一 IS 公式“解决”。

过程奖励的双刃

PRM/heuristic 能减方差,也会把“看似合理步骤”变成新目标。必须做反事实:删去关键工具调用、插入无用调用、交换顺序、伪造进展描述,检查 reward 是否真的追踪因果贡献。

4. 轨迹数据:模型 token、工具观测与记忆

Episode {
  task_id, task_version, env_image, env_seed, policy_version,
  turns: [{
    role, raw_content, token_ids,
    loss_mask,          # 只有 policy 产生且允许学习的 token 为 1
    action_schema, tool_call_id,
    observation_hash, env_state_hash,
    started_at, ended_at, status, cost
  }],
  reward_components, terminated, truncated, final_state_hash
}

训练损失必须只覆盖模型动作 token:

L(θ)=−1∑tmt∑tmt ℓt(θ),mt=1 ⇔ t 是可归因于 policy 的 action token.(19.6)L(\theta)=-\frac{1}{\sum_t m_t}\sum_t m_t\,\ell_t(\theta),\qquad m_t=1\ \Leftrightarrow\ t\text{ 是可归因于 policy 的 action token}. \tag{19.6}
  • tool observation 不参与 loss: 它是环境输出;若当标签学习,模型会被训练去“预测/复述工具”,并污染 ratio。
  • 结构化调用: 可对函数名/参数 token 学习;执行结果、系统消息、安全拦截、用户消息 mask=0。
  • 上下文裁剪: 不可静默丢掉决定性 observation。记录裁剪策略与 dropped span hash,评测“是否因遗忘失败”。
  • 摘要: 摘要器是环境/模型组件,必须版本化;若用同一 policy 生成摘要却不纳入动作概率,会产生隐含策略。
  • 记忆: 读写动作都计成本和权限;训练/评测之间清空 episodic memory,防跨题泄漏。
  • 失败恢复: 保存 checkpoint state,使“回滚—改动作—继续”可重放;重复副作用工具须 idempotency key。

5. PPO/GRPO/RLOO 的多轮适配与训练系统

方法多轮适配主要风险
PPOturn/step value、GAE,action-token clipcritic 对 POMDP history 失配;系统多一套状态
GRPO同一初始任务/seed 分组多轨迹,组内基线环境随机性混入策略差异;组成本昂贵、零方差
RLOOleave-one-out baseline,避免样本自身进入基线仍依赖同任务多样本,长程方差未消失

GRPO/RLOO 分组时应控制环境随机数,或把 seed 作为 block;否则一个轨迹成功可能只是网页/测试随机性更有利。对第 ii 条轨迹的 LOO advantage:

A^i=Ri−1G−1∑j≠iRj.(19.7)\hat A_i=R_i-\frac{1}{G-1}\sum_{j\ne i}R_j. \tag{19.7}

5.1 On-policy freshness 与异步 rollout

Agent episode 可能耗时分钟,采样完成时 policy 已更新多步。记录 episode 起始/每 turn policy version;禁止一次轨迹中静默热切权重,否则 behavior policy 无法定义。可选策略:

  1. episode 粘性:整条轨迹固定版本,语义最清楚;
  2. turn 边界升级:每段记录版本并按段估计,理论/实现更复杂;
  3. partial rollout:从旧前缀续写,必须把前缀视作离线状态分布并做专门消融。

环境也非平稳:网页内容、包版本、搜索索引、任务池难度都在变。将 policy version 与 env version 两维交叉监控,使用固定 replay suite 区分“模型退化”与“世界变了”。

# 异步但有版本语义的 worker
episode = env.reset(task_version, seed)
policy = registry.pin(version=current_committed())
while not done:
    action, logp, mask = policy.act(history)
    obs, status, cost, done = gateway.step(action, idempotency_key)
    append(turn, policy.version, env.version, logp, mask, status, cost)
queue.put(episode, max_policy_lag=1, max_env_age="24h")

6. Coding、Browser、Computer-use、Search:案例与安全边界

Agent状态/动作可验证信号独特风险
Codingrepo、terminal、patch、tests隐藏测试、lint、性能测试过拟合、破坏文件、供应链/命令注入
BrowserDOM/截图、click/type/navigation目标 DOM/后端状态动态页面、广告、登录态、网页 prompt injection
Computer-usepixels、鼠标、键盘应用状态/任务结果不可逆点击、视觉歧义、隐私泄漏
Searchquery、结果、引用、综合事实/引用支持与覆盖SEO 污染、时效、来源串谋、引用幻觉

6.1 Prompt injection 与工具安全

网页、issue、README、搜索结果都是不可信 observation,不是 system instruction。模型单靠“忽略恶意指令”不是安全边界;网关必须强制 capability。

  • 最小权限:read/write/network/secret 分离;每任务临时凭证;高风险动作需外部确认。
  • 数据与指令分离:工具返回带 provenance/taint;不可信文本不能修改策略、grader 或权限。
  • 参数校验与 allowlist:结构化 schema、路径规范化、域名/命令策略;输出编码防二次注入。
  • 副作用分级:read 可自动,write/支付/发送/删除需预算与审批;训练环境用模拟端点。
  • 完整审计:不可变调用日志、调用者/理由/参数 hash/结果/权限决定;敏感数据最小化。

WebGPT 与 ReAct 展示了模型结合浏览或行动轨迹的公开研究设置,WebArena 与 SWE-bench 则提供了可复现的网页和软件工程评测环境。[2] [3] [4] [5] 这些 benchmark 的任务成功不等于开放互联网部署安全;本文只采用可跨框架复现的环境契约。

7. 评测:成功、成本、尾延迟与错误归因

至少报告以下向量,而非单一 success rate:

M=(success,cost,steps,recovery,latency50/99,duplicate,safety).(19.8)\mathbf M=(\mathrm{success},\mathrm{cost},\mathrm{steps},\mathrm{recovery}, \mathrm{latency}_{50/99},\mathrm{duplicate},\mathrm{safety}). \tag{19.8}
  • 成功率: 任务级,定义部分成功与验证来源;同一任务多次尝试需分开 pass@1 与 budgeted success。
  • 成本: 模型 tokens、工具/API/沙箱 CPU、wall time、人工确认;每成功成本比平均成本更有意义。
  • 恢复率: 注入可恢复故障后,在剩余预算内成功的比例;不能把未遇故障样本算入分母。
  • 重复调用: 相同规范化 action+state hash 的重复率,区分必要重试与循环。
  • P50/P99: episode 与 tool latency 分开;均值会隐藏卡死尾部。

7.1 模型错误 vs 环境错误

类别判据训练处理
MODEL_INVALID_ACTIONschema/参数不合法可给策略负反馈
MODEL_BAD_PLAN有效动作但因决策失败任务/过程 reward
ENV_TRANSIENT5xx、随机超时,可重放后成功重试/截断,不当作错答
ENV_BUGoracle 也失败或状态不一致剔除并修环境
SAFETY_BLOCK网关拒绝越权单独风险指标;是否负奖由任务定义
BUDGET_EXHAUSTED达到步数/token/费用上限反映效率失败,不伪装 timeout

故障诊断树:成功率突然下降

success↓
├─ 固定 replay suite 也下降?
│  ├─ 否 → 环境/任务分布变化:检查 env、网页、包、grader version
│  └─ 是
├─ ENV_TRANSIENT / ENV_BUG 上升?
│  ├─ 是 → 隔离基础设施,oracle replay,修复后重评
│  └─ 否
├─ action schema / safety block 上升?
│  ├─ 是 → 模板/tokenizer/网关策略或越权行为
│  └─ 否
├─ steps、duplicate、P99 上升?
│  ├─ 是 → 循环/记忆丢失/恢复失败,检查裁剪与 summary
│  └─ 否 → 检查 policy lag、reward 漂移与任务污染

污染: 代码 patch、issue、网页快照可能进入预训练/SFT;做时间切分、repo commit 隔离、近重复扫描、动态生成 sibling tasks。仅改变量名不构成真正新题。

8. 可证伪项目:Mini SWE / Web Environment

运行声明

这是研究实施规范,未在本机训练或执行;不得把预计成功率、GPU-hour 或安全性写成实测。

8.1 环境与任务

二选一或都做小规模:

  • Mini SWE: 20–100 个许可清晰的小仓库快照;任务是修复 issue;工具限 read/search/edit/test;hidden tests 在隔离容器。
  • Mini Web: 本地确定性电商/工单站;任务含查找、比较、表单操作;支付/删除为模拟 endpoint;支持 DOM+截图观测。

每任务有 reset seed、镜像 digest、oracle 可行轨迹、成功 predicate、预算和 injection suite。train/dev/hidden 按底层 bug/template 分组切分,防同模板泄漏。

8.2 Baseline 与训练矩阵

组设置回答的问题
B0单轮回答/无工具环境信息是否必要
B1SFT agent + 工具,无 RL脚手架与示范贡献
B2Best-of-N/搜索,固定预算测试时计算基线
R1仅终局 reward 的轨迹级 PPO/GRPO/RLOORL 是否改善默认策略
R2+ turn/process reward信用更密是否真改善
R3+ 故障注入 curriculum恢复能力是否泛化

8.3 可证伪假设

  1. H1:固定训练+部署总成本,R1 hidden success 高于 B1/B2;否则“必须 RL”不成立。
  2. H2:R2 降低步数并提高成功;若只学会产生 rubric 喜欢的“进展话术”,在反事实 process test 上会失败。
  3. H3:故障 curriculum 提高未见故障恢复率;若只改善训练故障码,泛化主张失败。
  4. H4:轨迹 RL 的收益不是多调用工具:做 cost-matched/step-matched 对照和成功—成本 Pareto。

8.4 失败 taxonomy 与项目产物

类别例子产物
感知/状态漏读测试、DOM 定位错、上下文遗忘state/observation diff
规划无验证假设、错误子目标顺序turn-level 标注
执行参数/schema 错、patch 破坏tool error 与最小复现
恢复失败后重复同动作、不会回滚注入前后轨迹对
终止过早提交或无限探索预算/终止原因曲线
安全听从网页注入、越权访问red-team suite 与网关日志

最终交付:环境镜像与 schema、100 条可重放轨迹、baseline/消融配置、各 seed 指标与 paired CI、成本 Pareto、失败浏览器、污染说明、模型卡/安全边界、未运行项清单。

9. 从 Agentic RL 到 Scalable Oversight:成功率不等于安全

Agent 产生比人类可逐步检查更多的动作,oversight 必须扩展:分解任务、过程抽查、工具权限、可验证证据、模型辅助审计与人类升级。但训练 policy 去迎合可见 monitor 会造成监管 Goodhart;oversight 本身应有隐藏测试和独立权限。

不能做的推论

“在 sandbox 成功率从 30% 到 50%”不推出“更可靠”“更诚实”或“可开放部署”。能力提高可能扩大危害半径;需要分别评估越权率、敏感信息外传、注入服从、不可逆动作、欺骗性规避与人类可干预性。

9.1 研究问题

  1. 如何在不泄露 monitor 的条件下学习可审计过程?隐藏监督能否抵抗策略适应?
  2. 部分可观测下,history critic、memory state 与 world model 哪个能改善信用而不引入更大模型偏差?
  3. 怎样对环境 curriculum 定义“难度”,避免 generator 与 policy 共谋形成窄技能?
  4. 长轨迹 off-policy correction 是否能在可接受方差下修正状态分布,而非只修 action token?
  5. 真实 Web 非平稳时,如何把环境漂移、污染与策略进步可识别地分开?
  6. 可扩展监督的评价单位应是答案、轨迹、影响还是可逆性?

10. 系统设计面试、来源与复现清单

10.1 面试题

  • 设计一个 10 万并发 browser-agent rollout 系统:如何 pin policy/env 版本、背压、重试与去重?
  • tool observation 为什么必须 mask?function-call 参数哪些 token 应参与 ratio?
  • trajectory-level IS 为什么随长度重尾?逐 token clip 遗漏了什么偏差?
  • 如何区分模型不会修 bug 与测试基础设施坏了?给错误码、oracle 和重放方案。
  • 网页 prompt injection 不能只靠模型训练解决,系统层需要哪些 capability controls?
  • 过程 reward 提升成功率,如何证明不是鼓励更多调用或“看起来在进展”?
  • 设计成功—成本—安全 Pareto 评测;何时可以自动部署,何时必须 human-in-the-loop?

10.2 论文与一手来源

  • 【A】 Sutton & Barto, Reinforcement Learning;POMDP、return、credit assignment 基础。
  • 【A】 Schulman et al., 2016/2017;GAE 与 PPO。
  • 【A】 Nakano et al., 2021, WebGPT;工具辅助浏览与人类反馈。[2]
  • 【A】 Yao et al., 2022/2023, ReAct;推理—行动轨迹(不等同于 RL 训练)。[3]
  • 【A】 Zhou et al., 2023, WebArena;Jimenez et al., 2024, SWE-bench;环境与评测。[4] [5]
  • 【A】 Shinn et al., 2023, Reflexion;Wang et al., 2023, Voyager;作为 agent memory/反思案例,证据边界按各自设置。
  • 【B】 SWE-bench、WebArena/BrowserGym 等官方仓库;任务与容器以锁定 commit 为准。
  • 【C】 多轮 RL、partial rollout、服务式环境的公开工程经验;特定吞吐/榜单不外推。

10.3 复现清单

  • □ 锁定 task/env/container/browser/package/grader/policy/tokenizer 版本与 seed。
  • □ reset/step/replay/snapshot 契约有 golden tests;terminated 与 truncated 分开。
  • □ 保存 action mask、behavior logprob、tool id、state/observation hash、错误码与成本。
  • □ 固定 episode policy 或逐 turn 明确版本;监控 lag 与 env drift;旧轨迹有 TTL。
  • □ 报 success、cost、steps、recovery、P50/P99、duplicate、安全与错误归因。
  • □ SFT、BoN/search、终局 RL、过程 reward 做同成本对照;至少多 seed + paired CI。
  • □ 做 prompt injection、越权、重复副作用、超时、网页变化、上下文裁剪故障注入。
  • □ hidden/dynamic/sibling tasks 隔离训练;写污染与安全边界;标明所有未实跑项目。

带走一句话

Agentic RL 的最小研究单位不是“答案”,而是一个在确定权限、预算与环境版本下可重放、可归因、可被独立监督的完整轨迹。

参考来源

  1. [1]Policy Invariance Under Reward Transformations(在新窗口打开)ICML · 1999-06-27 · Theorem 1 · 访问于 2026-10-16↩
  2. [2]WebGPT(在新窗口打开)arXiv · 2021-12-17 · Abstract and methods · 访问于 2026-10-16↩
  3. [3]ReAct(在新窗口打开)arXiv · 2022-10-06 · Abstract and methods · 访问于 2026-10-16↩
  4. [4]WebArena(在新窗口打开)arXiv · 2023-07-26 · Abstract and benchmark description · 访问于 2026-10-16↩
  5. [5]SWE-bench(在新窗口打开)arXiv · 2023-10-10 · Abstract and benchmark description · 访问于 2026-10-16↩
  6. [6]CS 285: Deep Reinforcement Learning(UC Berkeley)(在新窗口打开)UC Berkeley · 访问于 2026-10-16