DeerFlow Backend 架构分析:记忆、工具与技能系统
本文档分析了 deer-flow 后端(基于 LangGraph 开发,主要代码位于 packages/harness/deerflow 下)的核心三大系统实现机制。
1. 记忆系统 (Memory System)
Section titled “1. 记忆系统 (Memory System)”记忆系统被精心设计为“短期(会话)”与“长期(全局)”两个层级:
1.1 短期记忆(基于 Thread Checkpointer)
Section titled “1.1 短期记忆(基于 Thread Checkpointer)”通过 LangGraph 原生支持的 checkpointer/async_provider.py,记录特定对话流(Thread ID)的每一次状态流转(状态机快照)。这意味着用户刷新页面或断开连接后,对话上下文依然完整保留且可追溯。
1.2 长期异步记忆(全局档案提取)
Section titled “1.2 长期异步记忆(全局档案提取)”核心分布在 agents/memory/storage.py 与 agents/middlewares/memory_middleware.py:
- 无感更新(中间件拦截):
MemoryMiddleware会拦截所有对话记录。为了节省 Token 并消除噪音,它会精准过滤掉内部大模型思考链和工具调用的中间过程记录,只保留纯人类提问和 AI 最终回复。 - 队列防抖处理:整理后的“干净”对话记录会被推入
queue.py的内存防抖队列中。这种设计有效防止了高频、高并发聊天引发的后端计算风暴。 - 结构化档案与 LLM 提取:后台异步消费队列,调用 LLM 进行记忆提取,将其存储为持久化的结构化 JSON 档案(保存在本地配置路径内)。保存的档案节点非常精细,包括:
workContext:工作上下文personalContext:个人偏好习惯topOfMind:近期关注重点(脑海优先区域)history:包含recentMonths、earlierContext等长期和近期时间线归纳facts:用户相关的客观事实规律摘要
这种设计使得 Agent 具备了跨越时间和窗口了解用户的能力。
2. 工具系统 (Tool System)
Section titled “2. 工具系统 (Tool System)”工具系统具有极高的模块化和扩展性,主要分布在 tools/ 和 community/ 等目录下:
2.1 Builtins (内置原生工具)
Section titled “2.1 Builtins (内置原生工具)”位于 tools/builtins 目录。这些通常是需要最快响应速度、最底层依赖的基础计算工具等。
2.2 Community (外部社区整合功能)
Section titled “2.2 Community (外部社区整合功能)”高度隔离的第三方服务接入层:
- 多模态搜索:集成了
ddg_search(DuckDuckGo)、tavily高级搜索引擎以及image_search图片搜索。 - 安全沙箱执行环境:如
aio_sandbox,允许大模型生成的代码在一个隔离安全的环境(可能支持了本地或远程后端)中真机运行。 - 文档读取工具:诸如读取复杂网页的
firecrawl爬虫工具等。
2.3 MCP (Model Context Protocol) 扩展协议
Section titled “2.3 MCP (Model Context Protocol) 扩展协议”目录结构涵盖 mcp/ 和配置文件 config/acp_config.py,标志着应用引入了工业界最新的大模型上下文通信标准协议(MCP)。这使得该后端可以在未来轻松地“挂载”诸如本地数据库读取器、VS Code 本地环境探针等强大的动态独立工具,彻底解耦代码。
3. 技能系统 (Skills System)
Section titled “3. 技能系统 (Skills System)”通过分析 skills/ 目录下的组成部分(loader.py, parser.py, installer.py, validation.py, types.py),可以发现“技能(Skills)”和传统的 Python 代码“工具(Tools)”在架构地位上存在本质差异:
3.1 定义上的差异
Section titled “3.1 定义上的差异”技能是一种软编码(Soft-coded)的注入型操作规范(SOP)或声明式模板,而非特定的 Python 执行逻辑。根据 parser.py 的源码实现,技能具有及其严格的物理约束:
- 文件名必须严格为:
SKILL.md - 文件头部必须包含标准的 YAML 前置元数据(Front-matter,需包含
name与description),用于大模型技能发现。
3.2 动态加载生命周期
Section titled “3.2 动态加载生命周期”- 解析(Parser):运行时热解析特定格式的外部文件资源。
- 静态校验(Validation):由于技能文件具备特定类型(见
types.py),系统会在挂载前通过 Schema 校验其参数与输入输出定义的合法性。 - 注册安装(Installer & Loader):经验证后的技能会被挂载进大模型(Lead Agent 等)的 Prompts 集合或能力感知池中。
3.3 核心意义
Section titled “3.3 核心意义”这种极致设计意味着,在不需要后端工程师改动或部署一行 Python 业务代码的情况下,仅通过上传、配置新的技能文件库,就可以瞬间赋能 AI 掌握全新的办事规范(比如:“如何审查 React 代码的规范”或“提交 PR 的标准格式”)。