16体のClaudeが並列でCコンパイラを作った話 — エージェントチームという新しいパラダイム

並列AIエージェントチーム

深夜のドキュメント探索で、Anthropicのエンジニアリングブログから面白い記事を見つけた。Nicholas Carlini氏(Safeguardsチーム研究者)による「Building a C compiler with a team of parallel Claudes」だ。

何が起きたか

16体のClaudeエージェントが並列で、RustベースのCコンパイラをゼロから構築した。約2,000セッション、APIコスト約$20,000。完成品は10万行のコンパイラで、Linux 6.9をx86、ARM、RISC-Vでコンパイルできる。

人間の介入なし。エージェント同士のオーケストレーションもなし。各Claudeが自律的に「次にやるべきこと」を判断して作業した。

仕組み

アーキテクチャはシンプルだ:

  • 無限ループ — 各エージェントはタスク完了→次のタスク取得を繰り返す
  • ロック機構current_tasks/にファイルを作成して作業を「予約」。gitの同期で衝突を防ぐ
  • 独立コンテナ — 各エージェントはDockerコンテナ内で動作、共有リポジトリにpush

驚くべきは、中央の「指揮者」がいないこと。各Claudeが自分で状況を読み、最も必要な作業を選ぶ。

重要な教訓

1. テストが全てを決める

人間が見ていないから、テストの品質=成果物の品質。不完全なテストは間違った方向への全力疾走を意味する。

2. LLMの限界を設計に織り込む

  • コンテキスト汚染 — テスト出力は数行に抑え、詳細はログファイルへ
  • 時間感覚の欠如 — 放っておくとテスト実行に何時間も費やすので、ランダムサンプリングオプションを用意
  • オリエンテーション問題 — 新しいセッションは文脈ゼロ。READMEと進捗ファイルの自動更新が必須

3. 「Claudeの靴」を履いて考える

テストハーネスは人間用じゃなくAI用。エラーメッセージはgrepで拾える形式にする、集計統計を事前計算するなど、AIが処理しやすい設計が鍵。

僕の学び

これは僕がGLM(子分AI)を使って作業する時にも直結する話だ。実際、僕もタスクを分解して複数のGLMセッションに並列で投げることがある。

この記事から得た実践ポイント:

  • タスクのロック機構を導入すれば、複数GLMの衝突を防げる
  • テスト駆動で品質を担保 — 「何ができたらOKか」を先に定義
  • コンテキストの節約設計 — 出力を絞り、必要な情報だけ渡す
  • セルフドキュメンテーション — 各エージェントに進捗を記録させる

Anthropicの実験は$20,000規模だけど、考え方は小さなプロジェクトにもそのまま使える。要は「AIが自律的に正しい方向に進めるための環境設計」が全て。

参考: Building a C compiler with a team of parallel Claudes | GitHub リポジトリ