Agents API · Multi-agent

OpenAI Agents API Multi-agent 怎么用?

让主 Agent 把独立任务交给 Subagent 并行执行,再合并结果;同时控制共享环境、权限、冲突、成本和审计。

先给结论

在创建 Agents API Session 时设置 agent.multi_agent.enabled: true 即可启用多代理;harness 会自动提供创建、消息、等待和中断 Subagent 的协调工具,不需要手动声明。只把相互独立、可以明确描述输出的问题并行化;短任务和强依赖步骤留给主 Agent。协调者与 Subagent 共享同一个环境和文件系统,因此并行修改同一文件必须额外治理。

官方资料(2026-11-02 核对):Agents API Multi-agent · Sessions · Events 与 Items · Observability 与 Usage

什么任务适合拆给 Subagent

任务建议原因
分别审查多份文档适合并行输入与输出边界清楚
调查多个独立故障原因适合并行可以分别验证再汇总
短任务或下步依赖上步留在主 Agent协调开销可能大于收益
多人同时改同一文件先分区或串行合并共享文件系统会产生冲突
高影响写操作限制权限并加审批并发会放大副作用风险

每个委派任务都写清问题、允许使用的数据、预期输出、停止条件和禁止事项。主 Agent 的职责不是“多开几个模型”,而是拆分、协调、检查证据并合并最终结果。

最小 JavaScript 示例

import OpenAI from "openai";

const client = new OpenAI();
const events = await client.beta.agents.sessions.create({
  agent: {
    model: process.env.OPENAI_MODEL,
    instructions: [
      "只把相互独立的问题交给 Subagent。",
      "每个任务写清来源与预期结果。",
      "等待结果,核对冲突,再输出合并结论。"
    ].join(" "),
    multi_agent: {
      enabled: true,
      max_concurrent_subagents: 2
    }
  },
  environment: { type: "none" },
  input: "让两个 Subagent 分别审查文档 A 与文档 B,并合并差异。",
  stream: true
});

events.withResultCollection();
for await (const event of events) {
  console.log(event.type);
}
console.log((await events.finalResult()).output_text);

示例用环境变量选择模型,避免把型号写成永久默认。environment.type: "none" 时应在创建请求中提供初始 input;stream: true 同时流式返回第一轮。SDK 会处理 Agents Beta 头,原始 HTTP 请求仍需按最新官方文档发送相应 Header。

并发限制不是越大越好

max_concurrent_subagents 限制同时运行的 Subagent 数量,不包含协调者;官方当前默认值是 6。生产环境建议从 2–3 个开始,记录总耗时、每个 Subagent 的 Token、工具调用、共享环境资源和外部 API 限流,再决定是否提高。

省略 multi_agent,或设置 enabled: false 并省略 limit,可关闭委派。该配置在 Session 创建时生效;修改已保存 Agent 的配置只会影响新 Session。

共享环境与文件冲突

需要命令或文件时可使用 openai_hosted 或 self_hosted 环境。协调者和全部 Subagent 共用该 Session 的文件系统,创建 Subagent 不会新增 Sandbox。

  1. 给每个 Subagent 独立目录、文件集合或只读任务。
  2. 不要让多个代理同时修改同一文件;必要时使用锁、工作树或由主 Agent 统一应用补丁。
  3. 限制网络、密钥、MCP allowed tools 和命令权限,因为这些能力可能被 Subagent 继承。
  4. 写操作用幂等键、审批和回滚;不要把自然语言协调当成事务保证。

Subagent 能继承什么工具

能力当前边界
MCP继承已配置的服务器、凭据与 allowed tools
Web Search继承 Session 中的搜索设置
环境文件与 CLI可访问共享文件系统和命令工具
Function tools官方当前说明 Subagent 不支持
协调工具由 harness 提供,不由应用声明或执行

如果任务依赖 function tool,不要假设 Subagent 能直接调用;可留给主 Agent、改用受支持的 MCP/环境能力,或重新设计委派边界。

事件流怎么看

  • agent.session.subagent.created:提供新 Subagent ID。
  • agent.session.turn.item.added / done:报告协调动作。
  • Item 类型包括 create_subagent_call、send_subagent_input_call、wait_for_subagents_call、interrupt_subagent_call。
  • create 或 wait item completed 只代表协调动作完成,不代表 Subagent 已完成任务。
  • agent_message 在可用时包含代理间文字,但事件流不是完整聊天记录。

最终结果以主 Agent 合并响应为入口,并结合保存的 Items、Turns 和每个 Subagent 历史检查遗漏、冲突或失败。

怎样给命令和成本归因

拿命令 Item 的 turn_id 与 Session ID 查询 Turn;turn.subagent_id 为 null 表示主 Agent,否则就是执行命令的 Subagent。生产日志至少保存 Session、Turn、Subagent、工具/命令、耗时、Token、错误与审批结果,避免只保留最终回答。

安全、可靠性与评测清单

  1. 任务隔离:分别说明数据范围、输出格式和停止条件。
  2. 最小权限:限制 MCP、网络、密钥、目录和命令。
  3. 写入协调:单写者、目录分区或主 Agent 合并补丁。
  4. 完成判定:区分协调 item completed、Subagent 结果、主 Agent 合并和业务成功。
  5. 失败恢复:对子任务设置超时、重试上限、interrupt 与部分结果策略。
  6. 成本:同时记录主 Agent 和全部 Subagent 的 Token、工具及环境资源。
  7. 评测:比较单 Agent 与 2/3/6 并发在正确率、耗时、冲突和单位成功成本上的差异。

常见问题

Agents API Multi-agent 适合什么任务?

适合可以拆成相互独立问题的复杂任务,例如分别审查多份文档、并行调查不同故障原因,再由主 Agent 合并结果。短任务、强依赖步骤或多人同时修改同一文件通常应留在主 Agent,或先设计明确协调方式。

要自己声明 create、message、wait 和 interrupt 工具吗?

不需要。创建 Session 时设置 agent.multi_agent.enabled 为 true 后,Agents API harness 会提供创建、消息、等待和中断 Subagent 的协调工具,应用不要把这些工具作为普通工具重复声明。

max_concurrent_subagents 默认是多少?

官方当前默认值是 6,不包含负责协调的主 Agent。启用时可以设置正整数限制并发;应根据任务独立性、工具配额、环境资源、Token 成本和外部服务限流从较小值开始评测。

主 Agent 和 Subagent 会各自创建一个 Sandbox 吗?

不会。协调者与 Subagent 共享该 Session 的同一个环境和文件系统;创建 Subagent 不会自动创建新环境。因此并行写同一文件会产生冲突,需要分区、锁、工作树或由主 Agent 串行合并。

Subagent 能使用哪些工具?

它们继承已配置的 MCP 工具、凭据与 allowed tools、Web Search 设置,也能使用环境文件和命令行工具;官方当前说明 Subagent 不支持 function tools。敏感凭据和写权限应按所有 Subagent 都可能访问来治理。

create 或 wait item completed 是否代表 Subagent 做完?

不代表。completed 只表示协调动作已由 harness 执行。应用应继续读取 Session 事件、主 Agent 最终响应和保存的 Turn/Item,判断 Subagent 结果是否到达、是否失败以及是否被主 Agent正确合并。

怎样确认是哪一个 Agent 执行了命令?

保存命令 Item 的 turn_id 和 Session ID,再读取对应 Turn;turn.subagent_id 为 null 表示主 Agent,否则指向执行命令的 Subagent。事件流不是完整的代理间聊天记录,需要使用保存的 Items 和 Turns 做审计。

本文核对日期为 2026-11-02。Agents API Multi-agent 当前是 Beta;配置、默认并发、Subagent 工具、事件与计费可能变化,部署前请重新读取 Multi-agent、Sessions、Events 和 Observability 官方文档。

先用两个只读 Subagent 做对照实验

保存事件、Turn、Subagent、工具、耗时与 Token,确认合并质量优于单 Agent 后,再增加并发和写权限。