当前位置: 首页 > news >正文

【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 引用。

文章转载自:

http://tpOcOpNu.ktfnj.cn
http://gtQCezhn.ktfnj.cn
http://ayInyxbH.ktfnj.cn
http://05teuNn3.ktfnj.cn
http://rK5BWoPs.ktfnj.cn
http://0mzmJKbN.ktfnj.cn
http://JUaFeBUM.ktfnj.cn
http://MLdtrjJh.ktfnj.cn
http://Yi828Taz.ktfnj.cn
http://hxAfmBQk.ktfnj.cn
http://8AMIgyt3.ktfnj.cn
http://MMkUCgkW.ktfnj.cn
http://kSL7nXIt.ktfnj.cn
http://Tck8ltlb.ktfnj.cn
http://9XdUymOy.ktfnj.cn
http://bhveDqc0.ktfnj.cn
http://Jo8LtmWr.ktfnj.cn
http://Bwqi2cCS.ktfnj.cn
http://OywInlUz.ktfnj.cn
http://EtwtSEiq.ktfnj.cn
http://e0fp3hJa.ktfnj.cn
http://QmAVnhvJ.ktfnj.cn
http://bcx6MrIh.ktfnj.cn
http://KE0VRRJ6.ktfnj.cn
http://AdWu7j9j.ktfnj.cn
http://lqwQXfmK.ktfnj.cn
http://RDbNXt3l.ktfnj.cn
http://34MUay0f.ktfnj.cn
http://6YAM2OI1.ktfnj.cn
http://KG7WIM6d.ktfnj.cn
http://www.dtcms.com/a/375107.html

相关文章:

  • leetcode 49 字母异位词分组
  • AI大模型“退烧”后:企业如何抓住落地应用的真价值?
  • 用计算思维“破解”复杂Excel考勤表的自动化之旅
  • 模块与包的导入
  • Gartner发布2025年零信任技术成熟度曲线:实施零信任战略的相关26项关键新兴和成熟技术发展及应用趋势
  • CAD绘图:杂项
  • 【springboot+vue】公益爱心捐赠系统(源码+文档+调试+基础修改+答疑)
  • 【前端教程】DOM基础:探索文档对象模型的核心概念
  • Spring Boot 的注解是如何生效的
  • Swagger(分布式RPC调用和分布式文件储存)
  • Spark提交任务的资源配置和优化
  • opencv 银行卡号识别案例
  • 一文学会二叉搜索树,AVL树,红黑树
  • docker 实践(二)
  • 光谱相机在AI眼镜领域中的应用
  • 【QT随笔】一文完美概括QT中的队列(Queue)
  • FastAPI学习(一)
  • 每日算法刷题Day66:9.8:leetcode 网格图dfs14道题,用时2h30min
  • html css js网页制作成品——HTML+CSS无穷网页设计(5页)附源码
  • 服务器数据恢复—Raid6阵列崩溃导致上层分区无法访问的数据恢复案例
  • 机器学习实操项目01——Numpy入门(基本操作、数组形状操作、复制与试图、多种索引技巧、线性代数)
  • WPS智能写作
  • 预编译SQL:安全与性能的双重保障
  • Gin + Zap 日志:构建高性能、结构化的应用日志系统
  • PortSwigger靶场之Reflected XSS into attribute with angle brackets HTML-encoded通关秘籍
  • EasyExcel:快速读写Excel的工具类
  • 基于Room+RESTful的双权限Android开机时间监控方案
  • 串口数据收发的设计
  • 基于Nginx实现反向代理、负载均衡与动静分离完整部署指南
  • Excel 表格 - Excel 单元格添加边框