DeerFlow (Deep Exploration and Efficient Research Flow) — 字节跳动开源的 AI 超级智能体框架
目录
1. 项目概述
DeerFlow 是一个开源的超级智能体框架 (Super Agent Harness),能够编排子 Agent、记忆和沙箱来完成几乎任何任务,由可扩展的技能 (Skills) 驱动。
核心特性
| 特性 | 说明 |
|---|
| 子 Agent 系统 | 支持任务分解和并行执行,内置 general-purpose 和 bash 子 Agent |
| 沙箱执行 | 本地执行、Docker 容器、Kubernetes Pod 三种沙箱模式 |
| 持久记忆 | 长期记忆系统,跨会话保留上下文 |
| 技能系统 | 20+ 预置技能,支持动态安装和管理自定义技能 |
| MCP 协议 | 原生支持 Model Context Protocol(stdio/SSE/HTTP) |
| 多模型支持 | OpenAI、Claude、DeepSeek、Gemini、vLLM、Mindie 等 |
| 多渠道集成 | 飞书、Slack、Telegram、Discord、钉钉、微信、企业微信 |
| 链路追踪 | LangSmith / Langfuse 双链路追踪 |
| Claude Code 集成 | 支持 Claude Code 作为编码子 Agent |
2.0 版本说明
DeerFlow 2.0 是完全重写的版本,与 v1 无代码共享。v1 的原始 Deep Research 框架在 1.x 分支 维护。
2. 整体架构
┌─────────────────────────────────────────────────────────────┐
│ 用户 / IM 渠道 │
│ (Web UI / 飞书 / Slack / Telegram / Discord / 钉钉) │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Nginx 反向代理 (:2026) │
│ /api/langgraph/* → Gateway (LangGraph 兼容) │
│ /api/* → Gateway (原生路由) │
│ /* → Frontend (Next.js) │
└──────┬──────────────────────────────────┬──────────────────┘
│ │
▼ ▼
┌──────────────────────┐ ┌──────────────────────────────────┐
│ FastAPI Gateway │ │ Next.js Frontend │
│ (:8001) │ │ (React 19 + TypeScript) │
│ │ │ │
│ ┌─────────────────┐ │ │ App Router / Shadcn UI │
│ │ 认证/授权/CSRF │ │ │ React Query / CodeMirror │
│ └────────┬────────┘ │ │ Nextra 文档站 / i18n │
│ │ │ └──────────────────────────────────┘
│ ┌────────▼────────┐ │
│ │ API 路由层 │ │
│ │ threads/runs/ │ │
│ │ agents/skills/ │ │
│ │ memory/mcp/ │ │
│ │ uploads/auth/ │ │
│ └────────┬────────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ 服务编排层 │ │
│ │ (services.py) │ │
│ └────────┬────────┘ │
└──────────┼───────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ DeerFlow 核心引擎 (deerflow package) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Agent 系统 │ │ 运行时引擎 │ │ 工具系统 │ │ 技能系统 │ │
│ │ LangGraph │ │ 执行/流式 │ │ 内置+MCP │ │ 安装/管理 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─────┐ │
│ │ 子 Agent │ │ 检查点/ │ │ 社区工具 │ │ 安全扫描 │ │
│ │ 委派系统 │ │ 持久化 │ │ 搜索/抓取 │ │ 验证策略 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 沙箱系统 │ │ 模型工厂 │ │ 安全护栏 │ │ 链路追踪 │ │
│ │ 本地/Docker│ │ 多LLM支持│ │ 授权检查 │ │ Smith/ │ │
│ │ /K8s Pod │ │ 动态加载 │ │ 白名单 │ │ Fuse │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 基础设施层 │
│ SQLite / PostgreSQL │ Docker │ Kubernetes │ LangSmith/Fuse │
└─────────────────────────────────────────────────────────────┘
架构设计要点
- 统一入口: Nginx 在端口 2026 统一代理前端和后端,同源部署无 CORS 问题
- 网关内嵌运行时: Gateway API 内嵌 Agent 运行时,无需独立的 LangGraph Server
- LangGraph 兼容: Gateway 同时提供 LangGraph 兼容 API (
/api/langgraph/*)
- 模块化核心:
deerflow 包通过 reflection 模块实现动态类加载,支持运行时扩展
- DooD 模式: Docker 沙箱使用 Docker-outside-of-Docker 模式,Gateway 容器挂载宿主机 Docker Socket
3. 项目目录结构
deer-flow/ # 项目根目录
│
├── .agent/ # AI Agent 配置
│ └── skills/smoke-test/ # 冒烟测试技能
│
├── .github/ # GitHub 配置
│ ├── ISSUE_TEMPLATE/ # Issue 模板
│ ├── workflows/ # CI/CD 工作流
│ │ ├── backend-unit-tests.yml # 后端单元测试
│ │ ├── backend-blocking-io-tests.yml # 后端阻塞 IO 测试
│ │ ├── frontend-unit-tests.yml # 前端单元测试
│ │ ├── e2e-tests.yml # 端到端测试
│ │ ├── lint-check.yml # 代码检查
│ │ └── container.yaml # 容器发布
│ └── copilot-instructions.md # GitHub Copilot 指令
│
├── backend/ # ===== 后端 =====
│ ├── app/ # 应用入口层
│ │ ├── channels/ # IM 渠道桥接
│ │ │ ├── base.py # 渠道基类
│ │ │ ├── manager.py # 渠道管理器
│ │ │ ├── service.py # 渠道服务层
│ │ │ ├── message_bus.py # 消息总线
│ │ │ ├── feishu.py # 飞书渠道
│ │ │ ├── slack.py # Slack 渠道
│ │ │ ├── telegram.py # Telegram 渠道
│ │ │ ├── discord.py # Discord 渠道
│ │ │ ├── dingtalk.py # 钉钉渠道
│ │ │ ├── wechat.py # 微信渠道
│ │ │ └── wecom.py # 企业微信渠道
│ │ │
│ │ └── gateway/ # FastAPI 网关
│ │ ├── app.py # 应用初始化
│ │ ├── services.py # 服务编排
│ │ ├── deps.py # 依赖注入
│ │ ├── auth_middleware.py # 认证中间件
│ │ ├── csrf_middleware.py # CSRF 防护
│ │ ├── authz.py # 授权逻辑
│ │ ├── auth/ # 认证模块
│ │ │ ├── jwt.py # JWT 令牌
│ │ │ ├── password.py # 密码哈希
│ │ │ ├── local_provider.py # 本地认证
│ │ │ └── providers.py # 认证提供者接口
│ │ └── routers/ # API 路由
│ │ ├── threads.py # 线程 CRUD
│ │ ├── thread_runs.py # 线程运行管理
│ │ ├── agents.py # Agent 管理
│ │ ├── auth.py # 认证端点
│ │ ├── skills.py # 技能管理
│ │ ├── memory.py # 记忆管理
│ │ ├── uploads.py # 文件上传
│ │ ├── mcp.py # MCP 管理
│ │ ├── artifacts.py # 制品管理
│ │ ├── models.py # 模型管理
│ │ └── assistants_compat.py # OpenAI 兼容层
│ │
│ ├── packages/ # Python 包
│ │ └── harness/ # 核心包 (deerflow-harness)
│ │ └── deerflow/ # ===== deerflow 核心包 =====
│ │ ├── client.py # 核心客户端 (55KB)
│ │ ├── agents/ # Agent 系统
│ │ │ ├── factory.py # Agent 工厂
│ │ │ ├── features.py # 运行时特性
│ │ │ ├── thread_state.py # 线程状态
│ │ │ ├── lead_agent/ # 主 Agent
│ │ │ ├── middlewares/ # 中间件 (9个)
│ │ │ └── memory/ # 记忆子系统
│ │ ├── community/ # 社区工具集成
│ │ │ ├── tavily/ # Tavily 搜索
│ │ │ ├── jina_ai/ # Jina AI
│ │ │ ├── firecrawl/ # Firecrawl 抓取
│ │ │ ├── ddg_search/ # DuckDuckGo 搜索
│ │ │ ├── serper/ # Google 搜索
│ │ │ ├── exa/ # Exa AI 搜索
│ │ │ ├── infoquest/ # InfoQuest
│ │ │ ├── image_search/ # 图片搜索
│ │ │ └── aio_sandbox/ # 异步沙箱
│ │ ├── config/ # 配置系统
│ │ │ ├── app_config.py # 主配置 (20KB)
│ │ │ ├── paths.py # 路径配置 (14KB)
│ │ │ ├── extensions_config.py # 扩展配置 (11KB)
│ │ │ ├── model_config.py # 模型配置
│ │ │ ├── database_config.py # 数据库配置
│ │ │ ├── memory_config.py # 记忆配置
│ │ │ └── guardrails_config.py # 护栏配置
│ │ ├── guardrails/ # 安全护栏
│ │ ├── mcp/ # MCP 协议集成
│ │ ├── models/ # 模型工厂
│ │ │ ├── factory.py # 模型工厂
│ │ │ ├── claude_provider.py # Claude 支持
│ │ │ ├── openai_codex_provider.py # Codex 支持
│ │ │ ├── vllm_provider.py # vLLM 支持
│ │ │ ├── mindie_provider.py # Mindie 支持
│ │ │ ├── patched_openai.py # OpenAI 补丁
│ │ │ ├── patched_deepseek.py # DeepSeek 补丁
│ │ │ └── credential_loader.py # 凭证加载
│ │ ├── persistence/ # 数据持久化
│ │ │ ├── engine.py # 数据库引擎
│ │ │ ├── models/ # ORM 模型
│ │ │ ├── run/ # 运行记录
│ │ │ ├── thread_meta/ # 线程元数据
│ │ │ ├── user/ # 用户数据
│ │ │ ├── feedback/ # 反馈数据
│ │ │ └── migrations/ # 数据库迁移
│ │ ├── reflection/ # 动态模块加载
│ │ ├── runtime/ # 运行时环境
│ │ │ ├── runs/ # 运行管理
│ │ │ ├── checkpointer/ # 检查点
│ │ │ ├── store/ # BaseStore
│ │ │ ├── stream_bridge/ # 流式桥接
│ │ │ ├── journal.py # 运行日志 (23KB)
│ │ │ └── events/ # 事件系统
│ │ ├── sandbox/ # 沙箱系统
│ │ │ ├── sandbox.py # 沙箱接口
│ │ │ ├── tools.py # 沙箱工具 (69KB)
│ │ │ ├── middleware.py # 沙箱中间件
│ │ │ ├── security.py # 安全策略
│ │ │ └── local/ # 本地沙箱
│ │ ├── skills/ # 技能系统
│ │ │ ├── installer.py # 技能安装器
│ │ │ ├── parser.py # 技能解析
│ │ │ ├── security_scanner.py # 安全扫描
│ │ │ ├── validation.py # 技能验证
│ │ │ └── storage/ # 技能存储
│ │ ├── subagents/ # 子 Agent 系统
│ │ │ ├── executor.py # 执行引擎 (36KB)
│ │ │ ├── registry.py # 注册表
│ │ │ ├── config.py # 子 Agent 配置
│ │ │ └── builtins/ # 内置子 Agent
│ │ ├── tools/ # 工具系统
│ │ │ ├── tools.py # 工具注册
│ │ │ ├── skill_manage_tool.py # 技能管理工具
│ │ │ └── builtins/ # 内置工具
│ │ ├── tracing/ # 链路追踪
│ │ └── uploads/ # 文件上传
│ │
│ ├── docs/ # 后端文档
│ ├── scripts/ # 后端脚本
│ ├── tests/ # 测试套件
│ ├── pyproject.toml # Python 依赖
│ ├── langgraph.json # LangGraph 图注册
│ ├── Dockerfile # 后端容器
│ └── debug.py # 调试工具
│
├── frontend/ # ===== 前端 =====
│ ├── src/
│ │ ├── app/ # Next.js App Router
│ │ │ ├── (auth)/ # 认证路由组
│ │ │ ├── [lang]/ # 国际化路由
│ │ │ ├── workspace/ # 工作区页面
│ │ │ ├── blog/ # 博客页面
│ │ │ └── api/ # API 路由
│ │ ├── components/ # React 组件
│ │ │ ├── ui/ # 通用 UI (Shadcn)
│ │ │ ├── workspace/ # 工作区组件
│ │ │ ├── ai-elements/ # AI 交互组件
│ │ │ └── landing/ # 落地页组件
│ │ ├── core/ # 核心业务逻辑
│ │ │ ├── api/ # API 客户端
│ │ │ ├── agents/ # Agent 管理
│ │ │ ├── artifacts/ # 产物管理
│ │ │ ├── auth/ # 认证
│ │ │ ├── i18n/ # 国际化
│ │ │ ├── mcp/ # MCP 集成
│ │ │ ├── memory/ # 记忆管理
│ │ │ ├── messages/ # 消息处理
│ │ │ ├── models/ # 数据模型
│ │ │ ├── settings/ # 设置管理
│ │ │ ├── skills/ # 技能管理
│ │ │ ├── streamdown/ # 流式 Markdown
│ │ │ └── tasks/ # 任务管理
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── lib/ # 工具库
│ │ ├── styles/ # 全局样式
│ │ ├── typings/ # TypeScript 类型
│ │ └── content/ # Nextra 文档 (MDX)
│ ├── tests/
│ │ ├── e2e/ # E2E 测试 (Playwright)
│ │ └── unit/ # 单元测试 (Vitest)
│ ├── package.json # Node.js 依赖
│ └── Dockerfile # 前端容器
│
├── docker/ # ===== Docker 部署 =====
│ ├── docker-compose.yaml # 生产环境编排
│ ├── docker-compose-dev.yaml # 开发环境编排
│ ├── dev-entrypoint.sh # 开发入口脚本
│ ├── nginx/ # Nginx 反向代理配置
│ │ └── nginx.conf # Nginx 配置模板
│ └── provisioner/ # K8s 沙箱供给器
│ └── Dockerfile
│
├── scripts/ # ===== 项目级脚本 =====
│ ├── setup_wizard.py # 交互式安装向导
│ ├── doctor.py # 环境诊断
│ ├── deploy.sh # 部署脚本
│ ├── serve.sh # 服务启动脚本
│ ├── docker.sh # Docker 操作脚本
│ ├── configure.py # 配置引导
│ └── check.py # 依赖检查
│
├── skills/public/ # ===== 公共技能库 =====
│ ├── deep-research/ # 深度研究
│ ├── data-analysis/ # 数据分析
│ ├── code-documentation/ # 代码文档生成
│ ├── ppt-generation/ # PPT 生成
│ ├── podcast-generation/ # 播客生成
│ ├── chart-visualization/ # 图表可视化
│ ├── frontend-design/ # 前端设计
│ ├── image-generation/ # 图片生成
│ ├── newsletter-generation/ # 新闻简报生成
│ ├── academic-paper-review/ # 学术论文评审
│ ├── systematic-literature-review/ # 系统性文献综述
│ ├── consulting-analysis/ # 咨询分析
│ ├── github-deep-research/ # GitHub 深度研究
│ ├── skill-creator/ # 技能创建器(元技能)
│ ├── find-skills/ # 技能发现
│ ├── bootstrap/ # 项目引导
│ ├── claude-to-deerflow/ # Claude 迁移助手
│ ├── surprise-me/ # 随机惊喜
│ └── vercel-deploy-claimable/ # Vercel 部署
│
├── docs/ # ===== 项目文档 =====
├── config.example.yaml # 配置示例
├── extensions_config.example.json # 扩展配置示例
├── .env.example # 环境变量示例
├── Makefile # 项目级 Makefile
├── README.md # 项目主文档
├── README_zh.md # 中文文档
├── Install.md # 安装指南
├── CONTRIBUTING.md # 贡献指南
├── LICENSE # MIT 许可证
└── SECURITY.md # 安全策略
4. 主要模块职责
4.1 核心引擎 (deerflow)
路径: backend/packages/harness/deerflow/
核心引擎是 DeerFlow 的"大脑",包含 Agent 编排、工具管理、沙箱执行、记忆系统等全部核心逻辑。采用 LangGraph 作为 Agent 编排框架。
| 子模块 | 职责 |
|---|
agents/ | Agent 定义与工厂,LangGraph 图构建,中间件管道 |
runtime/ | Agent 执行、流式传输、检查点、运行管理 |
models/ | 多 LLM 提供者支持(OpenAI、Claude、DeepSeek、vLLM 等) |
tools/ | 工具注册、内置工具、技能管理工具 |
sandbox/ | 安全代码执行环境(本地/Docker/K8s) |
skills/ | 技能安装、解析、验证、安全扫描 |
subagents/ | 子 Agent 委派与执行引擎 |
community/ | 第三方搜索和信息获取服务集成 |
mcp/ | Model Context Protocol 协议集成 |
config/ | 统一配置管理(YAML + 环境变量) |
guardrails/ | 工具调用安全检查与授权 |
persistence/ | SQLAlchemy 2.0 异步 ORM 数据持久化 |
tracing/ | LangSmith / Langfuse 链路追踪 |
uploads/ | 文件上传管理与路径安全校验 |
reflection/ | 运行时动态类/变量解析 |
client.py | 核心客户端,封装 LangGraph SDK 交互 |
4.2 API 网关 (gateway)
路径: backend/app/gateway/
基于 FastAPI 的 API 网关,内嵌 Agent 运行时,提供 REST API 和 LangGraph 兼容 API。
| 子模块 | 职责 |
|---|
app.py | FastAPI 应用创建与生命周期管理 |
services.py | 业务服务编排(模型/MCP/技能/记忆等) |
deps.py | FastAPI 依赖注入 |
auth/ | 认证系统(JWT + bcrypt + 本地认证) |
auth_middleware.py | 认证中间件 |
csrf_middleware.py | CSRF 防护中间件 |
authz.py | 授权逻辑 |
routers/ | API 路由(threads/runs/agents/skills/memory 等) |
4.3 IM 渠道层 (channels)
路径: backend/app/channels/
将外部 IM 平台桥接到 DeerFlow Agent,通过统一的消息总线和管理器协调。
| 渠道 | 文件 | 说明 |
|---|
| 飞书 | feishu.py (32KB) | 飞书/Lark 机器人集成 |
| 钉钉 | dingtalk.py (30KB) | 钉钉流式消息集成 |
| 微信 | wechat.py (53KB) | 微信公众号集成 |
| 企业微信 | wecom.py (14KB) | 企业微信 AI 机器人 |
| Slack | slack.py (9KB) | Slack 集成 |
| Telegram | telegram.py (13KB) | Telegram Bot 集成 |
| Discord | discord.py (24KB) | Discord Bot 集成 |
4.4 前端应用 (frontend)
路径: frontend/
基于 Next.js 16 + React 19 的全栈前端应用,使用 App Router 架构。
| 子模块 | 职责 |
|---|
app/ | Next.js App Router 路由(工作区、博客、API) |
components/ | React UI 组件(Shadcn UI + Radix UI) |
core/ | 核心业务逻辑(API 客户端、Agent 管理、消息处理等) |
hooks/ | 自定义 React Hooks |
lib/ | 工具函数库 |
content/ | Nextra 文档内容 (MDX) |
4.5 部署层 (docker)
路径: docker/
Docker 容器化部署配置,包含 Nginx 反向代理和多服务编排。
| 文件 | 说明 |
|---|
docker-compose.yaml | 生产环境编排(nginx + frontend + gateway + provisioner) |
docker-compose-dev.yaml | 开发环境编排(热重载、源码挂载) |
nginx/nginx.conf | Nginx 反向代理配置 |
provisioner/ | Kubernetes 沙箱容器供给器 |
4.6 技能系统 (skills)
路径: skills/public/
预置的 20 个公共技能,每个技能是一个独立的功能包,包含 SKILL.md 定义文件。
5. 关键类与函数说明
5.1 Agent 系统
路径: backend/packages/harness/deerflow/agents/
| 类/函数 | 文件 | 说明 |
|---|
create_deerflow_agent() | factory.py (15KB) | 核心工厂函数,创建完整的 DeerFlow Agent,组装 LangGraph 图、中间件管道、工具集 |
make_lead_agent() | lead_agent/ | 构建主导 Agent,包含 prompt 模板和特性配置 |
RuntimeFeatures | features.py | 运行时特性标志系统,控制 Agent 行为(如是否启用记忆、沙箱等) |
ThreadState | thread_state.py | 线程状态 TypedDict,定义 Agent 执行过程中的状态结构 |
SandboxState | thread_state.py | 沙箱状态 TypedDict,跟踪沙箱执行状态 |
Next / Prev | — | Agent 图节点路由枚举,控制 LangGraph 图的流转方向 |
中间件 (middlewares/):
| 中间件 | 说明 |
|---|
ThreadDataMiddleware | 线程数据管理 |
UploadsMiddleware | 文件上传处理 |
SandboxMiddleware | 沙箱生命周期管理 |
SummarizationMiddleware | 对话摘要 |
TodoListMiddleware | 任务列表跟踪 |
TitleMiddleware | 对话标题生成 |
MemoryMiddleware | 记忆提取与注入 |
ViewImageMiddleware | 图片查看 |
ClarificationMiddleware | 澄清请求处理 |
5.2 运行时引擎
路径: backend/packages/harness/deerflow/runtime/
| 类/函数 | 文件 | 说明 |
|---|
run_agent() | — | 核心执行函数,启动 Agent 运行 |
RunManager | runs/ | 运行管理器,协调 Agent 生命周期 |
RunContext | runs/ | 运行上下文,封装单次执行的配置和状态 |
RunRecord | runs/ | 运行记录,持久化运行元数据 |
RunStatus | — | 运行状态枚举 |
StreamBridge | stream_bridge/ | 流式传输桥接,将 LangGraph 事件转换为客户端可消费的流 |
MemoryStreamBridge | stream_bridge/ | 记忆流式桥接 |
StreamEvent | — | 流式事件类型定义 |
make_checkpointer() | checkpointer/ | 创建 LangGraph 检查点(状态持久化) |
make_store() | store/ | 创建 BaseStore 实例 |
journal.py (23KB) | — | 运行日志/记录系统 |
5.3 模型提供者
路径: backend/packages/harness/deerflow/models/
| 类/函数 | 文件 | 说明 |
|---|
create_chat_model() | factory.py (8KB) | 模型工厂函数,根据配置动态创建 LLM 实例 |
ClaudeChatModel | claude_provider.py (14KB) | Anthropic Claude 模型适配(支持 Claude Code OAuth) |
CodexChatModel | openai_codex_provider.py (18KB) | OpenAI Codex CLI 模型适配 |
VllmChatModel | vllm_provider.py (10KB) | vLLM 自部署模型适配(支持 Qwen 推理模型) |
MindieChatModel | mindie_provider.py (10KB) | 华为 Mindie 模型适配 |
PatchedOpenAI | patched_openai.py | OpenAI 兼容 API 补丁封装 |
PatchedDeepSeek | patched_deepseek.py | DeepSeek 模型补丁封装 |
PatchedMiniMax | patched_minimax.py | MiniMax 模型补丁封装 |
load_credentials() | credential_loader.py (7KB) | 模型凭证加载器,支持多种凭证来源 |
5.4 工具系统
路径: backend/packages/harness/deerflow/tools/
| 类/函数 | 文件 | 说明 |
|---|
get_available_tools() | tools.py (10KB) | 获取所有可用工具列表(内置 + MCP + 技能) |
SkillManageTool | skill_manage_tool.py (10KB) | 技能管理工具(安装/卸载/列表/搜索) |
内置工具 (builtins/):
| 工具 | 说明 |
|---|
present_files | 展示文件内容 |
ask_clarification | 向用户请求澄清 |
skill_manage | 技能管理操作 |
5.5 沙箱系统
路径: backend/packages/harness/deerflow/sandbox/
| 类/函数 | 文件 | 说明 |
|---|
Sandbox | sandbox.py | 沙箱抽象基类,定义安全代码执行接口 |
SandboxProvider | sandbox_provider.py | 沙箱提供者抽象,支持多种后端 |
get_sandbox_provider() | sandbox_provider.py | 工厂函数,根据配置返回沙箱提供者 |
tools.py (69KB) | — | 最大文件,沙箱内所有可用工具:bash 执行、文件操作、代码搜索等 |
沙箱工具集:
bash — Shell 命令执行
ls — 目录列表
read_file — 文件读取
write_file — 文件写入
str_replace — 字符串替换
- 搜索功能 — 代码/文件搜索
沙箱模式:
| 模式 | 说明 |
|---|
| 本地执行 | 直接在宿主机运行(开发用) |
| Docker 容器 | 在隔离 Docker 容器中运行 |
| Kubernetes Pod | 通过 provisioner 服务在 K8s Pod 中运行 |
5.6 MCP 协议集成
路径: backend/packages/harness/deerflow/mcp/
| 类/函数 | 文件 | 说明 |
|---|
build_server_params() | client.py | 构建 MCP 服务器连接参数 |
build_servers_config() | client.py | 构建 MCP 服务器配置 |
get_mcp_tools() | tools.py (12KB) | 获取 MCP 工具列表 |
initialize_mcp_tools() | cache.py (5KB) | 初始化 MCP 工具(含缓存) |
get_cached_mcp_tools() | cache.py | 获取缓存的 MCP 工具 |
reset_mcp_tools_cache() | cache.py | 重置 MCP 工具缓存 |
SessionPool | session_pool.py (7KB) | MCP 会话池管理 |
| MCP OAuth | oauth.py (5KB) | OAuth 认证支持 |
5.7 配置管理
路径: backend/packages/harness/deerflow/config/
| 类/函数 | 文件 | 说明 |
|---|
get_app_config() | app_config.py (20KB) | 获取全局应用配置 |
get_paths() / Paths | paths.py (14KB) | 获取运行时路径配置 |
get_memory_config() | memory_config.py | 获取记忆系统配置 |
get_extensions_config() | extensions_config.py (11KB) | 获取扩展配置 |
get_tracing_config() | — | 获取链路追踪配置 |
is_tracing_enabled() | — | 检查追踪是否启用 |
AppConfig | app_config.py | 主配置数据类 |
MemoryConfig | memory_config.py | 记忆配置数据类 |
ExtensionsConfig | extensions_config.py | 扩展配置数据类 |
LoopDetectionConfig | loop_detection_config.py | 循环检测配置 |
SkillsConfig | — | 技能配置 |
5.8 安全护栏
路径: backend/packages/harness/deerflow/guardrails/
| 类/函数 | 文件 | 说明 |
|---|
GuardrailProvider | provider.py | 护栏提供者抽象基类 |
GuardrailMiddleware | middleware.py (4KB) | 护栏中间件,在工具调用前执行安全检查 |
GuardrailDecision | — | 护栏决策模型(允许/拒绝/修改) |
GuardrailReason | — | 护栏决策原因 |
GuardrailRequest | — | 护栏请求数据 |
AllowlistProvider | builtin.py | 内置白名单提供者 |
5.9 持久化层
路径: backend/packages/harness/deerflow/persistence/
基于 SQLAlchemy 2.0 异步 ORM,与 LangGraph 检查点系统完全独立。
| 类/函数 | 文件 | 说明 |
|---|
init_engine() | engine.py (7KB) | 初始化数据库引擎 |
get_engine() | engine.py | 获取数据库引擎实例 |
get_session_factory() | engine.py | 获取会话工厂 |
close_engine() | engine.py | 关闭数据库连接 |
ORM 模型:
| 子模块 | 说明 |
|---|
models/ | ORM 基础模型定义 |
run/ | 运行记录持久化 |
thread_meta/ | 线程元数据持久化 |
user/ | 用户数据持久化 |
feedback/ | 反馈数据持久化 |
migrations/ | 数据库迁移脚本 |
5.10 链路追踪
路径: backend/packages/harness/deerflow/tracing/
| 类/函数 | 文件 | 说明 |
|---|
build_tracing_callbacks() | factory.py | 构建追踪回调(LangSmith/Langfuse) |
build_langfuse_trace_metadata() | metadata.py | 构建 LangFuse 追踪元数据 |
inject_langfuse_metadata() | metadata.py | 注入 LangFuse 元数据到配置 |
6. 依赖关系
6.1 后端依赖 (Python)
核心依赖
| 依赖包 | 版本要求 | 用途 |
|---|
deerflow-harness | workspace | 内部核心包(packages/harness) |
fastapi | >=0.115.0 | Web 框架 |
uvicorn[standard] | >=0.34.0 | ASGI 服务器 |
httpx | >=0.28.0 | HTTP 客户端 |
python-multipart | >=0.0.27 | 文件上传支持 |
sse-starlette | >=2.1.0 | Server-Sent Events |
langgraph-sdk | >=0.1.51 | LangGraph SDK(Agent 编排核心) |
lark-oapi | >=1.4.0 | 飞书 SDK |
slack-sdk | >=3.33.0 | Slack SDK |
python-telegram-bot | >=21.0 | Telegram SDK |
dingtalk-stream | >=0.24.3 | 钉钉 SDK |
wecom-aibot-python-sdk | >=0.1.6 | 企业微信 SDK |
markdown-to-mrkdwn | >=0.3.1 | Markdown → Slack 格式转换 |
bcrypt | >=4.0.0 | 密码哈希 |
pyjwt | >=2.9.0 | JWT 认证 |
email-validator | >=2.0.0 | 邮箱验证 |
可选依赖
| 可选组 | 依赖包 | 用途 |
|---|
postgres | deerflow-harness[postgres] | PostgreSQL 数据库 |
discord | discord.py>=2.7.0 | Discord 集成 |
开发依赖
| 依赖包 | 用途 |
|---|
pytest + pytest-asyncio | 单元测试 |
ruff | 代码检查和格式化 |
prompt-toolkit | 交互式命令行 |
6.2 前端依赖 (Node.js)
核心框架
| 依赖包 | 版本 | 用途 |
|---|
next | ^16.2.6 | Next.js 全栈框架 (App Router) |
react | ^19.0.0 | React UI 库 |
react-dom | ^19.0.0 | React DOM |
AI/LLM 集成
| 依赖包 | 版本 | 用途 |
|---|
ai | ^6.0.33 | Vercel AI SDK(流式交互) |
@langchain/core | ^1.1.15 | LangChain 核心 |
@langchain/langgraph-sdk | ^1.5.3 | LangGraph SDK |
streamdown | 1.4.0 | 流式 Markdown 渲染 |
tokenlens | ^1.3.1 | Token 可视化 |
UI 组件
| 依赖包 | 用途 |
|---|
@radix-ui/react-* (18个) | Radix UI 原子组件 |
lucide-react | 图标库 |
cmdk | 命令面板 |
sonner | Toast 通知 |
class-variance-authority | 组件变体管理 |
tailwind-merge | Tailwind 类名合并 |
代码编辑器 (CodeMirror 6)
| 依赖包 | 用途 |
|---|
@uiw/react-codemirror | CodeMirror React 封装 |
@codemirror/lang-python | Python 语法高亮 |
@codemirror/lang-javascript | JavaScript 语法高亮 |
@codemirror/lang-html | HTML 语法高亮 |
@codemirror/lang-css | CSS 语法高亮 |
@codemirror/lang-json | JSON 语法高亮 |
@codemirror/lang-markdown | Markdown 语法高亮 |
可视化与动画
| 依赖包 | 用途 |
|---|
@xyflow/react | 工作流可视化 (React Flow) |
gsap | 高性能动画 |
motion | React 动画 (Framer Motion) |
ogl | WebGL 3D 图形 |
文档系统
| 依赖包 | 用途 |
|---|
nextra + nextra-theme-docs | Next.js 文档框架 |
shiki | 代码语法高亮 |
rehype-katex + katex | 数学公式渲染 |
remark-gfm | GitHub Flavored Markdown |
状态管理
| 依赖包 | 用途 |
|---|
@tanstack/react-query | 服务端状态管理 |
zod | Schema 验证 |
next-themes | 主题切换 |
开发工具
| 依赖包 | 用途 |
|---|
typescript | TypeScript 编译器 |
tailwindcss | CSS 框架 |
eslint + prettier | 代码检查/格式化 |
vitest | 单元测试 |
@playwright/test | E2E 测试 |
6.3 模块依赖关系图
frontend (Next.js)
│
├── @langchain/langgraph-sdk ──→ Gateway API
├── @tanstack/react-query ──→ REST API
└── ai (Vercel AI SDK) ──→ SSE 流式接口
│
▼
Gateway (FastAPI :8001)
│
├── auth/ ──→ JWT + bcrypt
├── routers/ ──→ services.py
│ │
│ ├── deerflow.client ──→ LangGraph SDK
│ ├── deerflow.agents ──→ deerflow.tools
│ │ ├── deerflow.mcp
│ │ ├── deerflow.community
│ │ └── deerflow.sandbox
│ ├── deerflow.models ──→ LLM APIs
│ ├── deerflow.skills ──→ 技能存储
│ ├── deerflow.subagents ──→ deerflow.agents
│ ├── deerflow.memory ──→ deerflow.persistence
│ └── deerflow.tracing ──→ LangSmith/Langfuse
│
└── channels/ ──→ IM 平台 SDK
7. 项目运行方式
7.1 环境要求
| 组件 | 最低要求 | 推荐版本 |
|---|
| Python | >= 3.12 | 3.12+ |
| Node.js | >= 22 | 22+ |
| pnpm | >= 10.26.2 | 最新版 |
| uv | 最新版 | 最新版 |
| Docker | — | 最新版(Docker 部署时) |
| Nginx | — | 最新版(本地开发时) |
部署规格建议
| 部署方式 | 最低配置 | 推荐配置 |
|---|
本地开发 (make dev) | 4 vCPU, 8 GB RAM, 20 GB SSD | 8 vCPU, 16 GB RAM |
Docker 开发 (make docker-start) | 4 vCPU, 8 GB RAM, 25 GB SSD | 8 vCPU, 16 GB RAM |
生产服务器 (make up) | 8 vCPU, 16 GB RAM, 40 GB SSD | 16 vCPU, 32 GB RAM |
7.2 快速开始
# 1. 克隆仓库
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow
# 2. 运行交互式安装向导(约 2 分钟)
make setup
# 向导会引导你选择 LLM 提供者、配置 API Key、设置沙箱模式等
# 自动生成 config.yaml 和 .env
# 3. 验证配置
make doctor
# 4. 启动服务(选择以下任一方式)
7.3 Docker 部署(推荐)
开发模式(热重载)
make docker-init # 拉取沙箱镜像(仅需一次)
make docker-start # 启动服务(自动检测沙箱模式)
生产模式
make up # 构建镜像并启动所有服务
make down # 停止并移除容器
访问地址: http://localhost:2026
Docker 服务架构
用户 → nginx:2026 → frontend (Next.js)
→ gateway:8001 (FastAPI + Agent 运行时)
├── Docker Socket (DooD 模式)
└── provisioner (可选, K8s 沙箱)
7.4 本地开发
# 1. 检查系统依赖
make check # 验证 Node.js 22+, pnpm, uv, nginx
# 2. 安装依赖
make install # 安装后端 + 前端依赖 + pre-commit hooks
# 3. (可选) 拉取沙箱镜像
make setup-sandbox
# 4. (可选) 加载示例记忆数据
python scripts/load_memory_sample.py
# 5. 启动开发服务
make dev
# 访问: http://localhost:2026
Windows 用户注意: 需从 Git Bash 运行,不支持原生 cmd.exe/PowerShell。
7.5 启动模式
| 本地前台 | 本地后台 | Docker 开发 | Docker 生产 |
|---|
| 开发 | make dev | make dev-daemon | make docker-start | — |
| 生产 | make start | make start-daemon | — | make up |
| 停止 | make stop | make stop | make docker-stop | make down |
7.6 配置说明
配置文件
| 文件 | 说明 |
|---|
config.yaml | 主配置文件(由 make setup 生成) |
config.example.yaml | 完整配置模板 |
.env | 环境变量(API Key 等,由向导生成) |
.env.example | 环境变量模板 |
extensions_config.json | MCP 扩展配置 |
extensions_config.example.json | 扩展配置模板 |
模型配置示例
models:
- name: gpt-4o
display_name: GPT-4o
use: langchain_openai:ChatOpenAI
model: gpt-4o
api_key: $OPENAI_API_KEY
- name: claude-sonnet-4.6
display_name: Claude Sonnet 4.6
use: deerflow.models.claude_provider:ClaudeChatModel
model: claude-sonnet-4-6
max_tokens: 4096
supports_thinking: true
- name: qwen3-32b-vllm
display_name: Qwen3 32B (vLLM)
use: deerflow.models.vllm_provider:VllmChatModel
model: Qwen/Qwen3-32B
api_key: $VLLM_API_KEY
base_url: http://localhost:8000/v1
supports_thinking: true
环境变量分类
| 类别 | 变量 |
|---|
| LLM API | OPENAI_API_KEY, GEMINI_API_KEY, DEEPSEEK_API_KEY, VLLM_API_KEY, VOLCENGINE_API_KEY |
| 搜索 API | SERPER_API_KEY, TAVILY_API_KEY, JINA_API_KEY, INFOQUEST_API_KEY |
| IM 渠道 | FEISHU_APP_ID/SECRET, SLACK_BOT_TOKEN, TELEGRAM_BOT_TOKEN, DISCORD_BOT_TOKEN, DINGTALK_CLIENT_ID/SECRET |
| 追踪 | LANGSMITH_TRACING, LANGSMITH_ENDPOINT, LANGSMITH_API_KEY |
| 数据库 | DATABASE_URL |
| 安全 | DEER_FLOW_INTERNAL_AUTH_TOKEN, GATEWAY_CORS_ORIGINS |
关键环境变量
| 变量 | 说明 |
|---|
DEER_FLOW_PROJECT_ROOT | 项目根目录 |
DEER_FLOW_CONFIG_PATH | 配置文件路径 |
DEER_FLOW_HOME | 运行时状态目录(默认 .deer-flow) |
DEER_FLOW_SKILLS_PATH | 技能目录(默认 skills/) |
GATEWAY_CORS_ORIGINS | CORS 允许的源(逗号分隔) |
8. CI/CD 工作流
DeerFlow 使用 GitHub Actions 进行持续集成和持续部署。
| 工作流 | 触发条件 | 说明 |
|---|
lint-check.yml | push to main / PR | 后端 ruff lint + 前端 format/lint/typecheck/build |
backend-unit-tests.yml | push to main / PR | Python pytest 后端单元测试 |
backend-blocking-io-tests.yml | push to main / PR | 后端阻塞 IO 场景测试 |
frontend-unit-tests.yml | push to main / PR (非 draft) | Vitest 前端单元测试(15 分钟超时) |
e2e-tests.yml | push to main / PR (仅 frontend 变更) | Playwright E2E 测试(Chromium) |
container.yaml | 推送 v* 标签 | 构建 Docker 镜像并推送到 ghcr.io |
容器发布标签策略: Git tag + 分支名 + SHA + latest(默认分支)
9. 技术栈总结
| 层级 | 技术选型 |
|---|
| 前端框架 | Next.js 16 + React 19 + TypeScript 5.8 |
| CSS 方案 | Tailwind CSS 4 + Radix UI + class-variance-authority |
| 状态管理 | @tanstack/react-query 5 |
| AI 集成 | Vercel AI SDK 6 + LangGraph SDK + LangChain Core |
| 代码编辑 | CodeMirror 6 (Python/JS/HTML/CSS/JSON/Markdown) |
| 可视化 | @xyflow/react (React Flow) + GSAP + Motion + OGL (WebGL) |
| 文档系统 | Nextra 4 |
| 后端框架 | FastAPI + Uvicorn |
| AI 编排 | LangGraph SDK |
| 消息渠道 | 飞书、Slack、Telegram、Discord、钉钉、微信、企业微信 |
| 认证 | JWT + bcrypt + email-validator |
| 容器化 | Docker + Nginx 反向代理 |
| CI/CD | GitHub Actions (lint + 单元测试 + E2E + 容器发布) |
| 测试 | pytest (后端) + vitest (前端单元) + Playwright (E2E) |
| 代码质量 | ruff (Python) + ESLint + Prettier (TypeScript) |
| 包管理 | uv (Python) + pnpm (Node.js) |
| 数据库 | SQLite (默认) / PostgreSQL (可选) |
| ORM | SQLAlchemy 2.0 (异步) |
| 可观测性 | LangSmith / Langfuse |
本文档基于 DeerFlow 仓库 main 分支分析生成,最后更新时间:2026-05-30
评论区