【Agent】DeerFlow Researcher:系统架构与执行流程(基于真实 Trace 深度解析)

本文档基于 researcher 阶段 Trace(包括 continue_to_running_research_team_trace.jsonresearch_team_trace.jsonreporter_trace.jsonreporter_chatOpenAI_trace.json),系统分析 DeerFlow 在 research 执行阶段的架构、消息编排、工具链与调度闭环,并结合实际耗时/令牌特征提出优化建议。面向工程实现与运维调优读者。

时序图

1. 研究阶段的定位与多步编排

  • 在 Planner 产出 Plan 且经人审 [ACCEPTED] 后,工作流进入 research_team。系统会按 current_plan.steps 顺序寻找首个未完成步骤。
  • continue_to_running_research_team 根据步骤的 step_type 路由:
    • researchresearcher 节点;
    • processingcoder 节点。
  • 你的截图表明:共 3 个 research 步骤,researcher 被多次调用;每步完成后回到 research_team,再继续下一步,直至全部完成或 Planner 回收重规划。

2. 执行链路(结合 Trace)

  • 高层链路:human_feedback → research_team → continue_to_running_research_team → researcher → research_team → ... → reporter
  • 典型单次 researcher 内部链路:
    1. agent → call_model → RunnableSequence → Prompt → ChatOpenAI(gpt-4.1)(思考/决策)
    2. should_continue(判定是否需要调用工具)
    3. tools → web_search(外部检索,受 max_search_results 约束)
    4. 再次 agent → call_model ...(整合检索结果并生成步骤输出)
    5. 返回 research_team,将结果写入 step.execution_res

3. Researcher 的输入/输出与状态

  • 输入(state 关键字段):current_planobservationsresourceslocale
  • 组装消息要点:
    • 标题:# Research Topic + 计划标题;
    • 已完成步骤:# Completed Research Steps,用 <finding>...</finding> 包裹结果,便于压缩与引用;
    • 当前步骤:包含 TitleDescription,明确采集要点;
    • 资源提醒(若有 resources):要求优先使用本地检索工具(RAG),并追加引用规范提醒;
    • 语言环境:locale
  • 输出回写:将 LLM 生成文本写入当前 step.execution_res,并把该文本追加到 observations,供后续步骤/Reporter 复用。

4. 工具链与扩展能力

  • 默认工具:
    • web_search(数量由 max_search_results 控制)
    • crawl_tool(可读性抽取与正文提取)
  • 资源驱动检索:当 resources 非空,会插入 retriever_tool 于工具首位,强制优先本地检索(RAG)。
  • MCP(Model Context Protocol):若配置 mcp_settings,会连接多个 MCP Server 动态加载其 enabled_tools 并注入当前 agent;工具描述会加 "Powered by serverName" 标识,提升可观测性。
  • 递归深度:AGENT_RECURSION_LIMIT 控制代理自治步数(默认 25),非法值自动回退并告警。

5. 多步循环与协同模式

  • research_team 负责循环调度:
    • 找到第一个未完成步骤,按 step_type 分流至 researcher/coder
    • 所有步骤完成或 Planner 回收后,流转 reporter
  • 职责解耦:
    • research 仅做采集/溯源与事实性描述,不做复杂计算;
    • processing 交由 coder 做归并、表格对比、评分与计算。
  • 观察结果滚动:已完成步骤的 execution_res 作为 <finding> 注入下一步,形成"由浅入深"的研究链路。

6. 稳定性与容错

  • 工具异常:工具层异常会被 agent 捕获并回落到 LLM 决策;建议在工具实现中对网络错误/无结果做显式提示。
  • 令牌与成本:Researcher 令牌中等,Reporter 可能较大;建议 Researcher 输出"结构化要点 + 引用",降低 Reporter 重复生成成本。
  • 规划不充分:若 description 过泛易导致"泛搜",建议 Planner 明确信息源与量化口径。

7. 性能与成本优化(结合本次 Trace)

  • 控制检索开销:
    • 合理设置 max_search_results(本次 web_search ≈ 7--24s/次);
    • 可启用 enable_background_investigation 进行首轮暖场,减少 Researcher 探索轮次。
  • 降低 Reporter 负载:
    • 让 Researcher 输出"要点+引用+最小示例",Reporter 侧强调"表格优先 + 引用集中"。
  • 工具缓存与去重:
    • 对相同 URL 的 crawl_tool 结果缓存;
    • 查询语句去重,避免重复搜索。
  • 递归限制:
    • 简单任务时将 AGENT_RECURSION_LIMIT 设置为 8--12,缩短尾延迟。

8. 与 Planner/Reporter 的衔接要点

  • Planner:在 description 中具体化"信息源与指标口径",提升 Researcher 命中率与一致性。
  • Reporter:鼓励表格化对比与末尾集中式引用列表,减少内文 inline 引用。
相关推荐
世界那么哒哒18 小时前
LangChain v1.0+ 如何构建自定义中间件来拦截和控制 Agent 执行过程
langchain·agent
常先森21 小时前
【解密源码】 RAGFlow 切分最佳实践- paper 篇
架构·llm·agent
温柔哥`1 天前
PANDA:通过代理型 AI 工程师迈向通用视频异常检测
大模型·agent·rag·vad·视频异常检测·工具调用·mllms
后端小肥肠2 天前
别再找提示词了!n8n+Coze+Sora2:扔个链接,AI自动反推,爆款视频直存本地!
aigc·agent·coze
Joker-Tong2 天前
大模型数据洞察能力方法调研
人工智能·python·agent
AI大模型2 天前
12 节课解锁 AI Agents,让AI替你打工(一): 简介
程序员·llm·agent
AI大模型2 天前
12 节课解锁 AI Agents,让AI替你打工(二):从零开始构建一个Agent
程序员·llm·agent
夕阳2302 天前
蓝牙核心系统架构介绍
系统架构·#蓝牙开发·#蓝牙技术·#蓝牙核心系统·#ble低功耗蓝牙
leafff1232 天前
一文读懂:如何选择适合的RAG系统架构设计模式?
设计模式·自然语言处理·系统架构
Ashlee_code2 天前
全球动荡下的金融科技突围:TRS收益互换与场外个股期权系统架构全景解析
科技·金融·系统架构·跨境·kyc·金融机构·场外期权