责任不随调用转移Subagent 对局部产物负责,Orchestrator 对任务覆盖、权限下发、结果验收和最终决定负责。未经验证的子结果只是候选证据,不能直接成为共享事实。

委派必须有明确收益

OpenAI 的工程指南建议先最大化单 Agent 能力,因为多 Agent 引入额外编排与维护;Anthropic 的多 Agent 研究系统报告则表明,宽度优先、可并行搜索且信息超过单上下文的高价值任务可能受益。两者并不矛盾:是否委派由任务结构和基线证据决定。

委派收益与反例
候选收益成立条件不成立的信号
Context 隔离子任务需要不同资料,互相干扰明显所有节点都必须共享同一完整状态
专业化Prompt、Tool、模型或评测标准确有差异只是换了“研究员/专家”名字
并行输入冻结、无强依赖、可独立验收每步都依赖上一结果
故障隔离预算、工作区和权限能独立限制共享同一可变 Scratchpad 和凭据

Anthropic 报告中的多 Agent 收益来自其特定研究任务、模型和内部评测,不能外推为通用比例;同一报告也指出 token 消耗显著增加,并且高度依赖共享 Context 的任务并不适合。架构评审必须用自己的任务集做单 Agent 对照。

父 Agent 交付的是任务契约

“研究竞争对手”会造成范围漂移和重复搜索。合格契约应写清目标与非目标、输入 Artifact、允许来源、输出 Schema、证据标准、Tool 与数据权限、预算、Deadline、失败/部分完成语义,以及能否继续委派。

interface DelegationRequest {
  delegationId: string;
  parentRunId: string;
  objective: string;
  nonGoals: string[];
  contextRefs: Array<{ uri: string; integrity: string; sensitivity: string }>;
  capabilities: string[];
  outputSchemaVersion: string;
  acceptance: string[];
  budget: { maxTurns: number; maxCost: number; deadlineAt: string };
  mayDelegate: boolean;
}

interface DelegationResult {
  status: 'complete' | 'partial' | 'failed' | 'cancelled';
  artifacts: string[];
  evidenceRefs: string[];
  unresolved: string[];
  childRunId: string;
}

子 Agent 需要知道“何时停止”。完成条件、最大努力和无结果的报告格式比“尽可能全面”更重要;后者会诱发无限搜索和伪造完整性。

按能力与约束选择 Subagent

能力目录不只记录名称,还应包含领域/模态/语言、可用 Tool、输入数据级别、模型与版本、输出 Schema、成本/延迟、健康状态和代表性任务表现。匹配先做硬约束过滤,再按质量、成本、延迟和负载评分。

历史表现要按任务类型和版本分桶,避免一个 Agent 在摘要任务表现好就被泛化到安全审查。没有满足数据域、权限或质量阈值的候选时,应回退父 Agent、确定性服务或人工,不能为了“完成委派”选择越权或未知候选。

平台决策能力 Registry 的 Owner 要对元数据新鲜度和撤销负责。下线一个 Agent、Tool 或模型时,应能找到受影响的委派策略和在途 Run,而不只是从列表删掉名称。

默认不复制父级全部历史

父级对话包含与子任务无关的指令、敏感数据和旧假设。默认传递最小任务包:稳定目标、必要事实、Artifact 引用、来源与时间、不可覆盖约束和术语定义。对子 Agent 隐藏不必要信息既减少干扰,也缩小泄露面。

Context 输入应可追溯:区分用户事实、系统策略、父 Agent 假设和其他子任务的未验证结果。Subagent 的自由 Scratchpad 保持私有;只有通过契约验证的 Artifact 或事实提案,才由父级提交共享层。

Anthropic 的工程报告描述了让 Subagent 直接写持久 Artifact、向 Orchestrator 返回轻量引用的做法,以减少多次口头转述的信息损失。这一模式适合结构化产物,但 Artifact Store 必须有权限、版本、完整性哈希和生命周期管理。

返回结果先验收,再汇聚

验收从 Schema 和状态开始,再检查完成证据、引用/测试/Tool 回执、目标覆盖、与其他结果的冲突和未决项。complete 是子 Agent 的声明,不是父级事实;父级验证通过后才改变任务状态。

部分完成不是失败的文本变体。它要列出已完成范围、缺失原因、可复用 Artifact 和后续建议。父级据此决定重新委派、补一个子任务、降级交付或人工接管。

委派闭环:控制与验收始终留在父级
任务契约目标、Context、能力、预算和证据。
能力匹配硬约束过滤,再评分与健康检查。
隔离执行私有工作区、最小权限和子 Run。
父级验收证据、冲突、缺口与最终提交。

父子运行关系必须可追踪

Trace 关联 parent run、delegation step 和 child run;记录任务/能力版本、下发预算、实际消耗、Context Artifact 和结果。Deadline、取消和策略必须向下传播,子 Agent 不能延长父级截止时间或隐式扩大权限。

取消是协议而非一个布尔值:停止尚未开始的 Tool,向运行中活动发送协作取消,等待必要清理,并处理晚到结果。父级取消后,子级晚到结果只能进入审计或缓存,不能提交到已经关闭的任务版本。

观测指标包括委派命中率、重复/空洞任务、验收失败、子任务尾延迟、预算超支、取消传播时间和父级重做率。只看“成功启动了多少 Subagent”会鼓励无效并发。

委派特有失败

从表象定位委派协议缺陷
表象机制控制
多个子 Agent 给出相同内容边界和输入未区分互斥范围、覆盖矩阵、任务指纹
结果漂亮但无法合并输出契约和共享术语缺失Schema、Artifact、Join 规则
递归生成大量 Agent委派权限与全局预算未下传mayDelegate、最大深度/数量、配额
父级被不可信结果污染子结果未经验证直接写共享状态事实提案区、父级验收、来源标签

验证应包含对抗用例:移除一项关键约束看子 Agent 是否越界;让一个 Agent 返回合法 Schema 但伪造引用;让取消与结果同时到达;让能力 Registry 信息过期。最终要证明系统拒绝错误结果并可解释,而不是只证明正常 Demo 能合成答案。

主动提取:专业 Prompt 不同是否足以拆成 Subagent?
不一定。若任务仍高度共享状态、串行且输出无法独立验收,多 Agent 的通信成本可能超过专业化收益。可先用同一 Agent 的受控 Prompt/Tool 配置或确定性路由。
责任判断:子 Agent 返回 complete,谁决定原目标完成?
父 Orchestrator 或确定性 Join。它必须验证子任务证据、覆盖与冲突,并检查原目标后置条件;子 Agent 只对契约内产物作出状态声明。

资料与事实边界

以下以官方文档、标准、论文和原始工程资料为主。厂商 API、价格、限额与模型能力会变化,落地时仍需按目标版本做能力探测和回归。

  1. Anthropic:How we built our multi-agent research system — 委派任务描述、并行、Context 隔离、Artifact 与成本边界的原始工程报告
  2. OpenAI:A practical guide to building agents — 先最大化单 Agent、manager 与 handoff 模式的官方建议
  3. OpenAI Agents SDK:Agent orchestration — Agents-as-tools、handoff 与代码编排的当前官方语义
  4. OpenAI Agents SDK:Handoffs — Handoff 输入、过滤、Schema 与控制权转移边界