using-deepagents-sdk
using-deepagents-sdk
概述
deepagents 是 LangChain 官方的深度代理框架,核心入口是 create_deep_agent()。
它内置了规划工具、文件系统工具、子代理和上下文压缩,适合构建复杂的多步骤任务代理。
快速安装
uv add deepagents
# 或
pip install deepagents
需要设置模型 API Key,默认使用 Anthropic:
export ANTHROPIC_API_KEY=sk-...
最小可运行示例
from deepagents import create_deep_agent
# 默认使用 claude-sonnet-4-6,需要 ANTHROPIC_API_KEY
agent = create_deep_agent()
# 流式调用
for chunk in agent.stream({"messages": [{"role": "user", "content": "列出当前目录的文件"}]}):
print(chunk)
create_deep_agent 核心参数速查
| 参数 | 类型 | 说明 |
|---|---|---|
model |
str | BaseChatModel | None |
模型,格式 "provider:model-name",默认 claude-sonnet-4-6 |
tools |
Sequence[BaseTool] |
额外工具,与内置工具合并 |
system_prompt |
str | SystemMessage |
自定义系统提示,追加在基础提示之前 |
subagents |
Sequence[SubAgent | CompiledSubAgent | AsyncSubAgent] |
子代理列表 |
backend |
BackendProtocol |
文件存储后端,默认 StateBackend() |
memory |
list[str] |
AGENTS.md 文件路径列表(注入系统提示) |
skills |
list[str] |
技能目录路径列表(按需加载) |
permissions |
list[FilesystemPermission] |
文件系统权限规则 |
middleware |
Sequence[AgentMiddleware] |
自定义中间件 |
checkpointer |
Checkpointer |
断点续跑,持久化对话状态 |
store |
BaseStore |
跨线程共享存储 |
interrupt_on |
dict[str, bool] |
指定工具调用前暂停,供人工审核 |
response_format |
ResponseFormat |
结构化输出格式 |
Backend 选择
详细说明见 Backend 参考
需要执行 Shell 命令?
├─ 是,本地环境 → LocalShellBackend
├─ 是,云沙箱 → LangSmithSandbox
└─ 否,只读写文件?
├─ 文件在磁盘 → FilesystemBackend(root_dir="/path")
├─ 文件在内存/请求中 → StateBackend(默认)
├─ 跨会话共享 → StoreBackend(store=..., namespace_factory=...)
└─ 混合场景 → CompositeBackend([backend1, backend2])
from deepagents.backends import FilesystemBackend, LocalShellBackend, CompositeBackend
# 本地开发:文件系统 + Shell 执行
backend = CompositeBackend([
FilesystemBackend(root_dir="/workspace"),
LocalShellBackend(),
])
agent = create_deep_agent(backend=backend)
子代理(Subagents)
详细说明见 子代理参考
from deepagents import SubAgent, create_deep_agent
researcher: SubAgent = {
"name": "researcher",
"description": "负责网络搜索和信息收集,返回结构化研究报告",
"system_prompt": "你是专业研究员,负责深度搜索并整理信息。",
"tools": [search_tool],
"model": "openai:gpt-4o", # 可以用不同模型
}
agent = create_deep_agent(subagents=[researcher])
子代理类型:
SubAgent:声明式,SDK 自动套标准中间件栈CompiledSubAgent:传入预编译的 LangGraph runnableAsyncSubAgent:远程后台运行(LangSmith Deployments)
Memory 与 Skills
详细说明见 Skills 与 Memory 参考
Memory(每轮全量注入系统提示,适合项目背景/规范):
agent = create_deep_agent(
memory=["/project/AGENTS.md"],
backend=FilesystemBackend(root_dir="/"),
)
Skills(按需加载,适合工作流程/SOP):
agent = create_deep_agent(
skills=["/skills/base/", "/skills/project/"],
backend=FilesystemBackend(root_dir="/"),
)
权限控制
from deepagents import FilesystemPermission
agent = create_deep_agent(
permissions=[
# 先匹配先生效,第一条命中即止
FilesystemPermission(operations=["write"], paths=["/workspace/**"], mode="allow"),
FilesystemPermission(operations=["write"], paths=["/**"], mode="deny"),
]
)
Middleware
详细说明见 Middleware 参考
from langchain.agents.middleware.types import AgentMiddleware, ModelRequest, ModelResponse
class LoggingMiddleware(AgentMiddleware):
def wrap_model_call(self, request, handler):
response = handler(request)
print(f"tokens: {response.response.usage_metadata}")
return response
agent = create_deep_agent(middleware=[LoggingMiddleware()])
Store 与 Checkpointer
详细说明见 Store 与 Checkpointer 参考
from langgraph.checkpoint.memory import InMemorySaver
agent = create_deep_agent(checkpointer=InMemorySaver())
# 同一 thread_id 下跨请求续跑
config = {"configurable": {"thread_id": "conversation-001"}}
agent.invoke({"messages": [...]}, config=config)
常见错误
| 错误 | 原因 | 修复 |
|---|---|---|
ANTHROPIC_API_KEY not set |
缺少 API Key | 设置环境变量 |
SubAgent must specify 'model' |
SubAgent 缺少 model 字段 | 显式指定 "model": "..." |
execute tool returns error |
StateBackend 不支持 Shell 执行 | 换用 LocalShellBackend |
File not found |
FilesystemBackend root_dir 路径不对 | 检查 root_dir 是否正确 |
与 LangGraph 集成
create_deep_agent 返回 CompiledStateGraph,可直接用于 LangGraph Studio 或 LangSmith 部署:
# langgraph.json 中配置
{
"graphs": {
"agent": "agent.py:agent"
}
}
参考资源
More from cruldra/skills
tauri-v2
Tauri v2 项目开发助手 - 提供 CLI 项目管理、最佳实践指导和代码生成。适用于 (1) 创建和管理 Tauri v2 项目 (2) 开发桌面和移动应用 (3) 配置构建和分发流程 (4) 实现安全的前后端通信 (5) 应用架构设计和性能优化。
15pandoc
当用户需要对某个文档进行格式转换时(例如将 Markdown 转换为 DOCX、PDF、HTML 等)使用该技能。
12refine-dev
协助开发基于 Refine 框架的 React 应用。提供项目初始化、核心配置、数据提供者(Data Providers)、认证(Auth Provider)以及 UI 库集成的指导。专注于使用 shadcn/ui 构建现代化的后台管理系统。
11dri-text-analysis
使用 DRI 文本分析法(Data-Rule-Interaction)对自然语言需求描述进行逐词拆解与领域建模。将非结构化的业务需求文本降维为数据(D)、规则(R)、交互(I)三个维度的结构化架构抽象,直接产出可用于系统设计的概念表格。适用于需求分析、领域语言提取、架构设计前的文本解析,以及将长篇需求文档转化为清晰的开发任务拆解。
9vite-starter
使用 Vite 创建现代前端项目,支持 React、Vue、Svelte、Solid、Preact、Lit、Qwik 和 Vanilla JS,可选 TypeScript。当用户需要初始化新的前端项目、搭建 SPA、创建组件库、设置现代构建工具时使用此技能。触发场景:用户说"创建 vite 项目"、"新建 react/vue/svelte 应用"、"初始化前端项目"、"搭建 spa"、"用 vite 起一个项目"、"create vite project"、"new frontend app",或明确提及 Vite、HMR、快速构建工具时。
7plantuml-renderer
Use when the user wants to render PlantUML diagrams from pasted text or files that contain valid PlantUML blocks (such as .puml, .md, or .docx text content), and expects image/text output like svg, png, txt, or utxt via local Java + plantuml.jar.
7