Beyond Ten Turns
Paper · arXiv 2025 · 2508.07976v4

Beyond Ten Turns:把批同步拆开之后,搜索智能体才敢走完 128 轮

开源搜索智能体差在搜索智能:能不能拆开模糊问题、给出精确查询、从嘈杂网页里抠出关键信息、并回头验证结论。已有的在线 RL 通常只给 10 轮以内的工具调用,因为批同步训练里一条超长轨迹会让整批 GPU 空转。 ASearcher 把轨迹执行和模型更新彻底解耦,换来 128 轮的上限——训练中出现了超过 100 次工具调用、超过 400k 输出 token的轨迹;代价是训练会吃掉上千 GPU 小时。

Jiaxuan Gao 等 · 清华 IIIS / 蚂蚁 / UW arXiv 2508.07976 ↗ 代码 inclusionAI/ASearcher ↗
TL;DR · 30 秒抓住核心

长时程搜索卡在两件事上:轨迹走不长,以及能当训练题的难题太少。前者是系统工程问题,后者是数据问题;ASearcher 把两个都当作瓶颈,而不是只调算法。

核心机制是全异步 Agentic RL:轨迹各自并行、互不等待;一旦收集到足够轨迹就立即启动训练步,不等那条最长的轨迹。于是轮次上限可以从 ≤10 抬到 128,而 GPU 在生成阶段几乎不空转。

数据端是合成智能体:从种子问题出发反复 Injection(注入外部事实)和 Fuzzing(模糊关键信息),再用三步验证筛掉太简单、无答案、或不需要搜索就能答对的题。14,107 个种子最终留下 25,624 条。

结果是 ASearcher-Web-QwQ-v2 在 GAIA 上 Avg@4 58.7、xBench-DeepSearch 51.1,超过同尺寸开源智能体;但这个数字背后是约 16k H800 GPU 小时和端到端评测时实测的长时间空等——它换来的是能力上限,不是便宜。

128 轮
Web-QwQ 轨迹轮次上限
7B / 14B 为 32;已有工作 ≤10
58.7 / 51.1
GAIA / xBench Avg@4(v2)
v1 为 52.8 / 42.1
16k H800·h
Web-QwQ 总训练时长
batch 64;QwQ-32B 基座
01

难题的解法是一条长链,而批同步只给链的每一步派一个「最慢的人」

先看清为什么「多给几轮」不是改个参数就能做到:轮数一放长,批同步训练的等待时间会指数式地失控。

论文用一枚金牌数的问题开场:中国在 2012 伦敦奥运会拿了多少金、银、铜牌?网上两套说法互相打架(38 / 27 / 22 对 39 / 31 / 22),真正的答案要先找到官方报告里「因兴奋剂检测被取消」的记录,才能定下来。这类任务要求智能体处理输入的高不确定性、生成精确查询、从海量信息中抽取要点、消解冲突,最后回头验证——论文把这一整套能力叫 Search Intelligence。

这些事情一步做不完。论文在 GAIA、xBench-DeepSearch、Frames 上强制智能体至少使用不同的轮数,同一个模型轮数越多,准确率越高(Fig. 6 Left)——也就是说,「能走多远」本身就是能力的一部分。

核心矛盾

长轨迹既必要,又是批同步训练的效率杀手

一条轨迹由多轮「LLM 生成 → 调工具 → 再生成」串联而成,单条就要串行地跑很久;而同一批里不同轨迹的长度差极大——论文观察到最长的轨迹所用的 token 能比短的差两个数量级。在批同步(batch generation)训练里,一个训练步必须等整批采完,于是批里回响的一直是那条最慢的轨迹的空转。

两个问题叠在一起就成死结:想涨能力要多给轮数,但轮数一多,空转占比急剧上升,训练变得不可负担。

另一个瓶颈不在训练循环里,而在训练题本身:在线 RL 需要大量有唯一答案、足够难、又必须用工具的问题。现有开源搜索智能体的训练数据(如 HotpotQA)要么过时、要么过于简单、要么规模太小,RL 在它们身上学不出复杂的搜索策略。所以这篇论文要同时回答:训练系统怎么撑住长轨迹,训练题从哪来。

02

两条现成的路各自卡在一半:RL 学的太浅,提示工程的模型太弱

论文的第二节是一个 GAIA 案例的对照——同一道题,三条轨迹暴露出两种开箱方案的两种失败方式。

在线 RL

Search-R1 类:轮数被锁死

用多跳 QA 加 RL 训练工具调用(Search-R1、R1-Searcher、DeepResearcher 等),确实能让工具调用次数上升,但它们人为限制轮数——论文举例 Search-R1 每轨迹 ≤10 轮,案例里训练时只设 4 轮。

盲区:轮数不够,只能学到拆一句查询、搜一次这类初级策略。案例中的 Search-R1-32B 拆不开多变量问题、只发模糊查询,还有明显幻觉,最后没能解决任何一个未知量。

提示工程 / 离线 RL

Search-o1 类:会搜但不会收

用强 LRM(如 QwQ)+ 提示驱动,不做在线 RL 也能发出大量工具调用;近期还有工作在其上做离线 RL。

盲区:没经 RL 的模型能在海量调用中找到物种、文章、论文,却在抽关键信息和验证错误结论上掉链子——案例里即使已经碰到直接指向答案的信息,仍被前面的错误结论带偏。论文还指出离线 RL 在更广的领域里表现不如在线 RL。

路线长轨迹学到深层策略数据需求代表
在线 RL(批同步)被轮数上限压住只到初级搜索多跳 QASearch-R1 · R1-Searcher
提示工程 / 离线 RL能跑很多轮会搜不会验证无(提示)或 SFT 轨迹Search-o1 (QwQ)
ASearcher128 轮上限端到端 RL,含验证合成 + 筛选难题ASearcher-Web-QwQ

ASearcher 的选择是:两条都要。在线 RL 负责让模型学会深层策略,但先把在线 RL 的系统约束拆掉;同时用合成智能体补足「足够难的题」。案例里 ASearcher-Web-QwQ 一次只认真看一个网站、列出所有候选答案逐一核对,找到答案后还会再花几轮验证——这正是上面两类方案各自缺失的那一半。

03

两级异步:轨迹之间不等,轨迹与训练之间也不等

ASearcher 的「方法」不是新损失函数,而是对训练时序的重新安排;配上一套把普通问题「变难」的数据合成流程。

异步之一:轨迹之间互不等待

每条轨迹独立地向工具服务器发调用请求、向推理引擎发生成请求,并发请求由服务器统一调度。轨迹 A 在等网页返回时,轨迹 B 的 LLM 生成照常进行。这一层几乎所有高吞吐系统都会做,问题不大。

异步之二:训练步不等最慢的轨迹

关键在于第二层。批同步系统里,即便 rollout 本身是并发的,一个训练步仍要等整批采完。One-Step-Off RL 把第 N 步训练和第 N+1 步生成重叠起来,但批仍然被最慢的那条轨迹卡住。

批同步:训练步 N+1 必须等 批内最长轨迹 结束
全异步:攒够一批已完成的轨迹 → 立即开训;长轨迹可以跨版本继续跑
训据论文 Fig. 7 的描述:全异步模式下,训练步无需等「轨迹 7」,而是先用已经到齐的轨迹 9 开跑

代价是长轨迹可能跨过多个模型版本:它的后半段是旧策略生成的,策略一变,GRPO 的比例就有偏。论文只用稀疏的终局奖励、并在组内做相对比较(见下一节),这让样本陈旧化的伤害可控;但它是这套系统相对同步训练最实质的近似,论文没有给出它的量化分析。

数据端:把题变难,再确认它只能靠搜索解决

数据合成智能体从种子问题出发,每一步二选一:

每个版本都要过三步验证:基础质量(清晰、答案有事实支撑)、难度测量(让不带工具的 QwQ-32B 直接答)、答案唯一性(检查「答错」的那些是否其实也成立)。题目合成完毕后,再剔掉不用搜索就能答对的题——它们对训练搜索能力没有贡献。

种子问题
14,107
平均注入
6.3 次
平均模糊
3.2 次
最终保留
25,624
训练集
35k

数字取自 §3.2.2 与 §4.1:每个种子最多选 3 个高质量变体;保留样本平均 4.27 次注入、2.10 次模糊。7B/14B 与 QwQ 各有一套 35k 训练数据(含开源数据筛选后的 16k,见 04 节),均已开源。

04

算法还是 GRPO:改的是数据从哪来、何时更新、怎么过滤

这一节把训练循环拆开,看异步换来了什么、又引入了哪些新的不稳定来源。

对每个问题 x 采样 G 条轨迹,每条是一串状态-动作,动作里可以夹带 <search>…</search> 这类工具调用。损失就是标准的 GRPO 裁剪目标,优势 Âi 由组内相对奖励算出:

JGRPO(θ) = Ex, {τi}[ (1/G) Σi (1/Σt|ati|) Σt,j min( ρj·Âi, clip(ρj, 1−ε, 1+ε)·Âi ) ]
Eq. 1 · ρj 是第 j 个 token 的新旧概率比;按 token 数归一化,使长短轨迹对梯度贡献相当

真正决定能否训出长轨迹的,是下面四个训练细节:

轮次上限

7B/14B 用 32,Web-QwQ 用 128

轮次上限比同尺寸基线高一个量级,前提是异步让长轨迹不拖垮吞吐。batch 分别为 128 与 64;Web-QwQ 训练约 16k H800 GPU 小时。

Agent 本身很简单:只有搜索与网页浏览两个工具;网页摘要也由智能体自己做,并且和思考、工具调用一起在端到端 RL 里优化——不依赖外部 LLM。

两阶段课程

先混难度,再只留 ≥5 轮的题

第一阶段数据覆盖各难度;第二阶段只保留「至少需要 5 次工具调用」的题,逼模型把长程能力激活出来。两个阶段的产物即 -v1 与 -v2。

动态过滤

组内奖励全相同的题直接丢掉

如果一组轨迹奖励完全一样(优势为 0),或许是题太容易,或许是标注本身就是错的——两者都提供不了梯度。这类题被剔除,长轨迹尾部的无效样本也被一并压掉。

稀疏奖励

看的是全局终局,不是中间步骤

奖励只在轨迹结束时计算:从基座模型训练时用 格式奖励 × F1;微调 QwQ 时用 LLM-as-Judge 打分、不再要格式奖励。全程没有过程奖励,长轨迹的信用分配只依赖终点。

数据从两处来,有一处常被忽略

第一处是开源数据筛选:先在全部开源数据上 RL 训一个模型,每题采 16 个回答,剔掉三种题——16 个回答里一题都没对(不可解)、准确率已经 ≥50%(不够难)、或 ≤1 轮就能搜到(不需要搜索)。从 304k 条里只留下 16k 条。这个「用一个弱模型能答对的题对强模型也没用」的判据,也解释了后面为什么合成题还要再过滤一轮。

第二处就是 03 节的合成数据。两套 35k 训练集(7B/14B 一套、QwQ 一套)都由这两路拼成,公开在同一仓库。

工程代价

异步省的是空转,不是总计算量

16k H800 小时是 Web-QwQ 两个阶段合计的预算,它并不因为异步而消失。异步降低的是「GPU 在等最长轨迹时的空闲占比」,让你可以在同样的机器上更早把长轨迹变有用;但轨迹本身更长,token 总量反而更大。这一点在 05 节的模拟器里能直接看到。

05

一条轨迹能跨版本继续跑,训练步却只看「攒够没攒够」

论文 Fig. 7 把 One-Step-Off 与全异步并排画出来;切换下面的模式,观察同一批轨迹上训练步从哪开始。

数据 题目来源 全异步训练 回流 种子 QA 14,107 fuzz 开源数据 HotpotQA · 2WikiMultiHopQA 采 16 次,剔除三类 304k → 16k 合成 智能体 难度 筛选 训练集 · 35k × 2 异步轨迹 rollout 路径各自执行,不互相等 上限:32 / 128 轮 长轨迹可跨版本 轨迹缓冲区 攒够即触发,不等最慢的 动态过滤 + GRPO 剔除组内同奖励的题 终局奖励 · 组内相对优势 πθ 新策略 下一轮 rollout 注入 / 模糊改写
图 1:ASearcher 的数据流(示意)。左侧合成题与筛选题都是 35k 训练集的一部分;右侧的「缓冲区」与「训练步」在批同步系统里是绑定的,全异步把它们拆开。
展开说明 ▸
  • 为什么「攒够就开训」比「等整批」快? 同步时,一个 batch 的总时长等于其中最慢轨迹的时长;批越大、长度分布越重尾,平均利用率越低。异步把控制变量从「最慢」换成「完成数」,长尾只会推迟它自己所在的那个训练步,不会拖住整批。
  • 跨版本是什么意思? 一条 128 轮的轨迹可能持续到模型已经更新好几次。这条轨迹的前段由旧策略生成、后段由新策略生成,但它进入训练时被当作一次采样的整体。论文未量化这部分陈旧带来的策略偏差。
  • 合成题和检查题都去掉了一次。 合成阶段剔掉「QwQ 不用工具就能答对」的题;开源数据阶段剔掉「弱模型 16 次中 ≥50% 答对」的题。两处过滤都在回答同一个问题:这道题到底在检验搜索能力,还是在检验参数记忆?
  • 图中数字:14,107、304k → 16k、35k 来自 §3.2 与 §4.1;轮次上限 32 / 128 来自 §4.1。

一条轨迹的每一步都是「LLM 生成 → 工具返回」的串行循环,时间轴上的长度就是这条链的长度。下面的模拟用论文 Fig. 7 的 12 条轨迹,把两种调度画在同一时间轴上,好让「空转」可见。

已结束的轨迹 仍在跑,被训练步提前抛下 长轨迹 Traj 7 训练步
当前调度

时间单位取 Fig. 7 中最短轨迹(Traj 1)的长度为 1。批同步:训练步 N 需要 1,2,3,4,5,6,8 全部完成(t=7),最长的 Traj 7 在 t=10 结束;全异步:训练步 N 在 t=3 已可启动,收集到 1,2,3,4,6,8,9 共 7 条,Traj 7 跨版本继续。

这个模拟把问题量化了:同一批轨迹,训练步的启动时间从 t=7 提前到 t=3——少等的 4 个时间单位几乎正好等于 Traj 7 超出其他轨迹的那一截。这正是论文声称「近满利用率」的来源:不是让轨迹变短,而是让等待不再由最长者决定。注意 t=3 时只有 7 条轨迹到齐,缓冲区门槛比同步的小,这也是全异步的收益所在。

06

同一基座,同一道题,答对率从 48 提到 59

重点看两处对照:v1 对同尺寸开源智能体,v1 → v2 对同一系统只换训练题目难度。

挑战基准(LLM-as-Judge)QwQ-32B 直答Search-o1 (QwQ)v1v2v2 Pass@4
GAIA Avg@4 ↑23.148.152.858.774.7
xBench-DeepSearch Avg@4 ↑11.840.342.151.175.0
Frames Avg@4 ↑29.963.670.974.585.5
HLE-500 Pass@1 ↑———21.5—

数字取自 Table 4 与 Table 5(Table 5 只列 v2 的 Pass@1)。表 4 中还有 Search-R1-32B(GAIA 28.6、xBench 19.5、Frames 44.1)等基线,均低于 v1。

v1 → v2 是数据分布带来的纯收益:两阶段的第二阶段只保留需要 ≥5 次工具调用的题,模型在三个基准上又各涨了一截(GAIA +5.9、xBench +9.0、Frames +3.6)。这比换更强的系统更说明问题:难度的分布本身就能把长程能力推上去。

与商用系统、外部总结、测试时扩展Table 5 的零样本迁移

ASearcher 训练时只用一个模型,但网页摘要环节可以换成外部模型:用 DeepSeek-V3 做时摘要,v2 在 GAIA / xBench / Frames / HLE-500 上分别升到 60.3 / 56.4 / 76.6 / 23.4。

测试时每道题独立跑 K=16 次、用 DeepSeek-V3 聚合结论,四项分别达到 71.8 / 75.0 / 83.4 / 24.6。作为参照,官方报告里的 Kimi-Researcher 是 xBench 69.0、Frames 78.8;Claude-4-Sonnet 是 GAIA 68.3、xBench 64.6。

这是「能力可达」而非「训练即超出商用」:GAIA 71.8 靠的是 16 倍推理次数,不是单个 rollout 的 58.7。

训练动态:长程行为是长出来的,但不是一次长齐

Fig. 6 显示 Web-QwQ 的工具调用随训练上升,到第 200 步附近平均最多约 40 次,个别轨迹峰值约 70 次,单条轨迹输出 token 最多超过 150k。论文摘要里写的「超过 100 次、超过 400k」出现在 Fig. 1 的训练统计中,观测尺度与主文不同;本页数字以主文 §4.3 为准。

基座模型这一侧有两个更值得注意的对比:7B 学不会网页浏览,14B 能在训练后段学会打开网页答难题——作者推测是 7B 容量不足以稳定地压缩长网页;另外高质筛选后的训练集让 7B 的搜索查询数上到 6(高于 Search-R1、R1-Searcher 报告的数字)。

一个反直觉发现:验证行为出现在第二阶段

Fig. 11 跟踪「alternatively / however / wait」这类反思词,和「doc / mention」这类指向外部资料的词。前者在训练全程稳步上升;后者在第 200 步之后才明显上升——正好是第二阶段、只保留 ≥5 轮难题的时候。换句话说,光是给更多轮数并不会自动学出「回头验证」;把训练题换成必须验证才能做对的题,它才出现。

GAIA 案例:同一道题上的三种搜索行为

Search-R1-32B

拆不开

训练轮数只有 4,只能把「多变量」当成一句话搜;对搜索结果过度自信,出现幻觉,未知量一个也没解决。

Search-o1 (QwQ)

搜得广,收不拢

能靠大量调用找到四个相关实体,但容易漏掉关键句;一旦得出错误结论,即使后面碰到证据也不回头。没有验证步骤。

ASearcher-Web-QwQ

逐站核对

拆分精确查询、一次只读一个网站、列出所有候选答案逐一分析;搜不到直接证据时会跨文档推理;在报出「Mice」之后还会多花几轮确认。

07

它把「能走多远」打开,但没把「为什么能走对」解释清楚

按论文自己的数据和设计反推,至少有四处地方,它的收益不等于它声称的所有原因。

边界一

异步与长轮数、难题数据是纠缠在一起变的

论文没有把异步系统、128 轮上限、两阶段课程、合成数据分别做消融。v1 → v2 的增益来自难度筛选(数据),而 v1 相对基线既换了训练系统,也换了数据来源。v4 的案例里,故事读起来像一个因果链,但其中每一环的贡献都没有单独测量。

边界二

跨版本轨迹的策略偏差没有被量化

全异步允许长轨迹跨越多个模型版本(≥128 轮的轨迹几乎必然如此),GRPO 的组内比较里可能混着不同策略的样本。这在短轨迹的推理任务里是常见近似,但这里是这篇论文的「长程」本身,偏差恰恰在最关键的那部分。论文只在理念上依赖稀疏终局奖励来缓解,没给超参之外的稳定性数据。

边界三

忠实度:不同模型执行同一方法的差距比方法本身更大

7B 学不会网页浏览,14B 才行;7B/14B 的上限只有 32 轮,Web-QwQ 才有 128 轮。方法能在小模型上复现,但长程能力的涌现依赖于 base 模型的容量。论文自己的假设也是「容量不足、无法稳定压缩长网页」。

边界四

算力与评测口径:读数要分清

16k H800 小时的两个阶段预算,是全部开源项目级别而不是可随手复现的开销。GAIA 用文本专用子集的 103 题、其余用官方测试集全量,这种「GAIA 103 题」的口径比排行榜常见的 GAIA 500 题口径窄,数字不宜跨基准直接比较。另外,Avg@4 / Pass@4 来自 4 个随机种子,论文未报告方差。

延伸的未解问题

一句话总结:ASearcher 没有发明新的 RL 算法,它做的事情是把「训得动」和「有题训」这两个前置条件先补齐,然后再用长轮数去解锁能力。「训得动」来自把批同步的时钟换成完成数,「有题训」来自把种子题变得不得不一直搜。这两件事的贡献和代价都还没有拆开,但对想要训练长程搜索智能体的人来说,它们是两个绕不开的工程前提。