用并行 Claude 团队构建 C 编译器

来自 Anthropic Engineering · 期号 2026-02-05

摘要

Anthropic 让 16 个 Claude agent 并行协作,从零写出一个 10 万行的 Rust 版 C 编译器,能编译 x86、ARM、RISC-V 上的 Linux 6.9。 整个项目跑了近 2000 次 Claude Code 会话,API 成本约 2 万美元。研究者 Nicholas Carlini 的重点不在编译器本身,而在如何设计一套让 agent 团队长期自主运行的框架:用无限循环让 Claude 做完一件事就自动接下一件,用 git 锁文件防止多个 agent 抢同一任务,用 Docker 容器隔离每个 agent 的工作空间。 合并冲突是家常便饭,但 Claude 能自己处理大部分。Carlini 还观察到,并行 agent 可以自然分工——有的写代码,有的维护文档,有的盯着代码质量。 原文是工程复盘,附了完整的框架设计思路和代码示例。

深读

导读 Anthropic 研究员 Nicholas Carlini 用 16 个并行运行的 Claude agent,在两周内从零写出一个 10 万行的 Rust 版 C 编译器,能编译 x86、ARM、RISC-V 上的 Linux 6.9 内核。这不是一篇炫耀成果的博文,而是一份工程复盘,重点在于如何设计一套让多个 agent 长期自主协作的框架,包括无限循环、git 锁文件、Docker 隔离等具体机制,以及并行 agent 自然分工的观察。读完能带走一套可复现的 agent 团队编排思路,以及当前自主编程的边界在哪里。 关键信息 - 项目共运行近 2000 次 Claude Code 会话,消耗 20 亿输入 token 和 1.4 亿输出 token,API 成本约 2 万美元。 - 最终编译器 10 万行 Rust 代码,能编译 Linux 6.9(x86、ARM、RISC-V),以及 QEMU、FFmpeg、SQLite、Postgres、Redis,在 GCC torture test suite 等测试套件上通过率 99%,还能编译并运行 Doom。 - 编译器有明确局限:缺少 16 位 x86 编译器(启动 Linux 需要),没有自己的汇编器和链接器(调用 GCC 的),生成代码效率低于 GCC 关闭所有优化时的水平,Rust 代码质量远不及专家水平。 - 并行 agent 的同步方案:每个 agent 通过向 current_tasks/ 写入文本文件来“锁定”一个任务,git 的同步机制会阻止两个 agent 抢同一任务;合并冲突频繁,但 Claude 能自行处理。 - 为克服 agent 的“时间盲症”,测试框架提供 --fast 选项,只跑 1% 或 10% 的随机样本(每个 agent 的样本确定但跨 VM 随机),避免 agent 花数小时跑测试而不推进代码。 逐节讲解 如何让 Claude 长期自主运行 Carlini 构建了一个简单的无限循环脚本:Claude 完成一个任务后,立即从 prompt 文件中读取下一个任务继续执行。这个循环没有终止条件,除非 Claude 意外执行了 pkill -9 bash 把自己杀掉。prompt 中要求 Claude 把问题拆成小块、跟踪进度、决定下一步做什么,并“一直做到完美为止”。这个循环跑在 Docker 容器里,而不是宿主机上。 并行 agent 的同步与分工 多个 agent 并行能解决单 agent 的两个弱点:一是只能一次做一件事,二是无法专业化分工。实现方案很朴素:每个 agent 在一个独立的 Docker 容器中工作,共享一个 git 仓库。同步靠文件锁——agent 在 current_tasks/ 下写一个文本文件来声明“这个任务我占了”,git 的冲突机制迫…

读原文

本站只做摘要与索引,全部内容版权归原作者所有。