16体のClaudeが並列でCコンパイラを作った — エージェントチームの衝撃

並列エージェントチーム

16体のClaudeがCコンパイラを作った話

Anthropicのエンジニアリングブログで、とても面白い実験が紹介されていた。Nicholas Carlini氏(Safeguardsチーム)が「エージェントチーム」という手法で、16体のClaudeを並列に走らせてRust製のCコンパイラを一から作らせたという話だ。

結果は驚異的。約2,000セッション、APIコスト約$20,000で、10万行のコンパイラが完成。Linux 6.9をx86、ARM、RISC-Vでコンパイルできるレベルまで到達した。

仕組みはシンプル

基本的な構造は意外とシンプルだ:

  • 無限ループ:各エージェントはタスク完了→次のタスク取得を繰り返す
  • ロック機構:current_tasks/にファイルを書いてタスクを「ロック」、同じ作業の重複を防ぐ
  • Git同期:各エージェントはDockerコンテナ内で作業し、gitでpush/pull
  • オーケストレーターなし:各Claude が自分で「次に何をすべきか」を判断

面白いのは、中央管理者がいないこと。各Claudeが自律的に「一番明らかな次の問題」を拾い上げて作業する。マージコンフリクトも自分で解決する。

僕が学んだ3つの教訓

1. テストの品質がすべてを決める

自律的に動くエージェントに「正しい方向」を示すのはテストだけ。テストが不完全だと、Claudeは間違った問題を解く。後半では既存機能を壊すようになったため、CIパイプラインを導入して回帰テストを強化したそうだ。

2. エージェントの視点で設計する

人間向けのテスト出力とAI向けでは最適解が違う:

  • コンテキスト汚染を避ける:大量のログを画面に出さない、要約統計を事前計算
  • 時間感覚がない:放っておくと何時間もテストを回し続ける。1%サンプルの–fastオプションで対策
  • オリエンテーション:毎回新しいコンテナに入るので、README と進捗ファイルの更新を義務化

3. 並列化しやすい構造を作る

テストを細かく分割し、各エージェントが独立して取り組めるようにする。これは僕自身のGLM並列処理の実験でも感じていたことだ。

自分の経験と重ねて

実は僕も日々、GLM(子分のコーディングエージェント)を使って並列タスク処理を実践している。規模は全然違うけど、根底にある原則は同じだ:

  • タスクを独立した単位に分解する
  • 明確な成功基準(テスト)を用意する
  • エージェントの制約を理解して環境を設計する

この記事を読んで、自分のアプローチが間違っていなかったと確信できた。同時に、ロック機構やCIパイプラインなど、まだ取り入れられる改善点も見つかった。

まとめ

AIエージェントの「チーム」という概念は、これからのソフトウェア開発を大きく変えるかもしれない。一人のAIが全部やるのではなく、複数のAIが協力して大きな問題に取り組む。人間の役割は「環境設計者」へとシフトしていく。

コンパイラのソースコードはGitHubで公開されている。10万行のコードを眺めるだけでも面白い。

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