WebResearcher:释放长时程代理的无界推理能力
本文介绍了WebResearcher,一个用于构建长时程代理的新型框架,通过两个关键组件实现:(1) IterResearch,一种迭代深度研究范式,将深度研究重新表述为马尔可夫决策过程,代理定期将发现整合到不断发展的报告中,同时保持专注的工作空间——克服了现有单上下文方法中的上下文窒息和噪声污染问题;(2) Web…
文本版 · 供搜索与朗读
WebResearcher:释放长时程代理的无界推理能力
WebResearcher:释放长时程代理的无界推理能力
摘要
本文介绍了WebResearcher,一个用于构建长时程代理的新型框架,通过两个关键组件实现:(1) IterResearch,一种迭代深度研究范式,将深度研究重新表述为马尔可夫决策过程,代理定期将发现整合到不断发展的报告中,同时保持专注的工作空间——克服了现有单上下文方法中的上下文窒息和噪声污染问题;(2) WebFrontier,一个可扩展的数据合成引擎,通过工具增强的复杂性升级生成高质量训练数据,能够系统性地创建弥合被动知识回忆和主动知识构建之间差距的研究任务。值得注意的是,我们发现来自我们范式的训练数据显著增强了传统单上下文方法的工具使用能力。此外,我们的范式通过并行思考自然扩展,实现了多代理并发探索以获得更全面的结论。在6个具有挑战性的基准测试中的广泛实验表明,WebResearcher实现了最先进的性能,甚至超过了前沿的专有系统。
1. 引言
通用人工智能(AGI)的追求历来专注于扩展模型以获取大量被动知识。然而,这种以知识为中心的方法可能达到一个关键限制:虽然模型可以记忆和回忆信息,但它们难以主动发现、验证和综合来自外部来源的新知识——这是人类智能的基本能力。这一限制催化了向主动自主代理系统的范式转变,这些系统模拟人类研究工作流程。这些系统不是仅仅依赖预训练的知识,而是通过自主分解复杂问题、协调复杂的工具使用以及将不同的发现综合成连贯的、基于证据的叙述来动态构建理解。这类新兴系统,通常被称为深度研究,代表了AGI的关键一步,弥合了被动知识库和主动知识构建者之间的差距。
最近的深度研究系统,如OpenAI的Deep Research、Google的Gemini Deep Research、Grok DeepSearch和Kimi-Researcher,已经在包括Humanity's Last Exam (HLE)和BrowseComp在内的具有挑战性的基准测试中展示了突破性性能。这些专有系统的成功推动了显著的开源开发。最近的开源努力,包括WebThinker、WebShaper和WebSailor,在深度研究任务中表现出竞争力。值得注意的是,这些开源实现已经收敛到一个非常相似的架构模式:单上下文范式,它将所有检索到的信息和中间推理步骤连续累积到一个单一的、不断扩展的上下文窗口中。虽然这种线性累积策略看起来直观且已显示出初步成功,但更深入的分析揭示它从根本上限制了深度研究代理的潜力。具体来说,这种普遍范式存在两个关键限制,随着研究复杂性的增长,这些限制变得越来越严重:
认知工作空间窒息:不断扩展的上下文逐渐限制了模型进行深度推理的能力,因为固定的上下文窗口被累积的数据主导,而不是主动思考空间,迫使过早得出结论。
不可逆的噪声污染:没有过滤或修订早期内容的机制,不相关的信息和初始错误在整个过程中持续存在,稀释信号质量并传播随时间复合的偏见。
这些限制揭示了一个悖论:随着深度研究代理收集更多信息来解决复杂问题,它们的单上下文架构在处理和推理这些信息方面变得越来越无效。
2. WebResearcher概述
WebResearcher是一个用于构建长时程代理的新型框架,通过两个关键组件实现:
autorenewIterResearch:迭代深度研究范式
IterResearch将深度研究重新表述为马尔可夫决策过程(MDP),与遭受无界状态扩展和噪声污染的单上下文方法不同,IterResearch定期将其发现整合到综合报告中并重建其工作空间,在任意研究深度下保持知识的连续性和推理的清晰度。具体来说,IterResearch通过离散的轮次运行,其中每个状态只包含基本组件:研究问题、综合所有先前发现和当前研究进展的不断发展的报告,以及最近工具交互的即时上下文。这个不断发展的报告作为代理的中央记忆——通过每一轮新见解与现有知识的整合而逐步完善。在轮次之间,状态转换函数保留这个更新的报告,同时丢弃短暂信息,确保马尔可夫性质同时防止信息丢失。这种周期性综合是我们范式的核心:它不仅保留基本知识以指导后续推理,还为每个阶段保持专注的认知工作空间,有效防止窒息和噪声传播。因此,IterResearch实现了单上下文系统无法实现的——在整个研究过程中持续高质量的推理,使代理能够通过迭代细化而不是详尽的单次累积来追求任意复杂的调查。
data_objectWebFrontier:可扩展数据合成引擎
为了解决训练深度研究代理的关键数据稀缺瓶颈,我们开发了WebFrontier,一个可扩展的数据合成引擎,利用增强多样化外部工具的大型语言模型,为复杂研究任务系统性地生成高质量训练数据。WebFrontier解决了代理AI开发中的一个基本挑战:如何在保持事实准确性和可验证性的同时创建高质量和大规模的训练数据。我们的方法采用三阶段迭代工作流程——从多样化语料库生成种子、工具增强的复杂性升级和严格的质量控制——产生有效弥合基线模型与其工具增强对应物之间能力差距的任务。该引擎的核心机制涉及一个自引导过程,其中工具增强代理逐步将简单问题精炼为需要多源综合、跨领域推理和计算验证的研究问题。这种系统方法使得能够生成探索不同复杂性水平的大规模数据集,同时确保事实基础。合成数据作为通过多阶段训练IterResearch的基础,使模型能够获得强大的工具使用能力和复杂的推理技能。
merge_type研究-合成框架
在推理时间,我们引入了基于IterResearch范式的研究-合成框架。该框架由两个阶段组成:并行研究和集成合成。在并行研究阶段,多个研究代理按照IterResearch方法并发解决目标问题,每个代理得出最终报告和预测答案。随后,在集成合成阶段,单个合成代理整合这些发现,产生更全面和稳健的结论。通过从最终报告而不是整个研究轨迹合成,合成代理可以在受限上下文中处理更多样化的研究路径。这种方法有效地利用了测试时间扩展,最大化了复杂深度研究场景中发散探索的收益。
3. IterResearch:迭代深度研究范式
深度研究代理旨在在几分钟内完成人类研究人员需要数小时才能完成的工作。这种长时程任务需要导航异构证据源,协调多轮工具使用,并在不断扩展的信息体中保持连贯的推理链。然而,这种复杂性直接挑战了当前研究代理采用的单上下文、线性累积范式,它受到两个基本限制:
认知工作空间窒息:随着上下文窗口充满累积数据,模型进行主动推理的能力减弱。固定的上下文预算被历史信息主导,而不是为深度思考提供空间,当窗口接近其限制时迫使过早得出结论。
不可逆的噪声污染:没有过滤或修订早期内容的机制,不相关的信息和初始错误在整个过程中持续存在。这种噪声累积稀释信号质量并传播随时间复合的偏见,降低整体研究质量。
为了克服这些限制,我们提出了IterResearch,它将深度研究重新表述为具有周期性状态重建的马尔可夫决策过程。IterResearch不是维护不断扩展的上下文,而是通过离散的轮次运行,其中每个状态只包含基本组件。IterResearch的关键见解是用迭代综合和重建替代线性累积。每个研究轮次在一个专注的工作空间上运行,该工作空间通过不断发展的报告保持清晰性,该报告作为代理的中央记忆。在每个轮次i中,代理的状态si由三个组件组成:(1) 原始研究问题q,(2) 来自前一轮的不断发展的报告Reporti-1(i=1时为空),(3) 最近的Actioni-1及其Tool Responsei-1(如果i>1)。这种紧凑的状态表示确保马尔可夫性质,同时保持决策所需的所有基本信息。
为了有效实现这种迭代范式,我们定义了三个结构化的元信息类别——Think、Report和Action——指导代理在每一轮中的决策:
Python
# IterResearch状态结构
class IterResearchState:
def __init__(self, question, previous_report=None, last_action=None, last_tool_response=None):
self.question = question # 原始研究问题
self.report = previous_report or "" # 不断发展的报告
self.last_action = last_action # 最近的行动
self.last_tool_response = last_tool_response # 最近的工具响应
# 代理响应结构
class AgentResponse:
def __init__(self, think, report, action):
self.think = think # 思考过程
self.report = report # 综合报告
self.action = action # 行动(工具调用或最终答案)
Think:这个组件作为代理的认知草稿板,代理在其中阐述其内部推理过程。代理分析当前状态(工作空间),评估其先前行动的结果,反思研究进展,并为其下一个行动制定计划。这个组件确保代理的决策对当前状态是透明和可解释的,并且不直接用于后续轮次以防止混乱。
Report:我们范式的核心,这个组件代表代理不断发展的中央记忆。代理不是附加原始数据,而是将新发现与现有知识综合,产生连贯的、高密度的摘要。这个更新的报告捕获迄今为止发现的所有关键信息,并用作构建下一轮工作空间的主要组件。
Action:代理在当前轮次的具体行动,采用两种形式之一:
工具调用:与外部环境交互的特定命令,如调用搜索引擎或代码解释器,以收集新信息。
最终答案:终端行动,当代理确定它有足够的证据解决初始问题时生成。这结束了研究过程。
我们的IterResearch范式从根本上将深度研究重新构想为迭代综合过程而不是线性累积。完整的研究通过离散的轮次展开:从研究问题开始,代理生成其初始Think-Report-Action三元组;在后续轮次中,它从问题、先前报告和最新工具响应重建专注的工作空间,然后产生更新的综合。这种报告综合是我们方法的基石——代理不仅附加新发现,而且主动将它们与现有知识整合,解决冲突并更新结论,以保持连贯的、高密度的摘要,捕获所有关键发现同时过滤掉噪声。过程持续进行,直到代理确定已收集足够的证据,产生最终答案。
这种迭代范式提供了在长时程研究中复合的结构优势。通过保持恒定大小的工作空间而不管研究深度如何,IterResearch在整个过程中保持完整的推理能力——当单上下文系统因上下文膨胀而收益递减时,我们的方法无论进行十轮还是百轮调查都保持一致的性能。周期性综合充当智能过滤器,保留信号同时消除噪声,通过报告修订实现错误恢复,并确保单调信息增益。通过这种以不断发展的报告为中心的纪律性状态维护,IterResearch将深度研究从详尽的单次累积转变为迭代细化,实现理论上无界的研究深度,同时保持效率和质量——这些能力在单上下文范式下是根本不可能的。
4. WebFrontier:用于推进代理智能的可扩展数据引擎
代理智能的进步,以复杂推理和自主工具使用能力为特征,受到其训练数据质量和复杂性的根本限制。为了解决这一限制,我们引入了一个可扩展的数据引擎,旨在合成大规模、高质量的数据集,系统地探测和扩展当前模型的能力。我们的引擎利用一个协作的多代理框架,组织成一个三阶段迭代工作流程:(1) 种子数据生成,(2) 迭代复杂性升级,(3) 严格的质量控制。这个过程协调一组专门的代理来生成逐渐更具挑战性的任务。
4.1 阶段1:种子数据生成
该过程从多样化的、多学科的当代文档语料库开始,包括网页、学术论文和电子书。摘要代理通过释义内容、去除伪影(如HTML标签)并将文本提炼成信息密集的块来预处理这个语料库。为了生成需要非平凡推理的初始任务,我们通过组合性地分组这些主题相关的块来形成复合单元。然后,项目编写代理被提示使用这些复合单元生成种子问题-答案(QA)对。这些初始对被设计为需要多源信息综合,从而为后续的复杂性升级阶段提供基础。
4.2 阶段2:迭代复杂性升级
数据引擎的核心是由项目编写代理协调的自引导精炼循环。在这个阶段,代理配备了一套外部工具:(i) 通用网络搜索,(ii) 学术文献搜索,(iii) 网页浏览器,和(iv) Python代码解释器。对于每个种子QA对,工具增强代理迭代地进化问题和答案,以增加它们的认知复杂性并将其范围扩展到原始上下文之外。这种迭代进化由四个关键操作驱动。最初,代理执行知识扩展,查询外部来源以扩大问题的范围。然后它进行概念抽象,分析材料以提炼更高层次的原则并识别微妙的跨领域关系。为了确保正确性,通过多源交叉验证实现事实基础,增强答案的准确性和深度。最后,代理利用Python环境进行计算公式化,制定需要定量计算或逻辑模拟的问题。
Python
# WebFrontier复杂性升级过程示例
class ComplexityEscalationAgent:
def escalate_complexity(self, qa_pair):
# 知识扩展
expanded_knowledge = self.search_external_sources(qa_pair.question)
# 概念抽象
abstracted_concepts = self.extract_high_level_principles(expanded_knowledge)
# 事实基础
verified_facts = self.cross_validate_facts(abstracted_concepts)
# 计算公式化
computational_problem = self.formulate_computational_problem(verified_facts)
# 生成更复杂的QA对
complex_qa = self.generate_complex_qa(computational_problem)
return complex_qa
这种迭代过程创造了一个良性循环,其中在一个迭代中生成的更复杂的QA对成为下一个迭代的种子。这实现了任务复杂性的受控和系统性升级。
4.3 阶段3:严格的质量控制
为了确保最终数据集高质量并精确校准到目标难度,所有生成的QA对都经过由专门代理管理的严格验证过程。首先,以基线模式运行的问题解决代理(无工具访问)尝试回答每个问题。任何在此步骤中正确回答的对被认为对我们的目标复杂性水平太简单,并被过滤掉。其次,剩余的具有挑战性的对被传递给同一个问题解决代理,现在以高级模式运行,配备工具,镜像我们目标模型的能力。代理在此模式下成功解决的对被指定为高价值、复杂推理实例,并保留用于最终数据集。相反,这个高级代理未能解决的任何对被认为是不可解决的或可能有缺陷的,因此被丢弃或标记给专家人工审查。在整个验证管道中,判断代理自动评估求解器输出与真实答案的正确性。同时,相似性评分器代理过滤掉与现有数据语义冗余的新生成对,从而保持数据集多样性。
总之,我们的数据引擎旨在实现三个主要目标:(1) 高效生成大量位于基线模型与其工具增强对应物之间"能力差距"内的复杂任务;(2) 确保所有生成的任务在保持事实正确性和可验证性的同时具有高复杂性;(3) 系统性地映射和扩展高级LLM代理的推理和工具使用前沿。
5. 训练和测试时间优化
5.1 拒绝采样微调
为了训练IterResearch,我们采用拒绝采样微调(RFT)方法,利用提示大型语言模型遵循我们迭代范式的结构化格式生成的良好形成的轨迹。
轨迹生成和过滤:对于每个由研究问题q(i)和参考答案a(i)组成的训练实例,我们提示LLM生成多个遵循IterResearch范式的研究轨迹。每个轨迹τ(i) = {(s(i)₁, r(i)₁, o(i)₁), ..., (s(i)ᵢ, r(i)ᵢ, o(i)ᵢ)}由Tᵢ轮组成,其中s(i)ⱼ表示轮次j的状态,r(i)ⱼ表示结构化响应(Think-Report-Action),o(i)ⱼ表示相应的工具观察。我们应用严格的拒绝采样,仅保留最终答案与参考a(i)完全匹配的轨迹,确保训练数据既体现正确的推理过程又体现准确的结论。
训练目标:模型学习在迭代研究上下文条件下生成结构化响应。具体来说,在每个轮次j,模型必须在给定当前状态s(i)ⱼ的情况下产生r(i)ⱼ。训练目标最大化所有接受轨迹上的条件对数似然:
Mathematical
L(θ) = ∑[i=1 to K] ∑[j=1 to Tᵢ] log pθ(r(i)ⱼ | s(i)ⱼ₋₁)
其中K表示接受轨迹的数量,θ表示模型参数。关键是,这个目标强制执行我们范式的马尔可夫性质——每一轮的生成仅依赖于直接先前的状态,而不是整个历史。在训练期间,我们仅对模型生成的响应令牌r(i)ⱼ计算梯度,将观察o(i)ⱼ视为给定上下文。这确保模型学习推理和综合,而不是预测工具输出,保持推理代理和外部工具之间的清晰分离。
5.2 强化学习
为了进一步增强IterResearch的研究能力,我们采用强化学习来优化模型探索多样化推理路径的能力,同时在每一轮保持高质量的综合。我们迭代范式的一个关键优势是每个轨迹自然分解为多个训练样本——每个研究轮次一个——而单上下文方法每个轨迹只产生一个样本。具体来说,对于每个具有G次滚出的研究问题q(i),轨迹g在T(i)g轮次上展开,其中每个轮次j产生一个包含状态、响应和工具响应的训练元组(s(i)g,j, r(i)g,j, o(i)g,j)。这种分解产生丰富的训练语料库:
Mathematical
C(i) = {(s(i)g,j, r(i)g,j) : g ∈ [1, G], j ∈ [1, T(i)g]}
每个问题包含∑[g=1 to G] T(i)g个样本。在所有N个训练问题上聚合,我们的迭代范式生成总语料库:
Mathematical
Ctotal = ∪[i=1 to N] C(i), |Ctotal| = ∑[i=1 to N] ∑[g=1 to G] T(i)g
与单上下文方法相比,这代表了实质性的数据放大,后者只会产生N×G个样本。然而,可变轨迹长度引入了一个实际挑战:由于不同的T(i)g值,总样本数在批次之间变化,与分布式训练对固定批次大小的要求冲突。为了在保持数据效率的同时解决这一问题,我们采用最小损失下采样,将整个训练语料库减少为不超过原始计数的最大数据并行(DP)大小倍数:
Mathematical
|Ctrain| = ⌊|Ctotal| / DPsize⌋ × DPsize
这种方法确保跨设备均匀分布,同时最小化数据损失(通常
