Vercel Labs 5 月 15 日發布了 Zero —— 一種實驗性系統程式語言,它的設計約束是:看編譯器輸出的是 AI agent,不是人。編譯器輸出帶穩定錯誤碼和類型化 repair 方案的結構化 JSON 診斷(如 `{"code": "NAM003", "message": "unknown identifier", "repair": {"id": "declare-missing-symbol"}}`),在編譯期強制基於 capability 的 I/O,在 linux-musl-x64 上編譯成不到 10 KiB 的原生二進位。Apache 2.0,檔案副檔名 `.0`,v0.1.1 實驗版,程式碼倉庫 github.com/vercel-labs/zero。作者是 Vercel Labs 的 Chris Tate 和 Matt Van Horn。

三個設計決定把 Zero 跟 Rust、Zig、Go、C 分開。第一,預設輸出 JSON 診斷,帶穩定錯誤碼加 repair ID,這樣 agent 可以把 `NAM003` 映射到一份 fix 方案,而不必在人類用散文寫的錯誤訊息裡 grep。第二,透過一個 `World` 參數實現基於 capability 的 I/O —— 沒接收 `World` 的函式就不能做 side effect,編譯器在編譯期就強制這一點,這樣 agent 可以從類型簽名推出副作用,不必讀函式體。第三,統一的 CLI 子命令(`zero check`、`zero run`、`zero build`、`zero graph`、`zero size`、`zero routes`、`zero skills`、`zero explain`、`zero fix`、`zero doctor`),其中 `zero fix --plan --json` 輸出機器可讀的 repair 方案,`zero skills` 回傳跟版本匹配的 agent 指引。記憶體是顯式的 —— 沒有 GC、沒有隱藏的 allocator —— 這門語言在設計空間裡挨著 Rust,但把它的表面優化成對 agent 易讀。

大多數 coding-AI 廠商在程式語言外面那一層競爭:Copilot、Cursor、Codex、Anthropic 的 Claude Code。Vercel Labs 押注的是更深一層 —— 讓語言本身改變,這樣 agent 可以工作而無須支付翻譯稅。這個動作呼應的兩個先例是:Rust 的編譯器錯誤碼(穩定、可查詢,但訊息還是散文),和 Zig 的乾淨錯誤回傳(可讀但沒有 capability 系統)。Zero 就是當你以「agent 必須能解析這個」為約束開始,圍繞這個約束來設計診斷格式、副作用系統、和 CLI 的結果。這個賭博能不能贏,取決於 agent-native 的語言是否能複合出足夠優勢,超過「把 agent retrofit 到已有語言上」,以抵消生態赤字。Zero 還沒有套件 registry、沒有生產環境驗證,作者把它稱作「還不是生產相依」。

週一上手:如果你在做 agent-driven 的程式碼生成系統,Zero 值得花一天去看看 —— 看看當編譯器把你的 agent 當作一等消費者對待時是什麼感覺。JSON 診斷格式和 `zero explain` 子命令立刻可以觀察到;capability I/O 系統需要寫一個不那麼瑣碎的程式來評估。如果你是語言設計者,Zero 的這些架構動作是可獨立提取的 —— Zig 和 Rust 都可以加上帶 repair ID 的 JSON 診斷而不破壞原始碼相容性,這就把 Zero 的大部分 agent 友好特性吸回到現有 toolchain 裡。看 Zero 在半年裡能不能長出一個真生態,或者看這些技術在 Zero 抵達之前就上移進 Rust/Zig。兩種結果都確認了:agent 可讀性正在成為語言設計的一個新軸。