从浅到深:Deep Agents 核心能力与架构全解析
从浅到深:Deep Agents 核心能力与架构全解析
一文掌握 LLM 智能体从"简单工具循环"到"复杂任务规划"的进化之路
🎯 引子:为什么简单 Agent 不够用?
在 LLM 应用开发中,最常见的 Agent 模式就是:
LLM + 工具循环调用 — 用户给指令,模型判断要不要调工具,调完拿结果继续推理。
这种"浅 Agent" 模式足以应对聊天、简单查询、单步任务。但当任务变得复杂、长时、多步时,它就显得力不从心:
- ❌ 任务步骤太多,上下文装不下
- ❌ 中间结果无法持久化
- ❌ 多线任务难以分工协作
- ❌ 跨会话信息全部丢失
Deep Agents 就是为了解决这些问题而诞生的。
🧠 一、Deep Agent 的核心概念
1.1 简单 Agent vs Deep Agent
简单 Agent:单层 LLM + 工具循环 → 只能处理"浅"任务
1.2 Deep Agent 的进化
DeepAgent 通过引入 四大基本概念,让 Agent 实现从"浅"到"深"的转变:
💪 二、四大核心能力详解
2.1 能力全景图
2.2 能力详解
✏️ 1. 规划与任务分解
让 Agent 能够将复杂任务拆解为离散步骤,跟踪进展,并根据新信息动态调整计划。
- 实现:
To-do-list中间件 - 触发:Agent 收到复杂任务时自动生成 todo list
📖 2. 上下文管理
通过文件系统工具管理大量上下文,防止上下文窗口溢出。
- 实现:
file system中间件 +Summarization中间件 - 关键工具:
ls、read_file、write_file、edit_file - Summarization 配置:
trigger = ("fraction", 0.9) # 上下文到 90% 时触发摘要
keep = ("fraction", 0.15) # 摘要后保留 15% 原文
👥 3. 子代理生成
通过专门的子代理处理子任务,实现上下文隔离。
- 实现:内置
task工具 - 效果:主代理上下文保持干净,子代理可深入处理子任务
🗃️ 4. 长期记忆
跨对话和线程持久保存信息。
- 实现:
file system中间件 + 不同类型的 Backend - 抽象:Backend 可替换(本地文件系统、数据库、云存储等)
🏗️ 三、架构剖析:模型、中间件、工具
3.1 整体架构
3.2 数据流(一次工具调用)
💻 四、实战:create_deep_agent 代码模板
4.1 最简示例
from deepagents import create_deep_agent
from deepagents.backends import FilesystemBackend
# 1️⃣ 定义详尽提示词(DeepAgent 的核心之一)
research_instructions = """你是一位专业研究员。你的职责是开展全面研究,
并撰写精炼的报告。您主要通过internet_search获取信息。
对于相对复杂的任务你要首先编写todo_list以记录任务过程。
## `internet_search`
使用此功能可针对特定查询执行互联网搜索。您可指定返回结果的最大数量、
主题范围,以及是否包含原始内容。
"""
# 2️⃣ 创建 Agent(返回 compile graph 对象)
agent = create_deep_agent(
model = model,
tools = [internet_search],
system_prompt = research_instructions,
backend = FilesystemBackend(root_dir = ".", virtual_mode = True)
)
# 3️⃣ 调用方式(与传统 Agent 完全相同)
result = agent.invoke({
"messages": [{"role": "user", "content": "研究一下 LangGraph 最新进展"}]
})
4.2 内部实现关系
💡
create_deep_agent实际上就是create_agent+ 复杂任务增强配置,所以调用方式与传统 Agent 完全一致。
⚙️ 五、参数详解与使用场景
5.1 四大常用参数
| 参数 | 作用 | 默认值 |
|---|---|---|
system_prompt | 追加到 BASE_AGENT_PROMPT 之后的额外系统提示 | 无 |
tools | 用户赋予的额外工具列表 | [] |
backend | 文件系统后端(默认本地) | FilesystemBackend |
interrupt_on | Human-in-the-Loop 中断配置 | "None" |
5.2 BASE_AGENT_PROMPT
In order to complete the objective that the user asks of you,
you have access to a number of standard tools.
用户传入的
system_prompt会追加到这个基础提示之后,形成最终的系统提示。
5.3 何时使用 DeepAgent?
| 场景 | 必要性 |
|---|---|
| 复杂多步骤任务(研究、规划、写作) | ⭐⭐⭐ |
| 大量上下文处理(长文档、代码库) | ⭐⭐⭐ |
| 需要任务委派(多 Agent 协作) | ⭐⭐ |
| 跨会话持久记忆 | ⭐⭐ |
🎁 六、一张图回顾
📝 结语
DeepAgent 不是要取代简单 Agent,而是为复杂长任务提供一套完整的解决方案:
- 规划让 Agent 不再迷失方向
- 上下文管理让 Agent 不再受窗口限制
- 子代理让 Agent 不再孤军奋战
- 长期记忆让 Agent 不再失忆
如果你正在处理多步骤、长上下文、需要协作的复杂任务,不妨试试 DeepAgent。
💬 讨论:你在项目中遇到过哪些"浅 Agent"搞不定的场景?欢迎评论区交流 👇
许可协议:
CC BY 4.0