mcpField
A
A0

A0

本地服务
a0lang.com开发工具2今天更新

关于 A0

A0 是面向 AI Agent 的精简编程语言,通过带版本校验的结构化编辑来编写和检查程序,并编译到多种目标。其 MCP 服务为 Agent 提供受限文件访问的编辑、运行、检查和编译工具。

主要功能

  1. 01带版本校验的结构化编辑
  2. 02检查与诊断修复
  3. 03运行参考解释器
  4. 04编译到多种目标
  5. 05限制项目目录内文件访问

适用场景

  1. 01让 Agent 按结构化操作修改 A0 程序
  2. 02检查程序并应用精确修复
  3. 03运行程序或生成目标代码

MCP 相关

MCP 服务通过 stdio 向 AI Agent 提供打开程序、应用编辑、检查、运行、编译和保存等工具。文件访问限制在启动目录内,不执行 shell。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpba0-mcp-darwin-arm64.mcpb
mcpba0-mcp-darwin-x64.mcpb
mcpba0-mcp-linux-x64.mcpb
mcpba0-mcp-linux-arm64.mcpb
mcpba0-mcp-windows-x64.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

A0

一门为 AI 而非人类打造的编程语言。 a0lang.com · 文档

A0 是一门小型编程语言,AI Agent 通过经过校验的结构化编辑来修改代码,并可从同一份源码编译为原生代码、wasm、JavaScript、JVM、.NET、Metal 和 SystemVerilog。

30 秒快速上手

任选一种。全部免费、本地运行,无需账号或密钥。

1. Agent 技能(Claude Code、Codex、Cursor、Copilot、Gemini CLI 及许多其他 Agent,通过 skills CLI):

npx skills add Joe-Simo/a0

2. MCP 服务(需要将 a0 二进制文件添加到 PATH,见下一项)。粘贴到 Claude Desktop(claude_desktop_config.json)、Cursor(.cursor/mcp.json)或任何接受 mcpServers 的客户端中;Claude Code:claude mcp add a0 -- a0 mcp .;VS Code:使用 integrations/vscode.mcp.json 中的 .vscode/mcp.json。

{ "mcpServers": { "a0": { "command": "a0", "args": ["mcp", "."] } } }

3. 二进制文件(单个文件,无需 Node,并已根据发行版的 checksums.txt 验证 SHA-256):

curl -fsSL https://raw.githubusercontent.com/Joe-Simo/a0/main/install.sh | sh     # macOS / Linux
irm https://raw.githubusercontent.com/Joe-Simo/a0/main/install.ps1 | iex           # Windows (PowerShell)

坦诚说明现状:A0 不支持浮点数、堆和递归,字符串以字节为单位。它是一门内核和编辑循环语言,而非通用语言。下方数据是在一台未处于空闲状态的机器上测得的;STATUS.md 中的性能损失清单列出了 A0 较慢的情况。正确性验证分为两部分:每个目标都通过执行与同一预言机进行检查;优化器则使用 Z3 证明了 48 个语料库函数等价;其余部分经过测试,但未经证明。许可证:Apache 2.0。更多信息:a0lang.com、a0lang.com/benchmarks。

A0 是一门精简、规范明确的语言,通过经过版本校验的结构化编辑来模拟编写和编辑。模型只读取编辑涉及的内容,只写入变更的行,不会应用无效内容。一个程序可编译为原生机器码(A0 自有的 AArch64 代码生成器,或 C)、浏览器端的 wasm32、JavaScript、JVM、.NET、Metal GPU 内核和时钟驱动的 SystemVerilog,并且每个目标都经过与同一预言机的验证。

数据来自仓库中的基准测试(Apple M3,8 核,results/*.json)。机器并未处于空闲状态:results/exec-benchmark.json 记录了主测试和 arm64 测试期间 1/5/15 分钟的平均负载为 6.4-8.0,JavaScript 重新测量期间为 32-40;目前正在等待在空闲机器上重新测试:

原生 A0 与手写 C 对比每次调用耗时 1.00x(持平)
原生 A0 与 Python / JavaScript 对比快 174x / 8.0x(10 个内核的几何平均值)
模型每次编辑读取的 Token 数比读取整个文件少 7.3x
已进行基准测试且通过校验和验证的语言48 种(其中 9 种与 A0 的差距在 5% 以内,其余更慢)
所有目标上均通过的预言机测试用例5262 / 5262
已证明等价的优化器(Z3)48 / 48 个语料库函数
与 TypeScript 相比的完整任务 Token 数在包含 40 个函数的程序中节省 3.0x;在单函数任务中多用 1.46x(两项结果均已发布)

网站 a0lang.com 本身也是由两个 A0 程序构成的(site/page.a0、site/docs.a0)。

请参阅 DESIGN.md 了解设计意图和 语义;参阅 MODEL_GUIDE.txt 了解面向 AI 的语言 指南;参阅 STATUS.md 了解当前结果、性能损失清单、已知限制和后续行动 (会话历史见 docs/history/);机器可读的证据见 results/。

安装

A0 是一个独立的单文件二进制程序:无需 Node 或 Bun。

# macOS / Linux: Homebrew (this repository is the tap; no separate tap repository)
brew tap Joe-Simo/a0 https://github.com/Joe-Simo/a0
brew install a0

# macOS / Linux: script (detects OS/arch, verifies SHA-256, installs to ~/.local/bin)
curl -fsSL https://raw.githubusercontent.com/Joe-Simo/a0/main/install.sh | sh
# Windows (installs to %LOCALAPPDATA%\Programs\a0 and adds it to your user PATH)
irm https://raw.githubusercontent.com/Joe-Simo/a0/main/install.ps1 | iex

两个脚本都接受 A0_VERSION=v0.8.16 来固定发行版,并接受 A0_INSTALL_DIR 来更改安装位置。也可以手动从最新发行版下载二进制文件,并根据 checksums.txt 进行校验。a0 --version 会打印发行版和编译器版本。然后:

printf 'fn sq u32 -> u32\na mul p0 p0\nret a\nend\n' > sq.a0
a0 run sq.a0 sq 12            # 144
a0 emit arm64 sq.a0           # A0's own machine code; or c, js, java, sv
a0 check sq.a0                # diagnostics with codes; --json for fields, --fix applies the exact fixes
a0 explain A0102              # what a diagnostic means, with a failing and a fixed example

二进制文件:a0-darwin-arm64、a0-darwin-x64、a0-linux-x64、a0-linux-arm64、a0-windows-x64.exe。只有在本机链接原生输出时才需要 C 编译器(clang 或 gcc)。

MCP 服务

a0 mcp <file-or-dir> 通过标准输入/输出(Model Context Protocol)向 AI Agent 提供 A0 服务,让它们通过工具而非文本文件进行编辑:a0_open(带句柄的函数视图)、a0_program(程序句柄,可选按目标范围限定)、a0_apply(在句柄下编辑;返回新视图或诊断,其中包含 code(类别)、id(A0nnnn)、message、expected/actual、fix 和适用性;回复 fix all 会以原子方式应用上次被拒绝编辑的所有精确修复)、a0_check、a0_run(受燃料限制的参考解释器)、a0_emit(任意目标)、a0_save(仅在成功应用编辑后可用)。路径仅限启动根目录内(拒绝符号链接逃逸和 use 逃逸);不会运行 shell;输出有长度限制。

语言服务器

a0 lsp [root] 是一个通过标准输入/输出运行的 Language Server Protocol 服务器(基于 vscode-languageserver 构建;接受但忽略 --stdio)。让任意 LSP 客户端将其用于 .a0 文件:打开和更改时由链接器和检查器提供诊断(诊断中的 code 是类别,data 携带表格代码 id、修复及其适用性,精确修复会作为快速修复提供)、悬停提示(函数签名、op 文档)、跨 use 文件跳转到定义、文档符号、op 和作用域内函数补全,以及通过规范打印器进行格式化。文件范围与 MCP 服务完全相同,限制在 root 内(默认为工作目录);根目录之外的文档会收到一条 limit 诊断,不会有其他内容。

与 AI Agent 搭配使用

请先将 a0 添加到 PATH(参见安装)。以下每个入口都会运行同一个本地标准输入/输出服务 a0 mcp <dir>,无需托管或账户。可直接复制的配置位于 integrations/。skills/a0/ 中的 Agent Skill(通过 npx skills add Joe-Simo/a0 安装)会讲解该语言,并仅在需要时加载入门指南和编辑协议。

Agent安装本地 stdio
Claude Codeclaude mcp add a0 -- a0 mcp .(仅 MCP),或先运行 /plugin marketplace add Joe-Simo/a0,再运行 /plugin install a0@a0(MCP 加技能)是
Claude Desktop双击最新版本中的 a0-mcp-<os>-<arch>.mcpb,或将 integrations/mcp.json 添加到 claude_desktop_config.json是
Claude.ai将 plugin/skills/a0/ 压缩为 ZIP,并在 Settings > Capabilities > Skills 下上传(仅技能;claude.ai 连接器仅支持远程连接)仅技能
Cursor添加到 Cursor,或将 integrations/mcp.json 放入 .cursor/mcp.json是
VS Code / GitHub Copilotcode --add-mcp '{"name":"a0","command":"a0","args":["mcp","${workspaceFolder}"]}',或将 integrations/vscode.mcp.json 作为 .vscode/mcp.json;将技能放入 .github/skills/ 或 ~/.copilot/skills/是
GitHub Copilot CLIcopilot mcp add 或 ~/.copilot/mcp-config.json(格式参见 mcp.json)是
OpenAI Codex CLI/IDEcodex mcp add a0 -- a0 mcp .,或使用 integrations/codex.config.toml;将技能放入 .agents/skills/;将插件放入 plugin/.codex-plugin/是
Gemini CLIgemini extensions install https://github.com/Joe-Simo/a0(MCP 加 GEMINI.md)是
Qwen Codeqwen mcp add a0 a0 mcp .,或运行 qwen extensions install https://github.com/Joe-Simo/a0(读取 Gemini 扩展)是
Windsurf / Devin Desktop将 mcp.json 放入 ~/.codeium/windsurf/mcp_config.json是
Devin CLIdevin mcp add a0 -- a0 mcp .是
Zed在 Zed 设置中使用 integrations/zed.settings.json是
Cline将 mcp.json 放入 cline_mcp_settings.json是
Roo Code将 mcp.json 放入 .roo/mcp.json是
Kilo Code将 integrations/kilo.jsonc 放入 kilo.jsonc是
Continue将 integrations/continue.a0.yaml 作为 .continue/mcpServers/a0.yaml(Agent 模式)是
JetBrains AI Assistant / JunieSettings > Tools > AI Assistant > MCP,粘贴 mcp.json;Junie:使用 .junie/mcp/mcp.json,将技能放入 .junie/skills/是
Augmentauggie mcp add,或使用 mcp.json 从 JSON 导入;将技能放入 .augment/skills/是
opencode将 integrations/opencode.json 作为 opencode.json;将技能放入 .opencode/skills/是
Ampamp mcp add a0 -- a0 mcp .;amp skill add Joe-Simo/a0是
Goosegoose session --with-extension "a0 mcp .",或使用 integrations/goose.config.yaml是
Warp将 mcp.json 放入 .warp/.mcp.json是
Crush将 integrations/crush.json 放入 crush.json是
Factory Droiddroid mcp add a0 "a0 mcp ."是
Grok Build CLI (xAI)将 integrations/codex.config.toml 中的 [mcp_servers.a0] 放入 ~/.grok/config.toml是
Mistral Vibe CLIintegrations/mistral-vibe.config.toml是
Kimi CLIkimi mcp add a0 --transport stdio -- a0 mcp .是
LM Studio将 mcp.json 放入 LM Studio 的 mcp.json,或使用 lmstudio://add_mcp?name=a0&config=eyJjb21tYW5kIjoiYTAiLCJhcmdzIjpbIm1jcCIsIi4iXX0=是
Perplexity (Mac app)Connectors > Add > Simple:a0 mcp /path/to/project(需要 PerplexityXPC 辅助程序)是
Hugging Face smolagentsMCPClient(StdioServerParameters(command="a0", args=["mcp", "."]))是
Hugging Face tiny-agents在 agent.json 中配置 "servers": [{"type": "stdio", "command": "a0", "args": ["mcp", "."]}]是
Aider不支持 MCP。运行 aider --read plugin/skills/a0/references/primer.txt 并使用 a0 CLI不支持 MCP
Open WebUI (Ollama)仅支持 Streamable HTTP;A0 不提供托管服务需要远程 MCP
ChatGPT (developer mode / Apps)仅支持远程 HTTPS需要远程 MCP
Mistral Le Chat仅支持远程连接器需要远程 MCP
xAI Grok API仅支持远程 MCP 工具(HTTP/SSE)需要远程 MCP
Replit Agent, Bolt.new, Lovable, v0仅支持远程 HTTPS需要远程 MCP
当你的 Agent 不在项目文件夹中启动服务时,将 . 替换为服务可读写的文件夹。
项目规则、钩子和 CI
  • a0 init [dir] 会写入 AGENTS.md(Codex、Cursor、Copilot、Jules 等会读取),其中包含 MCP 工具工作流、编辑协议和入门指南路径(.a0/MODEL_GUIDE.txt,有则复制到项目中,否则使用 GitHub URL),还会在 CLAUDE.md 和 GEMINI.md 中加入 @AGENTS.md 引用,为 Cursor(.cursor/rules/a0.mdc)、Windsurf(.windsurf/rules/a0.md)和 Copilot(.github/instructions/a0.instructions.md)添加 glob 规则,并配置 Gemini CLI 的 AfterTool 钩子(.gemini/settings.json)。现有指令文件只会追加一次 A0 部分;其他现有文件会保留。
  • a0 hook 是编辑后的检查:它从标准输入读取钩子的工具调用 JSON;当编辑后的 *.a0 文件未通过 a0 check 时,会输出阻止响应,其原因是包含 fix: 的准确诊断信息。
  • Claude Code 插件(plugin/):在 Edit|Write|MultiEdit 上配置 PostToolUse 钩子(plugin/hooks/hooks.json,运行 a0 hook;如果 a0 不在 PATH 中,请设置 A0_BIN),并提供斜杠命令 /a0-check、/a0-emit、/a0-run(plugin/commands/)。
  • CI:uses: Joe-Simo/a0@main(根目录的 action.yml,输入项 version,默认值为 latest)会为运行器下载发布二进制文件,并检查所有已跟踪的 .a0 文件。pre-commit:repo: https://github.com/Joe-Simo/a0,钩子 ID 为 a0-check(需要 a0 在 PATH 中)。
  • a0 check 接受多个文件;如果任一文件检查失败,则退出码为 1,并为每个失败文件打印 <file>: error: <code>: ... fix: ...。
隐私

a0 MCP 服务和 .mcpb 包完全在你的机器上运行。它们不会收集数据、发起网络请求,也只会在你指定的文件夹内读取或写入。

A0 的构建过程

仅说明仓库记录的内容:

  • A0 由遵循 AGENTS.md 中规则的 AI Agent 开发:每项更改都要通过本地、确定性的检查关卡(a0-dev),文档中的数字或比较结果都必须有对应的结果文件。- Git 历史(截至提交 0675fe8):自 2026-09-29 起共有 622 次提交。其中 620 次使用所有者的身份(GitHub no-reply 地址),另有 2 次来自 github-actions[bot]。622 次提交中有 514 次带有 Co-Authored-By 尾注,署名为 Claude 模型(Sonnet 5.5、Opus 5.5 或 Fable 5.1)。其余 108 次未署名共同作者;仓库没有记录这些提交是由人还是 Agent 编写的。
  • 人类编写和 Agent 编写的文本比例:未记录。文件没有这类标记,两种情况下的提交身份都是所有者,因此本 README 不会声称存在某种比例。
  • 实验对象是全新的模型会话;后续实验的任务集由实验对象之外的人员编写,并通过 SHA-256 封存(tools/ai-edit-tasks-*.sha256)。
  • Token 或金钱成本:未跟踪。STATUS.md 中有一个 TODO,计划开始记录。

在全新机器上复现基准测试数据的方法:scripts/bench-repro/README.md。

贡献

欢迎贡献,无需账号、密钥或付费服务。简要步骤:

  1. Fork 此仓库并克隆你的 fork;将此仓库添加为 upstream。
  2. 从 upstream/main 创建分支(每项更改使用一个分支),添加测试并完成更改,然后运行 bun run lint、bun run typecheck 和 bun run test。
  3. 推送到你的 fork,并针对 main 发起拉取请求。CI 会对此运行检查;合并前,维护者会运行完整检查。

详细信息(布局、构建、确保测量结果可靠的规则、如何为实验添加后端或语言、Windows 注意事项)请参阅 CONTRIBUTING.md。请阅读行为准则;如需报告安全问题,请参照 SECURITY.md 中的说明。 如果要更改语言本身,请先创建 issue。

编译器正在用 A0 重写(参见 compiler/ 和 DESIGN.md 第 7a 节)。在此之前,编译器本身使用 TypeScript 编写,开发编译器需要 Bun 或 Node 22+。A0 用户无需这些:发布的 a0 二进制文件是独立的。

bun install
bun run lint        # Biome
bun run typecheck   # tsc --noEmit
bun run test        # node --test on dist/test
bun run verify      # cross-toolchain differential execution -> results/verification.json
bun run hw          # Icarus simulation + Yosys synthesis  -> results/hardware.json
bun run bench       # in-process timings + byte fixture     -> results/benchmark.json
bun run tokens      # tokenizer probe (js-tiktoken)         -> results/tokens.json
bun run exec-bench  # emitted vs 45+ hand-written baselines  -> results/exec-benchmark.json
bun run app         # Life application acceptance, 7 targets -> results/app.json
bun run site        # browser demo (wasm + DOM adapter)     -> site/dist/
bun run gpu         # Metal GPU execution of the corpus     -> results/gpu.json
bun run dotnet      # C# / .NET execution of the corpus     -> results/dotnet.json

CLI(运行 bun run build 后):

node dist/src/cli.js check examples/kernels.a0
node dist/src/cli.js run examples/kernels.a0 affine 10 3 7      # 37
node dist/src/cli.js emit js|c|java|sv examples/kernels.a0 [out]
node dist/src/cli.js wasm examples/kernels.a0 kernels.wasm       # needs clang + wasm-ld
node dist/src/cli.js revision examples/kernels.a0 affine
node dist/src/cli.js patch examples/kernels.a0 edit.patch [out.a0]

布局:src/core.ts 包含语法、验证和解释器,src/edit.ts 包含修订和编辑会话,src/optimize.ts,src/backends.ts 包含 JS/C/Java/SystemVerilog 代码生成和生成缓存,src/toolchain.ts 包含已安装工具的集成,src/cli.ts,test/,tools/(语料库 + oracle、verify、hw-verify、bench、token-bench)。

为 Agent 设计的错误

每条诊断都是 src/diagnostics.ts 中的一行:稳定代码(A0nnnn)、粗略类别(parse、type、structure、limit、edit、patch、revision、handle、runtime、cli、unchanged)、消息模板、修复方法,以及 a0 explain 文本,其中包含一个失败示例和一个修正示例。a0 check --json、编辑协议、MCP 服务和 LSP 会将诊断以 {code, id, message, line, expected, actual, fix, applicability, edits} 的形式传递给 Agent。遇到未知名称(op、function、node、fold body、loop predicate、type)时,会按照 TypeScript 的拼写规则给出“你是否想输入……”的建议。修复分为 exact(可安全地直接应用,并附带可执行修复的 edits)或 maybe。在编辑协议中,回复 fix all 会应用上一次被拒绝回复中的所有 exact 修复,并在提交前验证结果。test/diagnostics.test.ts 会运行每个 explain 示例;corpus/reject/ 存放被拒绝的程序和回复,其中包含每个程序必须引发的诊断,以及修复生成的程序(node dist/tools/reject-corpus.js [--bless] [--coverage])。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。