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 管線、自家的指令檔案格式,這些東西現在已經更多是負債而不是資產。
