工程框架:LangChain 的 Deep Agents / deepagents
一、它到底是什么
先抓核心定义:
• 官方把 Deep Agents 描述为:“the easiest way to start building agents … with built-in capabilities for task planning, file systems for context management, subagent-spawning, and long-term memory”,也就是内置了任务规划、文件系统上下文管理、子代理生成、长期记忆。 
• 它是一个独立库,建立在 LangChain 的 agent 构件之上,并使用 LangGraph 作为运行时,以获得持久执行、流式输出、人类介入等能力。 
• create_deep_agent 返回的是一个已编译的 LangGraph graph,所以它天然能接 LangGraph 的流式、checkpoint、持久化等特性。 
换句话说:
LangChain 是基础积木,LangGraph 是运行时引擎,Deep Agents 是把这些能力打包成“开箱即用复杂任务智能体”的成品骨架。 这也是它和普通 create_agent 的关键区别。 
⸻
二、为什么会有 Deep Agents
普通 agent 往往适合这种任务:
问一个问题 → 调 1~3 个工具 → 给答案
但一旦任务变成:
• 先检索,再比较,再归纳,再写文档
• 先读多个文件,再修改代码,再跑命令,再修复错误
• 需要执行 20~50 次工具调用
• 中间结果很长,不能一直塞在上下文里
• 需要把子问题隔离出来,避免主上下文被污染
普通 agent 就容易出现几个问题:
1. 没有真正的规划能力
它会“边想边调”,但不擅长先拆任务、再执行、再更新状态。
2. 上下文爆炸
工具返回太长、对话太长,很快把上下文窗口塞满。
3. 没有工作区
中间报告、草稿、代码片段、检索结果没有地方放,只能硬塞 prompt。
4. 没有上下文隔离
一个子任务产生的大量细节会污染主任务上下文。
5. 长任务不稳定
任务做一半容易丢目标、重复劳动、忘记先前结论。
Deep Agents 正是为这些“长链路任务”设计的。官方明确说它适合需要planning and decomposition、filesystem tools、subagents、persistent memory 的复杂任务。 
⸻
三、Deep Agents 的核心设计思想
1)它不是“更聪明的 prompt”,而是“更完整的执行环境”
Deep Agents 的重点不是只靠 system prompt 让模型变聪明,而是给模型一个更接近“工作台”的环境:
• 有 todo 计划板
• 有文件系统
• 有 shell
• 有子代理
• 有记忆
• 有可追踪运行时
所以它更像“给 LLM 配了一个操作系统级别的工作台”,而不是单纯“帮你多写了一层 prompt”。
2)把“上下文”从纯文本对话,扩展成“对话 + 文件 + 记忆 + 子任务隔离”
普通聊天式 agent 的上下文主要是消息历史。
Deep Agents 的上下文则被拆到多个层面:
• 对话历史
• Todo 计划
• 文件系统中的中间成果
• 记忆存储
• 子代理自己的隔离上下文
这就是它能做更长任务的关键。
⸻
四、核心能力逐个讲透
- 任务规划:write_todos
Deep Agents 内置一个 write_todos 工具,专门让 agent 把复杂任务拆成离散步骤、跟踪进度、根据新信息更新计划。官方把它作为 planning and task decomposition 的核心能力。 
这意味着它不是这样工作:
用户说一句 → 模型直接一路冲
而更像这样:
1. 理解目标
2. 拆成若干子步骤
3. 标记当前进行中的步骤
4. 执行一步
5. 根据结果调整后续 todo
6. 最终收束输出
这对复杂任务特别重要。比如“研究某个行业并出报告”时,它会更自然地形成:
• 收集资料
• 对比来源
• 归纳结论
• 写摘要
• 写完整报告
• 自检
这种机制的价值不只是“看起来更有条理”,而是能显著降低任务漂移。
⸻
- 文件系统:把上下文从 prompt 搬到工作区
这是 Deep Agents 最有辨识度的能力之一。
官方文档列出了文件工具,例如:
• ls
• read_file
• write_file
• edit_file
GitHub README 还提到 glob、grep 等。它们用于读写上下文、管理中间成果。 
为什么这很关键?
因为在长任务里,大量信息其实不应该一直放在上下文窗口中,而应该写入“外部工作区”:
• 检索到的网页摘要
• 草拟的报告
• 代码文件
• 配置文件
• 对比结果
• 中间分析结论
这样做有几个直接好处:
第一,防止上下文爆掉。
官方明确说文件系统工具可以把大上下文卸载到内存或文件系统,避免 context window overflow。 
第二,让工具结果长度不再成为瓶颈。
有些网页、日志、代码文件非常长,不适合直接塞进 messages;写到文件后,agent 可以按需局部读取。
第三,更接近真实工作方式。
人做复杂任务也是“边查边记、边写边改”,而不是把所有信息都死记在脑子里。
所以你可以把 Deep Agents 的文件系统理解为:
给 agent 配了一个可读写的外部脑。
⸻
- 可插拔文件系统后端
Deep Agents 的文件系统不是写死的。官方强调它支持 pluggable backends,可以切换成:
• in-memory state
• local disk
• LangGraph store 用于跨线程持久化
• sandboxes
• 自定义 backend
• 复合路由 backend
这些都在文档中明确提到。 
这意味着它不仅适合本地 demo,也适合生产架构:
• 开发阶段:用内存或本地磁盘
• 线上任务:接持久化 store
• 安全执行:接 sandbox
• 多租户系统:自定义隔离 backend
这一层设计很工程化,因为它把“agent 怎么访问工作区”抽象成了基础设施,而不是写死在业务代码里。
⸻
- 子代理:task 工具
Deep Agents 的另一个核心能力是 subagent spawning。官方说明中提到内置的 task 工具可以让 agent 生成专门的子代理来处理子任务,并通过隔离上下文防止主上下文被污染。 
这点非常重要。
很多复杂任务天然适合拆成几个不同职责的角色,例如:
• 主代理:负责总体规划与最终交付
• 子代理 A:做资料检索
• 子代理 B:做表格汇总
• 子代理 C:做代码修复
• 子代理 D:做最终校对
为什么不能全让一个 agent 干?
因为每个子任务都会产生大量局部细节。如果都塞进主上下文,主代理会越来越“脏”,后面更容易迷失主线。
子代理的作用,就是:
• 把子任务关进一个隔离的上下文空间
• 做完后只把必要结论带回来
• 不把所有中间噪声都回灌到主线程
这非常像工程里的“模块化”与“信息隐藏”。
⸻
- 上下文管理:自动压缩与卸载
官方 README 明确提到它的 context management 包括:
• 对长对话做 auto-summarization
• 大输出结果可保存到文件
• CLI 还提到 context compaction & offloading,即把旧消息总结并把原始内容卸载到后端存储,释放上下文窗口。 
这是 Deep Agents 真正“深”的地方。
大多数人搭 agent 时,最容易忽略的不是工具,而是上下文管理。
任务一长,真正的难点往往不是“能不能调用工具”,而是:
• 哪些历史要保留
• 哪些要压缩
• 哪些写入文件
• 哪些直接丢弃
• 哪些只在子任务里保留
Deep Agents 把这层做成了框架级能力,而不是完全让开发者自己拼。
对生产系统来说,这有两个实际价值:
一是稳定性更高。
长任务不会因为上下文爆炸而迅速失控。
二是成本更低。
不需要把所有长历史都反复传给模型,token 成本和延迟都会更可控。官方网站也提到 prompt caching 和上下文压缩等思路。 
⸻
- 长期记忆
Deep Agents 支持用 LangGraph 的 Memory Store 实现跨线程、跨会话的持久记忆。官方文档明确写到,agent 可以从之前对话中保存和检索信息。 
这意味着它能记住一些长期有效的信息,例如:
• 用户偏好的报告格式
• 项目代码风格
• 常用命令
• 某个组织内部的术语
• 特定任务领域的固定规则
这类信息不是一次任务的“短期上下文”,而是长期有效的“习惯”和“背景知识”。
在 CLI 文档里,官方也写到 Deep Agents CLI 可以在会话之间保留记忆、学习项目约定。 
⸻
- Shell、Web、HTTP、人类审批
从 GitHub README 和 CLI 文档看,Deep Agents 不止文件读写,还能支持:
• execute 执行 shell 命令
• web search
• HTTP requests
• human-in-the-loop approval
• skills
• MCP tools
这些能力在 CLI 文档和仓库中都有明确描述。 
这意味着它很适合做“实际工作型 agent”:
• 读代码
• 改代码
• 执行测试
• 查文档
• 调接口
• 请求审批
• 最终提交结果
这也是为什么官方把 CLI 定位成一个“terminal coding agent”。 
⸻
五、它的运行方式是什么样的
你可以把 Deep Agent 的典型执行流理解成下面这样:
1. 接收用户目标
2. 生成或更新 todo
3. 判断当前步骤需要什么
• 查资料
• 读文件
• 写文件
• 开子代理
• 跑 shell
4. 执行工具
5. 将大结果写入文件/存储
6. 把必要结论回灌到主上下文
7. 继续下一个 todo
8. 最终汇总输出
相比普通 agent,多出来的关键环节有三个:
• 计划层
• 工作区层
• 上下文治理层
这三层,正是它能胜任复杂任务的根本原因。
⸻
六、create_deep_agent 是什么
官方 reference 把 create_deep_agent 定义为一个 factory function,用于创建具备规划、文件系统和子代理能力的 deep agent。 
从官方示例和 README 可以看到,它的用法很直接:
• 可以零配置起一个 agent
• 也可以自定义 model、tools、system_prompt 等
例如官方最简单的例子就是:
• pip install deepagents
• from deepagents import create_deep_agent
• agent = create_deep_agent()
然后让它去 research 和写 summary。 
而在更常见的工程里,你会这样用:
• 传入一个支持 tool-calling 的模型
• 注入业务工具
• 配系统提示词
• 配内存
• 配后端
• 配子代理
这说明它的定位不是“黑盒成品”,而是开箱即用,但仍然可深度定制。 
⸻
七、它依赖哪些底层能力
从官方文档可以归纳出几个前提:
1)模型必须支持 tool calling
Quickstart 明确说明 Deep Agents 需要支持 tool calling 的模型。 
2)底层依赖 LangGraph 运行时
Deep Agents 用 LangGraph 来提供 durable execution、streaming、human-in-the-loop 等运行时特性。 
3)LangChain 负责核心 agent building blocks
也就是说,Deep Agents 不是脱离 LangChain 生态的独立体系,而是站在 LangChain/LangGraph 之上的高层抽象。 
⸻
八、和普通 LangChain Agent 的区别
官方建议写得很清楚:
• 简单 agent:考虑用 LangChain 的 create_agent
• 复杂长任务 agent:用 Deep Agents SDK
• 命令行 coding agent:用 Deep Agents CLI
• 需要完全自定义流程:直接构建 LangGraph workflow 
所以它不是替代一切,而是针对某一类问题最合适。
你可以这样理解:
普通 create_agent
适合:
• FAQ
• 轻量工具调用
• 简单助手
• 少量步骤的业务编排
Deep Agents
适合:
• 深度研究
• 复杂写作
• 代码修改与测试闭环
• 多文件读写
• 长链路任务执行
• 需要记忆、子代理、上下文治理的场景
直接 LangGraph
适合:
• 你要完全控制状态机、节点、边、恢复逻辑
• 你不想用“意见化”的默认行为
• 你要构建高度可控的企业级 workflow
⸻
九、它为什么叫 “agent harness”
这个词很关键。
Harness 不是“模型本身”,而是“把模型驾驭起来的一套骨架/装具”。
GitHub README 用了很明确的话:它是 an opinionated, ready-to-run agent out of the box。 
“Opinionated” 的意思是:
• 它已经替你做了一些设计选择
• 不要求你从零定义所有细节
• 默认鼓励你采用一套被官方认为更适合复杂任务的模式
这有好处也有边界。
好处
• 上手快
• 复杂能力现成可用
• 少踩很多上下文管理的坑
• 适合快速做 MVP 和生产化原型
边界
• 如果你想完全自定义每一步执行逻辑,可能会觉得它“帮你做得太多”
• 某些高度垂直、强约束的业务流,直接用 LangGraph 可能更合适
所以 Deep Agents 最适合的不是“极简型应用”,也不是“极致定制型底层工作流”,而是中间那一大类:
复杂,但又希望快速落地的 agent 应用。
⸻
十、Deep Agents CLI 是什么关系
官方文档写得很明确:Deep Agents CLI 是 built on the Deep Agents SDK 的 terminal coding agent。 
也就是说:
• SDK 是给开发者集成到自己系统里的
• CLI 是官方做好的一个终端 coding agent 产品形态
CLI 自带这些能力:
• 文件操作
• shell 执行
• web search
• HTTP requests
• todo planning
• memory
• 上下文压缩/卸载
• human approval
• skills
• MCP tools
• LangSmith tracing 
它有点像“官方把 Deep Agents 的典型能力做成了一个能直接在终端里用的智能编码助手”。
⸻
十一、典型应用场景
1)Deep Research
官方 quickstart 就是研究并写报告的例子。 
这是它最自然的场景之一,因为研究任务天然符合:
• 先规划
• 分多轮检索
• 汇总资料
• 写草稿
• 反复修订
2)Coding Agent
CLI 的定位就是 terminal coding agent。 
适合:
• 改代码
• 跑测试
• 分析日志
• 修改文档
• 执行 shell 命令
• 记录项目约定
3)企业内部知识工作流
例如:
• 读多个文档
• 提取重点
• 生成方案
• 输出报告
• 保存中间结果
• 长期记住团队偏好
4)多阶段业务自动化
例如:
• 接收任务
• 查询系统
• 做对比分析
• 生成交付物
• 人工审批
• 继续执行
⸻
十二、它适合什么团队
Deep Agents 尤其适合这几类团队:
A. 想尽快把复杂 Agent 跑起来的应用团队
不想从零搭:
• planning
• context compaction
• file workspace
• subagents
• memory
这时 Deep Agents 很合适。
B. 做“研究/写作/代码/运维型” Agent 的团队
因为这些任务都不是一跳完成,而是需要持续工作。
C. 已经在 LangChain / LangGraph 生态里的团队
因为接入成本更低,生态兼容也更自然。 
⸻
十三、它不一定适合什么场景
Deep Agents 很强,但不是所有场景都该用。
1)非常简单的问答助手
比如只查一个知识库、调一个工具、返回一段答案。
这类任务直接用 create_agent 往往更轻。 
2)强流程、强状态机、强审计的企业流程
比如审批流、固定分支业务流。
如果每个节点都要严格控制,手写 LangGraph 往往更稳。
3)对工具权限极其敏感的环境
虽然它支持 human-in-the-loop 和 sandbox,但如果你环境对 shell/file/http 权限非常保守,就需要额外设计安全边界。 
⸻
十四、一个更工程化的理解方式
你可以把 Deep Agents 拆成 5 层:
第 1 层:模型层
支持 tool calling 的 LLM。 
第 2 层:运行时层
LangGraph 提供持久化、流式、checkpoint、人机协同。 
第 3 层:执行骨架层
Deep Agents 提供:
• write_todos
• 文件工具
• 子代理
• 上下文治理
• 记忆接入 
第 4 层:业务工具层
你自己的 search、DB、API、知识库、业务操作工具。
第 5 层:产品层
CLI、研究助手、编码助手、企业工作台等。
这样看,它其实是一个“把复杂任务智能体标准件化”的框架。
⸻
十五、一个实际例子:为什么它比普通 Agent 更合适
假设你要做一个“招投标文件分析助手”:
用户说:
读取 20 份招标文件,提取资格要求、评分项和商务条款,做对比并输出总结报告。
普通 agent 会遇到的问题:
• 文件太多
• 内容太长
• 中间提取结果太多
• 最终要写正式报告
• 还要支持后续修订
Deep Agents 的处理方式更自然:
1. write_todos 先拆任务
2. 每份文件读取后,把提取结果写到单独文件
3. 子代理分别负责不同文件或不同维度
4. 主代理只拿关键摘要做汇总
5. 报告草稿写到文件
6. 用户要求“再加商务风险分析”时,继续读已有文件产物而不是重来
这就是它的工程优势。
⸻
十六、官方生态信号
从官方资料可以看到几个重要信号:
• 它是 MIT 开源。 
• 它是 provider agnostic,适配任何支持 tool calling 的模型。 
• 官方文档既提供 SDK,也提供 CLI,也有 JS 方向项目链接,说明它不是一次性 demo,而是持续建设中的产品化框架。 
• 官方推荐结合 LangSmith 做 tracing/debug/evaluation。 
这说明它的目标不是只让你“玩一下 agent”,而是让你把 agent 做成可调试、可观察、可持续迭代的工程系统。
⸻
十七、你该如何判断要不要选它
你可以用一个简单标准:
选 Deep Agents,当你满足其中 3 条以上时:
• 任务不是一步完成,而是长链路
• 需要规划和 todo 跟踪
• 需要大量中间结果存储
• 需要文件读写或代码修改
• 需要子任务隔离
• 需要会话外记忆
• 需要人类审批
• 需要可观测的运行时
不一定选它,当你的需求更像:
• 单轮问答
• 简单工具调用
• 固定流程编排
• 极小上下文
• 不需要文件系统/子代理/记忆
⸻
十八、一句话总结
LangChain 的 Deep Agents / deepagents,本质上是一个面向复杂长任务的“智能体执行骨架”。它在普通 tool-calling agent 之上,预置了规划、文件系统、子代理、上下文治理、长期记忆和 LangGraph 运行时能力,使 agent 可以像“真正工作的执行者”一样完成研究、写作、编码和多步骤业务任务。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)