🚀🧠 Deep Agents
Agent 正在越来越多地处理长周期任务(long-horizon tasks),其任务长度大约每 7 个月翻倍!但长周期任务通常涉及几十次工具调用,这会带来成本和可靠性挑战。
像 Claude Code、Manus 这样的主流 agent 使用了一些共同原则来解决这些问题,包括:
- 任务执行前的规划(planning)
- 计算机访问能力(shell + 文件系统)
- 子 agent 委派(sub-agent delegation)
deepagents 是一个简单的 agent harness(运行框架),实现了这些能力,同时它是开源的,并且可以方便地扩展自定义工具和指令。 ([GitHub][1])
📚 资源
- 文档(Documentation):完整概览和 API 参考
- 快速入门仓库(Quickstarts Repo):示例和用例
- CLI:带有 skills、memory、HITL(human-in-the-loop)工作流的交互式命令行界面
🚀 快速开始
你可以为 deepagents 提供自定义工具。下面示例中,我们额外提供一个 tavily 搜索工具(会加入内置工具集合):
pip install deepagents tavily-python
设置环境变量 TAVILY_API_KEY:
import os
from deepagents import create_deep_agent
from tavily import TavilyClient
tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
def internet_search(query: str, max_results: int = 5):
"""执行网络搜索"""
return tavily_client.search(query, max_results=max_results)
agent = create_deep_agent(
tools=[internet_search],
system_prompt="Conduct research and write a polished report.",
)
result = agent.invoke({
"messages": [{"role": "user", "content": "What is LangGraph?"}]
})
通过 create_deep_agent 创建的 agent,本质上是一个 LangGraph 的 StateGraph,因此可以支持:
- streaming(流式输出)
- human-in-the-loop
- memory(记忆)
- Studio 调试
自定义 Deep Agents
create_deep_agent 支持多个参数配置:
model
默认模型为:
"claude-sonnet-4-5-20250929"
你可以替换为任意 LangChain 模型:
from langchain.chat_models import init_chat_model
from deepagents import create_deep_agent
model = init_chat_model("openai:gpt-4o")
agent = create_deep_agent(
model=model,
)
system_prompt
可以传入自定义系统提示词(会附加在默认 middleware 指令之后)。
建议:
- ✅ 定义领域工作流(如研究步骤、分析流程)
- ✅ 提供具体示例
- ✅ 增加专业指导(如任务 batching)
- ✅ 定义停止条件和资源限制
- ✅ 解释工具之间的协作方式
不建议:
- ❌ 重复解释工具功能(middleware 已包含)
- ❌ 重复默认提示
- ❌ 与默认指令冲突
tools
添加自定义工具:
def internet_search(query: str) -> str:
return tavily_client.search(query)
agent = create_deep_agent(tools=[internet_search])
也可以接入 MCP 工具(通过 langchain-mcp-adapters):
from langchain_mcp_adapters.client import MultiServerMCPClient
mcp_client = MultiServerMCPClient(...)
mcp_tools = await mcp_client.get_tools()
agent = create_deep_agent(tools=mcp_tools)
middleware
通过 middleware 扩展 agent 生命周期:
from langchain_core.tools import tool
from langchain.agents.middleware import AgentMiddleware
@tool
def get_weather(city: str) -> str:
return f"The weather in {city} is sunny."
class WeatherMiddleware(AgentMiddleware):
tools = [get_weather]
agent = create_deep_agent(middleware=[WeatherMiddleware()])
subagents
主 agent 可通过 task 工具委派子 agent:
research_subagent = {
"name": "research-agent",
"description": "用于深入研究问题",
"system_prompt": "You are an expert researcher",
"tools": [internet_search],
}
agent = create_deep_agent(subagents=[research_subagent])
支持传入完整 LangGraph:
from deepagents import CompiledSubAgent
agent = create_deep_agent(
subagents=[CompiledSubAgent(...)]
)
interrupt_on(人类参与)
支持 Human-in-the-loop:
agent = create_deep_agent(
tools=[get_weather],
interrupt_on={
"get_weather": {
"allowed_decisions": ["approve", "edit", "reject"]
}
}
)
backend(文件系统)
支持多种文件系统后端:
from deepagents.backends import FilesystemBackend
agent = create_deep_agent(
backend=FilesystemBackend(root_dir="/path/to/project"),
)
支持:
- StateBackend(默认,内存态)
- FilesystemBackend(本地磁盘)
- StoreBackend(持久化)
- CompositeBackend(混合路由)
长期记忆(Long-term Memory)
通过 CompositeBackend 实现跨会话记忆:
from deepagents.backends import CompositeBackend, StateBackend, StoreBackend
agent = create_deep_agent(
backend=CompositeBackend(
default=StateBackend(),
routes={"/memories/": StoreBackend(...)}
),
)
用途:
- 用户偏好持久化
- 知识库构建
- 跨对话研究进度保存
内置工具(Built-in Tools)
每个 agent 默认包含以下工具:
| 工具 | 描述 |
|---|---|
| write_todos | 创建/管理任务列表 |
| read_todos | 读取任务 |
| ls | 列出目录 |
| read_file | 读取文件 |
| write_file | 写入文件 |
| edit_file | 修改文件 |
| glob | 文件匹配 |
| grep | 内容搜索 |
| execute | 执行 shell(需支持 sandbox) |
| task | 子 agent 调度 |
内置 Middleware
| Middleware | 作用 |
|---|---|
| TodoListMiddleware | 任务规划 |
| FilesystemMiddleware | 文件操作 |
| SubAgentMiddleware | 子 agent |
| SummarizationMiddleware | 自动摘要(>170k tokens) |
| PromptCachingMiddleware | Prompt 缓存 |
| PatchToolCallsMiddleware | 修复工具调用 |
| HumanInTheLoopMiddleware | 人工审批 |
内置 Prompt
系统会自动注入:
TodoListMiddleware
- 何时使用 todo
- 如何标记完成
- 使用最佳实践
FilesystemMiddleware
- 文件工具说明
- 路径规则(必须
/开头) - 大上下文处理策略
SubAgentMiddleware
- task 工具说明
- 子 agent 使用场景
- 生命周期(spawn → run → return → reconcile)
核心能力总结(从 README 抽象)
- 规划能力(Todo-based planning)
- 上下文管理(Filesystem offloading)
- 子 agent 分治(Sub-agent isolation)
- 长期记忆(Memory backend)
- 人机协同(HITL)
- middleware 扩展架构
这些能力共同构成一个“深度 agent(Deep Agent)范式”。 ([GitHub][2])
License
MIT
一句话总结(技术抽象)
deepagents 本质上是一个:
“基于 LangGraph 的 agent runtime + 工具编排 + 多 agent 分治框架”
