把 Codex 的「马具」租出来:OpenAI 新 Agents API 拆解

·阅读约12分钟·Evergreen Tools Team

2026 年 9 月 10 日,OpenAI 把 Codex 背后的 harness 放到了 API 后面。Agents API 进入公开测试,主张很窄也很具体:你描述任务、模型、工具集与运行环境,OpenAI 替你跑那条 agent 循环。而这条循环——上下文压缩、工具选择、子智能体协同、长会话维持——恰恰是过去两年里大多数团队反复自己重建、而且建得不太好的部分。所以真正值得说清楚的,是你买到了什么,以及哪些责任并没有随之转移。

一条你不再需要自己写的 agent 循环

一条你不再需要自己写的 agent 循环

一、一个会话,三种算力选择

这个 API 的工作单元是 session。你用任务文本、模型、工具列表和环境创建会话,然后接收事件与输出。harness 由 OpenAI 托管与维护,但计算环境的选择权在你手里,目前有三种:与 Codex、ChatGPT 同源基础设施的 OpenAI 托管沙箱;你自己的基础设施;以及合作方沙箱——公开名单包括 Blaxel、Cloudflare、Daytona、DigitalOcean、E2B、Modal、Oracle、Runloop 与 Vercel。托管沙箱由 OpenAI 供给和管理,可以用你的文件、依赖包、skills 与插件来配置;密钥通过 vault 引用,而不是内联写进请求。OpenAI 明确表示 API 本身不额外收费:你只为智能体消耗的 token 与工具付费。

// 1. A production-shaped agent in one call (Agents API, public beta, Sep 10 2026)
import OpenAI from "openai";

const client = new OpenAI();

const session = await client.beta.agents.sessions.create({
  agent: {
    model: "gpt-6-astra",
    tools: [
      {
        type: "mcp",
        server_label: "observability",
        transport: { type: "http", server_url: "https://observability.example.com/mcp" },
      },
    ],
    multi_agent: { enabled: true, max_concurrent_subagents: 3 },
  },
  vault_ids: ["vault_YOUR_VAULT_ID"],
  environment: {
    type: "openai_hosted",
    capability_directories: ["/workspace/capabilities/skills"],
  },
  input:
    "Investigate service-api elevated 5xx rate over the last 30 minutes. " +
    "Delegate deployment, error, and dependency analysis to subagents. " +
    "Save findings, evidence, and recommended mitigation in /workspace/outputs.",
});

二、harness 替你接手了哪四件事

四件 harness 行为本身就足以构成迁移理由。第一是上下文管理:会话接近上下文上限时,API 会自动压缩更早的上下文,多窗口工作流不再需要你自己实现摘要逻辑。第二是工具检索(tool search):工具定义按需加载,而不是每轮提示都粘贴一遍,既省 token,又保住了上游提示缓存的有效性。第三是编程式工具调用(programmatic tool calling):智能体可以在代码里并行发起调用、串联相关操作、过滤与合并结果,只把收敛后的结果带回上下文窗口。第四是统一的工具面:MCP 服务器、自定义函数与内置工具(如网页搜索)在同一個 tools 数组里声明。OpenAI 还把 harness 描述为「有版本」的:它随模型发布一起改进,也就是说你不必重写循环就能继承增益。

# 2. Tool search loads definitions on demand, so the prompt cache stays warm
agent_tools = [
    {"type": "tool_search", "index": "internal-tools"},
    {"type": "programmatic_tool_calling"},   # loop, join and filter in code
    {
        "type": "mcp",
        "server_label": "openai_docs",
        "transport": {"type": "http", "server_url": "https://developers.openai.com/mcp"},
    },
]

run = client.beta.agents.sessions.create(
    agent={"model": "gpt-6-astra", "tools": agent_tools},
    input="Summarise every failed deployment in the last 24 hours, grouped by service.",
)
# Only the reduced result returns to the context window, not 400 raw tool rows.
沙箱与出网规则是基础设施决策,不是提示词

沙箱与出网规则是基础设施决策,不是提示词

三、不用自己写编排器就能用子智能体

多智能体支持是一个开关,不是一个框架。打开 multi_agent.enabled 并设定并发上限,API 会把任务拆成相互独立的部分,让每个子智能体拥有自己的上下文,再由协调者汇总结果。子智能体各自持有独立上下文正是关键:一个专注的上下文窗口,比一个同时应付三项调查的窗口更不容易漂移。运维上的提醒是算术:公开示例里的并发上限是 3,这就是扇出规模;成本则是三条并发流共享同一份预算。只有当工作真正可切分时才委派,并且在默认打开之前先量一量 token 差异。

// 3. Subagents keep their own context; the coordinator keeps the plan
const session = await client.beta.agents.sessions.create({
  agent: {
    model: "gpt-6-astra",
    multi_agent: { enabled: true, max_concurrent_subagents: 3 },
  },
  input: "Research three vendors, one subagent each, then write a comparison table.",
});

// Fan out only for work that genuinely needs separate context:
// three concurrent subagents are three concurrent streams of token spend.

四、被托管的开源底座

这条 harness 就是开源的 Codex harness,代码公开,意味着模型调用、工具与上下文之间的协调逻辑是可检视的——当你需要向来访的评审者或审计者解释智能体行为时,这一点很实用。把这则发布读成一条分界线更准确:OpenAI 运行并维护循环,你保留领域部分——工具、知识、工作流。如果你原来的差异化在于自己写的编排循环,那么这一层正在被商品化;如果你的差异化在于工具面和它背后的数据,这则发布并没有动到它。

# 4. Bring your own compute: same harness, your network, your compliance rules
environment:
  type: self_hosted
  runner: fixed            # or on_demand
  provider: modal          # Blaxel, Cloudflare, Daytona, DigitalOcean,
                           # E2B, Modal, Oracle, Runloop, Vercel
  egress:
    default: deny
    allow:
      - observability.internal:443
      - github.com:443
  secrets: vault           # never bake keys into the image
并行子智能体在放大速度的同时,也在放大成本

并行子智能体在放大速度的同时,也在放大成本

五、没有随 API 一起转移的责任

有五项责任仍然在你手上。成本:按 token 与工具调用计费,所以会话预算与压缩策略是你的控制点。出网:能访问公网的沙箱就是一条外泄通道,默认拒绝加允许列表应该写进环境定义里。密钥:用 vault 引用、定期轮换,永不写进镜像或提示。幂等:长会话会重试,工具调用需要幂等键。可观测性:事件流就是你的审计日志,意味着接收端与保留期由你决定。第六项是数据驻留:托管沙箱很方便,但它也在别人的区域里。该 API 处于公开测试阶段,OpenAI 表示会快速迭代;建议固定 harness 版本,并把升级当成普通依赖变更来对待。

{
  "agent_guardrails": {
    "harness_version": "pin-explicitly",
    "session_budget_usd": 12.0,
    "compaction": { "mode": "automatic", "keep_last_turns": 8 },
    "tool_calls": { "idempotency_key": "session_id + tool_name + args_hash" },
    "events": { "sink": "otel", "retain_days": 30 },
    "environments": { "hosted": "no_pii", "self_hosted": "pii_ok" }
  }
}

📌 常见问题 FAQ

OpenAI Agents API 是什么?

2026 年 9 月 10 日推出的公开测试产品(OpenAI 官方发布页)。它把驱动 Codex 的 agent harness 与基础设施通过一次 API 调用开放出来:你指定任务、模型、工具与环境即可创建会话,计算环境可选 OpenAI 托管沙箱、自托管或合作方沙箱。

使用 Agents API 需要额外付费吗?

OpenAI 在发布页明确说明:使用 Agents API 本身没有额外费用,你只需按智能体消耗的 token 与工具付费,具体见其定价页。

支持哪些沙箱合作方?

官方公布的合作方包括 Blaxel、Cloudflare、Daytona、DigitalOcean、E2B、Modal、Oracle、Runloop 与 Vercel,同时也提供 OpenAI 托管的沙箱(与 Codex、ChatGPT 同源基础设施)。

子智能体(subagent)怎么用?

在 agent 配置里设置 multi_agent.enabled 与 max_concurrent_subagents(官方示例为 3)。API 会把任务拆分为独立部分,每个子智能体维护自己的上下文,主智能体负责协调并汇总。注意成本随并发数增长。

harness 是开源的吗?

是。OpenAI 表示 Agents API 由开源的 Codex harness 驱动,代码库公开(github.com/openai/codex),由 OpenAI 负责运营与维护,开发者可以检视其协调逻辑。