一、项目背景:从 Deep Research 到 Super Agent Harness
DeerFlow 全称 Deep Exploration and Efficient Research Flow,最初是字节跳动内部孵化的一个深度研究自动化框架(v1.x),专注于自动化信息检索、分析与报告生成,类似于 OpenAI Deep Research 的开源替代方案。然而,社区的力量远超预期。开发者们拿它做的事情早就不止"研究":搭建数据流水线、生成演示文稿、快速构建 Dashboard、自动化内容流程……这让核心团队意识到,DeerFlow 的本质不是一个研究工具,而是一个让 Agent 真正把事情做完的运行时基础设施。于是,2.0 版本应运而生——一次彻底的重写,没有沿用 v1 的任何代码。DeerFlow 2.0 的核心定位:一个开箱即用、同时又足够可扩展的 Super Agent Harness(超级智能体执行底座)。它基于 LangGraph 和 LangChain 构建,默认集成了 Agent 真正落地所需的关键能力:文件系统、记忆、技能、沙箱执行环境,以及为复杂多步骤任务进行规划和拉起子代理的能力。二、核心概念:理解 "Harness" 的含义
"Harness"(安全带/底座)这个词,精准地描述了 DeerFlow 的定位。传统的多智能体框架(如裸用 LangGraph)需要开发者自行拼装所有底层组件,就像拿着一堆零件自己组装赛车。而 DeerFlow 2.0 则是一辆已经装好安全带、配备完整仪表盘、随时可以上路的赛车。核心能力 | 说明 | 解决的问题 |
Sandbox(沙箱) | 隔离的 Docker 容器执行环境,拥有完整文件系统 | 安全执行代码、文件操作,不污染宿主机 |
Memory(记忆) | 跨会话的持久化知识存储,提取关键事实 | 解决 Agent 每次对话都"失忆"的问题 |
Skills(技能) | Markdown 格式的结构化能力模块,按需加载 | 赋予 Agent 领域专业知识和工作流规范 |
Sub-Agents(子代理) | 动态拉起专门的子代理并行处理子任务 | 解决单 Agent 处理复杂长耗时任务的瓶颈 |
Tools(工具) | 网络搜索、代码执行、文件操作、MCP 扩展 | 让 Agent 能与真实世界交互 |
三、架构深度解析
DeerFlow 2.0 的整体架构由四个主要服务组成,通过 Nginx 统一代理对外提供服务。3.1 整体服务架构
用户浏览器 / IM 客户端 │ ▼┌─────────────────────────────────────────┐│ Nginx(端口 2026) ││ 统一反向代理入口 │└──────────────┬──────────────────────────┘ │ ┌───────┴───────┐ ▼ ▼┌─────────────┐ ┌─────────────────┐│ LangGraph │ │ Gateway API ││ Server │ │ (FastAPI) ││ (端口 2024) │ │ (端口 8001) ││ │ │ ││ Agent 运行时│ │ 模型/MCP/技能/ ││ 工作流执行 │ │ 记忆/文件上传 │└─────────────┘ └─────────────────┘ │ ▼┌─────────────┐│ Sandbox ││ (Docker) ││ 隔离执行 │└─────────────┘
前端(Next.js,端口 3000) 通过 Nginx 代理,分别与 LangGraph Server 和 Gateway API 通信。3.2 后端分层架构(Harness / App 分离)
后端采用了严格的分层设计,这是 DeerFlow 架构最精妙的地方之一:Harness 层(packages/harness/deerflow/,可独立发布为 deerflow-harness 包):这是核心 Agent 框架,包含 Agent 编排、工具系统、沙箱、模型、MCP、技能、配置等一切构建和运行 Agent 所需的组件。导入前缀为 deerflow.*。App 层(app/):这是应用层,包含 FastAPI Gateway API 和 IM 渠道集成(飞书、企业微信、Slack、Telegram)。导入前缀为 app.*。核心依赖规则:App 可以导入 Harness,但 Harness 绝对不能导入 App。这一边界通过 CI 中的 test_harness_boundary.py 强制执行,确保了核心框架的纯粹性。3.3 Lead Agent 与中间件链
Lead Agent(主控智能体) 是整个系统的大脑,其核心工作流如下:- 通过 create_chat_model() 动态选择模型(支持思考模式/视觉模式)
- 通过 get_available_tools() 加载所有可用工具(沙箱工具 + 内置工具 + MCP 工具 + 子代理工具)
- 通过 apply_prompt_template() 生成包含技能、记忆和子代理指令的系统提示词
中间件链(Middleware Chain) 是 DeerFlow 的一大架构亮点。整个 Agent 的执行生命周期被拆解为 18 个可插拔的中间件,按严格顺序组装:序号 | 中间件名称 | 核心职责 |
1 | ThreadDataMiddleware | 创建每个会话的独立工作目录 |
2 | UploadsMiddleware | 追踪并注入新上传的文件 |
3 | SandboxMiddleware | 获取并分配沙箱实例 |
4 | DanglingToolCallMiddleware | 处理因用户中断而悬空的工具调用 |
5 | LLMErrorHandlingMiddleware | 将模型调用失败归一化为可恢复错误 |
6 | GuardrailMiddleware | 工具调用前的授权检查(可选) |
7 | SandboxAuditMiddleware | 沙箱操作安全审计日志 |
8 | ToolErrorHandlingMiddleware | 将工具异常转为错误消息,避免中断 |
9 | SummarizationMiddleware | 上下文 Token 超限时自动摘要压缩 |
10 | TodoListMiddleware | 任务追踪(Plan 模式下启用) |
11 | TokenUsageMiddleware | 记录 Token 使用量(可选) |
12 | TitleMiddleware | 自动生成对话标题 |
13 | MemoryMiddleware | 将对话排队等待异步记忆更新 |
14 | ViewImageMiddleware | 在 LLM 调用前注入 Base64 图片数据 |
15 | DeferredToolFilterMiddleware | 延迟加载工具 Schema,节省上下文 |
16 | SubagentLimitMiddleware | 限制并发子代理数量(最多 3 个) |
17 | ClarificationMiddleware | 拦截澄清请求并中断执行(最后执行) |
3.4 Sub-Agent 系统
Sub-Agent 系统是 DeerFlow 处理复杂长耗时任务的核心机制:执行流程:Lead Agent 调用 task 工具 → SubagentExecutor 将任务提交到后台线程池 → 每 5 秒轮询状态 → 通过 SSE 事件流推送进度(task_started、task_running、task_completed)→ 结果返回给 Lead Agent 汇总。并发控制:最多同时运行 3 个子代理(MAX_CONCURRENT_SUBAGENTS = 3),每个子代理有 15 分钟的超时限制。•general-purpose:通用型,拥有除 task 工具外的所有工具3.5 Sandbox 虚拟路径系统
Sandbox 系统设计了一套虚拟路径映射机制,让 Agent 在一个安全、隔离的视角中操作文件:Agent 看到的虚拟路径 | 实际物理路径 |
/mnt/user-data/workspace/ | backend/.deer-flow/threads/{thread_id}/user-data/workspace/ |
/mnt/user-data/uploads/ | backend/.deer-flow/threads/{thread_id}/user-data/uploads/ |
/mnt/user-data/outputs/ | backend/.deer-flow/threads/{thread_id}/user-data/outputs/ |
/mnt/skills/ | deer-flow/skills/ |
这种设计确保了不同会话之间的完全隔离,同时也方便了用户在宿主机上访问 Agent 的输出文件。四、核心特性详解
4.1 Skills 技能系统
Skills 是 DeerFlow 能做"几乎任何事"的秘密武器。一个标准的 Skill 就是一个包含 SKILL.md 文件的目录。SKILL.md 采用 YAML frontmatter + Markdown 正文的格式,定义了技能的元数据、工作流规范和最佳实践。/mnt/skills/public/├── research/SKILL.md # 深度研究技能├── report-generation/SKILL.md # 报告生成技能├── slide-creation/SKILL.md # 演示文稿制作技能├── web-page/SKILL.md # 网页生成技能└── image-generation/SKILL.md # 图像生成技能/mnt/skills/custom/ # 你的自定义技能目录
- 按需渐进加载:不会一次性将所有技能塞入上下文,只在任务需要时才加载,节省 Token。
- 自我进化(可选):开启 skill_evolution.enabled: true 后,Agent 可以自主创建和改进 skills/custom/ 下的技能。
- 一键安装:支持通过 .skill 压缩包格式分发和安装第三方技能。
4.2 Context Engineering(上下文工程)
这是 DeerFlow 解决"长任务上下文爆炸"问题的核心方案:摘要压缩(Summarization):当对话 Token 数达到阈值(默认 15,564 tokens)时,SummarizationMiddleware 自动触发,将历史对话压缩为摘要,同时保留最近的 10 条消息。summarization: enabled: true trigger: - type: tokens value: 15564 keep: type: messages value: 10
子代理上下文隔离:每个 Sub-Agent 运行在完全独立的上下文中,只看到自己的任务,不被主 Agent 或其他子代理的信息干扰,极大提升了任务专注度。4.3 长期记忆系统
DeerFlow 的记忆系统在每次对话结束后异步工作,从对话中提取关键事实(Facts),存储到本地的 memory.json 文件中,并在下次对话时注入到系统提示词里。memory: enabled: true storage_path: memory.json debounce_seconds: 30 # 等待 30 秒后处理队列中的更新 max_facts: 100 # 最多存储 100 条事实 fact_confidence_threshold: 0.7 # 置信度阈值 max_injection_tokens: 2000 # 注入到提示词的最大 Token 数
随着使用时间的增长,Agent 会越来越了解你的偏好、技术栈和工作习惯。4.4 多模型支持
DeerFlow 对模型没有强绑定,支持所有兼容 OpenAI API 格式的模型。官方推荐的模型包括:模型 | 提供商 | 特点 |
Doubao-Seed-2.0-Code | 字节跳动火山引擎 | 官方推荐,代码能力强 |
DeepSeek V3.2 | DeepSeek | 官方推荐,性价比高 |
Kimi K2.5 | Moonshot | 官方推荐,长上下文 |
GPT-4o / GPT-4.1 | OpenAI | 综合能力强,支持视觉 |
Claude 3.5/4 Sonnet | Anthropic | 推理能力强,支持思考模式 |
Gemini 2.5 Pro | Google | 超长上下文,支持视觉 |
Qwen3 32B (Ollama) | 本地部署 | 完全私有化,无 API 费用 |
选择模型的关键指标:长上下文窗口(100k+ tokens)、强推理能力、稳定的 Tool Use 支持、多模态输入(可选)。4.5 MCP(Model Context Protocol)支持
DeerFlow 原生支持 MCP 协议,可以轻松接入海量第三方工具服务。在 extensions_config.json 中配置:{ "mcpServers": { "github": { "enabled": true, "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": {"GITHUB_TOKEN": "$GITHUB_TOKEN"} } }}
支持三种传输方式:stdio(命令行进程)、SSE(服务器推送事件)、HTTP(REST API),并支持 OAuth 2.0 认证流程(client_credentials、refresh_token)。4.6 IM 渠道集成
DeerFlow 支持将 Agent 接入主流即时通讯平台,无需公网 IP:渠道 | 传输方式 | 上手难度 |
Telegram | Bot API(长轮询) | 简单 |
Slack | Socket Mode | 中等 |
飞书 / Lark | WebSocket 长连接 | 中等 |
企业微信智能机器人 | WebSocket 长连接 | 中等 |
命令 | 说明 |
/new | 开启新对话 |
/status | 查看当前会话信息 |
/models | 列出可用模型 |
/memory | 查看记忆内容 |
/help | 查看帮助 |
4.7 可观测性(LangSmith / Langfuse 链路追踪)
DeerFlow 内置了对 LangSmith 和 Langfuse 的支持,可以追踪所有 LLM 调用、Agent 运行和工具执行,方便调试和性能优化。# 在 .env 中开启 LangSmith 追踪LANGSMITH_TRACING=trueLANGSMITH_API_KEY=lsv2_pt_xxxxxxxxLANGSMITH_PROJECT=my-deerflow-project
五、完整安装部署指南
5.1 系统要求
部署场景 | 最低配置 | 推荐配置 |
本地体验 (make dev) | 4 核 CPU、8 GB 内存、20 GB SSD | 8 核 CPU、16 GB 内存 |
Docker 开发 (make docker-start) | 4 核 CPU、8 GB 内存、25 GB SSD | 8 核 CPU、16 GB 内存 |
长期运行服务 (make up) | 8 核 CPU、16 GB 内存、40 GB SSD | 16 核 CPU、32 GB 内存 |
5.2 快速开始(5 步完成部署)
git clone https://github.com/bytedance/deer-flow.gitcd deer-flow
make config# 此命令会基于 config.example.yaml 生成 config.yaml
编辑 config.yaml ,添加至少一个模型配置(以 OpenAI 为例):models: - name: gpt-4o display_name: GPT-4o use: langchain_openai:ChatOpenAI model: gpt-4o api_key: $OPENAI_API_KEY request_timeout: 600.0 max_retries: 2 supports_vision: true
# 模型 API KeyOPENAI_API_KEY=sk-your-openai-key# 搜索工具 API Key(至少配置一个)TAVILY_API_KEY=tvly-your-tavily-key
make docker-init # 首次运行,拉取 AIO Sandbox 镜像make docker-start # 启动所有服务
make check # 检查依赖环境make install # 安装依赖make dev # 启动服务
5.3 使用 Coding Agent 一键安装
如果你在使用 Claude Code、Cursor、Windsurf 等 AI 编程工具,可以直接将以下指令发给它,让 AI 自动完成安装:如果还没 clone DeerFlow,就先 clone,然后按照
https://raw.githubusercontent.com/bytedance/deer-flow/main/Install.md
把它的本地开发环境初始化好
六、进阶使用技巧
6.1 开启 AIO 容器沙箱
默认情况下 ,DeerFlow 使用本地沙箱(直接在宿主机执行命令)。为了获得更好的安全隔离,强烈建议切换到 Docker 容器沙箱:# config.yamlsandbox: use: deerflow.community.aio_sandbox:AioSandboxProvider image: enterprise-public-cn-beijing.cr.volces.com/vefaas-public/all-in-one-sandbox:latest replicas: 3 # 最多同时运行 3 个沙箱容器
AIO Sandbox 是一个集成了浏览器、Shell、文件系统、MCP 和 VSCode Server 的全功能 Docker 容器,是 DeerFlow 官方推荐的生产级执行环境。6.2 开启思考模式(Extended Thinking)
对于支持思考模式的模型(如 Claude、DeepSeek R1、Doubao-Seed),可以在模型配置中启用:models: - name: claude-sonnet-4-6 display_name: Claude Sonnet 4.6 use: deerflow.models.claude_provider:ClaudeChatModel model: claude-sonnet-4-6 supports_thinking: true when_thinking_enabled: thinking: type: enabled
在 Web UI 中,点击对应按钮即可切换思考模式,让 Agent 在执行复杂任务前进行更深入的推理。6.3 编写自定义 Skill
在 skills/custom/ 目录下创建新文件夹并添加 SKILL.md:---name: data-analystdescription: 专业的数据分析与可视化技能allowed_tools: ["bash", "read_file", "write_file", "ls"]---# 数据分析专家指南## 工作流程1. 首先使用 read_file 读取数据文件,了解数据结构2. 使用 bash 执行 Python 脚本进行数据清洗和分析3. 使用 matplotlib 或 plotly 生成可视化图表4. 将最终报告和图表输出到 /mnt/user-data/outputs/## 最佳实践- 始终先检查数据质量(缺失值、异常值)- 图表使用中文标签,确保可读性- 输出 PDF 格式的最终报告
6.4 使用内嵌 Python Client
DeerFlow 也可以作为 Python 库直接嵌入到你的代码中,无需启动完整的 HTTP 服务:from deerflow.client import DeerFlowClientclient = DeerFlowClient()# 普通对话response = client.chat( "帮我分析一下 Python 异步编程的最佳实践", thread_id="my-thread-001")# 流式响应for event in client.stream("生成一份 AI 行业研究报告"): if event.type == "messages-tuple" and event.data.get("type") == "ai": print(event.data["content"], end="", flush=True)# 管理功能models = client.list_models() # 列出可用模型skills = client.list_skills() # 列出可用技能client.upload_files("thread-001", ["./data.csv"]) # 上传文件
# 使用内置白名单模式(零依赖)guardrails: enabled: true provider: use: deerflow.guardrails.builtin:AllowlistProvider config: denied_tools: ["bash", "write_file"] # 禁止执行 Bash 和写文件
6.6 配置 Circuit Breaker(熔断器)
circuit_breaker: failure_threshold: 5 # 连续失败 5 次后熔断 recovery_timeout_sec: 60 # 60 秒后尝试恢复
6.7 本地模型部署(Ollama)
如果你希望完全私有化部署,可以使用 Ollama 运行本地模型:models: - name: qwen3-local display_name: Qwen3 32B (本地) use: langchain_ollama:ChatOllama model: qwen3:32b base_url: http://localhost:11434 num_predict: 8192 temperature: 0.7 reasoning: true supports_thinking: true
注意:使用 Ollama 时 ,必须使用 langchain_ollama:ChatOllama(原生 API),而不是 langchain_openai:ChatOpenAI(兼容 API)。原因是 OpenAI 兼容接口会丢失思考内容,而原生 Ollama API 会正确分离思考过程和响应内容。七、Gateway API 参考
DeerFlow 的 Gateway API(端口 8001)提供了完整的 REST 接口,方便集成到其他系统:路由 | 方法 | 说明 |
/api/models | GET | 列出所有可用模型 |
/api/models/{name} | GET | 获取指定模型详情 |
/api/mcp/config | GET / PUT | 获取/更新 MCP 配置 |
/api/skills | GET | 列出所有技能 |
/api/skills/{name} | PUT | 启用/禁用指定技能 |
/api/skills/install | POST | 安装 .skill 压缩包 |
/api/memory | GET | 获取记忆数据 |
/api/memory/reload | POST | 强制重新加载记忆 |
/api/threads/{id}/uploads | POST | 上传文件(支持 PDF/PPT/Excel/Word 自动转换) |
/api/threads/{id}/artifacts/{path} | GET | 获取 Agent 生成的文件 |
/api/threads/{id}/suggestions | POST | 生成后续问题建议 |
八、安全使用指南
DeerFlow 具备系统指令执行、文件操作等高权限能力,默认设计为仅在本地可信环境(127.0.0.1)中使用。如果你需要将 DeerFlow 部署到服务器或局域网环境,必须采取以下安全措施:- 设置 IP 白名单:使用 iptables 或硬件防火墙,只允许可信 IP 访问。
- 前置身份验证:在 Nginx 反向代理层配置 Basic Auth 或 OAuth2 认证。
- 网络隔离:将 DeerFlow 服务器和可信设备划分到同一专用 VLAN。
- 限制沙箱权限:在生产环境中,始终使用 Docker 沙箱而非本地沙箱,并通过 Guardrails 限制危险工具的使用。
九、技术栈总览
组件 | 技术选型 | 版本要求 |
Agent 框架 | LangGraph | 1.0.6+ |
LLM 抽象层 | LangChain | 1.2.3+ |
后端 API | FastAPI | 0.115.0+ |
前端框架 | Next.js | - |
MCP 支持 | langchain-mcp-adapters | - |
沙箱执行 | agent-sandbox (Docker) | - |
文档解析 | markitdown | - |
网络搜索 | tavily-python / firecrawl-py | - |
代码规范 | ruff | - |
Python 版本 | Python | 3.12+ |
Node.js 版本 | Node.js | 22+ |
十、亮点总结与适用场景
核心亮点
- 真正的执行能力:不是"模拟"执行,而是在真实的 Docker 容器中运行代码、操作文件、执行命令,这是 DeerFlow 与许多"玩具级"Agent 框架的本质区别。
- 生产级可靠性:18 个中间件组成的执行链,覆盖了错误处理、安全审计、上下文管理、Token 追踪等生产环境所需的全部能力。
- 极致的可扩展性:Skills(Markdown 文件)、Tools(Python 函数)、MCP(第三方服务)三层扩展机制,让 Agent 的能力边界几乎无限。
- 开箱即用:相比裸用 LangGraph,DeerFlow 省去了大量底层搭建工作,让开发者专注于业务逻辑。
- 完全开源自托管:MIT 协议,数据完全在自己手中,无需担心隐私泄露。
适用场景
- 深度研究自动化:自动搜索、分析、整合多源信息,生成专业研究报告
- 企业知识库问答:结合 MCP 和自定义 Skills 构建领域专家 Agent
- IM 机器人:接入飞书、企业微信,为团队提供 AI 助手服务
十一、与同类框架的对比
特性 | DeerFlow 2.0 | OpenManus | AutoGen | CrewAI |
开箱即用 | ✅ 完整 Harness | 🔧 需要组装 | 🔧 需要组装 | 🔧 需要组装 |
沙箱隔离 | ✅ Docker AIO | ⚠️ 有限 | ❌ 无 | ❌ 无 |
持久化记忆 | ✅ 内置 | ⚠️ 有限 | ⚠️ 有限 | ⚠️ 有限 |
IM 渠道集成 | ✅ 飞书/企微/Slack/TG | ❌ 无 | ❌ 无 | ❌ 无 |
Web UI | ✅ 完整 Next.js | ✅ 有 | ❌ 无 | ❌ 无 |
MCP 支持 | ✅ 原生 | ⚠️ 有限 | ⚠️ 有限 | ⚠️ 有限 |
技能系统 | ✅ Markdown Skills | ❌ 无 | ❌ 无 | ✅ 有 |
开源协议 | MIT | MIT | MIT | MIT |
结语
DeerFlow 2.0 代表了 AI Agent 框架从"能用"到"好用"的重要跨越。它不是一个需要你深入钻研才能使用的学术框架,而是一个真正面向实际生产场景设计的工程化产品。如果你正在寻找一个可以自托管、深度定制、能够处理从几分钟到几小时复杂任务的多智能体平台,DeerFlow 2.0 是 2026 年最值得认真评估的选项之一。