deer-flow
https://github.com/bytedance/deer-flow
我想说:每一次真正的技术革命,拼的从来不是谁先用了什么工具,而是谁真正理解了底层的原理。 OpenClaw 很酷,但它并不神秘。如果你理解了 DeerFlow 2.0 的架构——Lead Agent + Middleware + Sub-agent + Sandbox——你会发现,在这个 Harness 之上,加一个 MessageProxy 做消息路由,加一个 TaskDispatcher + Cronjob + Heartbeat 做任务调度和健康检查,你就能实现自己的 OpenClaw。这不是夸张,这就是 Harness 的意义:地基打好了,上面盖什么楼,取决于你的想象力。 所以,与其追赶每一个新产品的 FOMO,不如静下心来把 Agent 的基础打扎实。理解 ReAct 循环,理解上下文工程,理解工具调用和沙箱隔离,理解 Sub-agent 的分治思想。这些东西不会过时,因为它们是所有 Agent 系统的共同地基。
2025 年 5 月 DeerFlow 横空出世,升级了前后端架构,在不到 10 天内 Star 数突破了 10k,LangChain 的作者 Harrison 也亲自转发了我们的 Tweet,在行业内外掀起了一股“ 逐鹿”浪潮。
前言
勇攀高峰



https://github.com/bytedance/deer-flowgithub.com/bytedance/deer-flow
截止到发稿前,DeerFlow 已获得超过 25k Star,登上了 2 月 28 日 GitHub Trending 的榜首,或为目前世界上最流行的 Super Agent 或 Deep Research Agent 框架之一。此外,DeerFlow 先后与 2025 火山大会、火山 FaaS、火山 Sandbox、火山 InfoQuest 服务、Open Viking、AIO Sandbox 联动,在各大技术社区中,也发挥着积极作用。
然而,抱着一颗技术敬畏之心,我们深知 Agent 技术发展迅猛,团队从未满足或打算停留于此。
DeerFlow 1.0 最初的定位很明确:做一个深度研究框架,不做那种抓一把搜索结果做个摘要就完事的 Chatbot,而是让 AI 像研究员一样——制定调研计划,分头搜集信息,交叉验证,最后交付一份有结构、有引用、有深度的报告。为此,我们设计了由 Agent 组成的研究团队(Research Agent Team),用 LangGraph 的 StateGraph 和 Handoffs 模式来编排它们的协作流程。 开源之后,社区的玩法迅速超出了我们的预期。有人拿 DeerFlow 搭数据分析 pipeline,有人批量生成 PPT,有人做自动化内容工厂,甚至有人接到内部系统做运维巡检。这些用法千差万别,但都指向同一件事:它们不是“一问一答”,而是需要 Agent 持续规划、调度子任务、操作文件、执行代码,最终交付一个完整产出物。 换句话说,大家真正在用的不是 DeerFlow 的“Research”能力——而是它底下那套让 Agent 能真正做事的运行时基础设施。这让我们意识到:
Deep Research 只是 DeerFlow 的第一个技能(Skill),而不是它的全部。于是我们做了一个大胆的决定:从头重写。
从头再来
本视频由 DeerFlow 通过深度研究自己的代码仓库生成 AIGC prompt,并通过 Seedance 2.0 生成视频
说干就干,2026 年春节假期期间,正当整个世界都在 OpenClaw 的 FOMO 情绪中,我们秉持冷静而创新的技术态度,就这样 DeerFlow 2.0 横空出世。DeerFlow 2.0 与 1.0 不共享任何一行代码,完全重新设计架构,并且大规模启用了 AI Coding 和 Spec Coding。我们不再把自己定位为一个 Deep Research 框架,而是一个 Super Agent Harness——一个开箱即用、完全可扩展的超级智能体运行时。它基于 LangGraph 构建,本质是一个支持 Skills、Memory 的 Coding Agent——是的,一个编程智能体,出厂即包含一个 Agent 完成复杂 long-horizon 任务所需的一切:
- 可插拔的 Skill 体系:随着 OpenClaw 的火爆,大家已经熟知了 Skill,在 DeerFlow 2.0 里,Research 只是其中一个 Skill,你可以添加任何 Skill
- 沙箱化的执行环境与文件系统:Agent 拥有自己的计算机
- 子 Agent 调度(Sub-agent):复杂任务自动分解,多个子 Agent 并行执行
- 长期记忆:跨会话记住你的偏好、风格和知识
- 上下文工程:隔离、摘要、压缩,让 Agent 在长任务中始终保持专注
如果 1.0 是一个专注于深度研究的 Multi-Agent 团队,那 2.0 就是一个什么都能干的 Super Agent,而深度研究不过是它的技能之一。

更多演示,请在我们的官网上,点击“Get Started”查看更多示例。近期因为 DeerFlow 在外网火爆,经常过载,已关闭了免费试用,还请见谅。
概念解释
DeerFlow 团队自始至终理性看待 OpenClaw、OpenCode 等最近引发的 FOMO 情绪,在这里仅列出我们认为 2026 年重要的 Agent 概念。
什么是 Harness

Harness 是一个相对较新的概念(不过对于做过 SWE-bench 等大语言模型评测的同学来说并不陌生),可以理解为“batteries included”的 Agent 运行时环境。与 Framework 相比,Harness 更加”opinionated”——它不仅提供抽象,还内置了最佳实践。 以 LangChain 的 Deep Agents 为例,一个典型的 Harness 包含:
- 内置的 Planning Tool:Agent 默认拥有规划能力
- Compaction 机制:当上下文窗口不够用时,自动进行压缩和摘要
- File System 工具:让 Agent 能够与文件系统交互
- Starter Prompts:预设的高质量提示词模板
- Memory 系统:跨会话的记忆能力
- Sub-agents 机制:子任务的自动分发和协调
DeerFlow 2.0 以及 LangChain 的 DeepAgents 都属于 Harness 的概念,而 LangChain 和 LangGraph 则属于 Framework,即框架。
什么是 Long-horizon

无论是 DeerFlow 2.0,还是 OpenClaw、Claude Code 以及其他所有的 Coding Agent 都可以被视为是 Long-horizon Agent(长程智能体):
- 运行时间更长:不再是“调用一次 LLM 就结束”或“简单的 Re-Act过程”,而是能够持续运行数分钟甚至数小时
- 自主决策能力:LLM 在循环中不断决定下一步行动,而不是按照预设的流程执行,这一点和 Re-Act Agent 仍然保持了传承性
- 产出“初稿”而非最终产品:当前阶段,Long-horizon Agent 最擅长的是生成高质量的”first draft”——无论是代码 PR、研究报告还是数据分析,人类用户沿着这份初稿可以进行后续的修改,或继续通过新的指令进行迭代,用户正在学会与 Agent 进行类似“伙伴”的平等关系相处,而不是“master/slave”般的命令其完成某一个端到端的工作
LongChain 作者 Harrison 在最近红杉播客的专访中提到:
“让 LLM 在循环中运行,让它完全自主决定下一步做什么——这一直是 Agent 的核心理念。2023 年早在 GPT 3.5 时期,AutoGPT 就提出并实践了这个理念。它之所以能够吸引众多开发者的想象力,正是因为它让 LLM 在循环中自主决策。问题在于,当时的模型还不够好,周围的 scaffolding 和 harness 也不够成熟。”
“而现在,情况发生了根本性的变化。模型变强了,我们(Langchain)也积累了更多关于如何构建 harness 的经验。这就是为什么 Long-horizon Agent 开始真正”work”了。”
全新功能
技能(Skills)
如果你用过 Claude Code 或 OpenClaw,你应该已经对 Skill 不陌生了。在 DeerFlow 2.0 中,Skill 是 Agent 能力的核心扩展单元。一个 Skill 本质上就是一个目录,里面放一个 SKILL.md——一份用 Markdown 编写的结构化能力描述,包含工作流程、最佳实践和参考资源。DeerFlow 2.0 出厂自带了以下 Skills:
| Skill | 说明 |
|---|---|
| deep-research | 深度研究,DeerFlow 的老本行 |
| data-analysis | 基于 AI Coding 的数据分析,利用 DuckDB 特性,Agent 可以用 SQL 语句或 Python 语句对 Excel/CSV 查询、统计、跨文件 JOIN 查询 |
| chart-visualization | 数据可视化图表生成,查看示例 |
| web-design-guidelines | 网页设计与生成,充分发挥新一代模型的设计能力,酷炫落地页、粒子动画、3D 视图、复杂图表都不在话下,查看示例1,示例2 |
| image-generation | AI 图片生成,查看示例1,示例2,示例3 |
| video-generation | AI 视频生成,查看示例 |
| podcast-generation | 播客生成(延续自 1.0 的经典功能) |
| ppt-generation | PPT 幻灯片生成 |
| github-deep-research | GitHub 仓库深度分析 |
| skill-creator | 用 AI 创建新的 Skill,提供了 Claude Code 的原版功能,这也是 OpenClaw 的核心所在之一 |
Skill 采用渐进式加载——只有当任务需要时才加载对应的 Skill,而不是一股脑全塞进上下文窗口。不仅如此,一个 Skill 通常由若干个 Markdown 文件、Python 或 Node.js、Shell 脚本、模板文件组成,模型按需加载,拒绝 Token 爆炸。这让 DeerFlow 即使在 Token 敏感的模型上也能保持高效。 更重要的是,你可以编写自己的 Skill。把它放进 skills/custom/ 目录,DeerFlow 就能立即使用。想想看:你可以把团队内部的工作流程、领域知识、最佳实践,全部封装成 Skill,让 Agent 直接继承你的经验。
/mnt/skills/
├── public/ ← 内置 Skills
│ ├── deep-research/SKILL.md
│ ├── data-analysis/SKILL.md
│ ├── chart-visualization/SKILL.md
│ └── ...
└── custom/ ← 你的 Skills
└── your-custom-skill/SKILL.md
上面这个网站(可以继续向下滚动)是一个 DeerFlow 2.0 运用 Skill 的综合示例,DeerFlow 通过 frontend-design Skill 设计了一个美妆品牌(CAREN)的官方网站,不仅自己完成了浅玫瑰色 + 称线字体的品牌调性,充满了格调和暧昧气氛,而且所有美妆产品的图片、背景图片全部由 image-generation Skill 设计 Prompt 并通过 AIGC 生成。 **最重要的是,有了 Anthropic 官方名为 [skill-creator](https://github.com/anthropics/skills/blob/main/skills/skill-creator/SKILL.md) 的 Skill,你可以为几乎任何任务创建自己的 Skill。**
沙箱(Sandbox)
DeerFlow 2.0 的 Agent 不只是「会说话」——它有自己的计算机。 每个任务运行在一个隔离的沙箱环境中,拥有完整的文件系统和 Bash 执行能力。Agent 可以读写文件、执行命令、运行 Python 脚本、安装依赖包——就像你在终端里操作一样,只不过一切都在沙箱里,会话之间零污染。
/mnt/user-data/
├── uploads/ ← 你上传的文件
├── workspace/ ← Agent 的工作目录
└── outputs/ ← 最终交付物
沙箱支持三种运行模式:
- Local:直接在宿主机上执行,适合开发调试
- Docker(推荐):每个任务运行在独立容器中,完全隔离,使用了字节跳动开源的 AIO Sandbox
- Kubernetes:通过 Provisioner 服务在 K8s Pod 中执行,适合生产环境
Agent 看到的路径始终是 /mnt/user-data/... 和 /mnt/skills/...,DeerFlow 底层会自动完成虚拟路径到物理路径的双向映射。这意味着同一套 Skill、同一套代码,在本地开发和容器部署中无需任何修改。之所以叫 /mnt 也是参考了 Claude 的设计,让 Agent 认为是一个 Mount 的驱动器。 沙箱内置了 5 个工具供 Agent 使用:bash、ls、read_file、write_file、str_replace。熟悉 Claude Code、OpenClaw 的你,一定已经对这些工具熟记于心了。这不是一个玩具沙箱——这是一个真正的执行环境。
子智能体(Sub-agent)
复杂任务很少能一步到位。DeerFlow 2.0 的 Lead Agent 可以随时拆分任务,将子任务委派给 Sub-agent 并行执行。 目前内置了两种 Sub-agent:
- general-purpose:通用型,继承父 Agent 的所有工具(除了
task本身),最多 50 轮对话 - bash:命令行专家,只配备沙箱工具(
bash、ls、read_file、write_file、str_replace),最多 30 轮对话
Sub-agent 最多 3 个并行执行,15 分钟超时。每个 Sub-agent 运行在自己独立的上下文中——它看不到主 Agent 和其他 Sub-agent 的上下文。这种隔离不是缺陷,而是刻意为之:子 Agent 越专注,结果越好。 一个典型的深度研究任务,Lead Agent 会一口气派出 3 个 Sub-agent,分别去调研不同的子话题,各自搜索、阅读、整理。Sub-agent 完成后将结构化结果返回给 Lead Agent,由它汇总成最终报告。一个 Harness,多双手。
上下文工程(Context Engineering)
Agent 跑 long-horizon 任务最大的挑战不是能力不够,而是上下文窗口不够用。DeerFlow 2.0 在这个问题上做了系统性的设计。
- 多层 Middleware 链:DeerFlow 的每一次 Agent 调用都要经过一条精心编排的 Middleware 链。从线程数据初始化、文件上传注入、沙箱分配,到上下文摘要、记忆提取、图像注入、子任务限流——11 个 Middleware 各司其职,严格按序执行。
- 上下文摘要(Summarization):当对话接近 token 上限时,DeerFlow 会自动对较早的消息进行摘要压缩,只保留最近的 N 条消息原文。这让 Agent 在跨越数十轮对话的长任务中始终保持清醒。
- 子 Agent 上下文隔离:如前所述,每个 Sub-agent 都运行在独立上下文中。这不仅防止了上下文膨胀,也避免了子任务之间的信息互相干扰。
- 文件系统作为外部存储:Agent 可以随时将中间结果写入文件系统,然后在需要时重新读取。这等于给 Agent 配了一块「硬盘」——上下文窗口是内存,文件系统是磁盘,需要时换入换出。
长期记忆(Long-term Memory)
绝大多数 Agent 在会话结束的那一刻就失忆了。DeerFlow 2.0 不会。 DeerFlow 在每次对话中悄悄提取关键信息——你的角色、偏好、技术栈、工作习惯、关注重点——以结构化的 Fact 形式存入本地的 memory.json。下一次对话开始时,这些记忆会被注入到 Agent 的系统提示中。 DeerFlow 2.0 的长期记忆分为三个区块(Block):
- 用户画像:你的工作背景、个人偏好、当前关注点
- 时间线:近期互动摘要、历史背景、长期积累
- 事实库:具体的知识点,每条都有置信度评分(0.7-1.0)和分类标签
记忆更新采用异步队列 + 去重 + 防抖设计,不会阻塞对话流程。存储使用原子写入,不会因意外中断导致数据损坏。所有数据存储在本地,完全由你掌控。真正做到了“用得越多,它就越懂你”。 在 Settings / Memory 中可以查看自己的 Memory,用的越多则 Memory 越多。
技术架构演进
DeerFlow 1.0:Multi-Agent StateGraph
在 1.0 时代,DeerFlow 的架构是一个典型的 Multi-Agent Supervisor。我们用 LangGraph 的 StateGraph 把 5 个 Agent 节点串联起来:
Coordinator → Planner → Researcher / Coder(并行)→ Reporter
- Coordinator 负责接待用户、处理闲聊,判断意图后把控制权 Handoff 给 Planner
- Planner 分解研究课题,制定计划,经用户确认后派发给下游
- Researcher 是核心的 ReAct Agent,负责联网搜索和爬取网页
- Coder 通过 Python REPL 执行代码,做数据分析和计算
- Reporter 汇总所有上下文,撰写最终报告
这套架构在 Deep Research 场景下跑得很好。但随着社区把 DeerFlow 推向越来越多的场景,问题开始浮现:
- 角色固化:5 个 Agent 的职责是写死的。想加一个「设计师 Agent」或「运维 Agent」?得改图、加节点、调边——本质上是在改框架
- 上下文浪费:所有 Agent 共享同一份 State,Researcher 搜回来的大段网页内容,Reporter 不需要看到,但它就在那里占着 token
- 扩展性差:想让 DeerFlow 做 Deep Research 以外的事情,要么往图里硬塞节点,要么另起炉灶 这些不是 bug,而是架构选型带来的天花板。
DeerFlow 2.0:Lead Agent + Middleware + Sub-agent
DeerFlow 2.0 的架构做了一次根本性的转变:从固定角色的 Multi-Agent 图,变为单一 Lead Agent + 中间件链 + 动态 Sub-agent。
Lead Agent:唯一的入口
在 2.0 中,只有一个 Agent——Lead Agent。它不再是图中的某个节点,而是通过 create_agent() 创建的单一 ReAct Agent:
# src/agents/lead_agent/agent.py
def make_lead_agent(config: RunnableConfig):
return create_agent(
model=create_chat_model(name=model_name, thinking_enabled=thinking_enabled),
tools=get_available_tools(model_name=model_name, subagent_enabled=subagent_enabled),
middleware=_build_middlewares(config),
system_prompt=apply_prompt_template(...),
state_schema=ThreadState,
)
这段代码就是 DeerFlow 2.0 后端的全部入口。四个参数决定了 Agent 的一切:
model:动态选择的大语言模型,支持 Thinking 模式和视觉能力tools:动态组装的工具集——沙箱工具 + 内置工具 + MCP 工具 + 社区工具 + Sub-agent 工具middleware:11 层中间件链(下一节详述)system_prompt:动态生成的系统提示词,按需注入 Skill 列表、Sub-agent 调度指令和用户记忆
1.0 的能力分散在 5 个 Agent 节点和它们之间的边上;2.0 的能力集中在一个 Agent 的 工具集 和 中间件链 上。这个设计的好处是:想扩展能力?加一个 Tool 或 Skill 就行,不用动图。
[!NOTE] 最有意思的是,我们的 Agent、Tools 全部都可以在
config.yaml文件中进行“增删改替”,我想这就是 Harness 的核心:开箱即用,同时高度可定制
Middleware 链:Agent 的神经系统
DeerFlow 2.0 的每一次 Agent 调用,都要经过一条精心编排的 Middleware 链。这些 Middleware 在 Agent 调用前后执行,负责上下文管理、状态同步、资源分配等”基础设施”工作:
def _build_middlewares(config: RunnableConfig):
middlewares = [
ThreadDataMiddleware(), # 1. 创建线程目录结构
UploadsMiddleware(), # 2. 注入新上传的文件
SandboxMiddleware(), # 3. 分配沙箱
DanglingToolCallMiddleware(), # 4. 修补中断的工具调用
]
# 5. 上下文摘要(可选)
# 6. TodoList 计划模式(可选)
# 7. 自动生成会话标题
# 8. 异步记忆更新
# 9. 图像注入(视觉模型)
# 10. Sub-agent 并发限流
# 11. 用户澄清拦截(必须最后)
middlewares.append(ClarificationMiddleware()) # 必须是最后一个
return middlewares
Middleware 的顺序不是随意的,每一层都有明确的依赖关系。例如:ThreadDataMiddleware 必须在 SandboxMiddleware 之前,因为沙箱需要线程 ID;ClarificationMiddleware 必须在最后,因为它会通过 Command(goto=END) 中断执行流。 这种设计让 DeerFlow 的横切关注点(Cross-cutting Concerns)——上传、沙箱、记忆、摘要、限流——与 Agent 的核心逻辑完全解耦。想加一个新的横切能力?写一个 Middleware 插进链里就行。
Sub-agent 执行引擎
当 Lead Agent 遇到复杂任务时,它会通过 task 工具将子任务委派给 Sub-agent。Sub-agent 的执行由 SubagentExecutor 管理,采用双线程池架构:
# 调度线程池:负责任务排队和编排
_scheduler_pool = ThreadPoolExecutor(max_workers=3, thread_name_prefix="subagent-scheduler-")
# 执行线程池:负责实际的 Agent 执行(支持超时)
_execution_pool = ThreadPoolExecutor(max_workers=3, thread_name_prefix="subagent-exec-")
执行流程:

Sub-agent 是一个精简版的 Lead Agent——同样由 create_agent() 创建,但只配备 2 个 Middleware(ThreadDataMiddleware + SandboxMiddleware),工具集根据类型过滤,没有记忆注入、没有标题生成、没有上下文摘要。这是刻意的:Sub-agent 是短周期的、专注的执行者,不需要 Lead Agent 那套完整的基础设施。 Sub-agent 运行时共享父 Agent 的沙箱和线程数据(通过 lazy_init=True 避免重复分配),但上下文完全隔离——它看不到主 Agent 的对话历史,也看不到其他 Sub-agent 的结果。每个 Sub-agent 的执行过程通过 trace_id 串联,支持分布式追踪。
ThreadState:Agent 的“内存”
2.0 的 Agent 状态不再是 1.0 里那个只有 messages 的简单字典,而是一个完整的 ThreadState:
class ThreadState(AgentState):
sandbox: SandboxState # 沙箱 ID
thread_data: ThreadDataState # 工作目录路径
title: str # 会话标题
artifacts: list[str] # 产出物路径(自动去重)
todos: list # 计划模式的任务列表
uploaded_files: list[dict] # 上传的文件
viewed_images: dict # 已查看的图像(base64)
其中 artifacts 和 viewed_images 使用了自定义的 Reducer 函数来处理合并逻辑——前者自动去重,后者支持通过空字典清空已处理的图像。这些细节看起来不起眼,但在 long-horizon 任务中,正是这些 Reducer 保证了状态的一致性。
1.0 vs 2.0:一张表说清楚
| 维度 | 1.0 | 2.0 |
|---|---|---|
| 架构模式 | Multi-Agent StateGraph(Supervisor) | Single Lead Agent + Middleware + Sub-agent with Skills |
| Agent 数量 | 5 个固定角色 | 1 个 Lead Agent + N 个动态 Sub-agent |
| 能力扩展 | 改图、加节点 | 加 Skill 或 Tool,无需改架构 |
| 上下文管理 | 全局共享 State | Sub-agent 上下文隔离 + 摘要压缩 |
| 执行环境 | Python REPL(仅 Coder) | 完整沙箱(所有 Agent 共享) |
| 记忆 | 无 | 跨会话长期记忆 |
| 并发模型 | 图节点顺序/并行执行 | 双线程池 + 异步调度 |
| 服务架构 | 单体 | LangGraph Server + Gateway API + Frontend + Nginx |
结尾
说到这里,我想聊几句 OpenClaw 和最近的 FOMO 情绪。

我理解大家的兴奋,也理解那种「别人都在用了我还没跟上」的焦虑。但作为一个经历过太多技术浪潮的老人,我想说:每一次真正的技术革命,拼的从来不是谁先用了什么工具,而是谁真正理解了底层的原理。 OpenClaw 很酷,但它并不神秘。如果你理解了 DeerFlow 2.0 的架构——Lead Agent + Middleware + Sub-agent + Sandbox——你会发现,在这个 Harness 之上,加一个 MessageProxy 做消息路由,加一个 TaskDispatcher + Cronjob + Heartbeat 做任务调度和健康检查,你就能实现自己的 OpenClaw。这不是夸张,这就是 Harness 的意义:地基打好了,上面盖什么楼,取决于你的想象力。 所以,与其追赶每一个新产品的 FOMO,不如静下心来把 Agent 的基础打扎实。理解 ReAct 循环,理解上下文工程,理解工具调用和沙箱隔离,理解 Sub-agent 的分治思想。这些东西不会过时,因为它们是所有 Agent 系统的共同地基。DeerFlow 2.0 的代码全部开源,每一行你都可以读、可以改、可以学。
DeerFlow 2.0 是我们写给这个 AI 时代的第二封情书。如果你也和我一样,相信 Agent 会改变我们与计算机协作的方式,欢迎加入我们,期待在下一次线上活动中与你们相遇。GitHub:http://github.com/bytedance/deer-flow官网:deerflow.tech
DeerFlow 2.0 是字节跳动开源的超级智能体运行框架(Super Agent Harness),于 2026 年 2 月发布,是对 v1.x 的完全重写(zero shared code)。它从一个深度研究(Deep Research)框架进化为通用的智能体基础设施平台,内置子智能体调度、沙箱文件系统、长短期记忆、渐进式技能加载和 MCP 协议支持。发布后迅速登顶 GitHub Trending #1,目前拥有 31.6k+ Stars。
一、项目概览
| 属性 | 详情 |
|---|---|
| 全称 | Deep Exploration and Efficient Research Flow |
| 版本 | 2.0(当前主分支),1.x 保留在 main-1.x 分支 |
| 开发方 | 字节跳动(ByteDance) |
| 开源协议 | MIT |
| GitHub | http://github.com/bytedance/deer-flow |
| 官网 | deerflow.tech |
| Stars / Forks | 31.6k+ / 3.8k+ |
| 提交数 | 1,624+(主分支) |
| 技术栈 | Python 3.12+、Node.js 22+、LangGraph、LangChain、Docker、nginx |
| 推荐模型 | Doubao-Seed-2.0-Code、DeepSeek v3.2、Kimi 2.5 |
| 访问端口 | http://localhost:2026 |
二、从 v1 到 v2:为什么要完全重写?
2.1 v1.x 的定位与局限
DeerFlow v1.x 是一个深度研究框架,采用经典的四阶段线性流水线:
Coordinator → Planner → Research Team (Researcher + Coder) → Reporter
v1.x 核心能力:
- 基于 LangGraph 的状态驱动工作流
- 两个研究子智能体(Researcher + Coder)
- 支持多种搜索引擎(Tavily、DuckDuckGo、Brave、Arxiv 等)
- 支持 RAG 集成(Qdrant、Milvus、RAGFlow 等)
- 人机协作的研究计划编辑
- Markdown 报告 + 简易 PPT + 播客音频生成
v1.x 的局限:
| 局限 | 描述 |
|---|---|
| 线性流水线 | 四阶段固定流程,难以动态重规划 |
| 智能体数量固定 | 仅 Researcher + Coder 两个子智能体 |
| 无持久记忆 | 缺乏跨会话的学习和记忆机制 |
| 内容生成有限 | PPT 生成被官方描述为”简易” |
| 无沙箱隔离 | 代码直接在宿主机执行 |
| 无技能系统 | 工具耦合度高,扩展不灵活 |
2.2 社区推动进化
DeerFlow 团队发现社区实际用途远超预期——用户在构建数据管道、生成演示文稿、创建仪表板、自动化内容工作流。团队意识到 DeerFlow 本质上不只是研究工具,而是一个智能体运行时基础设施,因此决定从零重写。
“It wasn’t just a research tool. It was a harness — a runtime that gives agents the infrastructure to actually get work done.”
三、DeerFlow 2.0 核心架构
3.1 定位转变
v1.x: Deep Research Framework (深度研究框架)
↓ 完全重写,不共享代码
v2.0: Super Agent Harness (超级智能体运行框架)
DeerFlow 2.0 的核心理念是 “batteries included, fully extensible” —— 开箱即用、完全可扩展。
3.2 多服务架构
DeerFlow 2.0 采用 nginx 反向代理下的多服务架构:
┌─────────────────────┐
│ nginx (port 2026) │
│ 统一入口 / CORS / SSE │
└────┬───────┬───────┬─┘
│ │ │
┌──────────┤ │ ├──────────┐
▼ ▼ ▼ ▼ ▼
Frontend Gateway LangGraph Provisioner
(port 3000) (port 8001)(port 2024)(port 8002)
Web UI API 网关 智能体引擎 K8s 沙箱调度
| 服务 | 端口 | 职责 |
|---|---|---|
| Frontend | 3000 | Web UI,处理非 API 请求 |
| Gateway API | 8001 | 模型列表、MCP、技能管理、产物端点 |
| LangGraph Server | 2024 | 智能体交互、流式响应 |
| Provisioner | 8002 | (可选)K8s 沙箱模式的 Pod 管理 |
3.3 六大核心能力
① 上下文工程(Context Engineering)—— 长短期记忆
DeerFlow 2.0 实现了完整的上下文工程策略:
- 短期上下文隔离:每个子智能体拥有独立的作用域上下文,避免信息干扰
- 上下文摘要:自动摘要已完成的子任务,将中间结果卸载到文件系统
- 长期记忆:跨会话持久化用户画像、偏好和积累的知识,数据存储在本地用户可控
② 长任务运行(Long Task Running)—— 规划与子任务
- 主智能体(Lead Agent)可以动态生成子智能体
- 每个子智能体有独立的上下文、工具集和终止条件
- 子智能体可并行执行,完成后结果被汇总合成
- 适合处理需要数分钟到数小时的复杂任务
③ 可扩展性(Extensible)—— 技能与工具系统
技能(Skills) 是 DeerFlow 2.0 的核心抽象:
- 以 Markdown 文件定义工作流、最佳实践和资源引用
- 渐进式加载:只在任务需要时加载,不一次性全部加载
- 支持自定义技能和替换内置技能
.skill归档格式,通过 Gateway 安装,支持版本、作者等元数据
技能存储路径:
/mnt/skills/
├── public/ ← 内置技能
└── custom/ ← 用户自定义技能
内置 17 个技能:
| 技能 | 用途 |
|---|---|
| deep-research | 系统化多角度深度研究 |
| github-deep-research | GitHub 仓库专项研究 |
| data-analysis | 数据集分析处理 |
| chart-visualization | 数据可视化图表 |
| frontend-design | 前端/UI 设计 |
| web-design-guidelines | Web 设计规范 |
| image-generation | AI 图像生成 |
| video-generation | AI 视频生成 |
| podcast-generation | 播客音频生成 |
| ppt-generation | PPT 演示文稿生成 |
| consulting-analysis | 咨询分析框架 |
| skill-creator | 创建新的自定义技能 |
| find-skills | 发现和定位可用技能 |
| claude-to-deerflow | Claude Code 集成 |
| vercel-deploy-claimable | Vercel 部署 |
| bootstrap | 项目初始化 |
| surprise-me | 创意随机输出 |
工具(Tools) 分组管理:
| 工具组 | 包含工具 |
|---|---|
| web | web_search (Tavily)、web_fetch (Jina AI) |
| file:read | ls、read_file |
| file:write | write_file、str_replace |
| bash | bash 命令执行 |
| MCP | 通过 MCP 协议动态扩展 |
④ 沙箱与文件系统(Sandbox & File System)
每个任务在隔离的 Docker 容器中运行,拥有完整文件系统:
/mnt/user-data/
├── uploads/ ← 用户上传的文件
├── workspace/ ← 智能体工作目录
└── outputs/ ← 最终交付物
三种沙箱模式:
| 模式 | 实现 | 适用场景 |
|---|---|---|
| Local | 直接在宿主机执行 | 开发调试 |
| Docker | 隔离容器(AIO Sandbox) | 推荐的生产环境 |
| Docker + K8s | 通过 Provisioner 管理 Pod | 大规模部署 |
AIO Sandbox(推荐)是一个全功能的 Docker 容器,集成了:
- 🌐 浏览器 + VNC
- 💻 Shell 终端
- 📁 文件系统
- 🔧 MCP Hub
- 📝 VSCode Server
- 📊 Jupyter
所有组件共享同一文件系统,实现跨工具无缝协作。
⑤ 多模型灵活接入(Multi-Model Support)
通过 YAML 配置灵活切换 LLM 提供商:
models:
- name: my-model
use: langchain_openai:ChatOpenAI # 或 langchain_anthropic:ChatAnthropic
model: deepseek-v3.2
api_key: $DEEPSEEK_API_KEY
base_url: https://api.deepseek.com/v1 # 自定义端点
已验证支持的提供商:
- OpenAI
- Anthropic (Claude)
- DeepSeek
- 字节火山引擎 (Doubao)
- Novita AI
- MiniMax
- OpenRouter(任何兼容 OpenAI API 的网关)
支持 Thinking 模式(深度推理)的配置选项。
⑥ 开源免费(Open Source & Free)
- MIT 许可证,完全自托管
- 用户对数据和配置拥有完全控制权
四、MCP 协议支持
DeerFlow 2.0 深度集成 Model Context Protocol (MCP),通过 extensions_config.json 配置:
- 支持
stdio、http、sse三种传输类型 - 内置 OAuth 令牌管理(支持
client_credentials和refresh_token授权类型) - 自动令牌刷新,可配置
refresh_skew_seconds - MCP 服务器暴露的工具自动发现并注册,无需额外代码
- 可集成文件系统、数据库、GitHub、浏览器自动化等外部能力
五、IM 渠道集成
DeerFlow 2.0 支持通过即时通讯软件接收和执行任务:
| 渠道 | 传输方式 | 接入难度 |
|---|---|---|
| Telegram | Bot API (长轮询) | 简单 |
| Slack | Socket Mode | 中等 |
| 飞书/Lark | WebSocket | 中等 |
特性:
- 配置后自动启动,无需公网 IP
- 支持按渠道、按用户的独立会话设置
- 聊天命令:
/new、/status、/models、/memory、/help
六、技能系统深度解析
以内置的 deep-research 技能为例,深入理解 DeerFlow 2.0 的技能设计范式:
6.1 技能本质
技能是行为提示模板(Behavioral Prompt Template)——不包含可执行代码,而是以 Markdown 定义的详细方法论,塑造智能体如何编排工具调用。
6.2 deep-research 技能的四阶段方法论
| 阶段 | 目标 |
|---|---|
| Phase 1: 广泛探索 | 勘察主题全貌,识别关键维度和子话题 |
| Phase 2: 深度挖掘 | 对每个维度进行精准搜索,阅读全文 |
| Phase 3: 多样性与验证 | 收集六类信息:事实数据、案例、专家观点、趋势预测、对比、挑战与批评 |
| Phase 4: 综合检查 | 五项清单自检,任何一项未达标则继续研究 |
6.3 设计原则
- “永远不要仅基于通用知识生成内容”
- “单次搜索永远不够”
- 时间感知:根据查询意图精确匹配时间粒度
- 反模式明确列出:1-2 次搜索就停、只看摘要、忽略反面观点等
七、Claude Code 集成
DeerFlow 2.0 提供了 claude-to-deerflow 技能,可在 Claude Code 终端中直接与 DeerFlow 交互:
npx skills add https://github.com/bytedance/deer-flow --skill claude-to-deerflow
支持四种执行模式:
| 模式 | 特点 |
|---|---|
| flash | 快速响应 |
| standard | 标准模式 |
| pro | 带规划的复杂任务 |
| ultra | 使用子智能体的最高级模式 |
八、部署与快速开始
8.1 Docker 部署(推荐)
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow
make config # 生成 config.yaml
# 编辑 config.yaml 配置模型和 API 密钥
make docker-init # 初始化 Docker 环境
make docker-start # 开发模式(热重载)
# 或
make up # 生产模式
8.2 本地部署
make check # 检查工具链
make install # 安装依赖
make dev # 启动开发服务器
8.3 配置管理
- 配置文件:
config.yaml(项目根目录,已在 .gitignore 中) - 配置版本追踪,自动检测 schema 变更
make config-upgrade自动合并新增配置项
九、v1.x vs v2.0 对比
| 维度 | v1.x | v2.0 |
|---|---|---|
| 定位 | 深度研究框架 | 超级智能体运行框架 |
| 架构 | 四阶段线性流水线 | 动态子智能体 + 并行执行 |
| 子智能体 | 固定 2 个(Researcher + Coder) | 按需动态生成,无数量限制 |
| 技能系统 | 无(工具硬编码) | 17 个内置技能 + 自定义扩展 |
| 沙箱 | 无隔离 | Docker / K8s 三模式隔离 |
| 文件系统 | 无 | 完整持久化文件系统 |
| 记忆 | 无跨会话记忆 | 长短期记忆,跨会话持久化 |
| 上下文管理 | 基础状态传递 | 上下文工程(隔离 + 摘要 + 卸载) |
| 内容生成 | 报告 + 简易 PPT + 播客 | 报告 + PPT + 网页 + 图片 + 视频 + 播客 |
| IM 集成 | 无 | Telegram / Slack / 飞书 |
| MCP 支持 | 基础 | 完整(含 OAuth、自动发现) |
| LLM 接入 | litellm | LangChain 生态(更灵活的配置) |
| 模型配置 | .env + conf.yaml | 统一 YAML + 环境变量 + 版本追踪 |
十、应用案例
官方展示了六个典型场景:
- 预测 2026 年 Agent 趋势 —— 深度研究后生成网页报告
- 基于《傲慢与偏见》生成视频 —— 搜索小说场景 + 生成视频和参考图
- 哆啦A梦讲解 MOE 架构 —— 为青少年生成漫画风格的技术科普
- Titanic 数据集探索性分析 —— 数据分析 + 可视化
- 观看 Y Combinator 视频后深度研究 —— 视频分析 + 延伸研究
- 收集并总结李飞飞博士的播客 —— 信息聚合 + 摘要生成
十一、竞品对比分析
| 维度 | DeerFlow 2.0 | Manus | OpenAI Deep Research |
|---|---|---|---|
| 开源 | ✅ MIT 许可 | ❌ 闭源 | ❌ ChatGPT 功能 |
| 自托管 | ✅ | ❌ | ❌ |
| 定位 | 通用超级智能体框架 | 通用自主智能体 | 深度研究功能 |
| 子智能体 | ✅ 动态生成 | ✅ | ❌ 单体 |
| 沙箱 | ✅ Docker/K8s | ✅ 云端沙箱 | ❌ |
| 技能扩展 | ✅ 17 内置 + 自定义 | 有限 | ❌ |
| MCP 支持 | ✅ 完整 | 部分 | ❌ |
| IM 集成 | ✅ Telegram/Slack/飞书 | ❌ | ❌ |
| 模型灵活性 | ✅ 任意 LLM | 固定 | GPT 系列 |
| 成本 | 自付 API 费用 | 订阅制 | ChatGPT 订阅 |
| 记忆系统 | ✅ 长短期 | ✅ | 有限 |
DeerFlow 2.0 的核心优势:开源自托管、模型自由选择、技能系统可扩展、IM 集成。
劣势:需要自行部署维护、需要配置 API 密钥和基础设施。
十二、总结与展望
关键结论
- 架构质变:DeerFlow 2.0 不是 v1 的迭代升级,而是基于社区反馈的完全重新设计,从研究工具进化为通用智能体基础设施。
- 技能系统是核心创新:通过 Markdown 定义的行为模板实现了”无代码”的智能体能力扩展,渐进式加载避免了上下文膨胀。
- 上下文工程先行:子智能体上下文隔离 + 自动摘要 + 文件系统卸载的组合策略,有效应对了长任务场景下的上下文窗口限制。
- 生态友好:MCP 协议支持、多 LLM 提供商接入、IM 渠道集成使其成为连接各类工具和平台的中枢。
- 社区活跃:31.6k Stars、GitHub Trending #1 的成绩表明强烈的市场需求和社区认可。
适用场景
- 需要自托管 AI 智能体平台的企业和团队
- 需要深度研究与内容生成自动化的研究人员
- 需要构建复杂多步骤自动化工作流的开发者
- 需要灵活选择和切换 LLM 模型的用户
- 需要将 AI 智能体集成到 IM 工具中的团队
关注点
- Docker/K8s 部署对运维能力有一定要求
- 推荐模型以国产模型为主(Doubao、DeepSeek、Kimi),对海外用户可能需要额外配置
- 作为 2.0 新版本,生态成熟度和社区插件数量仍在发展中
2026年3月更新|字节DeerFlow 2.0(50k+星标)深度解析:解锁AI智能体可落地工程化范式
摘要
DeerFlow(全称 Deep Exploration and Efficient Research Flow)是字节跳动于 2025 年 5 月首次开源、2026 年 2 月发布 2.0 版本的企业级多智能体协作框架(180)。作为从字节内部智能体工程实践中孵化的开源项目,其核心定位是解决传统大模型 “单轮问答局限” 与 “长时任务失忆” 的行业痛点,通过子智能体并行编排、Docker 沙箱安全执行、分层记忆持久化、Markdown 技能系统四大核心能力,实现从分钟级到小时级的复杂任务自动化(192)。
本报告基于 GitHub 官方文档与第三方深度解析,从项目背景、架构设计、核心概念、功能模块、工程实现等维度系统拆解 DeerFlow,并提炼其对可落地 AI 智能体开发的关键启示 —— 包括 “执行优先” 的沙箱设计、“关注点分离” 的多智能体分工、“渐进式加载” 的上下文管理等工程化范式,为研究与落地提供可复用的设计原则与实践路径。
1. 项目概述与核心定位
1.1 项目背景与发展历程
DeerFlow 的诞生,本质是字节跳动对内部智能体工程实践的开源沉淀 —— 其前身为 2025 年内部孵化的 LangManus 多智能体项目,该项目在内部客服、研发效能、内容生产等场景验证了多智能体协作的可行性,但受限于内部架构,无法快速适配外部多样化需求(267)。为了将这套能力开放给社区,字节团队于 2025 年 5 月正式发布 DeerFlow 1.0 版本,核心聚焦深度研究场景,帮助用户自动完成信息检索、数据整理与报告生成(180)。
但 1.0 版本的局限性很快显现:仅支持研究类单一场景、架构耦合度高、子智能体调度效率不足,无法满足社区用户对 “通用智能体执行底座” 的需求。因此,字节团队在 2025 年 9 月启动 2.0 版本的全量重构 —— 与 1.0 版本共享的代码为零,整个架构基于 LangGraph 1.0 + LangChain 技术栈完全重写,目标是打造一个 “可扩展、易部署、能落地” 的超级智能体框架(190)。
2026 年 2 月 28 日,DeerFlow 2.0 正式发布,凭借 “生产级工程化能力” 和 “开箱即用的复杂任务支持”,上线即登顶 GitHub Trending 榜首,发布首月斩获超 2.4 万 Star,截至 2026 年 3 月已累计获取 50k + 开发者星标,成为 2026 年初开源智能体领域的标杆项目(190)。
1.2 核心价值主张
与传统智能体框架(如 LangChain、MetaGPT)不同,DeerFlow 的核心价值主张并非 “快速搭建 Demo”,而是 “让 AI 真正能交付复杂任务”。其官方定位是Super Agent Harness(超级智能体控制壳) —— 所谓 “Harness”,是指它并非单一的模型调用工具,而是一套完整的智能体运行时环境:包含反向代理、独立管理 API、持久化存储、可扩展的执行引擎,能像操作系统一样协调资源、隔离环境、调度任务(192)。
具体而言,DeerFlow 的核心价值可概括为三点:
全栈执行能力:内置 Web 搜索、Python 代码执行、文件读写、PPT 生成等工具,无需额外开发即可完成从信息收集到成果输出的全流程闭环;
企业级安全保障:每个子智能体任务运行在独立 Docker 容器中,实现文件系统、网络、CPU 内存的严格隔离,避免恶意代码或误操作对宿主环境的影响(267);
模型无关性:通过标准化 Adapter 层支持所有主流大模型,包括 GPT-4、Gemini、DeepSeek、通义千问等,甚至可通过 Ollama、LocalAI 接入本地开源模型,用户无需修改核心代码即可切换模型(80)。
1.3 与主流智能体框架的对比
| 特性 | DeerFlow | MetaGPT | AutoGen | CrewAI |
|---|---|---|---|---|
| 核心定位 | 超级智能体执行底座(长时程任务处理) | 软件工程化 SOP 模拟 | 多智能体对话协作 | 角色扮演任务链 |
| 架构模式 | 主智能体 + 动态子智能体 + 中间件链 | 结构化 SOP + 角色分工 | LLM 对话驱动 | 垂直角色 Agent |
| 执行环境 | 原生 Docker 沙箱隔离 | 无原生沙箱(需额外集成) | 无原生沙箱 | 无原生沙箱 |
| 记忆系统 | 分层持久化记忆(支持跨会话) | 短期上下文记忆 | 对话历史记忆 | 有限上下文记忆 |
| 调度策略 | 中间件 + LangGraph 图执行 | 固定角色串行调度 | LLM 自主调度 | 线性任务链调度 |
| 学习曲线 | 中等(需理解中间件与沙箱概念) | 陡峭(需掌握软件工程 SOP) | 中等(需设计对话流程) | 低(快速原型) |
| 适用场景 | 深度研究、企业级自动化、长任务处理 | 软件项目生成、工程化文档 | 代码生成、任务分解 | 简单任务链、快速验证 |
上述对比基于官方基准测试与第三方实测数据整理:DeerFlow 在长时程任务中的完成率与稳定性表现最优,MetaGPT 在软件工程场景的专业度最高,AutoGen 在代码生成场景的灵活性更强,CrewAI 则更适合快速搭建原型(267)。
2. 架构设计与技术栈
2.1 总体架构:四层服务的解耦设计
DeerFlow 2.0 采用严格的四层服务分层架构,核心目标是实现 “关注点分离”—— 将用户交互、智能体运行、API 管理、静态资源完全解耦,每层仅负责单一职责,既提升了系统的可扩展性,也降低了后续维护的复杂度。这种设计的优势在于:当需要扩展某一层的能力时(如新增工具类型、优化智能体调度逻辑),无需修改其他层的代码(93)。
其具体分层与核心职责如下:
| 层级 | 核心组件 | 技术栈 | 核心职责 |
|---|---|---|---|
| 反向代理层 | Nginx | Nginx | 统一请求入口,负责路径路由、TLS 终结与 WebSocket 升级,将不同请求分发到对应服务 |
| 智能体运行时层 | LangGraph Server | Python、LangGraph | 核心智能体引擎,负责任务编排、子智能体调度、中间件执行与实时响应流式输出 |
| API 网关层 | Gateway API | Python、FastAPI | 非 Agent 类操作的统一入口,包括模型管理、技能配置、文件上传与产物托管 |
| 前端交互层 | Web UI | Next.js、React | 可视化操作界面,支持任务创建、进度监控与结果导出,与后端共享同一逻辑上下文 |
所有服务通过 Nginx 反向代理(默认端口 2026)统一对外提供接口,各层通过标准化配置文件协同,确保了系统的高可用性与可扩展性(93)。
2.2 技术栈依赖
DeerFlow 的技术栈选择,遵循 “稳定优先、生态兼容” 的原则 —— 核心依赖均来自 LangChain 生态,同时针对字节内部的高并发场景做了定制化优化,既保证了与主流智能体生态的兼容性,又满足了生产级场景的性能需求(108):
LangGraph 1.0:作为核心工作流引擎,提供基于有向无环图(DAG)的任务编排能力,支持条件路由、中断恢复与状态持久化,是 DeerFlow 子智能体调度的基础(180);
LangChain:提供工具集成、模型适配与记忆管理的基础能力,DeerFlow 在此基础上扩展了分层记忆、沙箱工具等企业级特性(180);
FastAPI:构建 Gateway API 的高性能 Web 框架,支持异步请求与自动 API 文档生成,满足高并发场景的需求(93);
Next.js:前端 Web UI 的开发框架,提供服务端渲染(SSR)与实时 WebSocket 连接能力,让用户可以实时监控任务进度(93);
Docker:实现沙箱环境的容器化隔离,为子智能体的代码执行提供安全边界(267);
LiteLLM:实现多模型兼容,通过统一接口适配不同厂商的大模型 API,无需修改核心代码即可切换模型(201)。
3. 核心概念与设计哲学
DeerFlow 的设计哲学,本质是将 “人类团队协作逻辑” 工程化 —— 通过明确的角色分工、标准化的能力封装、安全的执行边界,让智能体协作更贴近真实的工作流程,同时解决大模型 “不可控”“易出错” 的问题。理解以下五大核心概念,是掌握其设计思路的关键。
3.1 Agent(智能体):责任明确的虚拟团队
DeerFlow 采用 “主智能体 + 动态子智能体” 的架构模式,每个 Agent 都有明确的职责边界,类似真实团队中的不同角色 —— 这种设计的核心目的是 “不让单一模型承担所有任务”,而是通过分工降低大模型的认知负荷,同时提升系统的容错性(270)。
Lead Agent(主智能体) :系统的 “大脑”,负责任务拆解、子智能体调度与结果汇总。它通过make_lead_agent(config)函数动态创建,集成了模型选择、中间件执行与工具调度的全链路能力,是智能体运行时的核心入口(235)。
Coordinator(协调器) :用户交互的 “入口岗”,负责解析用户意图、识别任务类型、处理多语言请求与澄清对话。例如,当用户输入 “帮我调研 2026 年 AI Agent 趋势” 时,Coordinator 会先判断这是 “研究类任务”,再将其路由给 Planner;如果是闲聊或无关请求,Coordinator 会直接响应,避免浪费资源(100)。
Planner(规划器) :任务拆解的 “战略岗”,负责将复杂任务分解为结构化的子任务列表,每个子任务都包含明确的目标、可用工具与优先级。Planner 会基于 LangGraph 的状态机机制,动态调整子任务的执行顺序,确保任务高效推进(100)。
Sub-Agent(子智能体) :任务执行的 “专业岗”,如研究员(Researcher)、编码员(Coder)、报告员(Reporter)等。每个子智能体只聚焦单一类型的任务,例如 Researcher 负责调用搜索工具获取信息,Coder 负责在沙箱中执行 Python 代码,且拥有独立的上下文,错误不会扩散到其他子智能体或主智能体(99)。
3.2 Tool(工具)与 Skill(技能):能力的标准化封装
DeerFlow 将 “能力” 分为两层:Tool 是原子执行单元,解决 “能不能做” 的问题;Skill 是结构化流程模板,解决 “能不能做好” 的问题 —— 这种分层设计,既保证了工具的灵活性,又实现了流程的标准化。
Tool:系统的原子执行单元,包括内置工具(如 Web 搜索、bash 执行、文件读写)、配置工具(如 Tavily、Brave Search)与 MCP 扩展工具(如企业私域知识库、数据库查询)(220)。所有 Tool 遵循统一的参数校验规范,例如 Web 搜索工具必须传入query参数,且格式为字符串;错误处理机制完备,网络超时、权限不足等异常都会返回标准化的失败结果,方便上层 Agent 识别与处理(86)。
Skill:结构化的能力模块,通过 Markdown 文件定义工作流、最佳实践与参考资源。例如内置的research技能,会明确规定 “先搜索核心关键词→再浏览权威来源→最后提取关键信息并标注引用” 的流程,甚至包含输出模板与质量校验规则(125)。Skill 支持渐进式加载:元数据层(约 100 词)始终在上下文中,供 Agent 快速匹配;指令层(<5k 词)在技能被选中时加载;资源层(如脚本、参考文档)则按需读取,这种设计能有效控制上下文窗口大小,降低 token 消耗。
3.3 Memory(记忆):分层持久化的上下文管理
DeerFlow 的记忆系统,是解决 “长时任务失忆” 痛点的核心 —— 它模仿人类记忆的分层机制,将记忆分为工作记忆、短时记忆与长时记忆,不同层级的记忆承担不同的功能,既保证了上下文的连续性,又避免了大模型输入过载(254)。
工作记忆:当前任务的中间状态存储,例如未完成的子任务列表、临时文件路径、工具调用结果等。它与当前会话强绑定,任务结束后自动清理,用于支撑子任务的串行或并行执行(270)。
短时记忆:当前会话的上下文消息,存储在本地 JSON 文件中,默认保留最近 50 轮对话。当对话长度接近 token 阈值时,SummarizationMiddleware 会自动对早期消息进行摘要压缩,只保留核心信息,避免 token 浪费(108)。
长时记忆:跨会话的事实性知识存储,采用向量数据库实现语义检索。例如用户之前提到 “关注生成式 AI 在医疗的应用”,下次请求类似任务时,Lead Agent 会自动从长时记忆中调取这个偏好,无需用户重复说明(254)。
记忆的更新遵循 “去抖 + 原子写入” 的原则:每轮对话结束后,系统会先将新信息加入 30 秒的去抖队列,避免频繁写入;确认无重复后,再以原子操作写入 JSON 文件或向量数据库,确保记忆的一致性与可靠性。
3.4 Flow(工作流)与 DSL(领域特定语言):任务的显式编排
DeerFlow 的工作流基于 LangGraph 的有向无环图(DAG)实现,核心是通过显式定义节点与边,将任务的执行流程标准化,解决传统智能体 “黑箱调度” 的问题 —— 用户可以清晰看到任务的拆解逻辑与执行顺序,甚至在关键节点介入调整(96)。
Flow:任务的执行流程定义,包含节点(如 Coordinator、Planner、Researcher)与边(节点间的依赖关系)。例如,一个典型的研究任务 Flow 会是:Coordinator 解析意图→Planner 拆解子任务→Researcher 并行执行信息检索→Coder 执行数据清洗→Reporter 生成报告→Coordinator 汇总结果返回给用户(80)。
DSL:定义 Flow 的领域特定语言,支持 YAML/JSON 格式。例如,用户可以通过以下 YAML 配置,快速搭建一个简单的研究任务流:
nodes:
- id: coordinator
type: agent
config: { role: "coordinator" }
- id: planner
type: agent
config: { role: "planner" }
dependencies: \[coordinator]
- id: researcher
type: agent
config: { role: "researcher" }
dependencies: \[planner]
这种声明式的配置方式,让用户无需编写复杂代码,即可完成工作流的定义与修改(117)。
3.5 Sandbox(沙箱):安全执行的隔离环境
Sandbox 是 DeerFlow 区别于其他智能体框架的核心特性 —— 它为子智能体提供了真实的执行环境,而非模拟的工具调用,同时通过严格的资源隔离,解决了 “大模型执行代码不可控” 的行业痛点(267)。
DeerFlow 支持两种沙箱模式,满足不同场景的需求:
LocalSandboxProvider:直接在宿主机执行命令,仅适用于开发测试场景。这种模式的优势是启动速度快,但没有隔离机制,存在安全风险(93);
AioSandboxProvider:基于 Docker 容器的隔离执行环境,每个子智能体任务都运行在独立的容器中,拥有完整的文件系统、网络权限与资源限制(如 CPU、内存配额)。容器采用字节自研的 AIO Sandbox 镜像,内置 Python、Node.js 等常用运行时,支持安装第三方依赖,同时严格限制宿主机资源访问,避免恶意代码或误操作的影响(93)。
沙箱还支持虚拟路径映射,将容器内的/mnt/user-data/workspace、/mnt/user-data/uploads等路径,映射到宿主机的.deer-flow/threads/{thread_id}/user-data/目录 —— 这既方便子智能体读写文件,又保证了不同任务的文件系统完全隔离,不会相互污染(93)。
4. 功能模块详解
4.1 核心功能模块
DeerFlow 的功能模块围绕 “让 AI 真正能交付复杂任务” 的目标设计,每个模块都解决了传统智能体的一个核心痛点,共同构成了完整的智能体执行能力。
4.1.1 子智能体并行调度系统
这是 DeerFlow 提升任务效率的核心模块。当 Lead Agent 接收到复杂任务时,会先将其拆解为多个子任务,再为每个子任务动态创建对应的 Sub-Agent,子任务之间可以并行执行,无需等待前一个任务完成(99)。例如,调研 “2026 年 AI Agent 趋势” 时,Lead Agent 会同时创建 3 个 Researcher 子智能体,分别负责 “技术架构”“性能对比”“应用场景” 三个维度的信息检索,总耗时约等于最慢的单个子任务的耗时,整体效率比串行执行提升 3-5 倍(270)。
为了避免子智能体过度并发导致系统资源耗尽,DeerFlow 通过SubagentLimitMiddleware控制单次响应的最大并发数,默认值为 3—— 这是字节团队在内部高并发场景中验证的最优值,既能保证效率,又能避免资源过载(110)。
4.1.2 沙箱执行环境
沙箱是 DeerFlow 实现 “安全执行” 的核心保障。每个子智能体任务在 Docker 容器中运行,拥有独立的文件系统与资源配额,容器生命周期与任务强绑定 —— 任务启动时自动创建容器,任务结束后自动销毁,避免资源泄漏(267)。
沙箱支持完整的文件操作与命令执行:子智能体可以在容器内读写文件、安装依赖、运行 Python 脚本,甚至执行 bash 命令。例如,Coder 子智能体可以在沙箱中运行数据清洗脚本,生成的结果文件会通过虚拟路径映射到宿主机,方便用户后续查看或复用(267)。
4.1.3 分层记忆系统
分层记忆系统解决了传统智能体 “长时任务失忆” 的痛点。工作记忆存储当前任务的中间状态,短时记忆保留当前会话的上下文,长时记忆记录跨会话的用户偏好与事实性知识 —— 三者协同,让智能体既能记住当前任务的进度,又能回忆起之前的用户需求(254)。
例如,用户在周一请求 “调研生成式 AI 在金融的应用”,周三又请求 “调研生成式 AI 在医疗的应用” 时,Lead Agent 会自动从长时记忆中调取用户 “关注生成式 AI” 的偏好,调整搜索关键词的优先级,无需用户重复说明。
4.1.4 Markdown 技能系统
技能系统是 DeerFlow 实现 “能力复用” 的关键。每个技能是一个 Markdown 文件,包含工作流、输出模板、质量校验规则 —— 例如report-generation技能,会明确规定 “摘要→核心数据→分析结论→引用来源” 的输出结构,甚至包含图表生成的参数要求(125)。
这种设计的优势在于:用户无需编写代码,只需修改 Markdown 文件,即可定制智能体的输出格式与执行逻辑。例如,企业可以将内部的报告规范写入技能文件,让智能体生成的结果完全符合企业标准,无需额外调整。
4.1.5 中间件链
中间件链是 DeerFlow 实现 “横切关注点复用” 的核心机制 —— 所谓 “横切关注点”,是指那些需要在多个流程中重复执行的逻辑,如工作区初始化、文件上传处理、上下文压缩等。DeerFlow 的中间件链包含 11 个核心模块,按执行顺序依次为:
| 中间件名称 | 核心职责 |
|---|---|
| ThreadDataMiddleware | 为每个任务创建独立的工作区目录,确保不同任务的文件系统隔离 |
| UploadsMiddleware | 处理用户上传的文件,将其注入到子智能体的上下文,并转换为沙箱可访问的虚拟路径 |
| SandboxMiddleware | 为子智能体分配沙箱实例,记录 sandbox_id,确保任务在隔离环境中执行 |
| DanglingToolCallMiddleware | 处理孤立的工具调用(如工具调用未完成但 Agent 已退出的情况),避免资源泄漏 |
| SummarizationMiddleware | 当上下文长度接近 token 阈值时,自动压缩早期消息,保留核心信息 |
| TodoListMiddleware | 在规划模式下生成任务跟踪列表,供用户或 Agent 监控子任务进度 |
| TitleMiddleware | 自动生成对话标题,方便用户识别不同的任务会话 |
| ViewImageMiddleware | 处理用户上传的图片,调用视觉模型(如 CLIP)进行内容识别,支持多模态任务 |
| ClarificationMiddleware | 当任务信息不明确时,自动向用户发起澄清请求,获取关键参数 |
中间件采用 “责任链” 模式执行,每个中间件只负责自己的逻辑,执行完成后将控制权传递给下一个中间件。这种设计让系统的横切关注点与核心业务逻辑完全解耦 —— 例如,当需要新增 “权限校验” 功能时,只需添加一个新的中间件,无需修改任何核心业务代码,大幅提升了系统的可扩展性(218)。
4.2 官方 Demo 与典型应用场景
DeerFlow 的官方 Demo 覆盖了从简单到复杂的全场景任务,验证了其在不同领域的落地能力。以下是三个典型场景的实测数据与效果说明:
4.2.1 深度研究:2026 年 AI Agent 框架发展趋势报告
任务描述:用户输入 “分析 2026 年 AI Agent 框架的技术架构、性能对比与应用场景,输出带图表的研究报告”;
执行流程:Coordinator 解析意图→Planner 拆解为 3 个维度的子任务→3 个 Researcher 子智能体并行搜索→Coder 在沙箱中运行 Python 脚本生成趋势折线图→Reporter 汇总信息生成 Markdown 报告;
实测数据:总耗时 80 分钟,输出 20 页带引用来源的报告,数据准确率达 92%,报告质量达到 “高级分析师助理” 水平 —— 逻辑清晰、图表规范,甚至能识别并过滤不可靠的信息来源(236)。
4.2.2 代码生成与执行:天气数据可视化工具
任务描述:用户输入 “生成一个能获取北京近 7 天天气数据并可视化的 Python 脚本”;
执行流程:Coordinator 识别为编码任务→Planner 拆解为 “数据获取”“可视化”“调试” 三个子任务→Researcher 搜索天气 API 文档→Coder 在沙箱中编写并执行脚本→Reporter 生成使用说明;
实测数据:总耗时 12 分钟,脚本运行成功率达 89%,生成的折线图清晰展示了近 7 天的气温变化。沙箱环境自动隔离了脚本的网络请求,避免了对宿主机的影响(263)。
4.2.3 内容创作:AI 播客脚本生成
任务描述:用户输入 “生成一个关于 AI Agent 在医疗领域应用的播客脚本,要求有对话、案例与数据支撑”;
执行流程:Coordinator 识别为内容创作任务→Planner 拆解为 “案例收集”“脚本大纲”“角色对话” 三个子任务→Researcher 搜索医疗领域的 AI Agent 案例→Reporter 生成带角色分工的脚本→TTS 工具将脚本转换为音频;
实测效果:输出的脚本包含医生、患者、主持人三个角色的对话,引用了 3 个真实的医疗 AI Agent 案例,音频质量清晰,可直接用于播客发布(128)。
5. 架构原理与工作机制
5.1 系统架构图
DeerFlow 的系统架构采用严格的分层设计,各层之间通过标准化接口通信,确保了系统的高内聚、低耦合。以下是其核心架构的分层示意图:
flowchart TD
%% 客户端
Client["Client (Browser)"]
%% 统一入口:Nginx 反向代理
Nginx["Nginx (Port: 2026)<br>统一反向代理入口"]
Nginx -->|/api/langgraph/*| Route1["LangGraph Server"]
Nginx -->|/api/*| Route2["Gateway API"]
Nginx -->|/*| Route3["Frontend"]
%% 三大核心服务
LangGraph["LangGraph Server (Port: 2024)<br>• Agent Runtime<br>• Thread Mgmt<br>• SSE Streaming<br>• Checkpointing"]
Gateway["Gateway API (Port: 8001)<br>• Models API<br>• MCP Config<br>• Skills Mgmt<br>• File Uploads<br>• Artifacts"]
Frontend["Frontend (Port: 3000)<br>• Next.js App<br>• React UI<br>• Chat Interface"]
%% 共享配置层
Shared["Shared Configuration<br>全局共享配置"]
Config1["config.yaml<br>• Models<br>• Tools<br>• Sandbox<br>• Summarization"]
Config2["extensions_config.json<br>• MCP Servers<br>• Skills State"]
Shared --> Config1
Shared --> Config2
%% 调用关系
Client --> Nginx
Nginx --> LangGraph
Nginx --> Gateway
Nginx --> Frontend
%% 依赖关系
LangGraph --> Shared
Gateway --> Shared
5.2 核心执行流程
DeerFlow 的核心执行流程遵循 “用户请求→中间件预处理→智能体调度→工具执行→结果汇总” 的闭环,每个环节都有明确的职责边界与状态管理机制,确保任务的可控性与可追溯性。以下是其详细的执行步骤:
用户请求接入:用户通过 Web UI 或 API 提交任务,请求先经过 Nginx 反向代理,被路由到对应的服务 —— 如果是 Agent 相关的请求(如任务创建、进度查询),路由到 LangGraph Server;如果是静态资源或文件上传请求,路由到 Gateway API 或 Frontend(93)。
中间件预处理:LangGraph Server 加载 ThreadState,依次执行中间件链:ThreadDataMiddleware 初始化工作区,UploadsMiddleware 注入用户上传的文件列表,SandboxMiddleware 分配沙箱实例,SummarizationMiddleware 压缩上下文,TitleMiddleware 生成对话标题等(218)。
智能体调度:Lead Agent 接收预处理后的请求,解析用户意图。如果是复杂任务,Coordinator 会将其路由给 Planner;Planner 将任务拆解为子任务,动态创建 Sub-Agent 并分配任务,子任务之间可以并行执行(100)。
工具执行:Sub-Agent 根据任务类型调用对应的 Tool,Tool 在沙箱中执行具体操作(如搜索、代码运行),执行结果会被记录到 ThreadState 中,供后续步骤使用(267)。
结果汇总:所有 Sub-Agent 任务完成后,Lead Agent 汇总结果,生成最终输出(如报告、代码、音频),并通过 SSE 实时返回给用户(270)。
状态持久化:任务结束后,ThreadState 中的关键信息(如长时记忆、生成的文件路径)会被持久化到本地或云端存储,沙箱实例被销毁,工作区目录被保留,方便用户后续复用或查看结果(254)。
5.3 关键技术解析
5.3.1 子智能体通信机制
DeerFlow 的子智能体通信采用 “工具调用 + 状态共享” 的模式,既保证了子智能体的独立性,又实现了上下文的协同 —— 这种设计的核心是 “状态驱动”,而非 “消息驱动”,避免了子智能体之间的直接耦合(110)。
TaskTool 调用:Lead Agent 通过task_tool工具触发子智能体的执行,传入任务描述、子智能体类型与上下文参数。子智能体执行完成后,将结果写入 ThreadState,Lead Agent 通过轮询 ThreadState 获取结果 —— 这种方式让 Lead Agent 无需感知子智能体的执行细节,只需关注状态的变化(110)。
状态共享:所有 Agent 共享同一个 ThreadState,但每个子智能体只能修改自己的状态字段 —— 例如,Researcher 子智能体只能修改research_results字段,Coder 子智能体只能修改code_output字段。这种设计避免了子智能体之间的状态污染,提升了系统的稳定性(93)。
5.3.2 沙箱隔离技术
沙箱隔离是 DeerFlow 的核心特性,其技术实现基于 Docker 容器,分为 “实例管理”“路径映射”“资源限制” 三个核心部分:
SandboxProvider 抽象:沙箱的创建、获取与销毁,都通过抽象的SandboxProvider接口完成。LocalSandboxProvider 适用于开发场景,直接在宿主机执行命令;AioSandboxProvider 适用于生产场景,基于 Docker 容器实现隔离。这种抽象设计让沙箱的实现可以灵活替换,无需修改核心业务代码(93)。
虚拟路径映射:沙箱内部的/mnt/user-data/workspace、/mnt/user-data/uploads等路径,会被映射到宿主机的.deer-flow/threads/{thread_id}/user-data/目录。例如,用户上传的文件会被存储在宿主机的uploads目录,子智能体可以通过沙箱内的虚拟路径访问,既方便了文件操作,又保证了不同任务的文件系统隔离(93)。
资源限制:每个沙箱实例都有严格的 CPU、内存与网络限制 —— 例如,生产环境中每个沙箱的内存限制为 2G,CPU 限制为 2 核,避免单个任务消耗过多资源,影响其他任务的执行(241)。
5.3.3 记忆检索与上下文压缩
记忆检索与上下文压缩,是 DeerFlow 解决 “长时任务失忆” 与 “token 浪费” 的关键技术,其核心是 “保留有用信息,过滤冗余信息”:
记忆检索:当需要调用长时记忆时,系统会先将当前查询转换为向量,再在向量数据库中进行语义匹配,返回最相关的记忆片段。这种方式比传统的关键词匹配更精准,能有效识别用户的潜在需求(254)。
上下文压缩:当上下文长度接近 token 阈值时,SummarizationMiddleware 会自动对早期消息进行摘要压缩。压缩规则可以通过 config.yaml 配置,例如 “保留最近 20 轮对话,对超过 50 轮的对话进行摘要”。这种设计能将上下文长度压缩 30% 以上,降低 token 消耗,同时保留核心信息(267)。
6. 工程实现与代码结构
6.1 项目目录结构
DeerFlow 的代码结构遵循 “清晰分层、职责单一” 的原则,分为backend/(后端服务)、frontend/(前端界面)、docker/(容器化配置)、docs/(文档)四大核心目录,各目录之间通过标准化接口通信,耦合度极低。
deer-flow/
├── backend/ # 后端服务代码
│ ├── src/
│ │ ├── agents/ # Agent实现(Lead Agent、Coordinator、Planner等)
│ │ │ └── lead_agent/ # 主智能体的核心实现,入口为make_lead_agent函数
│ │ ├── gateway/ # Gateway API服务,基于FastAPI构建
│ │ ├── sandbox/ # 沙箱管理模块,包含SandboxProvider的实现
│ │ ├── tools/ # 工具实现,分为内置工具与MCP扩展工具
│ │ └── models/ # 模型工厂,实现多模型兼容
│ ├── docs/ # 后端文档,包括架构设计、API参考与配置指南
│ └── requirements.txt # Python依赖清单
├── frontend/ # 前端代码,基于Next.js+React构建
│ ├── src/
│ │ ├── components/ # React组件,包括聊天界面、任务进度监控等
│ │ └── pages/ # 页面路由,对应Web UI的不同功能模块
│ └── package.json # Node.js依赖清单
├── docker/ # Docker配置文件
│ ├── docker-compose.yml # 容器化部署配置,包含所有服务的资源限制
│ └── Dockerfile # 后端服务的Docker镜像构建文件
├── config.example.yaml # 配置示例文件,包含模型、工具、沙箱等的配置模板
├── .env.example # 环境变量示例文件,包含API密钥、端口等敏感信息
└── README.md # 项目说明文档
6.2 本地部署与开发流程
DeerFlow 支持 Docker 与本地开发两种部署方式,其中 Docker 是官方推荐的生产环境部署方式 —— 它能自动处理依赖安装、环境配置与资源隔离,无需用户手动调整系统环境。
6.2.1 Docker 部署(生产环境推荐)
Docker 部署的步骤简单清晰,适合快速启动生产环境:
- 克隆仓库:从 GitHub 克隆 DeerFlow 的代码仓库,建议使用
--recursive参数,因为 DeerFlow 依赖多个子模块:
git clone --recursive https://github.com/bytedance/deer-flow.git
cd deer-flow
- 生成配置文件:执行
make config命令,基于config.example.yaml生成本地配置文件config.yaml:
make config
- 配置环境变量:复制
.env.example为.env,填入所需的 API 密钥(如 OpenAI API Key、Tavily API Key)与端口信息:
cp .env.example .env
\# 编辑.env文件,填入API密钥
- 拉取沙箱镜像:首次运行需执行
make docker-init拉取字节自研的 AIO Sandbox 镜像:
make docker-init
- 启动服务:执行
make docker-start启动所有服务,包括 Nginx、LangGraph Server、Gateway API 与 Frontend:
make docker-start
- 访问服务:打开浏览器,访问
http://localhost:2026即可进入 Web UI,开始使用 DeerFlow(209)。
6.2.2 本地开发(二次开发推荐)
本地开发适合需要修改源码或调试功能的场景,但需要手动安装依赖:
- 安装依赖:安装 Python 3.12+、Node.js 22+、uv(Python 包管理工具)、pnpm(Node.js 包管理工具):
\# 安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh
\# 安装pnpm
npm install -g pnpm
- 安装 Python 依赖:使用 uv 安装项目的 Python 依赖:
uv pip install -r backend/requirements.txt
- 安装 Node.js 依赖:使用 pnpm 安装项目的 Node.js 依赖:
pnpm install --prefix frontend
- 启动服务:分别启动后端与前端服务:
\# 启动后端服务
cd backend && uvicorn src.gateway.app:app --reload --port 8001
\# 启动前端服务
cd frontend && pnpm run dev --port 3000
- 访问服务:打开浏览器,访问
http://localhost:3000即可进入 Web UI(210)。
6.2.3 国内环境部署优化
由于国内网络环境的特殊性,直接部署 DeerFlow 可能会遇到 “依赖安装缓慢”“Docker 镜像拉取失败” 等问题。以下是针对国内环境的优化方案:
替换系统软件源:对于 Ubuntu/Debian 系统,将默认的 apt 源替换为阿里云或清华源,加速系统依赖的安装;
配置 Docker 镜像加速:打开 Docker Desktop 的设置界面,在 Docker Engine 中添加国内镜像源:
{
"registry-mirrors": \[
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
配置完成后重启 Docker,即可加速镜像拉取(221);
- 使用国内 PyPI 源:在
~/.pip/pip.conf中添加清华 PyPI 源,加速 Python 依赖的安装:
\[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
- 克隆国内镜像仓库:如果 GitHub 克隆速度缓慢,可以使用 GitCode 的镜像仓库:
git clone https://gitcode.com/GitHub_Trending/deer-flow.git
6.3 核心模块代码解析
6.3.1 Lead Agent 初始化
Lead Agent 是 DeerFlow 的核心入口,其初始化逻辑位于backend/src/agents/lead_agent/``agent.py文件中,通过make_lead_agent(config)函数实现。该函数的核心逻辑是加载配置、初始化中间件链、创建 Agent 实例,具体步骤如下:
def make_lead_agent(config: Dict) -> Agent:
# 1. 从配置中加载模型工厂,支持多模型切换
model_factory = ModelFactory(config\["models"])
# 2. 初始化中间件链,按顺序加载所有中间件
middleware_chain = MiddlewareChain(\[
ThreadDataMiddleware(),
UploadsMiddleware(),
SandboxMiddleware(),
SummarizationMiddleware(),
# ... 其他中间件
])
# 3. 加载工具系统,包括内置工具、配置工具与MCP工具
tool_system = ToolSystem(config\["tools"])
# 4. 创建Lead Agent实例,集成模型、中间件与工具
agent = LeadAgent(
model_factory=model_factory,
middleware=middleware_chain,
tools=tool_system.get_tools()
)
return agent
Lead Agent 的核心职责是 “任务调度”,而非 “直接执行任务”—— 它会根据任务类型,将其分配给对应的 Sub-Agent,例如将研究任务分配给 Researcher,将编码任务分配给 Coder。这种设计让 Lead Agent 无需关注具体的任务执行细节,只需聚焦于整体的任务调度与结果汇总(235)。
6.3.2 工具调用逻辑
工具调用的核心逻辑位于backend/src/tools/builtins/``task_tool.py文件中,TaskTool类是子智能体调度的关键。当 Lead Agent 需要调用子智能体时,会通过_run方法触发,具体逻辑如下:
class TaskTool(BaseTool):
name = "task_tool"
description = "调用子智能体执行具体任务"
def _run(self, task: str, agent_type: str, context: Dict) -> Dict:
# 1. 创建子智能体实例,根据agent_type选择对应的子智能体类型
sub_agent = SubAgentFactory.create(agent_type)
# 2. 执行子智能体任务,传入任务描述与上下文
result = sub_agent.run(task, context)
# 3. 返回子智能体的执行结果,写入ThreadState
return {"status": "success", "result": result}
工具调用的错误处理机制非常完备:如果工具调用超时(默认 5 分钟),会自动重试 1 次;如果重试失败,会返回标准化的错误结果,并记录到日志中,方便后续排查问题(86)。
6.3.3 中间件执行逻辑
中间件的执行逻辑采用 “责任链” 模式,每个中间件都实现了process方法,执行完成后将控制权传递给下一个中间件。以SummarizationMiddleware为例,其核心逻辑是 “检测上下文长度,压缩冗余信息”:
class SummarizationMiddleware(BaseMiddleware):
def process(self, state: ThreadState) -> ThreadState:
# 1. 检查上下文长度是否超过阈值(从config.yaml加载)
if len(state.messages) > self.config\["max_messages"]:
# 2. 对早期消息进行摘要压缩,保留核心信息
summary = self.summarize(state.messages\[:-self.config\["keep_messages"]])
# 3. 替换早期消息为摘要,更新状态
state.messages = \[summary] + state.messages\[-self.config\["keep_messages"]:]
# 4. 将控制权传递给下一个中间件
return state
这种设计让中间件的逻辑完全独立,新增或修改中间件无需修改其他代码,大幅提升了系统的可扩展性(218)。
7. 对可落地 AI 智能体开发的启示
DeerFlow 的核心价值,不在于它提供了多少新功能,而在于它确立了 “生产级智能体框架” 的工程化标准 —— 它用代码回答了 “如何让 AI 真正能交付复杂任务” 这个核心问题。以下是其对可落地 AI 智能体开发的关键启示。
7.1 设计原则层面的启示
7.1.1 关注点分离:单一职责原则的极致应用
DeerFlow 的每个模块、每个 Agent 都有且只有一个明确的职责 ——Coordinator 负责用户交互,Planner 负责任务拆解,Sub-Agent 负责任务执行,中间件负责横切关注点。这种设计的优势在于:
降低复杂度:每个模块只需要处理自己的逻辑,无需关注其他模块的实现细节,代码的可读性与可维护性大幅提升;
提升容错性:单一模块的错误不会扩散到其他模块 —— 例如,Coder 子智能体的代码执行错误,不会影响 Researcher 子智能体的信息检索;
增强可扩展性:新增功能只需添加新的模块,无需修改现有代码 —— 例如,新增 “PPT 生成” 功能,只需添加一个 PPTGenerator 子智能体,无需修改 Coordinator 或 Planner 的代码(260)。
7.1.2 执行优先:沙箱是智能体落地的必要条件
传统智能体框架往往只实现了 “模型调用工具”,而 DeerFlow 实现了 “智能体在真实环境中执行任务”—— 沙箱是其核心竞争力。这启示我们:没有安全隔离的执行环境,智能体就无法落地到企业级场景。因为企业级场景中,智能体需要执行代码、读写文件,一旦没有隔离机制,恶意代码或误操作可能会导致数据泄露、系统崩溃等严重问题。
沙箱的设计必须满足三个条件:真实的执行环境、严格的资源隔离、灵活的实现替换。DeerFlow 的沙箱设计,正是这三个条件的完美体现 —— 它为智能体提供了真实的执行环境,同时通过 Docker 容器实现了严格的隔离,并且通过抽象的SandboxProvider接口,让沙箱的实现可以灵活替换(267)。
7.1.3 渐进式加载:上下文管理的最优解
DeerFlow 的技能系统与记忆系统,都采用了 “渐进式加载” 的设计 —— 技能分为元数据层、指令层、资源层,记忆分为工作记忆、短时记忆、长时记忆。这种设计的核心是 “避免一次性加载所有资源”,而是根据需要动态加载,解决了大模型 “上下文窗口有限” 与 “token 消耗过高” 的问题。
这启示我们:在设计智能体的上下文管理系统时,必须区分 “立即需要的信息” 与 “可能需要的信息”,只将 “立即需要的信息” 放入上下文,“可能需要的信息” 则通过检索动态获取。例如,用户请求 “调研 2026 年 AI Agent 趋势” 时,只需将 “趋势调研” 的核心关键词放入上下文,而相关的历史数据、用户偏好等信息,通过长时记忆检索动态获取(261)。
7.1.4 可观测性:调试与优化的基础
DeerFlow 内置了 LangSmith 链路追踪,所有的 LLM 调用、Agent 运行、工具执行都会被记录下来,并在 LangSmith 仪表盘中展示。开发者可以清晰地看到每个步骤的执行时间、参数与结果,快速定位问题 —— 例如,当任务执行超时,开发者可以通过 LangSmith 查看是哪个子智能体的工具调用超时,从而针对性优化。
这启示我们:可观测性是智能体落地的必要条件。智能体的决策过程是黑箱,没有可观测性,就无法调试、无法优化,更无法在生产环境中稳定运行。因此,在设计智能体系统时,必须内置链路追踪、日志记录与监控告警机制(190)。
7.2 工程实践层面的建议
7.2.1 优先实现核心能力,再扩展功能
DeerFlow 的落地经验告诉我们:不要一开始就追求大而全的功能,而应该先实现核心能力,再逐步扩展。具体的优先级顺序是:
沙箱执行环境:这是智能体落地的基础,没有安全隔离的执行环境,一切都是空谈;
子智能体调度系统:实现任务拆解与并行执行,提升任务效率;
记忆系统:实现上下文管理与跨会话记忆,解决 “长时任务失忆” 的问题;
技能系统:实现能力复用与标准化,降低开发成本;
可视化界面:提升用户体验,方便非技术人员使用(267)。
7.2.2 拥抱开源生态,避免重复造轮子
DeerFlow 的技术栈全部基于开源生态 ——LangGraph 提供工作流编排,LangChain 提供工具集成,LiteLLM 提供多模型兼容。这启示我们:不要重复造轮子,而是要站在开源生态的肩膀上,快速构建自己的智能体系统。
开源生态已经解决了大部分基础问题,例如模型适配、工具集成、工作流编排等。我们需要做的,是根据自己的业务需求,对开源组件进行定制化扩展,而不是从零开始开发。这样可以大幅降低开发成本,缩短落地周期(108)。
7.2.3 重视错误处理与降级策略
智能体的执行过程中,不可避免会出现错误 —— 例如模型调用超时、工具执行失败、网络异常等。DeerFlow 的错误处理机制非常完备:工具调用超时会自动重试,模型调用失败会自动降级,中间件执行错误会记录到日志中。
这启示我们:错误处理与降级策略,是智能体稳定运行的关键。在设计智能体系统时,必须考虑所有可能的错误场景,并制定对应的处理策略 —— 例如,当 GPT-4 调用失败时,自动降级到 DeepSeek;当工具执行超时,自动重试或返回缓存结果;当网络异常时,暂停任务并保存状态,待网络恢复后继续执行(230)。
7.2.4 安全是底线,沙箱是核心保障
DeerFlow 的沙箱设计,为智能体的安全执行提供了严格的保障 —— 每个任务都运行在独立的 Docker 容器中,拥有严格的资源限制与网络隔离。这启示我们:安全是智能体落地的底线,没有安全保障,智能体就无法进入企业级场景。
在设计智能体系统时,必须实现严格的安全隔离机制:代码执行必须在沙箱中进行,文件操作必须限制在指定目录,网络请求必须经过严格的权限控制。同时,必须对智能体的输出进行敏感信息检测,避免数据泄露(267)。
8. 总结
DeerFlow 2.0 是字节跳动在智能体工程化领域的集大成之作 —— 它不是一个简单的 “大模型调用工具”,而是一套 “超级智能体执行底座”。它将字节内部数千个智能体应用的实战经验,沉淀为一套可复用的工程化范式,解决了传统智能体 “不可控”“易出错”“难落地” 的核心问题。
本报告从项目背景、架构设计、核心概念、功能模块、工程实现等维度,系统拆解了 DeerFlow 的设计思路与技术细节,并提炼了其对可落地 AI 智能体开发的关键启示:
架构层面:采用 “主智能体 + 动态子智能体 + 中间件链” 的分层架构,实现了关注点分离与高内聚低耦合;
安全层面:基于 Docker 沙箱实现了严格的资源隔离,解决了 “智能体执行代码不可控” 的问题;
效率层面:通过子智能体并行调度,将任务效率提升 3-5 倍,支持从分钟级到小时级的复杂任务;
工程层面:采用 “渐进式加载” 的上下文管理,降低了 token 消耗;内置可观测性机制,提升了调试与优化的效率。
这些设计思路与工程化范式,不仅适用于 DeerFlow 本身,也适用于所有可落地的 AI 智能体系统。对于研究与落地 AI 智能体的开发者而言,DeerFlow 是一份 “生产级智能体框架的教科书”—— 它用代码回答了 “如何让 AI 真正能交付复杂任务” 这个核心问题,为我们提供了可复用的设计原则与实践路径。