WebThinker
Deep Research Agent · NeurIPS 2025 · arXiv 2504.21776

WebThinker:让推理模型在思考的中途自己上网,边想边写

RAG 把「先检索、再生成」写死成流水线,模型只能看到搜索引擎摘要。WebThinker 把搜索、点链接、写章节、查大纲、改报告全做成推理链里模型自己吐出的工具调用,搜索结果直接插回思考过程;再用迭代在线 DPO 教会它怎么用工具更划算。

Xiaoxi Li, Jiajie Jin, Guanting Dong 等 · 中国人民大学 / BAAI / 华为泊松实验室 arXiv 2504.21776 ↗ 代码 ↗
TL;DR · 30 秒抓住核心

难点不在「能不能搜」,而在谁来决定搜什么、搜到哪一层、什么时候够了。预定义 RAG 让外部脚本决定,推理模型只是个下游消费者;WebThinker 把这套决策交还给模型本身的思维链。

它只有两个模式:解题模式下,模型调用 Deep Web Explorer——一个由同一类 LRM 驱动的子 agent,内部还能继续搜索、点击链接;写报告模式下,主模型用 Tdraft / Tcheck / Tedit 边想边写,具体文字由「助手 LLM」(实验里是与骨干同尺寸的 Qwen2.5-Instruct)基于探索到的文档记忆去落地。

训练用的是自己采样 → 按三条规则排出偏好对 → 在线 DPO → 用新模型重新采样的闭环,两轮迭代。不加训练的 Base 版就已经全面超过 Search-o1,RL 版再把 GAIA 从 44.7 推到 48.5。

48.5
GAIA 平均 Pass@1(32B),Base 44.7,Search-o1 39.8
15.8
HLE 平均(32B),压过 o3-mini (High) 的 14.0
8.1
Glaive 报告平均分,Gemini2.0 Deep Research 7.9
01

问题不是「有没有外网」,而是「谁在思考里决定怎么用外网」

读完这节你应该明白:为什么一个只会被喂检索结果的推理模型,天花板在流程设计者手里。

LRM(如 QwQ-32B、DeepSeek-R1)的长链推理很强,但知识停在参数里。论文在 Table 1 里给了一组对照:QwQ-32B 直接作答,GPQA 平均 64.1,比 Qwen2.5-72B 的 49.5 高出一大截;可到了 GAIA 只有 22.3、WebWalkerQA 只有 4.3。推理能力不会自动换来前沿信息。

标准 RAG 把外部知识补进来,但论文 Figure 2 (a) 画的流水线是这样的:检索脚本固定发起搜索 → 拿回摘要 → 生成答案。模型从头到尾没机会说「这条摘要不够,我想点进去看原文」,也没机会说「这一节可以写了,先去写,后面缺数据再回来搜」。

核心矛盾

推理链是自由的,工具调用却被外包给流程

RAG 的每一步检索都由外部代码触发,检索和推理之间只有一次性的信息交接。于是搜索深度被固定、搜索时机被固定、写作时机也被固定。要突破,就得让「搜索 / 导航 / 写作」变成模型思维链里可以随时发出、随时收结果的动作。

换个说法:这篇论文要的不是更强的检索器,而是把研究动作内化进模型的一次生成过程——模型仍在续写同一个思维链,只是中途插入「我去查一下」。

02

前人两条路:流程做深了但写死,搜索自主了但只看到摘要

按论文 Table 1 / Table 2 的同口径数据看,多数 RAG 变体在需要真推理的 HLE 上几乎没有增益。

RAG 工作流

预定义的多步检索

标准 RAG 只按原问题检索一次;Query Planning 先把问题拆子问题再检索;Iterative RAG 多轮补检索。作者把三者都接到 QwQ-32B 上。

GAIA 有效:24.3 → 32.0 → 35.0(Iterative),确实比直接作答的 22.3 好。

HLE 几乎没动:7.2 → 9.6 → 9.6,与直接作答的 9.6 持平。释义见本节末尾的提示。

Search-o1

把搜索嵌进推理

Search-o1 让推理模型在思考中发出搜索,配合 Reason-in-Documents 模块把检索文档压缩后插回推理链,可以说是 WebThinker 最接近的先行者。

明显优于 RAG:GAIA 39.8,HLE 10.8(Table 1 / Table 2,Search-o1-32B 评测数字)。

但只调用搜索引擎、拿摘要:论文指出它没有页面级导航,无法顺着链接深入。

两个程序给出的最优路线合起来提示了缺口:搜索要自主(学 Search-o1),探索要更深(超过只读摘要),而且写作也要被纳入同一个思考过程——这三件事正好对应 WebThinker 的三个组件。

为什么 Iterative RAG 在 HLE 上涨不动?论文自己的解释 + 一组值得注意的数字

论文 §4.4 的说法是:RAG 在 GAIA、WebWalkerQA 这类「找信息」任务上能提升,但在需要「推理与搜索深度融合」的 HLE 上增益不稳定。换句话说,问题变成「搜到这页之后,该不该相信、下一步该查什么」,这需要模型自己连续做判断,而不是外部脚本排好队。

另一个值得留意的现象:Table 1 里 GPQA 一列,RAG 迭代版对 QwQ-32B 只有 65.2,而 Search-o1 是 67.2、WebThinker Base 是 68.7。(本页推断:GPQA 是「Google-proof」题,多检索可能反而引入噪声——论文只给出上述数字,未对此作解释。)

03

核心方法:把搜索做成子 agent,把写作做成工具,都从同一条思维链里发出

三个组件对应三个能力:深度探索(Deep Web Explorer)、边想边写(Think-Search-and-Draft)、用得省(在线 DPO)。

3.1 一次生成就被写成「推理链 × 工具输出」的交错乘积

论文 Eq. 1 给了解题模式的目标分布:思维链 R 的每个 token,条件里除了之前的思考,还包含之前所有工具调用的输出;最后再生成答案 y。

P(R, y | I, q, T) = ∏t≤|R| P(Rt | R<t, I, q, {Oτ}τ<t) · ∏t≤|y| P(yt | y<t, R, I, q)
Eq. 1 · 红色部分就是 RAG 做不到的地方:当前思考依赖于已被插入的、真实发生的工具返回

实现上不靠特殊架构,全靠特殊 token:模型输出 <|begin_search_query|>…<|end_search_query|> 时生成暂停,系统执行搜索,把结果包在 <|begin_search_result|>…<|end_search_result|> 里插回上下文,模型继续往下想。整个研究过程是一次连续生成,加几次确定性插入。

3.2 Deep Web Explorer:搜索工具的「内部」也是一个会思考的 agent

主模型每发一次搜索,外面并不是直接调 Bing,而是把「原始问题 + 助手 LLM 生成的详细搜索意图 + top-10 网页正文」交给 Explorer(Eq. 3)。Explorer 自己有两种动作:直接调搜索引擎(拿标题、URL、摘要),或用 Crawl4AI 抓取某个链接的全文——长页面还会由助手 LLM 按「点击意图」摘要。它一直循环到自己认为信息够了,才输出一段 Final Information 还给主模型。

两级自主

主模型决定「查什么」,Explorer 决定「查到多深」

这正是 Chapter 02 里 RAG 缺少的「多跳」。论文附录 D 的 GAIA 案例:主模型先搜 Finding Nemo 主角鱼的非本土目击记录,得到「Fred Howard Park, Florida」;再搜这个公园的邮编得到 34689。而 ASH 会议截稿案例里,Explorer 直接点开一个 PDF 链接把附带会议的截稿时间也找了出来——这需要页面内的导航动作,单靠搜索引擎摘要做不到。

3.3 Autonomous Think-Search-and-Draft:写作与检索并发

报告模式下,主模型多了三个写作工具,且都由「助手 LLM」(实验中与骨干同尺寸的 Qwen2.5-Instruct)在后台执行,不把整段文字塞回主推理链,以免打乱思考节奏:

Tdraft

给定章节名与写作要求,助手 LLM 从文档记忆 M 里取 top-k 文档写出这一节(Eq. 4)。

Tcheck

只返回当前报告的标题大纲,让主模型知道写到哪、还缺什么,而不是回灌全文。

Tedit

按编辑指令让助手 LLM 输出整篇修改后的报告,修掉重复、补上遗漏。

所有探索过的网页都进入文档记忆 M。主模型的核心工作是编排:何时搜、搜到够了就写哪一节、什么时候回头检查、什么时候收尾(Eq. 5 里以 EOS 为终止)。

3.4 自己动手:按符号逐步展开一次 GAIA 式解题

下面把附录 D 的找到 Nemo 那条 GAIA 题的真实轨迹压缩成 8 步。红框标出的步骤里,工具输出是插回主思考链的(S/I);蓝框是 Explorer 内部的动作;第 8 步只有最终答案 A。拖动进度,看每一步是谁在决定。

当前步骤
拖动滑块或在下方点击「下一步」,逐步看主模型与 Explorer 的分工。
r 主模型思考 S 主模型发起搜索 I Explorer 返回信息 W 写章节 C 查大纲 E 改报告 A 最终答案
第 8 步为什么只有一个 A?这段轨迹来自论文附录 D.1

附录 D.1 的 GAIA 案例里,主模型共发出 3 次搜索,前两次对应“找地点”和“找地点→查邮编”,第 3 次是重复确认「只有这一处目击」,随后给出邮编 34689。本模拟把第 3 次重复确认折叠进第 7 步(主模型收尾),因此轨迹是 8 个标记而非原始文本的全部来回。

切到「报告模式」演示的是 Section 3.4 的另一种交错形态:r 想 → S 搜 → r 判断够了 → W 写一节 → C 查大纲 → E 改… → A 结束。两种模式的工具集合不同,但都共享同一条思维链。

04

训练:不写奖励模型,用三条规则排出偏好对,再做在线 DPO

工程上的关键约束是:验收信号只能来自最终答案对不对,于是「工具用得好不好」必须被编码成偏好规则。

训练数据来自六个数据集(SuperGPQA、WebWalkerQA Silver、OpenThoughts、NaturalReasoning、NuminaMath、Glaive),总量约 3k:先用 QwQ-32B 直接作答,只留下做错的题;每题再用 WebThinker-32B-Base 采 n 条轨迹。Glaive 另在每轮迭代采 1.5k 题做偏好构造。对同一题的两条轨迹 (Ri, Rj),按优先级从高到低判:

① 答案正确 / 报告质量 > ② 工具调用更少 > ③ 输出更短(当 lenj / leni > γ 时)
规则解释见论文 §3.5;① 永远优先,②③ 只在都答对时才比较

然后直接套标准 DPO 损失(Eq. 6),β 控制偏离参考策略的程度。真正的「在线」在于闭环:

实验配置上,论文 §4.3 写明的硬数字是:主实验骨架 QwQ-32B,助手为同尺寸 Qwen2.5-Instruct,生成上限 81,920 tokens,在线 DPO 2 轮,训练序列长度 32,768,Bing 搜索 k=10。换到 DeepSeek-R1 家族时,先做冷启动 SFT(从 QwQ-32B 版 WebThinker 采的 7.8k 条轨迹),再走同样的 RL 流程——这是为了让 R1 系列先学会稳定的工具 token 格式。

自己动手:偏好规则怎么在两条轨迹之间裁决

两种轨迹的「长度比」lenj/leni > γ 时,更短的 i 胜出。拖动按钮切 γ,下面按规则优先级逐条判定(数值是示例,仅用于理解规则,不是论文数据)。

裁决结果

论文 Table 3 左栏给了这套迭代机制的对照:离线 DPO(用旧的偏好集一次性训练)在四个基准上的平均是 43.2(比不做训练的 42.1 高 1.1 点),而迭代在线 DPO 是 45.4,比 Base 的 42.1 高 3.3 点、比离线 DPO 高 2.2 点。可见「用新策略重新采样」不是可有可无的修饰:换回一次性离线偏好集,一半以上的训练增益就没了。同时也要注意,RL 相对 Base 的绝对增益是 3.3 点,而消融里去掉了 Explorer 会掉到 38.3——地基仍是 Explorer。

注:论文 §4.7 正文把 RL 版平均误写为 44.9,与 Table 3 的 45.4 冲突,本节以 Table 3 为准。

05

一次推理的完整数据流:主思考链 ↔ Explorer ↔ 文档记忆 ↔ 助手 LLM

下图重绘论文 Figure 3:两种模式共享 Explorer,报告模式额外接上三个写作工具和文档记忆。

主推理 LRM(QwQ-32B / DeepSeek-R1)· 同一条思维链 r think S search I info r think EOS → 答案 / 完整报告 解题模式:思考 → 搜索 → 拿到 Explorer 返回的信息 → 继续思考 → EOS 报告模式:同一条链上还会穿插 T_draft / T_check / T_edit Deep Web Explorer LRM 驱动的子 agent,内部循环 Search API k=10 Click (Crawl4AI) 反复搜索 / 点链接,直到信息够了 → 输出 Final Information query + 意图 + top-10 正文 Final Information Document Memory M 所有探索过的网页累积 写作工具按需取 top-k 作为事实依据 助手 LLM(Qwen2.5-Instruct) 后台执行,不把全文回灌思维链 T_draft T_check T_edit T_check 只回大纲;T_edit 输出整篇 写 / 查 / 改 指令 大纲 / 报告 主模型直接发出 Explorer 内部动作 文档记忆 普通思考
图 1:重绘自论文 Figure 3。红色 = 主模型直接发出的工具调用,蓝色 = Explorer 内部,绿色 = 文档记忆,黄色 = 普通思维 token。
展开说明 ▸
  • 为什么 Explorer 要是 agent 而不是函数:一次简单搜索拿回的摘要经常缺关键细节(论文 GAIA 案例里邮编就不在摘要里),需要「再点进去看看」。把这一步交给子 agent,主模型不必在思维链里管理页面状态。
  • 为什么写作要外包:报告动辄数千字,如果直接写进主思维链,会挤占思考预算、打乱节奏。主模型发一句编辑指令,助手 LLM 用文档记忆去写,主模型拿到 Tcheck 返回的大纲即可判断进度。
  • 代价:一次主搜索实际是「10 页抓取 + Explorer 多轮推理 + 摘要」。附录 C 的 Write Section 指令要求「每段充分展开、必要时加表格」,这些都很耗 token——见 Chapter 07。
06

效果:不加训练就全面超过 Search-o1,RL 再把 HLE 拉过 o3-mini (High)

以下数字全部来自论文 Table 1、Table 2、Figure 4 和 Table 3,Pass@1,由 Qwen2.5-72B-Instruct 判对错。

直接作答 RAG 工作流 Search-o1-32B WebThinker(本文)

两个反直觉的发现:

方法(32B 档)GPQAGAIAWebWalkerQAHLE
QwQ-32B 直接作答64.122.34.39.6
RAG-QwQ-32B w/ Iterative RAG65.235.031.59.6
Search-o1-32B67.239.834.110.8
WebThinker-32B-Base(免训练)68.744.741.913.0
WebThinker-32B-RL70.748.546.515.8
o3-mini (High),闭源参考———14.0

来源:Table 1(GPQA/GAIA/WebWalkerQA)、Table 2(HLE)。o3-mini 与 WebThinker 不是同一评测设定下的完整对比,仅作参照。

消融:哪一块最不能拆

Table 3 左栏四基准平均(论文把四个平均称为 Avg.,并报告 RL 版为 45.4):

设置GPQAGAIAWebWalkerQAHLEAvg.
WebThinker-32B-RL70.748.546.515.845.4
换成离线 DPO69.245.644.014.243.2
不做训练(Base)68.744.741.913.042.1
去掉点击链接69.742.742.615.242.6
去掉 Deep Web Explorer63.638.838.512.038.3

拆掉 Explorer,平均掉到 38.3,比不做训练的 42.1 还低——说明 Explorer 是地基。只去掉「点链接」平均掉到 42.6、GAIA 从 48.5 掉到 42.7,可见页面导航不是锦上添花。

报告生成:Glaive,DeepSeek-R1-671B 与 GPT-4o 打分取平均

方法全面性深入性事实性连贯性平均
RAG-Qwen2.5-72B5.75.36.46.35.9
RAG-DeepSeek-R16.66.47.17.16.8
Grok3 DeeperSearch6.46.17.06.56.5
Gemini2.0 Deep Research8.18.07.77.77.9
WebThinker-32B-Base8.48.27.77.88.0
WebThinker-32B-RL8.38.47.77.98.1

注意 8.1 只是 32B 模型。Gemini2.0 Deep Research 是闭源系统,WebThinker 以 32B 骨干在四个维度上都不落下风。消融右栏还有一个信号:去掉「自主写报告」后平均掉到 6.6,是所有消融里跌幅最大的——边想边写是报告质量的主要来源,三个写作工具本身次之。

换骨干:DeepSeek-R1 7B / 14B / 32B 同频提速

论文 §4.6 与 Figure 5 报告,WebThinker-R1-7B 相对直接作答在 GAIA 上提升 174.4%、WebWalkerQA 上 422.6%;相对标准 RAG 分别是 82.9% 和 161.3%。用 Figure 5(a)/(b) 的柱子可复核:GAIA 7.8→31.1、13.8→31.1;WebWalkerQA 3.8→13.8、4.2→13.8,与这四个百分比吻合。这是本文少有的「小模型也吃得上」的证据。

07

边界:只能读文本、只认少数工具、推理长度翻倍

论文 §5 自己承认三条局限,附录里的评测设定又暴露出两条需要留意的边界。

论文自述 ①

不能处理图像、视频

模型文本输入文本输出,GAIA 只能用纯文本验证集 103 题,HLE 只能从 500 道纯文本样本中抽测。真实网页里大量信息在图表和图片中,这部分完全看不到。

论文自述 ②

工具集有限,扩展性未验证

工具是预先定义的特殊 token(搜索、点击、写、查、改)。换成新工具(代码解释器、数据库 API)需要重新教模型输出格式,并且训练信号的唯一验收是最终答案,新工具是否必然「用得好」没有做验证。

论文自述 ③

没有 GUI 级交互

Explorer 只做「点链接 / 按钮」,不理解表单填写、滚动加载、验证码这类真实网页交互,也没有对失败页面的恢复策略。

读数据时注意 ④

判分全靠 LLM,报告评估也没有人类评审

问题对错由 Qwen2.5-72B-Instruct 判,报告质量由 DeepSeek-R1-671B 与 GPT-4o 打 listwise 分。附录 C.3.2 明确说不做人类评估(报告特征太明显、容易认出系统),并用随机排序缓解位置偏差——但裁判模型与骨干部分同源,仍可能有利好。8.3 与 8.1 这种差距落在打分误差带内。

读数据时注意 ⑤

推理 token 上限 81,920,训练长度只有 32,768

每次主搜索都意味着抓 10 页、Explorer 多轮推理、助手 LLM 摘要;RL 训练又把序列压到 32,768。训练分布与推理分布之间的落差意味着,在解特别长的 WebWalkerQA 任务时,有多少次是被 max 81920 截断、有多少实际走完,论文没有单独报告。这种框架对推理成本是直接的放大。

一句话总结:WebThinker 解决的是「谁来编排研究动作」,不是「研究质量的上限」。它的增益主要来自 Explorer 的深挖能力(消融里去掉就掉到 38.3)。任务一旦需要看图、填表、操作复杂网页,就得换成多模态骨干或 GUI 级浏览器工具,并不存在「接上新工具就自动学会用」的保证。