当前位置: 首页 > news >正文

zerolang:Vercel 造了一门给 AI Agent 写代码的编程语言

zerolang:Vercel 造了一门给 AI Agent 写代码的编程语言

看完你会发现,你之前对"编程语言给谁用"的理解可能要更新了。

编程语言一直有两个用户:人和机器。zerolang 加了第三个——AI Agent。

这不是又一个"用 AI 写代码"的工具。zerolang(来自 Vercel Labs)从根本上重新思考了一个问题:如果一门语言的编译器原生暴露语义结构,Agent 能不能少猜一点、少错一点?

答案是一个实验性的 graph-first 编程语言,GitHub 上 4.7K Stars,Apache 2.0 协议。它用 C 写编译器,用 .0 作为源文件后缀,目前版本 v0.2.0。

本文提纲

  1. 核心问题:Agent 编辑代码为什么总出错
  2. Graph-First:源码是给人看的,图是给 Agent 用的
  3. 语言速览:.0 文件长什么样
  4. ProgramGraph:编译器直接暴露语义结构
  5. Checked Graph Edits:Agent 不再盲改代码
  6. Agent 工作流接口:编译器即开发工具
  7. 设计哲学与当前状态

核心问题:Agent 编辑代码为什么总出错

LLM 编辑代码的方式本质上是文本补丁——"把第 42 行到第 45 行替换成这段代码"。这种方式有几个致命弱点:

  • 猜测引用关系:改了一个函数名,不知道哪些地方调用了它
  • 过时的上下文:Agent 看到的代码可能已经被修改了,但它不知道
  • 级联错误:改了类型签名,不知道下游有没有破坏
  • 验证延迟:改完代码还得单独跑一遍编译器、linter、测试才知道对不对

每一步都是猜。猜错了就进入"改了又错、错了又改"的循环,token 烧了一大堆。

zerolang 的核心洞察:源码文本对人类友好,但对 Agent 来说是一个有损的接口。Agent 需要的不是代码文本,而是程序的语义结构。

Graph-First:源码是给人看的,图是给 Agent 用的

zerolang 的架构把"人看的"和"Agent 用的"分成两层:

MERMAID_BLOCK_0

关键设计决策:

  • 源码仍然是唯一的真实来源(Source of Truth)。.0 文件是人审阅、审计、版本控制的 artifact
  • ProgramGraph 是编译器从源码派生的结构,不是独立的存储格式
  • Agent 通过操作 Graph 来间接修改源码,编译器负责验证、重写、格式化

这不是"取代程序员",而是"让 Agent 在改代码的时候少犯错"。

语言速览:.0 文件长什么样

一个小程序:

fn answer() -> i32 {
    return 40 + 2
}pub fn main(world: World) -> Void raises {
    if answer() == 42 {
        check world.out.write("math works\n")
    }
}

几个值得注意的设计:

  • 显式 fallibilityraises 关键字标记可能失败的函数
  • 显式 capabilityworld 参数通过类型系统传递外部能力,不是全局变量
  • 显式错误处理check 关键字处理可能失败的操作
  • 无分号:语句结尾不需要分号

语法故意设计得很"无聊"——容易索引、比较、格式化、审计和重新生成,同时仍然像正常代码一样可读。

ProgramGraph:编译器直接暴露语义结构

这是 zerolang 最核心的创新。Agent 不需要从文本推断程序结构,编译器直接告诉你:

zero graph dump examples/hello.0

输出:

zero-graph v1
origin source-text
module "hello"
hash "graph:b8a019041020df03"node #ea5ea1ca Function name:"main" type:"Void" public:true fallible:true
node #f9ce8b3e Param name:"world" type:"World"
node #421a4d4b MethodCall name:"write" type:"Void"
node #610c78bf Literal type:"String" value:"hello from zero\n"
edge #421a4d4b arg #610c78bf order:0
edge #ea5ea1ca body #6c48dda8

Agent 拿到的不是模糊的文本,而是精确的语义事实:

  • Node ID:每个语法节点有唯一标识符,Agent 可以精确指向它
  • Graph Hash:整个图的哈希值,用于检测上下文是否过时
  • 类型信息:已解析的类型,不需要 Agent 猜测
  • Effects/Ownership/Capabilities:副作用、所有权、能力约束全部显式化

Agent 可以从任意入口开始导航——一个符号、一个诊断、一个调用、一个模块——只拉取相关的语义切片,不用加载整个文件。

Checked Graph Edits:Agent 不再盲改代码

传统的 Agent 编辑流程:改文本 → 格式化 → 重新解析 → 编译检查 → 发现错误 → 再改。

zerolang 把这些步骤压缩成一个编译器中介的操作:

zero graph patch examples/hello.0 \
  --expect-graph-hash graph:b8a019041020df03 \
  --op 'set node="#610c78bf" field="value" expect="hello from zero\n" value="hello graph\n"'

这个命令做了什么:

  1. 验证 graph hash:如果源码已经变了(hash 不匹配),直接拒绝,防止过时编辑
  2. 验证 expect 值:如果目标字段的当前值和预期不一样,拒绝编辑
  3. 执行语义修改:在 Graph 层面修改 node #610c78bfvalue 字段
  4. 编译器验证:验证修改后的 Graph 是否合法
  5. 重写源码:验证通过后才写回 .0 文件
  6. 格式化 + 重新检查:确保输出是干净、可编译的代码

一个命令完成"验证 → 修改 → 写回 → 格式化 → 检查"全流程。 Agent 不再需要自己拼凑这些步骤。

对比传统方式:Agent 在 Python 项目里改一个函数名,需要自己 grep 所有引用、逐个替换、跑一遍 pytest、发现还有个 import 没改、再改、再跑。在 zerolang 里,重命名是一个语义操作——"把 Function node #ea5ea1ca 的 name 改掉",编译器负责找到所有相关引用并一起更新。

Agent 工作流接口:编译器即开发工具

zerolang 把 Agent 需要的所有接口都收进了编译器 CLI,每个命令都有结构化输出(--json):

命令 提供什么
zero skills get language 随编译器版本匹配的语言规则
zero check --json 诊断信息:错误码、span、expected/actual、修复建议
zero parse --json 解析摘要:声明、函数签名、body 节点类型
zero graph --json 模块、导入、公开符号、capabilities、effects
zero graph dump 确定性的 ProgramGraph 文本输出
zero graph patch 带前置条件的 Checked Graph 编辑
zero fix --plan --json 类型化的修复计划(只看不改)
zero size --json 体积报告、保留的 helpers、安全约束

当编译检查失败时,输出不只是"这里有错",而是结构化的诊断信息:

{
  "code": "NAM003",
  "message": "unknown identifier 'message'",
  "expected": "visible local, parameter, function, or builtin",
  "actual": "no matching visible symbol",
  "repair": {
    "id": "declare-missing-symbol"
  }
}

Agent 拿到 repair.id,就能直接生成对应的修复方案:

zero explain --json NAM003
zero fix --plan --json examples/broken.0

诊断 → 解释 → 修复方案 → 应用修复,整条链路都有结构化 API。

还有一个巧妙的设计:zero skills 命令。编译器自带的技能文档(语言指南、诊断说明、stdlib 文档)和二进制文件版本匹配。Agent 不用担心参考了过时的文档——编译器本身就是最新版的"说明书"。

设计哲学与当前状态

zerolang 的设计目标明确指向系统和嵌入式场景:

目标 具体要求
Token 效率 结构化输出减少 Agent 的 token 消耗
低内存 适合资源受限的运行环境
快速启动 编译器冷启动要快
快速编译 Agent 反馈循环不能被编译时间拖慢
低运行时延迟 生成的二进制要快
零依赖 编译产物不依赖任何运行时库

标准库目前只有三个模块:math.0path.0str.0。支持编译到 Linux musl 静态二进制。语言层面有显式的 effects 系统、capability 传递、所有权约束。

但必须说清楚:zerolang 现在是实验阶段,作者明确说"安全漏洞是预期的"。不适合生产系统、敏感数据或关键基础设施。语法和 API 都不是稳定契约,随时可能有破坏性变更。

来自 Vercel Labs(Vercel 的研究团队),主要用 C 写编译器核心(约 280 万字符),JavaScript/TypeScript 做工具链和测试。这不是一个周末项目——它有完整的 conformance 测试、benchmark 套件和 command contract 测试。

zerolang 问了一个有意思的问题:如果编程语言的编译器从第一天起就为 AI Agent 提供一等公民的接口,代码生成会变成什么样?答案还在探索中,但方向值得关注。

觉得编程语言该为 AI Agent 改设计?还是 Agent 该学着适应现有语言?评论区聊聊。觉得有意思就点个赞让更多人看到。


作者: itech001
来源: 公众号:AI人工智能时代
网站: https://www.theaiera.cn/
每日分享最前沿的AI新闻资讯和技术研究。

本文首发于 AI人工智能时代,转载请注明出处。

http://www.gsyq.cn/news/1433129.html

相关文章:

  • 从LIME到SHAP:可解释AI技术原理、应用与工程实践全解析
  • 最新珠海市贵金属全品类黄金回收白银回收铂金回收 黄金变现避坑,专业回收全程透明:实力口碑排行榜门店及联系方式推荐 - 前途无量YY
  • 高价值开源贡献如何提升应届生竞争力
  • 购物卡回收攻略,教你天猫超市购物卡快速变现! - 团团收购物卡回收
  • 紫光同创PGL22G开发板DDR3读写实验:从IP核安装到上板验证的完整避坑指南
  • 从100+次用户访谈洞察AI产品设计:行为模式、提示工程与习惯养成
  • 校园网没WiFi密码?一根网线搞定树莓派SSH连接(Windows 11/10保姆级教程)
  • 最新新乡市贵金属全品类黄金回收白银回收铂金回收 黄金变现避坑,专业回收全程透明:实力口碑排行榜门店及联系方式推荐 - 前途无量YY
  • 手把手教你搞定IEEE GRSL投稿:Latex模板、返修回复信与版权转移全流程详解
  • Kali Linux 2023下,手把手教你搞定Ubertooth One驱动与固件识别(附常见报错解决)
  • STM32 Blue Pill驱动I2C LCD屏:从硬件连接到软件配置全攻略
  • FPGA恶意比特流检测:基于机器学习的嵌入式安全方案
  • 基于Qwen-7B微调的自动提案生成LLM:从数据构建到工程部署全解析
  • 拆解国产FPGA的HDMI显示链路:从MS7200芯片配置到TMDS编码的完整流程
  • 华硕笔记本性能调校终极指南:GHelper轻量级控制工具深度解析
  • 安全内存回收与Conditional Access硬件协同设计
  • 荔枝派Nano电量监控实战:用F1C100s的LRADC模块读取锂电池电压(附完整驱动代码)
  • 最新南宁市贵金属全品类黄金回收白银回收铂金回收 黄金变现避坑,专业回收全程透明:实力口碑排行榜门店及联系方式推荐 - 前途无量YY
  • 鸿蒙数学 108 篇 第三十四篇:加法本源与运算规则
  • 消费级EEG硬件与视觉认知解码技术解析
  • 最新许昌市贵金属全品类黄金回收白银回收铂金回收 黄金变现避坑,专业回收全程透明:实力口碑排行榜门店及联系方式推荐 - 前途无量YY
  • 携程国际机票查询API逆向分析:从sign参数到完整数据抓取的避坑指南
  • 最新南通市贵金属全品类黄金回收白银回收铂金回收 黄金变现避坑,专业回收全程透明:实力口碑排行榜门店及联系方式推荐 - 前途无量YY
  • 模拟IC设计避坑指南:电流镜负载差分放大器那些容易忽略的设计细节
  • Ubuntu 22.04下用Snap一键安装CloudCompare,附点云裁剪与标注实战
  • Kubernetes控制器的通用工作模式(Reconcile Loop)【20260530】005篇-真实生产 Controller 的坑位图
  • 告别混乱布局!Unity编辑器窗口自定义全攻略(附高效工作流配置)
  • Kubernetes控制器的通用工作模式(Reconcile Loop)【20260530】006篇-真实生产 Controller 的坑位图
  • 告别手动!为你的Unity团队定制一个‘图片导入设置预设’与批量应用工具
  • 最新内江市贵金属全品类黄金回收白银回收铂金回收 黄金变现避坑,专业回收全程透明:实力口碑排行榜门店及联系方式推荐 - 前途无量YY