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)
