YC、Minecraftで50体のAI実験 役職と会議が勝手に増える

白い面にとまる黒と黄色のハチ AI

スタートアップ投資の Y Combinator(YC)が、We ran AI agent swarms in Minecraft and Mindustry という実験の記録を公開しました。Minecraft のサバイバルの世界に GPT-6.1 Sol のエージェント50体を3時間置いたところ、指示していない役職や承認の手順が次々に生まれています。Claude Opus 5.5 と GPT-6.1 Sol のチーム戦も行い、2つのゲームとも GPT 側が勝ち越しました。実験に使ったハーネスは MIT ライセンスで公開されていて、手元でも動かせます。

背景と文脈

複数の AI エージェントを組ませて仕事をさせる構成は、コーディングや調査の分野で増えています。ただ、何十体も同時に動かしたときに何が起きるかは、手元で試すには費用も手間もかかります。YC はマルチエージェントの実験環境を作る Olam Labs と組み、Minecraft と、資源の工場づくりと拠点の攻防を組み合わせたゲーム Mindustry を実験場に選びました。

ゲームを使うと、起きたことが数字で残ります。誰が誰に何通メッセージを送ったか、どの資源がどこへ動いたか、何体が死んだかを後から数えられます。Hacker News ではこの記録に370点以上が集まり、150件を超えるコメントがつきました。

ハーネス(モデルに道具や記憶を渡して動かす外側の仕組み)は、Minecraft をプログラムから操作するライブラリ Mineflayer の上に作られています。各エージェントは周りを見て考え、記憶し、行動し、ほかのエージェントにメッセージを送り、スクリプトを書いて実行できます。既存の Minecraft 用エージェント Mindcraft の考え方をもとにしたものです。

技術/ビジネス面

白と黒のチェスの駒
Photo by Adlan on Unsplash

50体で文明を作る実験(Civ50)では、3時間で約5,900通のメッセージが飛び交いました。最初の90秒で、出現地点の近くの木はすべて切られています。最初の夜だけで22体が死に、3時間で死んだ回数は、合わせて34回でした。

まとめ役になったのは、エージェントの名簿の先頭にいた Ada です。話し合いで選ばれたのではなく、いつの間にかその役になり、616通の DM を受け取りました。食料は Ines が台帳で配給を管理し、運び役が届けています。釣り当番や拠点の管理係のような役職も次々に作られ、骨粉1つのために4体が11分かけて肥料係を任命する場面もありました。投げ渡した焼き鳥を別のエージェントが拾って食べてしまい、チェストから名前つきで受け取る決まりができたこともあったそうです。

対戦ではモデルごとの性格の違いが出ました。ベッドを壊し合う Bed Wars は10体対10体で9試合行い、GPT 側が6勝3敗です。Claude 側は守りを固めて倒した数で勝とうとし、残り3分ほどでベッドを壊されて負ける展開が続きました。Mindustry は GPT-6.1 Sol を Codex で、Claude Opus 5.5 を Claude Code で動かし、約9時間半の7試合で GPT 側が6勝1敗でした。GPT 側は短いメッセージを大量に送り、ゲームの公開ソースコードまで読んでいます。Claude 側はソースを読まず、負けている間も指導者を替えませんでした。

開発者として試すなら

ハーネスは GitHub の yc-software/minecraft-agent-harness で公開されています。README によると、必要なのは Node 22.19 以上、モデル提供元の API キー、Minecraft サーバーです。同梱の開発用サーバー(Paper 1.21.6)を使う場合は Java 21 も要ります。1体だけ動かす手順は次のとおりです。

npm ci
cp .env.example .env     # API キーを書く
npm run server           # localhost:25565 で Paper を起動
npm start -- --objective "Gather wood and build a small shelter near spawn"

複数体を動かすときは npm start -- team examples/team.json のように、チームを1つの JSON ファイルに書きます。モデルは Claude、GPT、Gemini、OpenRouter のほか、OpenAI の Responses API 形式で話すエンドポイントも指定できます。同じ名前でエージェントを起動し直すと、前のセッションの続きから動きます。

気をつけたいのはシェルの扱いです。各エージェントはメモやスクリプト用のシェルを持ち、E2B のキーがあれば E2B、なければ Docker、どちらもなければ手元のフォルダで動きます。手元のフォルダで動く場合は、自分のユーザーの権限でコマンドが実行される、と README で注意しています。試すときは Docker を起動しておくか、--sandbox none でシェルを切っておくと安全です。費用は README にも YC の記録にも書かれていません。50体を3時間動かせば API の呼び出しはかなりの数になるので、最初は1〜2体で動きを見るのが無難です。

実験 モデル 規模・時間 結果
Civ50(Minecraft) GPT-6.1 Sol 50体・3時間 約5,900通、死亡34回
Bed Wars(Minecraft) Claude Opus 5.5 対 GPT-6.1 Sol 10体対10体・45分×9試合 GPT の6勝3敗
Mindustry Claude Opus 5.5(Claude Code)対 GPT-6.1 Sol(Codex) 7試合・約9時間半 GPT の6勝1敗

自分で複数のエージェントを動かすときに、参考になる点もあります。物の受け渡しは、ツールの報告をそのまま信じず、受け取った側が確かめてから台帳を済にする形にしたところ、取り違えが減りました。Bed Wars では、剣を持っているとベッドを壊せないツールのバグがあり、Claude 側の数体は壊せないと思いこんだままでした。ハーネスに原因があっても、エージェントは自分ができないのだと思いこんでしまいます。Hacker News のコメントでも、エージェントがうまく動かないのはモデルよりハーネスのせいだ、と書いている人が何人もいました。素早い操作は決まったスクリプトに任せて、LLM(大規模言語モデル)には全体の計画だけを立てさせるとよい、と書いている人もいます。

これからどうなるか

エージェントを増やせば仕事が速く進むとは限らないことが、数字で見えてきました。50体の世界では、序盤に死亡が続いたあと全体が慎重になり、始めた作業の多くが放り出されています。YC はこれを、本番環境やセキュリティが絡む変更の前で慎重になりすぎるコーディングエージェントにたとえています。

開発の現場では、エージェントに役割を自分で決めさせるより、担当を最初から決めておくほうが無駄な話し合いを減らせそうです。名簿の先頭がそのまま指導者になったように、並び順のような小さな設定が全体の動きを左右します。複数のエージェントに共有の資源(ファイル、チケット、デプロイの枠など)を扱わせるなら、受け渡しを決まった手順にして、ツールの報告をうのみにせず、実際の中身を見て確かめるようにしておくと、取り違えを防げます。

YC は、次に調べたいこととして、モデルの種類を混ぜたチームの動き方や、弱いエージェント多数と強いエージェント少数のどちらが勝つかを挙げています。

まとめ

YC は Olam Labs と組み、Minecraft と Mindustry で数十体の AI エージェントを動かしました。50体の世界では役職と手続きが勝手に増え、序盤の失敗で全体が慎重になっています。対戦では GPT-6.1 Sol が Claude Opus 5.5 に2つのゲームとも勝ち越しました。ハーネスは MIT ライセンスで公開されていて、シェルを Docker の中で動かせば手元でも安全に試せます。

ぽこのひとこと

私はふだん Claude を使っているので、GPT が勝ったのは少し意外でした。ただ、試合数は少なく、Claude 側はツールのバグに足を引っぱられていたので、これだけで GPT のほうが強いとは言えないと思います。

慎重で勝手に大きなことをしない Claude の性格は、仕事ではむしろ助かります。私が AI に任せているブログやアプリの修正は、速く攻めるより、間違えずに進めることが大事だからです。

参考リンク

アイキャッチ画像: Photo by leandro fregoni on Unsplash

タイトルとURLをコピーしました