Agent World Model: Infinity Synthetic Environments for Agentic Reinforcement Learning
速读卡片 (TL;DR)
一句话: Snowflake AI Research 提出 Agent World Model (AWM) —— 一条完全合成、代码驱动的环境生产流水线,把"scenario → task → 数据库 schema → MCP tool 接口 → 验证代码"五件事用 LLM 串成 software-dev 风格的 pipeline,一次性吐出 1,000 个可执行环境 / 10,000 个 task / 35,062 个工具。在这些环境里跑 GRPO 训 Qwen3-thinking 4B/8B/14B,在 3 个完全 OOD 的 benchmark (BFCLv3 / τ²-bench / MCP-Universe) 上全面打过同类合成 baseline (EnvScaler) 和 LLM-as-environment baseline (Simulator)。
立场: 这是一篇关于"合成环境的可靠性 vs 多样性"的论文。和 #03 Agent-World 形成正交对照 —— 后者从真实 web 上 mining 1,978 个"真"环境(贵但真实);AWM 走"用代码彻底合成"路线(便宜、可重置、状态一致,但脱离真实分布)。和 #17 UI-TARS-2 的 data flywheel 也形成对照 —— flywheel 用 policy rollout 扩 task,AWM 在 task 之前一层就扩了 environment 本身。核心论断: 当 LLM-simulated env (e.g. GPT-5 当 transition function) 给 RL 提供的状态不一致时,RL signal 会崩;用 SQLite + Python 当 backend 是更稳的折衷。
1 · 背景:为什么"全合成"环境是 agentic RL 的第三条路
1.1 三种环境路线的分类
2025-2026 这一波 agentic RL 的 paper 在"环境从哪儿来"这个问题上呈现出三条明确的路线:
| 路线 | 代表作 | 状态如何转移 | cost / 可靠性 | 多样性 |
|---|---|---|---|---|
| ① 真实环境 mining | #03 Agent-World (RUC + ByteDance) OSWorld / AndroidWorld |
真实服务 / 真实 OS | 贵 (sandbox 部署 / 限速 / API 收费),状态可能漂移 | 极高 (真实分布) |
| ② LLM-as-environment | τ²-bench user-simulator / Simulator (Li/Chen 2025) | GPT-5 当 transition function | 贵 (每步一次 LLM call),状态不一致 (LLM 会 hallucinate state) | 高 (LLM 自由发挥) |
| ③ 全合成 code-driven ← 本篇 | AWM (#18),EnvScaler (concurrent) | SQLite DB + Python 工具确定性执行 | 便宜 (无 API / 无 LLM-in-loop),状态严格一致 | 中 (受限于 LLM 想象出来的 scenario) |
1.2 和 #03 Agent-World 的命名混淆 — 一定要分清
两篇 paper 中文名几乎一样,但是两件完全不同的事:
| #03 Agent-World (2604.18292) | #18 Agent World Model (2602.10090, 本篇) | |
|---|---|---|
| 团队 | RUC (Guanting Dong) + ByteDance Seed | Snowflake AI Research |
| arXiv 日期 | 2026-04 | 2026-02 |
| 核心动作 | 从真实 web mining 环境 | 用 LLM + 代码从零合成环境 |
| 环境数 | 1,978 个真实 MCP 服务 | 1,000 个合成 SQLite-backed 环境 |
| 工具数 | 19,822 个真实 tool (从 MCP 服务暴露) | 35,062 个合成 tool (35.1/env mean) |
| 状态后端 | 各 MCP 服务的真实 backend | 每环境一个 SQLite database |
| 训练 base | 未明确指定单个模型族 | Qwen3-thinking 4B / 8B / 14B |
| RL 算法 | GRPO (multi-environment) | GRPO (single algorithm focus) |
| 主要叙事 | "环境是 agent RL 的新瓶颈,要去 mining" | "LLM 模拟环境不可靠,代码 + DB 才稳" |
| self-evolve 闭环 | ✓ (有 self-evolving arena) | ✗ (一次性生成 1000 envs,无 evolve) |
两者关系: 互补,不是竞品。#03 在真实分布这一端推到极致;#18 在可复现 + 状态一致这一端推到极致。"放在一起读才能看清 agentic RL 环境层的两种工程权衡"。
1.3 论文的核心主张
AWM 不去争"我的环境数比 #03 多" —— 1,000 < 1,978 反而少。它的卖点是:
- 状态可重置 + 严格一致 —— SQLite 一行命令回滚,千 worker 并发训练每个环境实例都独立。LLM-simulated env 做不到 (Simulator baseline)。
- 训练时 zero LLM call —— transition 完全是 Python 函数执行,RL latency 不被 LLM 拖死。
- reward 来自 database state diff —— 不依赖 LLM judge,可逐步验证。这一手让 reward 函数本身可执行、可单元测试。
- OOD 测试更干净 —— 训练环境是"日常 SaaS-like" scenarios,而评测的 BFCLv3 / τ²-bench / MCP-Universe 是完全不同分布(对话、refusal、浏览器自动化),证明"合成训练 → 真实泛化"是 work 的。
2 · 核心方法 · 五阶段 code-driven 环境生成
2.1 全景流水线
论文把环境合成做成类软件开发的流水线:从"想做什么场景"一路推到"可执行环境 + 验证测试"。每一步都用 LLM 提议、用代码执行验证,失败了 self-correct 再重试。
2.2 各阶段细节
① Scenario Generation
动作: LLM self-instruct 扩展;CRUD coverage filter (确保每个 scenario 至少含 Create / Read / Update / Delete 操作);embedding-based 去重
输出: 1,000 个 scenario,每个含 domain 描述 + 目标用户角色 + 核心实体清单
② Task Generation
动作: prompt LLM 生成 k=10 个 diverse tasks,每条 task 含 (a) 用户 query (b) 预期数据库 final state (c) 中间依赖
输出: 10,000 个 task,每个 task 都对应一个明确的 DB 终态可被 diff
③ Database Schema + Sample Data
CREATE TABLE ...) → 执行验证 → 失败 self-correct → 生成 INSERT 语句填充 sample 数据使 task 前置条件成立关键: sample data 不是随机,而是专门构造让 10 个 task 都能从这个初始 DB 状态出发完成
④ MCP Interface Layer
规模: 平均 35.1 个 tool / env,中位数 35.0,top-90% 含 45 个;总计 35,062 个 tool
tool 设计: CRUD 风格 + 少量复合查询 / 业务逻辑函数。每个函数都是确定性的 — 同输入同输出,DB 状态完全决定行为
⑤ Verification Code
V(s_before, s_after) → reward,通过 SQL 查询比对 task 期望的 DB 终态三档输出:
- full success (reward = 1.0): 所有目标状态匹配
- partial success (reward = 0.1): 部分匹配
- failure (reward = 0.0): 完全不达标
- LLM-only verify: BFCLv3 8B = 55.46
- Code-only verify: BFCLv3 8B = 60.00
- Code-augmented (AWM): BFCLv3 8B = 65.94
2.3 Pipeline 自己报告的质量数字
| 指标 | 数值 | 说明 |
|---|---|---|
| 整个 pipeline 一次成功率 | > 85% | 未触发 self-correct 就完成全 5 阶段的比例 |
| Self-correct 平均次数 | 1.13 | 失败的样本绝大多数一两次内就修好 |
| RL 期间 env error rate | ~4% | 训练中由于环境 bug 触发 rollout 中断的比例 |
| LLM-judge Task Feasibility 评分 | 3.68 (AWM) vs 2.94 (EnvScaler) | 3rd-party LLM 评估"task 是否合理" |
| Blocked tasks (code-only verify 下) | 11.5% (AWM) vs 46.8% (EnvScaler) | 由于验证代码 bug 导致 task 永远无法通过的比例 |
这组对比的潜台词是: "我们不是第一个做合成环境的(EnvScaler 同期),但我们做得更稳"。
3 · RL 训练 recipe
3.1 训练规模
训练环境子集: 由于算力限制,实际 RL 训练用了 526 个 env / 3,315 个 task (而非全部 1,000 / 10,000)
Batch: batch size 64,每个 prompt 16 rollout → 同时维护 1,024 个独立环境实例
RL 算法: GRPO (Group Relative Policy Optimization)
3.2 Reward 函数(两层组合)
| 层级 | 触发时机 | 取值 |
|---|---|---|
| Step-level (format) | 每一步 (turn) | 违反格式 (e.g. 错误 tool-call 语法) → r_t = -1.0 |
| Task-level (outcome) | trajectory 终止时,从 verification code 拿 | full success → 1.0 |
| partial success → 0.1 | ||
| failure → 0.0 |
这两个 reward 在 GRPO 的 group-relative advantage 估计前直接相加。没有 LLM-as-judge reward —— 这是和 LLM-simulated env baseline 的另一个关键差异。
3.3 历史 (history) 管理 — 滑窗 w=3
多轮 tool-use trajectory 容易把 context 撑爆。AWM 用滑窗 w=3 保留最近 3 步的完整 (observation, action, result),更早的步骤被截断。
关键的工程细节:训练时的 trajectory 对齐要和 inference 时滑窗 truncation 保持一致(否则训练 loss 的 logp 是错的)。Ablation:
| history alignment | BFCLv3 (4B) |
|---|---|
| Misaligned (训练看到完整 history,推理用滑窗) | 61.85 |
| Aligned (训练和推理都用滑窗) | 64.50 |
3.4 训练为什么不用 LLM 当 env transition?
论文专门做了 vs Simulator (Li et al. 2025b; Chen et al. 2025) 的对比 —— 这是个用 GPT-5 当 transition function 的 baseline。两点关键差异:
- 状态一致性: GPT-5 在一个 trajectory 里可能"忘记"前几步的状态变化,导致 reward signal 不可信。AWM 的 SQLite 永远不会忘。
- RL latency: Simulator 每个 turn 都要等一次 GPT-5 API call。AWM 一个 turn 就是 Python 函数执行 + SQLite query,本地完成。
结果(BFCLv3 / 8B): AWM 65.94 vs Simulator 52.53 —— 整整 13 个绝对点的差距,论文归因到"programming-based state consistency provides a more stable learning signal"。
4 · 实验结果 · 三个 OOD benchmark
4.1 OOD 是怎么定义的
训练数据是 1,000 个"日常 SaaS scenarios"(预订、CRUD、查询、修改 record)。评测的三个 benchmark 分布上完全不同:
| Benchmark | 主要分布 | 与 AWM 训练分布的差距 |
|---|---|---|
| BFCLv3 | function calling,含 refusal 场景(模型应该拒绝 hallucinate tool) | AWM 训练完全无 refusal task |
| τ²-bench | 多轮 dialogue + user-simulator,airline/retail/telecom 域 | AWM 不训对话,只训"用户 query → tool 调用序列" |
| MCP-Universe | 真实 MCP 服务 (location / financial / browser / web search / multi-server) | AWM 训的都是合成 DB,真实 API 行为完全没见过 |
"AWM does not target conversational interaction, whereas τ²-bench requires multi-turn dialogue. AWM omits refusal scenarios, while BFCLv3 stresses hallucination resistance. AWM also excludes browser automation" — paper 自己列举了 OOD 维度。
4.2 主表 — vs EnvScaler / Simulator / Base model
| Method | BFCLv3 (Overall) | τ²-bench (Pass@1) | MCP-Universe (Overall) | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 4B | 8B | 14B | 4B | 8B | 14B | 4B | 8B | 14B | |
| Base Qwen3-thinking | — | 53.83 | — | — | 26.44 | — | — | — | — |
| EnvScaler | 54.06 | 36.83 | — | 28.96 | 39.39 | — | 4.47 | 5.59 | — |
| Simulator (GPT-5 as env) | 55.52 | 52.53 | 67.68 | 13.67 | 31.30 | 31.39 | 6.15 | 6.15 | 10.62 |
| AWM (本篇) | 64.50 | 65.94 | 70.18 | 22.57 | 33.45 | 39.03 | 6.70 | 11.17 | 12.29 |
几个观察:
- BFCLv3 全 3 档 size AWM 都最强 —— 8B 上 +13.4 over Simulator,+29.1 over EnvScaler。
- τ²-bench 4B 上 EnvScaler 反胜 (28.96 vs 22.57) —— paper 自己也注意到这点,归因 τ²-bench 偏 dialogue,而 EnvScaler 训练分布更接近?或者 4B 模型对 dialogue 类 OOD 更吃任务分布。这是 AWM 唯一没赢的格子。
- MCP-Universe 数字都很低 (~10%) —— 全员都难,因为评测的是真实 MCP 服务,需要 web/financial/browser 等专门能力,合成环境给不出。
- 14B 仍然涨 —— 在 BFCLv3 上 14B AWM 70.18 vs 14B Simulator 67.68,说明 RL signal 即使到 14B 规模也未饱和。
4.3 关键 ablation 三连
(a) Verification design (Table 6, BFCLv3 8B)
| 验证方式 | BFCLv3 |
|---|---|
| LLM-only judge | 55.46 |
| Code-only verification | 60.00 |
| Code-augmented (LLM + code) ← AWM | 65.94 |
这是本文最关键的方法学 ablation。"只用 LLM 当 verifier 不够准 (55.46),只用 code 又太严格挡掉太多 task (blocked 46.8%),两者结合最稳"。
(b) History alignment (Table 7, BFCLv3 4B)
| History 处理 | BFCLv3 4B |
|---|---|
| Misaligned (训练给全 history,推理给滑窗) | 61.85 |
| Aligned (训练推理都给滑窗 w=3) | 64.50 |
(c) Environment scaling (Figure 4)
把训练环境数从 10 → 100 → 526 阶梯增加,benchmark 分数单调上升。paper 没给具体数字曲线,但断言 "monotonic improvement"。这是支撑 "合成环境 scale 能持续涨" 论点的核心证据。
遗憾的是 paper 没把 scaling 推到 1,000 envs(只用了 526) —— 算力限制下没完成"scale 是否在 526 之后还涨"的关键消融。这是个 follow-up 空间。
5 · 🔍 开源现状 — repo 实地清点
到 2026-05 为止盘点 Snowflake-Labs/agent-world-model。
5.1 公开发布的资产
| 资产 | 状态 | 地址 / 说明 |
|---|---|---|
| 论文 | ✓ | arXiv:2602.10090 |
| 环境合成 pipeline 代码 | ✓ | awm/ Python 包,含五阶段 LLM prompts 和 self-correct 逻辑 |
| 1,000 合成环境数据 | ✓ | HuggingFace: Snowflake/AgentWorldModel-1K |
| 训练完的模型权重 | ✓ | HuggingFace: Snowflake/Arctic-AWM-4B / -8B / -14B |
| RL 训练 infra | ✓ (上游) | 论文称代码 "merged into meta-pytorch/OpenEnv" — 用 Meta 的 OpenEnv 框架做 RL 训练 |
| License | 未在 GitHub README 显式列出 | 需要查仓库根目录的 LICENSE 文件确认 |
5.2 与 #17 UI-TARS-2 的开源策略对比
AWM 在开源度上是非常友好的 —— pipeline + 环境数据集 + 三个 size 的训练后模型 + 上游 RL 框架都开放。这和 #17 UI-TARS-2(主线模型 / 沙箱 / trainer 完全闭源)形成鲜明对比 —— Snowflake 这边是真的把"整套工业级合成环境闭环"端到端开放给社区。
5.3 复现路径(假设你想从头跑一遍)
git clone https://github.com/Snowflake-Labs/agent-world-model cd agent-world-model # 1. 生成环境(或直接下载 HF 上的 1K env 数据) python awm/synthesize.py --num-scenarios 1000 --seeds seeds.json # 2. 用 OpenEnv 跑 GRPO pip install meta-pytorch/OpenEnv python -m openenv.train --env awm --model Qwen3-thinking-8B --algo grpo # 3. 用训完的 checkpoint 在三个 OOD benchmark 上评测 python -m awm.eval --benchmark bfclv3,tau2,mcp-universe
这是到目前为止 agentic RL 领域开源度最高的合成环境工作之一 —— 比 #03 Agent-World(只开了真实环境的列表,没开 mining pipeline)更彻底。
6 · 与 #03 Agent-World 并排对比
| 维度 | #03 Agent-World (2604.18292) | #18 AWM (本篇, 2602.10090) |
|---|---|---|
| 团队 | RUC + ByteDance Seed (Guanting Dong) | Snowflake AI Research |
| 环境来源 | 真实 web mining — agent 在 GitHub / npm 上挖 MCP 服务 | 从零合成 — LLM 生成 SQLite DB + Python tool |
| 环境数 / 工具数 | 1,978 真实环境 / 19,822 真实工具 | 1,000 合成环境 / 35,062 合成工具 |
| 状态后端 | 各 MCP 服务的真实 backend (GitHub repo / Notion / Postgres ...) | 每环境一个独立 SQLite |
| 状态一致性 | 取决于服务,可能漂移 (e.g. GitHub repo 被改) | 严格一致,可重置 |
| 并发训练成本 | 受 API 限速 / sandbox 部署成本拖累 | 本地 1,024 并发 worker 几乎零边际成本 |
| 分布真实性 | 真实 SaaS 分布,直接迁移到生产 | 合成"日常 SaaS-like"分布,可能脱离真实细节 |
| self-evolving 闭环 | ✓ Self-Evolving Arena 持续 mining 弱点 + 扩 task | ✗ 一次性 1,000 envs,无 evolve loop |
| RL 算法 | GRPO (multi-environment) | GRPO (single algorithm) |
| Base 模型 | 8B / 14B (paper 未单列具体 family) | Qwen3-thinking 4B / 8B / 14B |
| 评测策略 | in-distribution + OOD 混合,23 个 benchmark | 纯 OOD,3 个 benchmark,所有训练分布都不进评测 |
| 开源策略 | 部分开放 (环境清单 + 部分代码) | 全开 (pipeline + 1K env 数据 + 3 个模型 + 上游 RL 框架) |
| 核心叙事 | "环境是 agent RL 的新瓶颈,要 mining 真实的" | "LLM-simulated env 不可靠,代码 + DB 才稳" |
判断: 这两条路不应该被看作竞争,而是同一个问题(RL agent 需要 scale 多样可靠环境)的两种工程权衡。理想的下一步是把两者结合 —— 用 AWM-style 合成做 mass scale 训练(可靠 + 便宜),再用 #03-style 真实 mining 做 fine-tune / OOD 校准(贴近真实分布)。可惜目前还没看到这样的"合成 → 真实 curriculum"工作。
7 · 与 #17 UI-TARS-2 data flywheel 的关系
表面上看 AWM 和 UI-TARS-2 是两件不同的事(一个做环境合成,一个做模型训练 flywheel),但它们在 RL 数据生成这一层上其实是互补的。
| 维度 | AWM | UI-TARS-2 flywheel |
|---|---|---|
| "飞轮"扩什么 | 扩 environment 本身(一次性吐出 1,000 envs) | 扩 task / trajectory(环境是固定的 690 网站,task 在 policy rollout 中持续生成) |
| 是否有 iteration loop | ✗ 一次合成完毕就训 | ✓ CT/SFT/RL 三阶段 + V(s) 路由回灌 |
| 验证器 | code-augmented LLM judge(per task) | 三类验证器:程序化二值 / LLM-as-Judge / generative ORM |
| 训练 base | Qwen3-thinking 4/8/14B | 230B MoE (Seed-thinking-1.6 init) |
| 领域 | SaaS-like CRUD tool-use | GUI / browser / desktop / game |
| 开源度 | 高 | 低 (主线权重 / 沙箱 / trainer 全闭源) |
合二为一的想象: 把 AWM 的 environment 合成接到 UI-TARS-2 风格的 flywheel 前端 —— 飞轮第 0 步先合成新环境,第 1 步再在新环境里跑 rollout 生成 trajectory。这相当于把"环境维度"和"trajectory 维度"两个 scale axis 都打开。但需要解决合成环境 + 真实 GUI 分布之间的 domain gap —— AWM 是 text-based MCP tool-use,UI-TARS-2 是 vision-based GUI,目前还没法直接拼。
8 · 局限 / 个人 take
8.1 paper 自己承认的
- "Synthetic environments may not fully reflect real-world scenarios, thus we encourage the community to apply safeguards" —— 合成 ≠ 真实,这是 sim2real 的老问题。
- τ²-bench 4B 上输给 EnvScaler —— dialogue-heavy 任务上合成 CRUD 训练给不了对话能力。
- RL 训练只用了 526 / 1,000 envs —— scaling 没推到全量。
8.2 笔者的额外质疑
- 1,000 envs 真的多样吗? 全都从 100 个 seed website 类别衍生,每个 seed 平均 10 个变体 —— 这本质上是10× 多样性而非 1000×。和 Agent-World 从真实 web 上 mining 出来的 1,978 个独立 MCP 服务比,概念多样性可能差一个量级。paper 没做"概念聚类后还剩几类"的分析。
- "OOD 泛化"的强度 —— BFCLv3 / τ²-bench / MCP-Universe 虽然分布不同,但都还是 "tool-use" 范畴。没测跨范畴泛化(e.g. 训完 AWM 去做 GUI agent / code agent)。所以"infinity synthetic environments"标题里的"infinity"更准确说是"infinity within tool-use domain"。
- verification 代码的正确性谁验证? Pipeline 末端的 verification code 也是 LLM 生成的,可能本身就有 bug。论文报 "RL 期间 env error rate ~4%" 是合理的,但没说 reward signal 的"系统性偏差"(e.g. 某类 task 的 verification 总是过松/过严)。这是 self-distillation 类合成 pipeline 的通用风险。
- vs EnvScaler 比较的公平性 —— EnvScaler 在 8B BFCLv3 上只有 36.83(低于 base Qwen3 的 53.83?),paper 没解释为何 EnvScaler RL 后比 base 还差。可能 EnvScaler 训练分布严重 mis-aligned,但读者无法独立验证。
- 14B 之外的扩展 —— 论文未训 32B / 72B。"scale 到更大模型还涨吗" 没回答。Qwen3-thinking 14B → 70B 是个明显的下一步。
8.3 我会怎么用这篇
- 作为合成环境的开源 baseline —— 想自己训 tool-use agent 但又没真实 MCP 部署的人,直接拉
Snowflake/AgentWorldModel-1K训。 - 作为 verification design 的 reference —— "code-augmented LLM judge" 这个 60.00 → 65.94 的提升幅度很有参考价值,值得在自己的 verifier 设计里复用。
- 作为 LLM-as-environment 的反面教材 —— vs Simulator 的对比一锤定音:除非 LLM-sim 有不可替代的优势,默认应该走 code-based env。
- 作为"合成 ≠ 真实"的实证 —— MCP-Universe 全员低分,说明真实 web/financial/browser 的 API quirks 是合成 pipeline 学不到的。提醒自己别过度信任合成环境训出来的 agent 的真实生产表现。