委派任务
Subagent 通过 Task 或 MultiTask 接收委派。SDK 3.0 将每个 Agent 的能力显式隔离:子 Agent 不会自动继承父 Agent 的自定义 Tool、连接 Tool 或 Skill。能力模型
每个 Agent 运行在 RuntimeEnvironment(Runtime-global,继承自 Session)之上,并携带自己的 AgentCapabilities(Agent-local,不继承、不回退):- 继承(Runtime-global):Provider、模型、凭据、cwd、子进程环境变量、运行时服务(askUser / config / webSearch / webFetch / cron 以引用共享)以及内建 Tool 实现。
- 隔离(Agent-local):
prompt/appendPrompt/maxTurns以及所有capabilities字段。不存在child.X ?? parent.X回退:未设置的能力解析为子 Agent 自己的空值,同级 subagent 之间也互不可见。
根 Agent 合并规则
根 Agent 的capabilities 来自每次请求的有效定义(query() 覆盖优先于构造函数配置)。Tool 来源与顶层选项取并集,顶层在前:
capabilities.skills 替换注册表视图;未设置的能力字段回退到顶层行为——绝不反向。
解析顺序
annotations.readOnlyHint 映射为 isReadOnly,因此只读 MCP Tool 可在 Explore subagent 中使用,并加入只读并发批次。
findTool 注册表按 Agent 隔离:每次派生获得全新目录(subagent 不会覆盖父 Agent 的延迟注册表),而父 Agent 的激活记录仍像以前一样跨请求保留。
迁移(2.x → 3.0)
委派前应明确配置子 Agent 的任务和可用能力,避免依赖父 Agent 的隐式配置。