本文将系统性介绍 DeepAgents 框架的整体结构,并以 LangGraph (StateGraph) 为核心,解释 DeepAgents 如何实现任务规划、子 Agent 委派、文件系统操作、状态管理与编译执行。
文末附可运行的 LangChain v1.0+ Demo 代码。
目录
1. 引言
随着复杂应用场景对智能化自动工作流的需求不断提升,简单的单步 Agent 已经无法满足“分解任务、多步骤推理、可恢复执行、子 Agent 委派”等高级能力。
DeepAgents 正是在此背景下诞生的一个框架:它采用 LangGraph StateGraph 作为核心构建基石,使得开发者可以像搭建“状态机”一样构建强大的 Agent 系统。
2. 框架基础:LangGraph StateGraph
DeepAgents 的底层并不是杂乱的 Agent 黑魔法,而是:
以 LangGraph 的 StateGraph 为核心,系统化管理 Agent 的状态(States)、节点(Nodes)和转换规则(Edges)。
这意味着你可以明确地定义:
- Agent 当前状态是什么?
- 接下来该执行哪个节点?
- 节点完成后要前往哪里?
- 每个节点是否要产生副作用或触发子 Agent?
StateGraph 的价值:
- 可视化思维:像画流程图一样开发 Agent。
- 可控性强:每一步状态切换都能精确调试与回溯。
- 适配复杂场景:多步骤任务、分支逻辑、人工干预等均能轻松实现。
3. DeepAgents 核心结构
LangGraph 提供底层骨架,而 DeepAgents Core 是运行时决策中心。
它会根据任务特性动态决定:
- 当前任务是否自己处理?
- 是否需要委派给子 Agent?
- 是否需要进行任务规划?
整体分为两条路径。
3.1 任务规划路径(不委派子 Agent)
当系统判断任务可以在本地完成时,它会进入任务规划分支。
能力包括:
write_todos:将待办任务记录为结构化列表read_todos:读取任务清单- 执行复杂、多步骤任务
- 自动跟踪任务完成情况
适合场景:
- 不需要额外能力扩展
- 任务明确且可通过当前 Agent 完成
- 需要强状态跟踪与分步执行
此分支更像“项目经理 + 执行者”,全程自己搞定。
3.2 子 Agent 委派路径(需要子 Agent)
当任务复杂度更高,或有明确的上下文隔离需求时,DeepAgents Core 会选择:
通过 Sub-agent 委派处理复杂任务
特点:
- 子 Agent 使用独立的上下文(Context)
- 每个子 Agent 拥有专属的工具集(Tools)
- 多个子 Agent 之间不会相互污染
- 使任务模块化、可扩展、专业化
典型场景:
- 单 Agent 不擅长某个领域,需要专业子 Agent
- 需要多个 Agent 并行处理
- 需要隔离任务环境
3.3 核心文件系统能力
无论走哪条分支,DeepAgents Core 都默认拥有一组功能齐全的工具,用于与外部环境交互:
| 功能 | 说明 |
|---|---|
ls | 列出目录文件 |
read_file | 读取文件 |
write_file | 写文件 |
glob | 文件模式匹配 |
editfile / edit | 文件编辑 |
grep | 文件内容搜索 |
| Saves large results | 存储大型任务结果 |
这是构建专业级 Agent 的必备基石。
4. Agent 创建与编译
所有核心逻辑确定后,会通过:
create_deep_agent
将整个 DeepAgents Core + 状态图结构“编译”为一个真正可执行的 Agent。
得到的:
Compiled Agent 本质是一个可运行的 LangGraph StateGraph
它继承了所有节点、状态、流转逻辑以及 LangGraph 的运行特性。
5. LangGraph 提供的高级运行特性
最终编译后的 Agent 可以启用 LangGraph 强大的运行特性:
1)流式输出(Streaming Output)
更快的响应体验,适合对话式任务。
2)检查点(Checkpoints)
可保存任意执行步骤的状态,支持:
- 从错误恢复
- 回溯调试
- 持续执行长任务
3)人机交互(Human-in-the-loop)
允许在自动流程中插入人工干预点:
- 关键节点人工确认
- 长任务人工审批
- 需人类判断的决策分支
6. LangChain v1.0+ 实例代码(可直接运行)
下面给出一个最小可运行的 LangGraph StateGraph + Agent Demo(真实可执行)。
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END
from langchain_core.messages import HumanMessage, AIMessage
from typing import TypedDict, List
#=====================================================
# 1. 定义 Agent 状态
#=====================================================
class AgentState(TypedDict):
messages: List
#=====================================================
# 2. 定义节点逻辑:简单 Echo 节点
#=====================================================
def echo_node(state: AgentState):
llm = ChatOpenAI(model="gpt-4o-mini")
user_msg = state["messages"][-1]
ai_msg = llm.invoke([user_msg])
return {"messages": state["messages"] + [ai_msg]}
#=====================================================
# 3. 构建 StateGraph
#=====================================================
graph = StateGraph(AgentState)
# 添加节点
graph.add_node("echo", echo_node)
# 状态流转:echo → END
graph.set_entry_point("echo")
graph.add_edge("echo", END)
# 编译成可执行 Agent
app = graph.compile()
#=====================================================
# 4. 执行测试
#=====================================================
result = app.invoke({"messages": [HumanMessage(content="Hello DeepAgents!")]} )
print(result["messages"][-1].content)
你可以据此继续拓展:
- 增加任务规划节点
- 增加子 Agent 委派节点
- 增加 Memory、工具集及复杂逻辑
7. 总结
本文基于原始流程图,完整梳理 DeepAgents × LangGraph 的整体结构。核心要点如下:
-
DeepAgents 的核心是 LangGraph StateGraph,通过状态机方式构建 Agent。
-
DeepAgents Core 决定任务走向:
- 本地执行与任务规划
- 或子 Agent 委派
-
基础工具集让 Agent 拥有强大的文件操作能力。
-
create_deep_agent统一编译为可执行 Agent。 -
编译后的 Agent 拥有 LangGraph 的运行时能力:
- 流式输出
- 检查点
- 人机交互
如果你准备构建一个“具有多节点、多子 Agent、状态可回溯”的专业级 Agent 系统,那么 DeepAgents 必是最佳选择之一。

被折叠的 条评论
为什么被折叠?



