Vercel Zero:第一门真正为 AI Agent 设计的编程语言
导读:2026年5月,Vercel Labs 发布了一门叫 Zero 的新编程语言。24小时内 GitHub 900+星。它不是写给人看的——报错吐 JSON,函数签名标注副作用,AI 解析特别爽,人看着头疼。这不是又一场"新语言秀",而是一次编程语言设计的范式转移:从"让人读懂"到"让 Agent 读懂"。
一、一个根本问题:读者换了
Vercel 的 Chris Tate 和 Matt Van Horn 在 GitHub 上写了一句很直白的话:
"Most programming languages were designed for humans who read error messages, interpret warnings, and manually trace through stack output to fix bugs. AI agents do none of those things well."
翻译过来:大多数编程语言是给人类设计的——人类读报错、理解警告、手动追踪栈信息来修 bug。AI Agent 不擅长这些。它们更擅长处理结构化数据:可预测的 token、稳定的编码、机器可解析的修复提示。
这就是 Zero 的起点。读者换了,作者也得换写法。
二、Zero 是什么:不只是"Rust 换皮"
表面看,Zero 长得很像 Rust:
pub fun main(world: World) -> Void raises {
check world.out.write("hello from zero\n")
}
pub fun替代fnlet mut可变绑定->返回类型- 泛型用尖括号
但如果你只把它当成"又一个 Rust 方言",就错过了重点。Zero 的核心差异不在语法层面,而在整个工具链的设计假设——从第一天起,默认用户是 AI Agent,不是人类开发者。
2.1 四个核心设计假设
| 设计假设 | 传统语言 | Zero |
|---|---|---|
| 报错消费者 | 人类读文本 | Agent 消费 JSON |
| 副作用可见性 | 隐式全局/运行时推断 | 签名中显式声明 |
| 工具链形态 | 多个独立工具 | 单一 CLI,全 JSON 输出 |
| 运行时行为 | GC/事件循环/隐式异步 | 无隐藏运行时,完全可预测 |
三、JSON 诊断:编译器不再"说人话"
这是 Zero 最颠覆性的设计。
传统编译流程:
Agent 写代码 -> 编译器报错(人类可读文本)-> Agent 用 regex 解析文本 -> 推断修复方案
这个流程脆弱且低效。错误格式随版本变化,文本解析容易出错,而且编译器没有"修复动作"的概念。
Zero 的编译流程:
Agent 写代码 -> 编译器输出 JSON -> Agent 直接消费结构化数据 -> zero fix 生成修复计划
3.1 zero check --json 的输出示例
{
"ok": false,
"diagnostics": [{
"code": "NAM003",
"message": "unknown identifier",
"line": 3,
"repair": { "id": "declare-missing-symbol" }
}]
}
每个诊断包含:
code:稳定标识符(如NAM003),Agent 可可靠匹配message:人类可读描述repair:带类型的修复 ID,Agent 可直接执行,无需从文本推断
3.2 zero explain 和 zero fix:闭环修复
# 查询错误码含义(结构化,无需解析文档)
zero explain NAM003
# 生成修复计划(机器可读)
zero fix --plan --json add.0
zero fix --plan --json 输出的是一个结构化修复计划——机器可读的变更描述,告诉 Agent 具体要改什么。Agent 不需要"理解"错误,只需要匹配错误码和执行修复动作。
3.3 zero skills:版本匹配的 Agent 指导
传统工作流中,Agent 需要抓取外部文档,而文档可能与编译器版本不同步。Zero 通过 zero skills 解决:
zero skills get zero --full
返回与已安装编译器版本匹配的指导,涵盖语法、诊断、构建、包管理、测试和 Agent 编辑循环。Agent 不需要爬取可能过时的外部文档。
四、能力导向 I/O:副作用的诚实申报
Zero 的第二大设计决策:效果在函数签名中显式声明。
没有 World 参数,函数就不能碰外界。没有 raises 标注,函数就不能传播错误。没有 check,就不能处理可能失败的操作。
pub fun main(world: World) -> Void raises {
check world.out.write("hello from zero\n")
}
world: World:能力对象,授予 I/O、文件系统、网络访问权限check:处理可能失败的操作,将失败沿调用栈上浮raises:标记函数可以传播错误——错误路径在签名中可见,而不是埋在运行时异常里
为什么这对 Agent 重要?
在 Go 或 Python 中,追踪一个函数对外部世界做了什么(文件访问、网络调用、失败模式)需要追踪整个调用图。在 Zero 中,这些信息就在签名里。Agent 阅读不熟悉的代码库时,不需要推断,只需要读取类型签名。
五、统一 CLI:一个工具,全部 JSON
传统开发工具链是一堆独立工具:编译器、链接器、格式化器、测试运行器、文档生成器……每个工具有自己的命令行接口和输出格式。Agent 需要学习每个工具的使用方式。
Zero 把所有东西塞进一个二进制:
zero check # 类型检查
zero run # 运行
zero build # 构建(支持交叉编译)
zero graph # 依赖图(JSON 输出)
zero size # 二进制大小报告(JSON)
zero skills # Agent 指导
zero explain # 诊断解释
zero fix # 修复计划
zero doctor # 健康检查(JSON)
每个子命令都支持 --json。Agent 不需要学习多个工具,只需要学习一个 CLI 的不同子命令。
六、小到极致:< 10 KiB 的二进制
Zero 编译到极小的原生可执行文件:
- 无强制 GC:没有隐藏分配器
- 无强制事件循环:没有隐式异步
- 直接发射器:ELF、Mach-O、PE、WebAssembly,无 LLVM 依赖
- 目标:< 10 KiB
这对 Agent 意味着什么?Agent 生成的代码行为更可预测。没有隐藏的内存管理,没有意外的控制流,没有魔法全局变量。错误就是值,用 check 传播。
七、 skeptic 的合理质疑
不是所有人都买账。开发者社区的质疑集中在三点:
7.1 "LLM 已经能处理 Rust/Go/Python 报错了"
skeptic 论点:Agent 失败的主要原因不是看不懂报错文本,而是上下文窗口限制、多步规划缺陷、工具使用不当。新语言可能只是转移了瓶颈,没有解决真正的问题。
这个论点有道理。Zero 解决的是"编译器输出解析"问题,但 Agent 的可靠性问题远不止于此。
7.2 "不是 Rust 级别的内存安全"
开发者 Mehul Mohan 测试后表示:Zero 的 borrow checker 基础,不是 Rust 级别。内存安全保证在设计上存在,但实现上还不成熟。
7.3 "生态系统为零"
- 没有包注册表
- 编译器 spec 不稳定
- 交叉编译支持有限
- v0.1.x,随时可能有破坏性变更
Vercel Labs 自己也在 README 里坦承:
"Zero is pre-1 and intentionally unstable. Treat today's syntax and APIs as something to explore, not something to memorize." "Security vulnerabilities should be expected. Zero is not ready for production systems."
八、历史坐标:从"AI 学着像人"到"人学着像 AI"
这张截图里有一句话特别精准:
"以前我们让 AI 学着像人写代码,现在代码越来越像写给 AI 看的。"
这句话概括了一个更大的趋势:
| 阶段 | 特征 | 代表 |
|---|---|---|
| 阶段 1 | AI 学着像人写代码 | Copilot 补全人类代码 |
| 阶段 2 | 代码还是给人看的,但 AI 也能读 | 现有语言 + Agent 工具链 |
| 阶段 3 | 代码从设计时就是给 AI 看的 | Zero |
| 阶段 4 | 产品文档、API 设计、交互流程都面向 Agent | 正在发生 |
Zero 是阶段 3 的标志。它不仅是一门语言,更是一个信号:软件的用户正在从人变成 Agent。
这个趋势在截图里被进一步延伸:
"不只是编程语言,现在越来越多的产品文档、使用说明,从写的那一刻起就是给 AI 看的。"
当读者从"人类开发者"变成"AI Agent",整个知识生产的逻辑都在改变。文档不再是为了"让人读懂",而是为了"让 Agent 解析"。API 设计不再考虑"开发者体验",而是考虑"Agent 可操作性"。
九、与 CLI-Anything 的共振
昨天 GitHub Trending 上的 CLI-Anything(HKUDS)和今天的 Zero 形成了一个有趣的共振:
- CLI-Anything:让现有软件对 Agent 可用(给旧软件铺 Agent 通道)
- Zero:让新软件从设计时就对 Agent 友好(从根上重新设计)
两者指向同一个方向:Agent-Native。
如果把 12-factor-agents 的哲学套用在这里:
- 原则 4(工具就是结构化输出):Zero 的编译器本身就是最大的"工具"
- 原则 8(拥有你的控制流):Zero 的能力系统让副作用完全可控
- 原则 10(小而专注的 Agent):Zero 的小二进制 + 无隐藏运行时 = 可预测的行为边界
十、结论:实验,但值得关注
Zero 目前是一个实验(v0.1.3,Apache-2.0),不应该用于生产。但它提出的问题不是实验性的:
当 AI Agent 成为软件的主要用户时,编程语言应该如何重新设计?
Zero 给出了一个可能的答案:
- 编译器输出 JSON,不是文本
- 副作用在签名中显式声明
- 工具链统一、全 JSON
- 无隐藏运行时,行为完全可预测
- 修复计划是结构化的,不是推断的
这些设计选择不一定最终会被广泛采纳,但它们定义了一个值得探索的设计空间。就像截图里说的:
"读者换了,作者也得换写法。"
Vercel Labs 换了写法。市场用 24 小时 900+星投了票。接下来要看的是:这个写法能不能从实验变成范式。
参考链接:
- GitHub 仓库:https://github.com/vercel-labs/zero
- 官方网站:https://zerolang.ai
- Marktechpost 深度报道:https://www.marktechpost.com/2026/05/17/vercel-labs-introduces-zero/
- TechTimes 报道:https://www.techtimes.com/articles/316793/20260518/vercel-labs-zero-compiler-speaks-json-ai-agents
- Daily.dev 分析:https://app.daily.dev/posts/vercel-zero-a-programming-language-for-ai-agents-2026
- The Unwind AI 报道:https://www.theunwindai.com/p/vercel-built-a-programming-language-for-ai-agents
- Coddy 在线 Playground:https://coddy.tech/playground/zero
#深度研究 #Vercel #Zero语言 #AI编程 #AgentNative #编程语言 #小凯
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。