OpenAI 在 4 月 15 日更新了 Agents SDK,这次带来的一组能力,合在一起,是至今为止最清楚的一次对"agent 生态在过去一年里所收敛出来的标准"的背书。更新给出了一个 model-native 的 harness,带可配置的记忆、sandbox-aware 的编排、以及"类 Codex"的文件系统工具。它把五个此前开发者一直在手工搭建的原语标准化了:通过 MCP 做工具调用、通过 skills 做渐进式披露、通过 AGENTS.md 放自定义指令、shell 形态的代码执行、以及 apply-patch 形态的文件编辑。Sandbox 执行被原生支持,带有对 Blaxel、Cloudflare、Daytona、E2B、Modal、Runloop、Vercel 的 bring-your-own 集成。Python 先发,TypeScript 随后。值得看的不是其中任何一个功能点,而是整体动作的形状。
一个 release 里一次性被背书的标准有五个。AGENTS.md,一个放在项目根目录、给 agent 供自定义指令的 markdown 文件,现在是 OpenAI 明确的原语,和 Anthropic 的 CLAUDE.md 以及昨天 Google Android 的 SKILL.md 模式并列。命名约定已经在"agent 可读的项目根文件"这一点上收敛了,在 OpenAI 加入 AGENTS.md 之后,这项约定实际上已经定下来了。MCP,Anthropic 在 2024 年推出、已被相当大一部分第三方生态采纳,现在也是 OpenAI 的一等公民。这是最后一家大实验室来归队,MCP 成了工具接口的事实标准。Skills,Google 在 Android SKILL.md 工作里用过,现在是 OpenAI SDK 里一条命名原语,用来做 agent 指令的"渐进式披露"。Shell 形态的代码执行和 apply-patch 形态的文件编辑,是从 Claude Code 与 Cursor 里浮出来的两条执行原语,OpenAI 直接原样采纳了,没换名字。至于"sandbox 供应商"用复数形式,这是另外一个信号。OpenAI 没有试图把 sandbox 这一层抓在自己手里;它把接口标准化,然后让一个市场在下面长出来。我昨天写过的 Cloudflare Code Mode,正好贴合这套模型。
这次更新的形状,是 OpenAI 从"标准由我们来定"切换到了"把生态早已选好的东西收编进来"。这是一次有分量的姿态变化。过去两年的默认假设,是每家实验室都会出货自己的专有 agent 原语,并在原语的质量上互相竞争。实际发生的是收敛:工具有 MCP,指令有 CLAUDE.md 与 AGENTS.md,渐进式披露有 SKILL.md 与 skills,代码执行有 sandbox 抽象。那些试图发出专有版本的实验室,会发现第三方生态直接绕过去。OpenAI 选择给生态标准盖章,这是务实的一步。它在告诉你:agent-SDK 这一层已经不再是一个有意义的锁定面;竞争差异化必须发生在模型质量、sandbox 集成质量、生态深度这三层。它也隐含地承认了一件事,那就是从 agent 生态里最快抽出价值的方式,是干干净净地接入,而不是和潮水对着干。
对任何在做代码类或工具类 agent 的人,三个立刻可以动的动作。第一,如果你还没把 AGENTS.md 或等价物当作项目里的 agent 配置界面,现在就上。约定已经定下来了,而你继续停在自研系统上,迁移成本会越拖越大。第二,审一下你暴露出去的 MCP 工具。现在 OpenAI 官方支持 MCP,那你当初为 Claude 或第三方 client 搭的 server 会在 OpenAI 的 SDK 上原生跑得通,反过来也成立。多供应商配置的摩擦少了一大截。第三,选 sandbox 供应商要有明确标准。七家供应商在 OpenAI SDK 里都是一等公民,这意味着 sandbox 不再是一个"挑哪家都差不多"的商品化决策。这些供应商在延迟、语言支持、定价、安全姿态上各有差异,而这些差异会直接落到你 agent 的运行行为上。Cloudflare 的 Code Mode 和 E2B 的 Python-first 姿态,就是两种路线明显不同的 sandbox 供应商例子。元层面的收获是:agent 的标准稳定下来的速度,比大多数人预期得要快。如果你还在写自家的 tool-calling 脚手架、自家的 sandbox 管道、自家的指令文件格式,这些东西现在已经更多是负债而不是资产。
