上周二晚上刷 GitHub trending 的时候,看到 Qwen 发了个新项目。
名字叫 Qwen-AgentWorld。
点进去看了一眼,我整个人愣了好一会儿。
不是因为这是个新模型,而是因为这个模型做的事情,跟所有现有模型都不一样。
它不是聊天模型。不是推理模型。不是代码模型。不是 Agent 模型。
它是一个 Language World Model,语言世界模型。
翻译成大白话就是,你给它一个智能体的当前状态和一个动作,它会预测环境下一步会返回什么。
你给它「在 Terminal 里敲了 ls」,它告诉你终端会输出什么。你给它「搜索了某个关键词」,它告诉你搜索引擎会返回哪几条结果、URL 长什么样、排名怎么排。你给它「在 Android 上点击了某个按钮」,它告诉你 UI 层级树会怎么变。
它在模拟世界。
看完之后我第一个念头就是,这东西能不能在 LlamaFactory 里直接跑起来?
于是我提了个 PR。
一个只有 13 行的 PR
PR #10615 在 LlamaFactory 里做的事情,非常非常简单。
就是在 constants.py 里加了一个模型注册:
# Qwen-AgentWorld,基于 Qwen3.5-35B-A3B 构建的语言世界模型
# MoE 架构,总参数 35B,激活参数仅 3B,支持 256K 上下文
# 参考仓库,https,//github.com/QwenLM/Qwen-AgentWorld
register_model_group(
models={
# 模型名称,后缀 -Thinking 会自动绑定推理模板
"Qwen-AgentWorld-35B-A3B-Thinking", {
# 支持 HuggingFace 和 ModelScope 两个下载源
DownloadSource.DEFAULT, "Qwen/Qwen-AgentWorld-35B-A3B",
DownloadSource.MODELSCOPE, "Qwen/Qwen-AgentWorld-35B-A3B",
},
},
# 复用已有的 qwen3 聊天模板,推理时用 --reasoning-parser qwen3
# 不需要新增模板,因为模型共享 Qwen3 的标准聊天格式
template="qwen3",
)
13 行代码,加了一个模型。
但你想想,这 13 行代码背后是什么?
它意味着你现在可以在 LlamaFactory 里,一键微调一个能模拟七个智能体交互领域的 AI 世界模型。
而且最离谱的是,它只有 3B 激活参数。3B。我笔记本上的 GPU 都能跑。
但这还不是最让我震撼的。
最让我震撼的是,我仔细读了一遍论文之后发现,这个模型在模拟环境这件事上,干掉了 GPT-5.4。
什么是语言世界模型?AI 学会了「预知未来」
在往下聊之前,我得先把「语言世界模型」这个概念讲清楚。
你想想传统的 AI 模型是怎么训练的。
大语言模型,训练目标是「预测下一个 token」。你给它前半句话,它预测后半句。
Agent 模型,训练目标是「给定状态,选择正确的动作」。你给它一个环境状态,它决定下一步该做什么。
但没有任何一个语言模型,被训练成去预测「环境接下来会怎样」。
这就是 Qwen-AgentWorld 做的事情。
它的训练目标是一个数学公式,论文里是这么写的。
每一项拆开来看。
- ,模型预测的第 轮环境观察。比如终端输出了什么、搜索引擎返回了什么结果、UI 界面变成了什么样子。
- ,参数为 的语言世界模型。就是你训练出来的这个模型本身。
- ,系统提示词。包含五个组件,任务描述(告诉模型你现在在模拟什么环境)、动作空间(你可以用什么工具)、初始状态(环境一开始是什么样)、演示样例(给几个少样本示例)、模拟指令(可控模拟条件,比如「隐藏搜索结果中的答案」)。
- ,截止到第 轮的完整交互历史。所有的环境观察记录。
- ,截止到第 轮的所有智能体动作。
训练的目标很简单,让预测的 尽可能接近真实环境中的 。
你想想这有多难。
不是「写一首诗」或「翻译一段话」那种开放式的生成。是精确预测,预测一个真实的、有状态的、因果关系复杂的环境在接收到某个动作之后的确切反应。
如果你在 Terminal 里先 cd /tmp 再 touch a.txt 再 ls,模型必须输出 a.txt 出现在文件列表中。它不能输出 b.txt,不能输出「文件夹是空的」,必须是对的。
这就是世界模型。
而且 Qwen 把它做成了原生的。不是在一个通用 LLM 上面贴一层皮,而是从预训练阶段就把环境建模当作训练目标。
七个领域,一个模型
Qwen-AgentWorld 覆盖了七个智能体交互领域,在一个模型里。
文本领域(4 个)
| 领域 | 模拟什么 | 典型预测 |
|---|---|---|
| Terminal | 命令行环境,shell 输出、文件系统状态、进程行为 | 多步命令管道的完整输出 |
| Search | 搜索引擎结果,URL、摘要、排名、页面内容 | 真实的 URL 标识符和源排序 |
| MCP | API 服务器响应,工具调用结果、数据库状态 | 跨 9 次连续 Notion API 调用的模式一致性 |
| SWE | IDE/代码编辑环境,git diff、测试结果、编译错误 | 代码修改后的文件状态和测试输出 |
GUI 领域(3 个)
| 领域 | 模拟什么 | 典型预测 |
|---|---|---|
| Web | 浏览器 DOM 状态变化 | HTML + 无障碍树更新 |
| Android | 触摸/手势后的 UI 层级变化 | UI 层级 XML 标记 |
| OS | 桌面操作系统状态,文件系统、窗口管理 | 无障碍树 XML 更新 |
等等,你说 GUI?一个纯文本模型怎么模拟 GUI?
这个问题问得好。论文里的做法非常聪明:三个 GUI 领域的环境观察不是像素帧,而是可渲染代码。无障碍树 XML、HTML、UI 层级标记。这些东西是以文本形式存在的,一个语言模型完全可以处理。
这就是为什么 Qwen-AgentWorld 能在 3B 激活参数下覆盖 GUI 领域。它不处理像素,它处理结构化的文本表示。
三阶段训练,CPT → SFT → RL
论文里把训练管道总结成一句话:CPT injects, SFT activates, RL sharpens。
CPT 注入环境知识,SFT 激活下一状态预测推理,RL 精炼模拟保真度。
我一个个拆开讲。
Stage 1,CPT(持续预训练),注入环境知识
这一步的数据来自三个渠道:
- 专用智能体基础设施,部署了容器化执行沙箱、MCP 服务器、持久终端会话、Android/浏览器/桌面 OS 环境,自动合成任务查询让智能体执行,收集真实交互轨迹。
- 开放环境交互痕迹,公开的终端会话录制、开源智能体工具调用日志、代码仓库执行痕迹。
- 专门领域世界知识语料,工业控制、网络安全、法律、医疗、金融、时事百科。 这个很重要。如果你要模拟一个医疗信息系统,模型得先知道医院是怎么运转的。如果你要模拟法律法规合规平台,模型得懂法律。纯靠环境轨迹学不到这些事实性的世界知识。
总量超过一千万条真实环境交互轨迹。
但这里有一个非常巧妙的设计,叫轮次级信息论损失掩码。
什么意思呢?
在多轮环境交互中,有很多轮次是样板式的。比如你调了一个 API,API 把你的请求参数直接回显了。这种轮次几乎没信息量,对训练来说就是噪声。
论文设计了四个统计量来量化每个轮次的信息量:
| 统计量 | 公式 | 含义 | ||||
|---|---|---|---|---|---|---|
| OL (Overlap) | $\frac{ | W_{act} \cap W_{obs} | }{ | W_{act} | }$ | 观察回显了多少动作词汇,越高越样板化 |
| Nov (Novelty) | $\frac{ | W_{obs} \setminus W_{act} | }{ | W_{obs} | }$ | 观察中真正新信息的比例,越高越有价值 |
| Jac (Jaccard) | $\frac{ | W_{act} \cap W_{obs} | }{ | W_{act} \cup W_{obs} | }$ | 对称词集相似度 |
| R (Length ratio) | $\frac{ | \text{obs} | }{ | \text{act} | }$ | 字符级观察/动作长度比 |
基于这四个统计量,每个轮次被分配到七个语义类别之一,不同类别有不同的保留比例:
# 轮次分类与损失保留策略
# retrieval,nov >= 0.6 and R > 1,典型场景 read_file 返回内容
# keep_ratio = 1.0(完全保留)
# expansion,ol >= 0.5 and nov >= 0.5 and R > 1.5,典型场景 fetch 返回页面+元数据
# keep_ratio = 1.0(完全保留)
# action,nov >= 0.5 and R <= 1,典型场景 send_email 返回 "sent"
# keep_ratio = 1.0(完全保留)
# transform,nov < 0.5 and R < 1,典型场景 长输入 → 简短状态词
# keep_ratio = 0.5(保留一半)
# boilerplate,ol >= 0.5 and nov < 0.5,典型场景 API 回显
# keep_ratio = 0.1(仅保留 10%)
# echo,ol >= 0.7 and nov < 0.3,典型场景 think(x) → {thought, x}
# keep_ratio = 0.05(几乎完全掩码)
# other,未分类轮次
# keep_ratio = 1.0(保留)
被掩码的轮次从损失计算中排除,但它们的 token 仍作为后续轮次的上下文保留。
这个设计的精妙之处在于,它解耦了「学习下一状态」和「学习下一 token」。模型不会浪费算力去学习「把输入回显一遍」这种毫无意义的模式,但它仍然保留了这些轮次作为上下文,让模型知道之前发生了什么。
Stage 2,SFT(监督微调),激活推理
CPT 阶段模型是没有思考痕迹的,直接输出环境观察。
SFT 阶段的目标是让模型在 <think>......</think> 块里显式推理「下一步应该是什么样的」。
论文用了拒绝采样来筛选高质量推理轨迹:
- 对每个查询,从通用推理模型生成 3 个 rollout
- 独立评判模型两两比较,选最高质量的
- 如果获胜轨迹的分数低于最低阈值,整条查询丢弃
最终筛出了 7,094 条高质量 SFT 样本。筛掉了将近 30% 的候选。
Stage 3,RL(强化学习),精炼保真度
这一步是整个训练管道最核心的一环。
奖励设计
RL 的奖励来自两种互补信号,按 9:1 的比例混合:
其中:
- rubric_score:LLM 评判在五个维度上评分(1-5 分制),取均值后缩放到 [5, 25]。五个维度分别是格式(Format)、事实性(Factuality)、一致性(Consistency)、真实性(Realism)、质量(Quality)。
- rule_score:基于规则的验证器,产出一值 0/1 正确性信号,缩放到 [0, 25]。
为什么需要规则验证器?
因为 LLM 评判再强也是主观的。尤其在环境模拟这种开放式任务里,评判模型很容易被预测观察的表面合理性骗过去。比如模型在输出里嵌了一句「operation completed successfully」,评判可能就觉得不错然后打高分,但实际上文件内容完全错了。
规则验证器是一个客观锚点。它不看文采,不看表面合理性,只看对不对。二值信号,对就是对,错就是错。 这个锚点有效缓解了「奖励黑客」行为。
训练稳定性
论文里还提到了三种 RL 训练中的失败模式,每一种都很有意思:
-
多轮展开导致的奖励坍塌:如果一条轨迹展开成多个训练样本,这些样本共享同一个长前缀,训练会快速坍塌。解决方案很简单,每条轨迹只保留一个轮次作为训练样本。
-
奖励塑造失败:论文试了两种常见的奖励设计都没用。Reference-Reward(给评判看真实观察做 A/B 测试)收敛太慢。Turing-Test Reward(问评判「这个能通过图灵测试吗」)几乎不收敛,因为假阴性率太高。
-
自赞奖励黑客:模型学会在预测里嵌入自赞短语来提高分数。解决方案是内容类型分类+规则锚定+严格标签提取,确保思考块从不暴露给评判。
这些工程细节才是真正「做过的人才知道」的东西。
AgentWorldBench,评估语言世界模型的全新基准
怎么评估一个世界模型好不好?
论文做了个全新的基准,叫 AgentWorldBench。
构建原则很有意思:
- 所有任务查询来自已有的高质量智能体基准(Terminal-Bench、Tool Decathlon、OSWorld 等 9 个),不自建任务
- 所有轨迹由前沿模型智能体生成,不是人写的
- 每条轨迹配有真实环境中执行得到的 ground-truth 观察
- 训练数据和基准查询在数据源级别分区,测试泛化能力
最终产生了 2,170 个评估样本,覆盖 7 个领域,平均上下文长度从 Terminal 的 12,900 到 MCP 的 59,300 token。
评估方式很精细,五个维度:
- 格式 (Format):输出是否遵守领域的结构约定
- 事实性 (Factuality):陈述的事实是否正确
- 一致性 (Consistency):与历史交互是否一致
- 真实性 (Realism):模拟是否匹配真实环境的行为特征
- 质量 (Quality):相对于 ground truth 的完整性和简洁性
评判模型选的是 GPT-5.2,因为在双盲图灵测试中准确率最高。
另外还有一个非常聪明的设计,差异化匹配标准。不是所有内容都需要精确匹配。
# AgentWorldBench 对三类内容采用不同的评判标准
# 类型1,确定性内容(回显输出、文件读取、计算结果)
# → 必须精确匹配,cat 返回了错误文件内容就判定为错
# 类型2,预存环境内容(预装软件版本、非轨迹创建的文件内容)
# → 仅需格式和合理性验证,不要求与具体版本号精确一致
# 类型3,运行时元数据(时间戳、PID、内存地址、会话token)
# → 仅需格式和范围验证,模拟 PID 42731 与真实 PID 18204 同样可接受
这个分类的设计避免了很多假阴性,不会因为模型预测的进程 ID 跟真实环境不一样就扣分,因为那是随机的。
结果,小模型干掉了 GPT-5.4
说结果之前,我先给你列一张表。
这是 AgentWorldBench 上所有模型的排名:
| 模型 | MCP | Search | Terminal | SWE | Android | Web | OS | 总体 |
|---|---|---|---|---|---|---|---|---|
| Qwen-AgentWorld-397B | 68.24 | 37.82 | 57.73 | 68.49 | 60.20 | 50.98 | 67.89 | 58.71 |
| GPT-5.4 | 70.10 | 37.26 | 53.69 | 66.29 | 60.00 | 51.80 | 68.58 | 58.25 |
| Claude Opus 4.6 | 69.90 | 29.30 | 57.51 | 64.55 | 61.74 | 51.42 | 70.20 | 57.80 |
| Claude Opus 4.8 | 54.93 | 35.14 | 59.18 | 64.10 | 61.50 | 54.66 | 66.62 | 56.59 |
| Qwen-AgentWorld-35B | 64.79 | 36.69 | 53.96 | 65.63 | 58.17 | 49.55 | 65.92 | 56.39 |
| Claude Sonnet 4.6 | 70.00 | 28.79 | 56.98 | 64.52 | 58.03 | 50.78 | 63.17 | 56.04 |
| Qwen3.5-397B-A17B | 68.31 | 30.81 | 55.30 | 64.44 | 54.90 | 48.55 | 60.85 | 54.74 |
| Gemini 3.1 Pro | 59.07 | 30.21 | 52.47 | 59.07 | 61.40 | 52.83 | 66.92 | 54.57 |
| Kimi K2.6 | 65.23 | 27.48 | 52.54 | 58.77 | 58.93 | 50.20 | 60.80 | 53.42 |
| DeepSeek-V4-Pro | 63.27 | 27.61 | 51.26 | 59.44 | 55.17 | 50.32 | 63.70 | 52.97 |
看几个关键数字。
397B 版本总分 58.71,超越了 GPT-5.4 的 58.25。
我知道这个差距不大。但你仔细看分项。Terminal 上 57.73 vs 53.69,SWE 上 68.49 vs 66.29。这两个领域的共同特征是什么?都需要精确的代码执行状态建模和工具 API 行为预测。 这是世界模型的天然优势,语言模型擅长的「泛化模糊回答」在这两个领域最不灵。
35B 版本总分 56.39,超越了 Claude Sonnet 4.6 的 56.04。
而且你知道它的起点是多少吗?47.73。
三阶段训练让它涨了 8.66 分。
这不是微调带来的一点边际提升。这是把一个完全不做环境建模的模型,变成了一个能预测七个领域环境动态的模型。而且是在只有 3B 激活参数的条件下。
最难的领域是 Search。最高分只有 37.82,大概是 SWE 最高分的一半。为什么呢?因为搜索模拟需要大量事实性世界知识,模型不知道真实世界的搜索结果长什么样,就不可能模拟得准。这也解释了为什么 CPT 阶段要注入医疗、法律、金融、时事这些领域知识语料。
世界模型脑子里在想什么?
论文分析了一个我特别感兴趣的东西,模型的思考痕迹。
他们从四个文本领域的 129 条推理链中,发现了三种涌现的推理模式:
1. 审议性自我纠正
模型会在思考过程中用 Wait! 打断自己,修正刚才的预测。129 轮中出现了 1,347 次这种自我打断,平均每轮 10.4 次。
打断的内容包括事实错误修正(「不对,这个文件里不应该有这个变量」)、认识论限制(「我没有办法真的执行 np.random.seed(42),所以不能输出确切随机数」)、以及视角转换。
2. 信息泄露预防
在 Search 领域,模型手里握着一个参考答案。它的任务是在不泄露答案的前提下模拟搜索结果。当搜索查询跟答案无关时,模型会主动确保摘要不意外暴露目标。
这相当于世界模型版本的「心智理论」。
3. 多步因果推理
预测 curl -s localhost:3000 | python3 -m json.tool 的输出,需要六步推理链:Node.js 没装 → 服务器没起 → 3000 端口没监听 → curl 静默失败 → 空管道 → json.tool 抛 JSONDecodeError。
这不是背答案。是真的在推演因果关系。
世界模型的两种用法
论文最有意思的部分,是第二章。不是怎么训练世界模型,而是世界模型能用来干什么。
范式一,解耦式环境模拟器
在这种模式下,世界模型和策略智能体是分开的。世界模型替代真实环境,让智能体在上面做 RL 训练。
这种用法叫 Sim RL。
论文做了个非常大胆的实验,拿 OpenClaw 这个完全不在训练数据里的开源智能体平台做测试。构造了 4000 个 OpenClaw 模拟环境,不做任何领域适配,直接让世界模型扮演环境。
结果:
| 模型 | Claw-Eval | QwenClawBench |
|---|---|---|
| Qwen3.5-35B-A3B (基线) | 65.4 | 47.9 |
| + Sim RL (用 Qwen3.6-Plus 当模拟器) | 66.7 | 47.8 |
| + Sim RL (用 Qwen-AgentWorld-397B 当模拟器) | 69.7 | 55.0 |
用差模拟器的 Sim RL 几乎没有收益。用 Qwen-AgentWorld 的 Sim RL 涨了 4.3 和 7.1。
模拟器的质量是瓶颈。 智能体在垃圾模拟器上练再多也没用。
更有意思的是可控模拟。
跟传统 Sim RL 不同,Qwen-AgentWorld 支持用自然语言指令控制模拟行为。比如在 MCP 领域,你可以注入定向扰动,间歇性 API 错误、需要多次调用的分页响应、不完整的中间结果,来系统性地暴露智能体的弱点。
可控 vs 不可控的结果对比一目了然:
| 基准 | SFT 基线 | Sim RL (不可控) | Sim RL (可控) |
|---|---|---|---|
| Tool Decathlon | 32.4 | 31.5 | 36.1 |
| MCPMark | 21.5 | 24.6 | 33.8 |
不可控 Sim RL 在 Tool Decathlon 上甚至是负收益。 因为模拟器没有足够的地基来产生忠实响应。加上可控指令之后,瞬间涨了 3.7 和 12.3。
而且最炸的是,可控 Sim RL 超越了在真实搜索引擎上训练的 Real RL。在 WideSearch 上,可控 Sim RL 的 F1 达到 50.3%,Real RL 只有 45.6%。
不是说虚拟比真实更强。而是说,可控模拟让你可以针对性地暴露弱点,而这种针对性在真实环境中做不到。
范式二,智能体基础模型
这种模式下,同一个模型既负责选择动作,又负责预测环境状态。
论文的做法是,先在单轮、无工具调用的任务上做 LWM RL 热身,然后零样本评估多轮、带工具调用的智能体任务。
你换个角度想,世界模型的训练,被当作智能体训练的「热身运动」。
结果让人震惊:
| 基准 | SFT 基线 | + LWM RL | 提升 |
|---|---|---|---|
| Terminal-Bench 2.0 | 33.3 | 39.6 | +6.3 |
| SWE-Bench Verified | 64.5 | 67.9 | +3.4 |
| SWE-Bench Pro | 42.2 | 47.4 | +5.2 |
| WideSearch F1 Item | 33.4 | 46.2 | +12.8 |
| Claw-Eval (域外) | 53.6 | 64.9 | +11.3 |
| QwenClawBench (域外) | 39.8 | 49.4 | +9.7 |
| BFCL v4 (域外) | 62.3 | 71.3 | +9.0 |
注意那三个「域外」基准。Claw-Eval、QwenClawBench、BFCL v4,这三个领域的训练数据完全没有进入 LWM 训练管道。但收益分别是 +11.3、+9.7、+9.0。
世界模型训练传递的不是领域特定的知识,而是一种可泛化的推理模式。 这个模式叫「在行动之前,先在脑子里模拟环境会怎么反应」。
这不就是人类做决策的方式吗?你在决定要不要闯红灯之前,大脑会自动模拟「如果我冲过去,可能有一辆车从左边过来」。这不是知识,是能力。
为什么这件事重要
我有时候觉得,AI 领域最容易被忽略的一个问题是:
我们一直在教 AI 怎么「做」,但从来没教它怎么「看」这个世界。
大语言模型训练的是 token 预测。Agent 模型训练的是动作选择。强化学习训练的是奖励最大化。
但没有任何一个训练目标,是「预测环境接下来会怎样」。
Qwen-AgentWorld 把这件事提到了训练的根本目标上。从 CPT 阶段,模型就在学习「如果我做了 X,世界会变成 Y」。
这跟之前所有的 AI 模型训练范式,都不一样。
而且它不是事后贴皮的。不是在一个通用 LLM 上微调几层让它能「模拟」。它是从预训练阶段就把环境建模作为目标。论文里有句话我很喜欢:
Environment modeling is the training objective from continual pre-training onward, not a post hoc adaptation on top of a general-purpose LLM.
环境建模是持续预训练阶段的训练目标,不是在通用 LLM 上贴一层皮。
这就是「原生」和「事后适配」的区别。就像你学中文和用翻译软件的区别。前者是思维方式,后者是工具。
最后
我那个 13 行的 PR,说到底就是帮 LlamaFactory 加了一个模型注册。
但我更想说的是,Qwen-AgentWorld 背后的思路,可能是 Agent AI 的下一个重要方向。
过去一年我们在做的事情,特别是「Harness Engineering」那一拨,说到底是教 AI 怎么跟环境交互。怎么调用工具、怎么读文件、怎么写代码、怎么多步推理。
但所有这些的前提,都默认「AI 知道它做了某个动作之后环境会怎么变」。这个假设其实不成立。通用 LLM 在预测环境动态这件事上,并不好。
Qwen-AgentWorld 做的事,就是把「预测环境动态」变成训练目标本身。
而且它证明了这条路走得通。
3B 激活参数的模型,在模拟 7 个领域的智能体环境这件事上,超过了 GPT-5.4。
可控模拟让 RL 训练超越真实环境训练的收益。
单轮世界模型热身可以迁移到多轮工具调用智能体任务,连完全不在训练数据里的领域都能涨。
这三件事,每一件单独拿出来都是值得写一篇文章的。它们合在一起,指向一个非常清晰的趋势:
我们正在从「教 AI 做动作」进入「教 AI 理解世界怎么运转」的阶段。
而 Qwen-AgentWorld,是这个方向上第一个正式开源的大规模尝试。
如果你对这个项目感兴趣:
- 论文,arxiv.org/abs/2606.24…
- 代码,github.com/QwenLM/Qwen…
- 模型,huggingface.co/Qwen/Qwen-A…
- LlamaFactory PR,github.com/hiyouga/Lla…
LlamaFactory 里已经可以直接加载 Qwen-AgentWorld-35B-A3B,一条命令就能开始微调。想在特定领域训练自己的世界模型的,可以试试。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
谢谢你看我的文章,我们,下次再见。