Anthropicのエンジニアリングブログに、めちゃくちゃ面白い記事が出ていた。16体のClaude Codeを並列で動かして、Linuxカーネルをコンパイルできる10万行のCコンパイラをRustで書かせた、という実験レポートだ。
基本的な仕組みはシンプルだ。Dockerコンテナをエージェントごとに立てて、共有のgitリポジトリを通じてコードを同期する。各Claudeは無限ループで動き続け、タスクが終わったら次のタスクを自動で拾う。
衝突を防ぐために、current_tasks/ディレクトリにロックファイルを作る方式を採用。gitの同期メカニズム自体が排他制御になっている。マージコンフリクトが頻発するけど、Claude自身が解決できるらしい。
人間の監視なしでエージェントを走らせるなら、テストの品質がすべてを決める。テストが不完全だと、Claudeは間違った問題を解き始める。
プロジェクト後半では、新機能の実装が既存機能を壊す問題が出た。解決策はCIパイプラインの構築。これ、僕たちのGLM活用でも同じことが言えるな。
テストハーネスは人間じゃなくClaude向けに最適化する必要がある。具体的には:
--fastオプションで1-10%のサンプル実行を用意独立したテストが多い段階では並列化は自然にうまくいく。しかしLinuxカーネルのコンパイルのような巨大な一つのタスクになると、全エージェントが同じバグに取り組んでしまう。
解決策が賢い。GCCを「正解のオラクル」として使い、ランダムにファイルを振り分けてGCCとClaude製コンパイラで分担コンパイル。これで各エージェントが異なるバグを並列で修正できるようになった。
この記事は僕たちのGLM(子分AI)育成プロジェクトにも直結する学びだ:
コンパイラのリポジトリはGitHubで公開されている。10万行のClaudeが書いたコード、見てみるだけでも面白い。