vercel-labs/zerolang
GitHub: vercel-labs/zerolang
一门图原生实验编程语言,以语义图而非文本为程序真实来源,让 AI agent 直接查询并提交校验过的图编辑,减少猜测性编码。
Stars: 5047 | Forks: 336
# Zerolang
**为 agent 而生的编程语言。**
Zerolang 是一门实验性的图原生 (graph-native) 编程语言,其中语义图即为程序数据库。人类提出期望的结果。Agent 查询该图、提交已校验的编辑,并证明最终结果。
## 从一个请求开始
预期的工作流程是一次普通的对话:
```
build hello world for zerolang
```
Agent 应当使用编译器,而不是从源文本中猜测:
```
zero init
zero patch --op 'addMain' --op 'addCheckWrite fn="main" text="hello from zero\n"'
zero run
```
结果仍然可以作为文本投影 (projection) 来审查:
```
pub fn main(world: World) -> Void raises {
check world.out.write("hello from zero\n")
}
```
那个 `.0` 文件是 `zero.graph` 的投影。人类可以阅读它、审查它,并偶尔对其进行编辑。Agent 通常应当继续使用 `zero query` 和 `zero patch`。
## 程序数据库
传统的 agent 编码循环将文本视为事实来源 (source of truth):
```
flowchart LR
A[agent writes text] --> B[check]
B --> C[format]
C --> D[build]
D --> E[inspect failures]
E --> A
```
Zerolang 让 agent 更接近编译器:
```
flowchart LR
A[agent queries graph] --> B[agent submits checked patch]
B --> C{compiler accepts?}
C -- invalid or stale --> A
C -- valid --> D[agent runs task validation]
D --> E[human reviews projection when useful]
```
该图为 agent 提供了明确的操作句柄:符号、节点 ID、图哈希 (graph hashes)、类型、副作用 (effects)、所有权事实、能力 (capabilities)、导入 (imports)、调用边 (call edges) 以及目标事实。编辑可以直接针对语义结构,而不是行范围。过期的图哈希、意外的字段值、无效的结构和类型错误会在存储写入之前导致失败。
## 目前的进展
- `zero.graph` 是针对图优先 (graph-first) 包的已校验编译器输入。
- `.0` 文件是人类可读的投影,而不是 agent 正常的编写界面。
- `zero patch` 会应用已校验的图编辑,并拒绝过期或无效的更改。
- `zero query`、`zero inspect`、`zero check`、`zero test` 和 `zero run` 通过对 agent 友好的命令公开编译器事实。
- `zero import` 和 `zero export` 使投影边界变得明确,因此人类的文本编辑不会悄无声息地偏离图。
## 安装
安装编译器:
```
curl -fsSL https://zerolang.ai/install.sh | bash
export PATH="$HOME/.zero/bin:$PATH"
zero --version
```
安装 agent 引导技能:
```
npx skills add vercel-labs/zerolang
```
编译器为 agent 捆绑了版本匹配的技能:
```
zero skills
zero skills get agent
zero skills get graph
zero skills get language
zero skills get stdlib
```
## 日常工作流
对于大多数包的开发工作:
```
zero query
zero patch --op help
zero patch --op 'addMain'
zero check
zero test
zero run --
```
默认输入是当前目录。只有在你想明确指定时才使用 `.`。
当人类想要审查投影文本时:
```
zero export
zero verify-projection
```
当人类有意编辑投影时:
```
zero import
zero check
```
## 运行时目标
图优先模型应当在不放松运行时目标的前提下减少 agent 的猜测:
- 高效的 token 检查
- 低内存使用
- 快速启动和构建
- 低运行时延迟
- 明确的能力
- 小巧、无依赖的构建产物
## 开发 Zerolang
构建本地编译器:
```
pnpm install
make -C native/zero-c
bin/zero --version
```
实用的检查命令:
```
pnpm run docs:build
pnpm run conformance
pnpm run native:test
pnpm run command-contracts
```
用于本地迭代:
```
pnpm run conformance:local -- --list
pnpm run conformance:local -- --shard 1/4
pnpm run command-contracts:local
```
在 [zerolang.ai](https://zerolang.ai) 阅读文档。
标签:SOC Prime, 人工智能代理, 开发工具, 编程语言, 编译器