Anthropic 研究员 Nicholas Carlini 在其最新的工程博客中分享了一项具有里程碑意义的实验:利用名为 “Agent Teams”(代理团队) 的新方法,驱动 16 个 Claude 实例并行工作,从零开始编写了一个基于 Rust 的 C 编译器。该编译器的最终目标是能够编译整个 Linux 内核。
实验结果令人震惊:在耗资近 20,000 美元(API 成本)和进行了近 2,000 次 Claude Code 会话后,这个 Agent 团队成功产出了一个 **100,000 行代码** 的编译器。它能够在 x86、ARM 和 RISC-V 架构上构建 **Linux 6.9 内核**。
本文的重点不仅在于编译器本身,更在于设计这种 **“长期运行的自主 Agent 团队”** 所学到的宝贵经验,包括如何设计测试来保持 Agent 的方向、如何结构化工作以实现并行进度,以及该方法的局限性。
为了让 Claude 实现自主、持续的工作,研究员构建了一个简单的 **Shell 循环(类似于 Ralph-loop)**。这个循环的核心逻辑是:当一个 Claude Code 会话完成当前任务后,它会立即启动下一个会话来接手下一项任务。通过在提示词中明确要求 Claude 将问题分解为小块、跟踪当前进度、决定下一步工作,并持续推进,模型被强制保持工作状态。
实验运行了 16 个 Claude 实例并行工作。每个 Agent 在独立的工作区中克隆共享 Git 仓库。为了防止多个 Agent 同时解决同一个问题,系统采用了一种简单的 Git 同步算法:
current_tasks/ 目录中创建文本文件来“锁定”任务。Git 的同步机制会强制后来的 Agent 选择其他任务。这种早期原型并未实现 Agent 之间的复杂通信或高级目标编排,而是 **完全依赖于每个 Claude Agent 自主决定如何行动**。
Agent 会自主解决你给它的任何问题,因此 **任务验证器必须近乎完美**。随着项目接近尾声,Agent 频繁破坏现有功能,研究员通过构建一个严格的 **持续集成(CI)流水线**,强制 Claude 更好地测试其工作,确保新的提交不会破坏现有代码。
必须站在 Agent 的角度设计测试环境,考虑到语言模型的固有局限性:
grep 查找)。--fast 选项,使其运行 **1% 或 10% 的随机子样本测试**,既能快速识别回归,又能节省 API 成本。当面临编译 Linux 内核这种 **“巨型单一任务”** 时,Agent 容易卡在同一个 Bug 上并互相覆盖更改。解决方案是:
使用 GCC 作为神谕(Oracle): 研究员编写了一个新的测试工具,随机地使用 **已知正确的 GCC 编译器** 编译大部分内核文件,只让 Claude 的 C 编译器编译剩余的文件。这有效地将一个巨型任务分解为多个 Agent 可以并行处理的独立小任务。
并行化允许 Agent 具备专业角色,从而提升代码质量和功能。研究员分配了不同的 Agent 承担专业角色,例如:代码清理 Agent (合并重复代码)、性能 Agent (提升编译器运行性能)、代码质量 Agent (从 Rust 开发者角度评估设计)、**文档 Agent** (专注于维护项目文档)。
这项实验是针对 **Claude 4.6 模型** 的能力基准测试。尽管总成本接近 20,000 美元,但研究员认为其产出价值远超人力成本。该项目是 **“洁净室实现”(Clean-room implementation)**,模型没有互联网访问权限。
尽管成就巨大,该编译器仍存在明显的局限性:
Agent 团队展现了实现完整、复杂项目的可能性,极大地拓宽了我们使用 LLM 的想象力。
然而,研究员也表达了对 **全自主开发风险** 的不安。自主系统容易通过测试而掩盖潜在缺陷。在缺乏人类实时验证的情况下,大规模部署 Agent 生成的软件是一个值得警惕的安全问题。
原文链接: https://www.anthropic.com/engineering/building-c-compiler