DeepAgents 实测:create_deep_agent 一行代码,装出 Claude Code 同款「四件套」(附 16 个内置工具全清单)
一句话先给结论:DeepAgents 不是新运行时,它就是
create_agent的一套默认中间件组装 + 四件套(规划、文件系统、子 agent、上下文管理),底层跑的依然是 LangGraph——我实测了它的返回类型和全部 16 个内置工具,文末给选型表和踩坑点。
一、为什么裸 agent 不够用
用 LLM 循环调用工具是最简单的 agent 形态:调模型 → 模型说调工具 → 执行 → 结果塞回去 → 再调模型,直到模型不再要工具。这个循环能跑通,但它做不好长周期、多步任务:
- 没有规划:任务拆不出步骤清单,做着做着忘了目标;
- 没有外部记忆:中间产物只能塞在对话历史里,上下文一长就被截断;
- 没有委派:子任务挤在同一个上下文窗口里,互相污染。
Deep Research、Manus、Claude Code 这类产品早就绕开了这个限制,它们的共性是四件事:规划工具、文件系统访问、子 agent、一个足够详细的 system prompt。DeepAgents 就是把这四件事打包成了通用组件。
二、实测:一行代码装出来
先装包再验证:
pip install deepagentsfrom deepagents import create_deep_agent agent = create_deep_agent( model="ollama:qwen3:0.6b", tools=[my_custom_tool], system_prompt="You are a research assistant.", ) print(type(agent)) # <class 'langgraph.graph.state.CompiledStateGraph'>注意返回类型:langgraph.graph.state.CompiledStateGraph——它就是一张 LangGraph 图。这意味着 streaming、human-in-the-loop、checkpoint、LangGraph Studio 全部开箱即用,不需要学新的调用方式。
16 个内置工具全清单(实测 grep 源码所得):
| 类别 | 工具 | 说明 |
|---|---|---|
| 文件系统(8 个) | ls/read_file/write_file/edit_file/delete/glob/grep | 读写搜索虚拟文件系统,长任务把中间产物落盘 |
| 子 agent(1 个) | task | 派发子任务给隔离子上下文的 subagent |
| 异步任务(4 个) | start_async_task/check_async_task/list_async_tasks/cancel_async_task | 后台任务管理 |
| 上下文管理(1 个) | compact_conversation | 对话过长时压缩历史 |
| Shell(1 个) | execute | 在沙箱里执行命令 |
| 其他(1 个) | rubric_grader | 按评分标准自评输出 |
三、四件套逐个拆
第一件:规划工具。基于 Claude Code 的 TodoWrite 思路——工具本身不干活,只是让 agent 把计划写下来放进状态。价值在于「让模型看见自己的计划」,长任务不跑偏。
第二件:文件系统。8 个工具覆盖完整读写搜索。关键设计是后端可插拔:默认是状态内存里的虚拟文件系统,可以换成本地目录、沙箱或远程存储。长任务的最大瓶颈是上下文,文件系统让「中间产物出上下文、落盘、按需读回」成为可能。
第三件:子 agent。通过task工具派发,子 agent 有隔立的上下文窗口,干完活只把结论带回主上下文。主 agent 不用背着子过程的全部 token。默认有一个 general-purpose 子 agent,也可以自定义:
research_subagent = { "name": "research-agent", "description": "Used to research more in depth questions", "prompt": "You are a dedicated researcher...", "tools": [internet_search], } agent = create_deep_agent(tools=[...], subagents=[research_subagent])第四件:详细 system prompt。内置一份改编自 Claude Code 的系统提示词,为长周期任务调优。用system_prompt参数可以直接覆盖或追加。
四、三层怎么选(选型表)
DeepAgents 和 LangChain、LangGraph 是同一套栈的三层,别对立起来看:
| 层 | 用什么 | 适合场景 |
|---|---|---|
| 上 | DeepAgents | 长周期、多步、需要规划和委派的任务 |
| 中 | create_agent+ middleware | 标准 tool-calling agent,自己控制中间件 |
| 下 | LangGraph 裸图 | 精确控制每个节点和转移的复杂工作流 |
判断口诀:任务又长又复杂 → DeepAgents;标准 agent loop → create_agent;要手搓每一步 → 直接写图。如果任务只是几步工具调用,上 DeepAgents 反而是负担——它默认带的中间件和工具集会白白增加 token 消耗。
五、踩坑点
- 默认模型:不传
model时用 Anthropic 的 Claude,国内环境记得显式传模型; - 文件系统是虚拟的:默认后端只存在于 agent 状态里,进程结束就没了——要持久化记得换后端;
- 上下文膨胀:16 个内置工具的定义全在 system prompt 里,小模型容易被工具描述淹着,轻量任务用裸
create_agent更省; - 子 agent 的代价:每个
task派发都是一次完整的子会话,别把子 agent 当函数调用用。
写在最后
DeepAgents 的正确理解方式:它回答的不是「怎么建 agent」,而是「长任务 agent 默认该带什么」。规划、文件系统、子 agent、上下文管理这四件事,自己做一遍要踩很多坑,DeepAgents 把它们压成了一行create_deep_agent。
如果你的任务会跑超过十分钟、拆出超过五个步骤,值得上它;否则裸create_agent就够。
原创声明:本文为原创文章,实测基于 deepagents 0.7.20(返回类型与内置工具清单均为实测所得),转载请注明出处。