惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Check Point Blog
GbyAI
GbyAI
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
T
Troy Hunt's Blog
博客园 - Franky
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
The Cloudflare Blog
S
SegmentFault 最新的问题
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
I
InfoQ
博客园 - 【当耐特】
NISL@THU
NISL@THU
A
About on SuperTechFans
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Security Latest
Security Latest
V
Vulnerabilities – Threatpost
Security Archives - TechRepublic
Security Archives - TechRepublic
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
IT之家
IT之家
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
大猫的无限游戏
大猫的无限游戏
S
Security Affairs
The Register - Security
The Register - Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
T
Tor Project blog

博客园 - iTech

7万星的AI交易框架:让大模型模拟投行多空辩论,自动做交易决策 71000颗星的AI交易团队:让大模型模拟投行分工,自动做交易决策 13400颗星的开源项目:输入一句话,AI全自动帮你做短视频 102颗星的沙盒:当AI学会自己写代码、跑测试、做部署 AI 技术日报 - 2026-05-08 29k 星的 PageIndex:不用向量数据库,靠推理就能做 RAG 每天花两小时刷信息?这个开源项目帮你全自动搞定 读源码像读小说?试了 DeepWiki 和 Zread,我再也不想裸读 GitHub 了 Matt Pocock 开源的这套 .claude 技能,为什么让工程师集体上头? Cursor Team Kit:Cursor 官方团队在用的 17 个 AI 工作流 AI 技术日报 - 2026-05-07 AI 技术日报 - 2026-05-06 AI 技术日报 - 2026-05-05 Anthropic CEO 说 12 个月内程序员要失业,我扒完他的底牌,发现事情没那么简单 把工程师的肌肉记忆装进 Claude Code,这个 4300 Star 的项目我后悔没早用 AI 技术日报 - 2026-05-04 AI 技术日报 - 2026-05-03 AI 技术日报 - 2026-05-02 六大 Agent 框架横评:谁支持 Skills?谁能自动创建 Agent?MCP 呢? Wechatsync:一个 Chrome 插件,一键把文章同步到 31 个平台 LangChain 开源了 Open SWE:Stripe、Ramp、Coinbase 内部都在造的编程 Agent Cockpit:把 Claude Code 从终端里搬出来,装进浏览器 Cursor 把自家的 AI Agent 开放了:写几行 TypeScript 就能调 Cursor 干活 AI 技术日报 - 2026-05-01 AI 写代码每次结果都不一样?Archon 用 YAML 工作流把 AI 编程变成流水线 AI 写代码比你快了,但你还是得学编程——只不过学法得换 腾讯的龙虾特工队:4 个 AI Agent 同日更新,全家桶正式成型 Agno 不做更聪明的 Agent,它要把所有 Agent 框架包进同一个操作系统 Hermes Agent 终于有了像样的 Web 界面,而且还支持远程访问 Datawhale 出了一套 29 学科知识地图,把 AI 的底牌全掀了 Hermes Agent 在聊天框里就能用的 20 种高级功能 一份 AGENTS.md 能顶一次模型升级?Augment Code 用数据说了算 NVIDIA 开源了一个「AI 沙箱」,20K Star,让 Agent 跑代码不再裸奔 60ms 冷启动、5MB 内存:腾讯开源的这个沙箱让 Docker 安全隔离像笑话 AI 技术日报 - 2026-04-30 AI 技术日报 - 2026-04-29 AI 技术日报 - 2026-04-28 Goose:Linux 基金会亲儿子,能撼动 Claude Code 和 OpenCode 吗? AI 技术日报 - 2026-04-27 AI 技术日报 - 2026-04-26 Google 把价值20美元/月的东西免费了,102K人已经抢到了 OpenClaw 和 Claude Code 网络搜索配置指南 AI 技术日报 - 2026-04-25 Anthropic 为什么遥遥领先:从 Cat Wu 专访看AI霸主的底层逻辑 Mac 本地跑大模型完全指南:你的苹果电脑就是 AI 工作站 同样 70B 参数,为什么 MoE 只激活 13B 就能打平 Dense? DeepSeek-V4 技术报告里藏着一条线:华为昇腾 NPU 已完成推理验证 DeepSeek-V4 深夜炸场:1M 上下文、384K 输出、双模型,API 定价直接卷到底 MacBook Air 跑大模型实测:Ollama、llama.cpp、LM Studio 谁才是本地推理之王? AI 技术日报 - 2026-04-24 OpenCode:Claude Code 的最佳平替 2026 开源大模型五国杀:Qwen 3.6 vs Gemma 4 vs Llama 4 vs GLM-5.1 vs DeepSeek V4 MCP 与 Skills 的你死我活:Anthropic 的 Agent 生态野心与开发者的站队困境 给 AI Agent 配搜索,国内能用的搜索 API 实测对比 AI 技术日报 - 2026-04-23 CC Switch:49K Star 的 Claude Code 登录绕过神器,还能管 Codex 和 Gemini CLI NVIDIA 开出 32 万美元年薪招 AI Agent 工程师,JD 里藏着这些信号 fast-mirror-skill 技术拆解:一个小而完整的 Claude Skill 是怎么设计的 Cursor 值 600 亿美元?马斯克这次赌的不是技术,是入口 AI 技术日报 - 2026-04-22 别再问 AI 能不能赚钱了:3 个上班族亲测有效的副业方法(2026 最新版) 10 分钟从零搞定 Hermes Agent:飞书微信双通道丝滑上线 AI 技术日报 - 2026-04-21 Anthropic 实战总结:AI Agent 的 3 种工作流模式,选错代价很大 安装 openclaw,hermes 慢的想发疯,fast-mirror-skill 来救了 Claude Routines:你下班睡觉了,Agent 还在为你干活 微信飞书里敲一个斜杠就能干活:Hermes Quick Command 到底多省事 AI 正在疯狂吃电:算力尽头是电力,谁能解这道题? AI 技术日报 - 2026-04-20 3K 行代码造一个越用越聪明的 AI Agent:GenericAgent 登顶 GitHub Trending 高德途途封神机器人半马,背后的 ABot-Claw 到底是什么 人们希望 AI 能干啥?Anthropic 调查:第一名不是赚钱,是变强 AI 时代人们在担心什么?Anthropic 的 13 条焦虑排行榜 OpenAI 官方 Agent SDK 来了:22k Star,支持 100+ 模型,Python 10 行代码上手 AI 技术日报 - 2026-04-19 OpenAgents Workspace:让 Claude Code 和 Codex 在同一个群里干活 Claude 是要干掉整个软件行业吗? Claude 官方推荐多 Agents 设计模式 多 Agent 系统的 5 种协调模式:选错了模式,再强的 Agent 也白搭 AI 技术日报 - 2026-04-18 AI 技术日报 - 2026-04-17 Better-Harness:让AI Agent自己优化自己的革命性框架 OpenClaw Workspace 完全指南:我的AI编程工作流 DeepSeek内蒙草原高薪招聘:AI时代的数字牧民梦,还是营销噱头? 2 核 2G 的阿里云 ECS 能跑 OpenClaw 吗?能,但有点折腾 AI 技术日报 - 2026-04-16 OpenCLI:一个命令行搞定 16+ 内容平台的神器 从零到精通:OpenClaw CLI 命令完全指南 AI 技术日报 - 2026-04-15 AI Agent 如何自我进化?Hermes Agent Self-Evolution 深度解析 AI 技术日报 - 2026-04-14 为什么你的飞书 Bot 总是连不上?OpenClaw Gateway 架构深度解析 OpenClaw 连接飞书的原理:Gateway、Channel 与消息流转 国内安装 Hermes Agent 踩坑全记录:从 GitHub 超时到正常跑起来的每一步 35 万 Star 的 OpenClaw:5 分钟部署你的私人 AI 助手,直连飞书 AI 技术日报 - 2026-04-13 公司用 AI 筛简历,这个开源项目让候选人用 AI 反选公司 为什么 Google ADK 可能是你下一个 Agent 框架——7 个改变游戏规则的特性 Microsoft Agent Framework 深度解析:架构设计与实战落地 AI 技术日报 - 2026-04-11
Deep Agents SDK 功能全清单:我逐行读了源码,整理出这份完整参考手册
iTech · 2026-05-13 · via 博客园 - iTech

前面几篇文章聊了 Deep Agents 是什么、架构怎么设计、CLI 怎么用。但我一直觉得差一篇真正"硬核"的——把 SDK 的每一个功能、每一个参数、每一个类型都列出来的参考手册。

所以我逐行读了 libs/deepagents/ 下所有源码,整理出这份清单。不管你是想快速查阅还是深度定制,这篇文章都是你的案头参考。

本文提纲

  1. 公共 API 导出清单
  2. create_deep_agent 完整参数
  3. 内置工具清单(21 个)
  4. 中间件栈详解(11 个)
  5. 后端系统(8 种)
  6. Profile 系统
  7. 权限模型
  8. 子代理类型
  9. 模型解析和插件系统

公共 API 导出清单

from deepagents import ... 能导出的所有东西:

导出项 类型 用途
create_deep_agent 函数 创建 Deep Agent 的唯一入口
FilesystemMiddleware 文件操作中间件
FilesystemPermission 文件权限规则
SubAgentMiddleware 同步子代理中间件
AsyncSubAgentMiddleware 异步子代理中间件
MemoryMiddleware 记忆中间件
SubAgent TypedDict 声明式同步子代理定义
CompiledSubAgent TypedDict 预编译子代理定义
AsyncSubAgent TypedDict 远程异步子代理定义
SubagentRunStream 同步子代理流句柄
AsyncSubagentRunStream 异步子代理流句柄
SubagentTransformer 子代理流转换器
HarnessProfile dataclass 运行时 harness 配置
HarnessProfileConfig dataclass 声明式(YAML/JSON)harness 配置
GeneralPurposeSubagentProfile dataclass 通用子代理配置
ProviderProfile dataclass 模型提供商配置
register_harness_profile 函数 注册 harness profile
register_provider_profile 函数 注册 provider profile
__version__ str 版本号

create_deep_agent 完整参数

def create_deep_agent(
    # ── 模型 ──
    model: str | BaseChatModel | None = None,

    # ── 工具 ──
    tools: Sequence[BaseTool | Callable | dict] | None = None,

    # ── 提示词 ──
    system_prompt: str | SystemMessage | None = None,

    # ── 中间件 ──
    middleware: Sequence[AgentMiddleware] = (),

    # ── 子代理 ──
    subagents: Sequence[SubAgent | CompiledSubAgent | AsyncSubAgent] | None = None,

    # ── 技能 ──
    skills: list[str] | None = None,

    # ── 记忆 ──
    memory: list[str] | None = None,

    # ── 权限 ──
    permissions: list[FilesystemPermission] | None = None,

    # ── 后端 ──
    backend: BackendProtocol | BackendFactory | None = None,

    # ── 人机协作 ──
    interrupt_on: dict[str, bool | InterruptOnConfig] | None = None,

    # ── 结构化输出 ──
    response_format: ResponseFormat | type | dict | None = None,

    # ── 上下文 ──
    context_schema: type[ContextT] | None = None,

    # ── 持久化 ──
    checkpointer: Checkpointer | None = None,
    store: BaseStore | None = None,

    # ── 其他 ──
    debug: bool = False,
    name: str | None = None,
    cache: BaseCache | None = None,
) -> CompiledStateGraph

返回值:编译好的 LangGraph StateGraph,支持 .invoke().stream().astream() 等所有 LangGraph 方法。

Prompt 组装顺序USERBASE/CUSTOMSUFFIX(你的 system_prompt 永远在最前面)。

Recursion Limit:9999(几乎无限递归)。

内置工具清单(21 个)

文件操作工具(7 个,来自 FilesystemMiddleware)

工具 参数 说明
ls path: str 列出目录内容
read_file file_path: str, offset: int=0, limit: int=100 分页读取文件
write_file file_path: str, content: str 创建新文件
edit_file file_path: str, old_string: str, new_string: str, replace_all: bool=False 字符串替换编辑
glob pattern: str, path: str="/" 按模式匹配查找文件
grep pattern: str, path: str=None, glob: str=None, output_mode: str 搜索文件内容
execute command: str, timeout: int=None Shell 命令执行(仅沙箱后端)

规划工具(1 个,来自 TodoListMiddleware)

工具 参数 说明
write_todos (TodoList 操作) 任务分解和进度追踪

同步子代理工具(1 个,来自 SubAgentMiddleware)

工具 参数 说明
task description: str, subagent_type: str 启动同步子代理

异步子代理工具(5 个,来自 AsyncSubAgentMiddleware)

工具 参数 说明
start_async_task description: str, subagent_type: str 启动后台异步任务
check_async_task task_id: str 查询任务状态/结果
update_async_task task_id: str, message: str 向运行中的任务发送新指令
cancel_async_task task_id: str 取消运行中的任务
list_async_tasks status_filter: str=None 列出所有追踪的任务

上下文管理工具(1 个,来自 SummarizationToolMiddleware)

工具 参数 说明
compact_conversation (无参数) 手动触发对话压缩

中间件栈详解(11 个)

中间件按固定顺序执行,分为 Base Stack、User Zone、Tail Stack 三层。

Base Stack

1. TodoListMiddleware
- 注入 write_todos 工具
- 无配置参数

2. SkillsMiddleware(可选)
- 注入技能系统的元数据
- 配置:backend, sources: Sequence[SkillSource]
- SkillSource = str | tuple[str, str](路径或 (路径, 标签) 元组)

3. FilesystemMiddleware(不可排除)
- 注入所有文件操作工具 + execute
- 配置参数:

参数 类型 默认值 说明
backend BackendProtocol StateBackend() 后端实例
system_prompt str None 自定义系统提示词
custom_tool_descriptions Mapping[str, str] None 按工具名覆盖描述
tool_token_limit_before_evict int 20000 工具结果的 token 驱逐阈值
human_message_token_limit_before_evict int 50000 用户消息的 token 驱逐阈值
max_execute_timeout int 3600 单条命令最大超时(秒)
_permissions list[FilesystemPermission] None 权限规则(内部参数)

4. SubAgentMiddleware(不可排除,有子代理时激活)
- 注入 task 工具
- 配置:backend, subagents, system_prompt, task_description
- task_description 支持 {available_agents} 占位符

5. AsyncSubAgentMiddleware(可选,有异步子代理时激活)
- 注入 5 个异步任务工具
- 配置:async_subagents, system_prompt

6. SummarizationMiddleware
- 自动上下文压缩
- 核心配置:

参数 类型 默认值 说明
model str/BaseChatModel (必需) 用于摘要的模型
backend BackendProtocol (必需) 后端实例
trigger ContextSize 自动计算 触发摘要的阈值
keep ContextSize 自动计算 保留多少上下文
token_counter Callable 近似计数 Token 计数函数
summary_prompt str 内置默认 摘要提示词
trim_tokens_to_summarize int 4000 截断待摘要内容的 token 数
truncate_args_settings dict 自动计算 参数截断配置

ContextSize 类型:tuple[Literal["tokens", "messages", "fraction"], int | float]

7. PatchToolCallsMiddleware
- 修复悬挂的工具调用(用取消消息填充)
- 无配置参数

User Zone

8. 用户自定义中间件
- 你通过 middleware= 参数传入的中间件
- 插在 Base Stack 和 Tail Stack 之间

Tail Stack

9. HarnessProfile extra_middleware
- Profile 定义的额外中间件

10. _ToolExclusionMiddleware(内部)
- 按 Profile 的 excluded_tools 过滤工具

11. AnthropicPromptCachingMiddleware
- 无条件启用,非 Anthropic 模型自动 no-op

12. MemoryMiddleware(可选)
- 注入 AGENTS.md 记忆到系统提示词
- 配置:backend, sources: list[str], add_cache_control: bool

13. HumanInTheLoopMiddleware(可选)
- 在指定工具调用前暂停等待人工审批
- 配置:interrupt_on: dict[str, bool | InterruptOnConfig]

后端系统(8 种)

所有后端都实现 BackendProtocol 接口:

class BackendProtocol(abc.ABC):
    def ls(path) -> LsResult
    def read(file_path, offset, limit) -> ReadResult
    def write(file_path, content) -> WriteResult
    def edit(file_path, old_string, new_string, replace_all) -> EditResult
    def glob(pattern, path) -> GlobResult
    def grep(pattern, path, glob) -> GrepResult
    def upload_files(files) -> list[FileUploadResponse]
    def download_files(paths) -> list[FileDownloadResponse]
    # 以上全部有 async 版本 (als, aread, awrite, ...)

支持命令执行的后端额外实现 SandboxBackendProtocol

class SandboxBackendProtocol(BackendProtocol):
    @property
    def id(self) -> str
    def execute(command, timeout) -> ExecuteResponse
    async def aexecute(command, timeout) -> ExecuteResponse

后端对比

后端 文件操作 命令执行 持久化 适用场景
StateBackend 内存 测试、简单场景(默认)
FilesystemBackend 本地磁盘 本地开发
LocalShellBackend 本地磁盘 完全信任的环境
StoreBackend 跨线程 需要持久化存储
CompositeBackend 可选 混合 路由分发
ContextHubBackend LangSmith Hub 知识库同步
LangSmithSandbox 远程 远程沙箱执行
Partner Sandboxes 远程 Daytona/Modal/Runloop

CompositeBackend 路由

backend = CompositeBackend(
    default=FilesystemBackend(root_dir="/workspace"),
    routes={
        "/data": StoreBackend(store=my_store),
        "/sandbox": DaytonaSandbox(),
    },
)

按路径前缀路由到不同后端,默认后端处理未匹配的路径。

Profile 系统

ProviderProfile(模型提供商配置)

@dataclass(frozen=True)
class ProviderProfile:
    init_kwargs: Mapping[str, Any]          # 传给 init_chat_model 的静态参数
    pre_init: Callable[[str], None] | None  # 初始化前的副作用
    init_kwargs_factory: Callable[[], dict] # 动态参数(运行时生成)

注册方式:

register_provider_profile("openai", ProviderProfile(init_kwargs={"use_responses_api": True}))
register_provider_profile("openai:gpt-5.4", ProviderProfile(init_kwargs={...}))

HarnessProfile(Agent 行为配置)

@dataclass(frozen=True)
class HarnessProfile:
    base_system_prompt: str | None = None           # 替换 SDK 默认 prompt
    system_prompt_suffix: str | None = None         # 追加到 prompt 末尾
    tool_description_overrides: Mapping[str, str]   # 按工具名覆盖描述
    excluded_tools: frozenset[str]                   # 排除的工具
    excluded_middleware: frozenset[type | str]       # 排除的中间件
    extra_middleware: Sequence | Callable            # 额外中间件
    general_purpose_subagent: GeneralPurposeSubagentProfile  # GP 子代理配置

GeneralPurposeSubagentProfile

@dataclass(frozen=True)
class GeneralPurposeSubagentProfile:
    enabled: bool | None = None       # None/True=启用, False=禁用
    description: str | None = None    # 覆盖 GP 子代理描述
    system_prompt: str | None = None  # 覆盖 GP 子代理系统提示词

内置 Profile

匹配 Key 特性
anthropic:claude-sonnet-4-6 并行工具调用、先调查后回答、工具结果反思
anthropic:claude-haiku-4-5 与 Sonnet 相同的通用 Claude 指导
anthropic:claude-opus-4-7 额外的工具使用引导 + 子代理使用指导
openai:gpt-5.*-codex Codex 行为:自主工程师、行动导向、并行工具、计划卫生

权限模型

FilesystemPermission

@dataclass
class FilesystemPermission:
    operations: list[Literal["read", "write"]]  # 覆盖的操作类型
    paths: list[str]                            # Glob 模式(必须以 "/" 开头)
    mode: Literal["allow", "deny"] = "allow"    # 允许或拒绝

工具到操作的映射

工具 操作类型
ls, read_file, glob, grep read
write_file, edit_file write

评估规则

  • 按声明顺序匹配,第一个命中生效
  • 未匹配的调用默认允许
  • 子代理继承父代理权限,除非指定自己的 permissions(完全覆盖)

示例

permissions=[
    # 只允许读取 /data 目录
    FilesystemPermission(operations=["read"], paths=["/data/*"], mode="allow"),
    # 禁止写入配置文件
    FilesystemPermission(operations=["write"], paths=["/etc/*"], mode="deny"),
    # 禁止读取密钥文件
    FilesystemPermission(operations=["read"], paths=["/secrets/*"], mode="deny"),
]

子代理类型

SubAgent(声明式同步子代理)

class SubAgent(TypedDict):
    name: str                          # 必需:唯一标识
    description: str                   # 必需:功能描述
    system_prompt: str                 # 必需:指令
    tools: NotRequired[Sequence[...]]  # 可选:默认继承主代理
    model: NotRequired[str | BaseChatModel]  # 可选:默认继承主代理
    middleware: NotRequired[list[...]] # 可选:额外中间件
    interrupt_on: NotRequired[dict]    # 可选:默认继承主代理
    skills: NotRequired[list[str]]     # 可选:技能路径
    permissions: NotRequired[list[...]]# 可选:默认继承主代理
    response_format: NotRequired[...]  # 可选:结构化输出

CompiledSubAgent(预编译子代理)

class CompiledSubAgent(TypedDict):
    name: str          # 必需
    description: str   # 必需
    runnable: Runnable  # 必需:预编译的 LangGraph 图(state 必须有 'messages')

AsyncSubAgent(远程异步子代理)

class AsyncSubAgent(TypedDict):
    name: str                      # 必需
    description: str               # 必需
    graph_id: str                  # 必需:远程图名/助手 ID
    url: NotRequired[str]          # 可选:Agent Protocol 服务器 URL
    headers: NotRequired[dict]     # 可选:额外请求头

默认通用子代理

每个 Deep Agent 自动添加一个 general-purpose 子代理(除非 HarnessProfile 禁用)。它会:
- 继承主代理的 tools、model、middleware、permissions
- 有独立的上下文窗口
- 用于委派通用子任务

模型解析和插件系统

模型解析

# 支持三种输入
create_deep_agent(model="openai:gpt-4o")            # provider:model 字符串
create_deep_agent(model=ChatAnthropic(model="..."))  # 预初始化模型实例
create_deep_agent(model=None)                        # 默认模型(已弃用)

插件系统

SDK 支持通过 importlib.metadata 入口点加载第三方插件:

入口点组 作用
deepagents.provider_profiles 自动注册 ProviderProfile
deepagents.harness_profiles 自动注册 HarnessProfile

内置 Profile 先加载,第三方插件通过加法合并语义叠加在上面。这意味着你可以:
- 在不修改 SDK 的情况下注册新模型的适配
- 通过 pip install 一个包就能让 Deep Agents 支持新的模型提供商
- 用 YAML/JSON 声明式配置(HarnessProfileConfig)而不写 Python 代码


这份清单覆盖了 Deep Agents SDK 的每一个公共 API。如果你要基于它做开发,建议收藏本文。有任何遗漏或疑问,欢迎在评论区指出。


作者: itech001
来源: 公众号:AI人工智能时代
主页: https://www.theaiera.cn,每日分享最前沿的AI新闻和技术。

本文首发于 AI人工智能时代,转载请注明出处。