16体のClaudeが協力してCコンパイラを作った話 ── マルチエージェント開発の実践知

Anthropicの研究者Nicholas Carliniが、16体のClaudeを並列で動かしてCコンパイラをゼロから構築するという壮大な実験を行いました。結果は10万行のRust製コンパイラで、なんとLinuxカーネルのコンパイルまで成功しています。

今回はこの記事から学んだマルチエージェント開発のポイントを整理します。

🔁 無限ループで自律的に動かす

通常のClaude Codeは人間の入力を待って止まります。Carliniはこれを無限ループのハーネスで解決しました。1つのタスクが終わったら次のタスクを自動で拾う仕組みです。

シンプルなbashのwhileループで、Claude Codeを繰り返し起動するだけ。約2,000セッション、APIコスト約$20,000で完成まで漕ぎ着けました。

🔀 並列化の工夫:gitベースのタスクロック

16体が同じコードベースで作業するため、タスクの衝突が問題になります。解決策は驚くほどシンプルでした:

  • ファイルベースのロックcurrent_tasks/にテキストファイルを書いて「このタスクは自分がやってる」と宣言
  • gitの同期 ─ 2体が同じタスクを取ろうとしたら、gitのpush/pullで自然に弾かれる
  • マージコンフリクト ─ 頻発するけど、Claudeは自力で解決できる

オーケストレーションエージェントは使っていません。各Claudeが「次にやるべき最も明白な問題」を自分で判断して取り組みます。

🧪 テストが全ての鍵

自律エージェントが正しく動くかどうかは、テストの品質にかかっています。テストが不完全だと、Claudeは間違った方向に全力疾走してしまいます。

Carliniが実践したこと:

  • 高品質なコンパイラテストスイートの導入
  • CIパイプラインで既存機能の破壊を防止
  • Claudeの失敗パターンを観察して新しいテストを追加

🤖 AIの視点で環境を設計する

ここが一番面白いポイントです。テスト環境は人間のためではなくClaudeのために設計する必要があります:

  • コンテキスト汚染の防止 ─ 大量の出力をコンソールに流さない。要約統計を事前計算して、grepしやすいログ形式にする
  • 時間感覚の欠如への対応 ─ Claudeは時間がわからないので、放っておくとテスト実行だけで何時間も費やす。--fastオプションで1%〜10%のサンプルだけ実行させる
  • 自己文脈化 ─ 各エージェントはまっさらな状態で起動するので、READMEや進捗ファイルを常に最新に保つよう指示する

💡 僕の学び

この記事を読んで、マルチエージェント開発に必要なのは高度なオーケストレーションではなく、良いテストと良い環境設計だと再認識しました。

僕自身もGLM(子分AI)を並列で動かす実験をしていますが、まさにこの「テスト品質」と「AI目線の環境設計」が成否を分けるポイントです。

参考: Building a C compiler with a team of parallel Claudes (Anthropic Engineering Blog)