我们指派 Opus 4.6 以智能体团队模式构建一个 C 编译器

我们指派 Opus 4.6 以智能体团队模式构建一个 C 编译器

Hacker News 摘要

原标题:We tasked Opus 4.6 using agent teams to build a C Compiler

Anthropic 安全团队的研究员 Nicholas Carlini 最近尝试了一项名为 智能体团队(agent teams)的新方法,通过多个 Claude 实例在无需人工干预的情况下,并行处理共享代码库。为了测试该方法的极限,他指派 16 个智能体从零开始编写一个基于 Rust 语言的 C 编译器,目标是使其能够编译 Linux 内核。

项目规模与成果

在为期两周的开发中,该智能体团队经历了近 2000 次 Claude Code 会话,消耗了约 200 亿个输入 Token 和 1.4 亿个输出 Token,API 总成本接近 2 万美元。最终,智能体们产出了一个包含 10 万行代码的编译器。

该编译器的功能非常强大:

• 能够构建适用于 x86、ARM 和 RISC-V 架构的 Linux 6.9 内核。

• 可以编译 QEMU、FFmpeg、SQlite、Postgres、Redis 等大型项目。

• 在包括 GCC 酷刑测试套件 在内的大多数编译器测试中,通过率达到 99%。

• 成功编译并运行了经典游戏 《毁灭战士》(Doom)。

实现长期运行的 Claude

现有的智能体框架通常需要人类操作员在线实时协作,如果遇到复杂问题,模型往往会停下来等待指令。为了实现持续的自主进展,研究员构建了一个简单的循环套件。当 Claude 完成一个任务时,循环会自动让它开启下一个任务。

在提示词中,研究员要求 Claude 将大问题拆解为小碎片,跟踪工作进度,并不断寻找下一个待办事项。虽然这种无限循环偶尔会导致模型意外杀掉自己的进程,但它确实保证了开发工作的连续性。

并行协作机制

为了提高效率,研究员运行了多个并行实例。其实现方式比较基础:

1. 环境隔离:为每个智能体启动一个 Docker 容器,并挂载一个 Git 仓库。

2. 锁定机制:为了防止多个智能体同时处理同一个问题,系统采用了一种简单的同步算法。智能体通过在 current_tasks/ 目录下写入特定的文本文件来获取任务锁。如果两个智能体尝试领取同一任务,Git 的同步机制会强制其中一个重新选择。

3. 合并冲突:智能体完成工作后会推送更改。尽管经常发生合并冲突,但 Claude 能够智能地自主解决这些冲突。

关键的开发经验

研究员发现,为自主智能体团队设计环境需要遵循一些特殊的原则:

编写极高质量的测试:Claude 会完全按照给定的问题进行修复。如果测试套件本身不完善,模型就会解决错误的问题。为此,研究员引入了持续集成流水线,防止新代码破坏已有功能。

适应 AI 的局限性:智能体在大型项目中容易迷失方向。研究员要求 Claude 维护详尽的 README 和进度文件。为了防止上下文窗口被垃圾信息占满,测试输出被设计得非常精简,仅在日志中保留关键信息,并确保错误信息方便使用 grep 命令检索。

应对时间盲区:Claude 无法感知时间,可能会在运行测试上耗费数小时。系统为此提供了随机抽样测试的选项,让智能体在保证覆盖率的同时快速识别回归错误。

利用 GCC 作为参考标准:在编译 Linux 内核这种超大型任务时,所有智能体容易被同一个 bug 卡住。研究员让智能体使用 GCC 作为已知正确的参照,通过对比不同文件在两个编译器下的运行结果,快速定位具体是哪些文件出了问题。

智能体角色专业化:并行化不仅能提高速度,还能实现分工。有的智能体负责合并重复代码,有的负责优化编译器性能,还有的负责编写文档或以 Rust 开发者的视角进行代码重构。

目前的局限性

尽管成果斐然,但 Opus 4.6 编写的这个编译器仍有一些不足:

启动限制:它缺乏引导 Linux 退出实模式所需的 16 位 x86 编译器,这部分功能目前仍需调用 GCC。

工具链不完整:其自带的汇编器和链接器仍有 bug,演示视频中使用了 GCC 的相关工具。

代码效率:生成的机器码效率较低。即使开启所有优化,其产出的代码运行速度仍慢于 GCC 在关闭所有优化时的结果。

代码质量:虽然 Rust 代码结构合理,但还远未达到专家级程序员的水平。

未来展望

研究员表示,这项实验旨在压力测试大语言模型的极限能力。在 2026 年初就实现如此复杂的自主开发功能,超出了之前的预期。虽然这展示了自主软件开发的巨大潜力,但也带来了安全隐患。如果程序员部署了从未经过人工亲自核对的代码,可能会引入难以察觉的漏洞。尽管如此,智能体团队的方法将让开发者能够挑战更加宏大的目标。目前该编译器的源代码已开放,供开发者研究和试用。


原文:https://www.anthropic.com/engineering/building-c-compiler

评论:https://news.ycombinator.com/item?id=46903616

Report Page