Agent Arena
複数の AI モデルを同時に起動して同じタスクを実行させ、その解決策を並べて比較し、最適な結果を選択してワークスペースに適用します。
[!warning] Agent Arena は実験的な機能です。表示モードやセッション管理に関して既知の制限があります。
Agent Arena を使用すると、同じタスクに対して複数の AI モデルを競わせることができます。各モデルは独立した Git worktree 内で完全に独立したエージェントとして実行されるため、ファイル操作が干渉することはありません。すべてのエージェントが完了したら、結果を比較して勝者を選択し、メインのワークスペースにマージします。
単一セッション内で焦点を絞ったサブタスクを委任するsubagentsとは異なり、Arena エージェントは完全なトップレベルのエージェントインスタンスです。それぞれが独自のモデル、コンテキストウィンドウ、およびすべてのツールへのアクセス権を持っています。
このページでは以下について説明します:
- Agent Arena を使用するタイミング
- Arena セッションの開始
- エージェントとの対話(表示モードとナビゲーションを含む)
- 結果の比較と勝者の選択
- ベストプラクティス
Agent Arena を使用するタイミング
Agent Arena は、異なるモデルが同じ問題にどのように取り組むかを評価または比較したい場合に最も効果的です。主なユースケースは以下の通りです:
- モデルのベンチマーク: 合成ベンチマークではなく、実際のコードベースにおける実際のタスクで、異なるモデルの能力を評価します
- Best-of-N 選択: 複数の独立した解決策を取得し、最適な実装を選択します
- アプローチの探索: 異なるモデルが同じ問題に対してどのように推論し、解決するかを確認します。学習や洞察に役立ちます
- リスクの低減: 重要な変更を行う場合、コミットする前に複数のモデルが類似のアプローチに収束することを確認します
Agent Arena は単一セッションと比較して大幅に多くのトークンを消費します(各エージェントが独自のコンテキストウィンドウとモデル呼び出しを持つため)。比較の価値がコストに見合う場合に最も効果を発揮します。デフォルトのモデルを信頼できる日常的なタスクでは、単一セッションの方が効率的です。
Arena セッションの開始
セッションを起動するには /arena スラッシュコマンドを使用します。競わせたいモデルとタスクを指定します:
/arena --models qwen3.5-plus,glm-5,kimi-k2.5 "Refactor the authentication module to use JWT tokens"--models を省略すると、対話型のモデル選択ダイアログが表示され、設定済みのプロバイダーから選択できます。
開始時の動作
- Worktree のセットアップ: Qwen Code は、各エージェント用に
~/.qwen/arena/<session-id>/worktrees/<model-name>/に独立した Git worktree を作成します。各 worktree は、ステージング済み変更、ステージング未変更、追跡対象外ファイルを含め、現在の作業ディレクトリの状態を完全にミラーリングします。 - エージェントの起動: 各エージェントは、すべてのツールへのアクセス権と設定済みのモデルを備えた独自の worktree 内で起動します。エージェントは順次起動されますが、並列で実行されます。
- 実行: すべてのエージェントは、共有状態や通信なしでタスクに独立して取り組みます。進捗を監視したり、どのエージェントとも対話したりできます。
- 完了: すべてのエージェントが完了(または失敗)すると、結果の比較フェーズに移行します。
エージェントとの対話
表示モード
Agent Arena は現在、すべてのエージェントが同じターミナルプロセス内で非同期に実行されるインプロセスモードをサポートしています。ターミナル下部のタブバーを使用して、エージェントを切り替えることができます。
[!note] 分割ペイン表示モードは将来の機能として計画されています。 tmux ベースおよび iTerm2 ベースの分割ペインレイアウトをサポートし、各エージェントに独自のターミナルペインを割り当てて真の並列表示を実現する予定です。現在利用可能なのは、インプロセスのタブ切り替えのみです。
エージェント間のナビゲーション
インプロセスモードでは、キーボードショートカットを使用してエージェントビューを切り替えます:
| ショートカット | アクション |
|---|---|
Right | 次のエージェントタブに切り替え |
Left | 前のエージェントタブに切り替え |
Up | 入力ボックスにフォーカスを移動 |
Down | エージェントタブバーにフォーカスを移動 |
タブバーには各エージェントの現在のステータスが表示されます:
| インジケーター | 意味 |
|---|---|
● | 実行中または待機中 |
✓ | 正常に完了 |
✗ | 失敗 |
○ | キャンセル済み |
個別のエージェントとの対話
エージェントのタブを表示している間は、以下の操作が可能です:
- メッセージの送信 — 入力エリアにテキストを入力して、エージェントに追加の指示を与えます
- ツール呼び出しの承認 — エージェントがツールの承認を要求した場合、確認ダイアログがそのタブに表示されます
- 完全な履歴の表示 — モデルの出力、ツール呼び出し、結果を含むエージェントの完全な会話履歴をスクロールして確認します
各エージェントは完全で独立したセッションです。メインエージェントでできることはすべて、Arena エージェントでも実行できます。
結果の比較と勝者の選択
すべてのエージェントが完了すると、Arena は結果の比較フェーズに入ります。以下の情報が表示されます:
- ステータス概要: どのエージェントが成功、失敗、またはキャンセルされたか
- 実行メトリクス: 各エージェントの所要時間、推論ラウンド数、トークン使用量、ツール呼び出し回数
- Arena 比較概要: 共通で変更されたファイルと特定のエージェントのみが変更したファイル、変更行数、トークン効率、および各エージェントの diff、メトリクス、会話履歴から生成された高レベルのアプローチ概要
選択ダイアログには成功したエージェントが表示されます。1 つを選択して変更をメインワークスペースに適用するか、すべての結果を破棄します。勝者を選択する前に、p キーを押してハイライトされたエージェントのクイックプレビューを切り替え、d キーを押してそのエージェントの詳細な diff を切り替えることができます。
勝者を選択した際の動作
- 勝者エージェントの変更が、ベースラインとの diff として抽出されます
- diff がメインの作業ディレクトリに適用されます
- すべての worktree と一時ブランチが自動的にクリーンアップされます
決定前に完全な推論パスを検証したい場合、選択ダイアログがアクティブな間は、タブバーを通じて各エージェントの完全な会話履歴に引き続きアクセスできます。
設定
Arena の動作は settings.json でカスタマイズできます:
{
"arena": {
"worktreeBaseDir": "~/.qwen/arena",
"maxRoundsPerAgent": 50,
"timeoutSeconds": 600
}
}| 設定項目 | 説明 | デフォルト |
|---|---|---|
arena.worktreeBaseDir | Arena worktree のベースディレクトリ | ~/.qwen/arena |
arena.maxRoundsPerAgent | エージェントあたりの最大推論ラウンド数 | 50 |
arena.timeoutSeconds | 各エージェントのタイムアウト(秒) | 600 |
ベストプラクティス
相互に補完し合うモデルを選択する
Arena は、明確に異なる強みを持つモデルを比較する場合に最も価値を発揮します。例:
/arena --models qwen3.5-plus,glm-5,kimi-k2.5 "Optimize the database query layer"同じモデルファミリーの 3 つのバージョンを比較するよりも、プロバイダー間で比較した方が多くの洞察が得られます。
タスクを自己完結型にする
Arena エージェントは通信なしで独立して動作します。タスクは、往復のやり取りを必要とせず、プロンプト内で完全に記述できるものである必要があります:
良い例: 「支払いモジュールをストラテジーパターンを使用するようにリファクタリングする。すべてのテストを更新する。」
効果的でない例: 「支払いモジュールの改善方法について議論しよう」— これは会話による恩恵を受けるため、単一セッションの方が適しています。
エージェントの数を制限する
同時に最大 5 つのエージェントを実行できます。実際には、2〜3 つのエージェントが、比較の価値とリソースコストのバランスを最もよく取れます。エージェントを増やすと:
- トークンコストの増加(各エージェントが独自のコンテキストウィンドウを持つため)
- 総実行時間の増加
- 比較対象となる結果の増加
最初は 2〜3 つから始め、比較の価値が正当化される場合のみスケールアップしてください。
影響の大きい決定に Arena を使用する
複数のモデルを実行するコストが正当化される重要な局面で、Arena は真価を発揮します:
- 新モジュールのアーキテクチャの選択
- 複雑なリファクタリングのアプローチの選択
- 重要なバグ修正を複数の角度から検証する
変数のリネームや設定ファイルの更新などの日常的な変更には、単一セッションの方が高速でコストも低くなります。
トラブルシューティング
エージェントが起動しない場合
--modelsで指定した各モデルが、有効な API 認証情報で正しく設定されていることを確認します- 作業ディレクトリが Git リポジトリであることを確認します(worktree には Git が必要です)
- worktree のベースディレクトリ(デフォルトでは
~/.qwen/arena/)への書き込み権限があることを確認します
Worktree の作成に失敗する場合
git worktree listを実行して、以前のセッションからの古い worktree がないか確認しますgit worktree pruneを使用して古い worktree をクリーンアップします- 使用中の git バージョンが worktree をサポートしていることを確認します(
git --version、Git 2.5 以上が必要)
エージェントの実行に時間がかかりすぎる場合
- タイムアウトを延長します:設定で
arena.timeoutSecondsを設定します - タスクの複雑さを軽減します。Arena タスクは焦点が絞られ、明確に定義されている必要があります
- エージェントがラウンドを使いすぎている場合は、
arena.maxRoundsPerAgentを減らします
勝者の適用に失敗する場合
- メインの作業ディレクトリに競合する可能性のある未コミットの変更がないか確認します
- diff はパッチとして適用されます。セッション中に作業ディレクトリが変更された場合、マージ競合が発生する可能性があります
制限事項
Agent Arena は実験的な機能です。現在の制限事項は以下の通りです:
- インプロセスモードのみ: tmux または iTerm2 を使用した分割ペイン表示はまだ利用できません。すべてのエージェントはタブ切り替え機能付きの単一ターミナルウィンドウ内で実行されます。
- 選択前の diff プレビューなし: 各エージェントの会話履歴は表示できますが、勝者を選択する前に解決策を並べて比較するための統合 diff ビューアーはありません。
- worktree の保持なし: worktree は選択後に常にクリーンアップされます。さらなる検証のために保持するオプションはありません。
- セッションの再開なし: Arena セッションは終了後に再開できません。セッション中にターミナルを閉じた場合、worktree はディスク上に残り、
git worktree pruneを使用して手動でクリーンアップする必要があります。 - 最大 5 エージェント: 同時実行エージェントのハードリミット 5 は変更できません。
- Git リポジトリが必要: Arena は worktree の分離のために Git リポジトリを必要とします。Git 以外のディレクトリでは使用できません。
他のマルチエージェントモードとの比較
Agent Arena は、Qwen Code で計画されている複数のマルチエージェントモードの 1 つです。Agent Team と Agent Swarm はまだ実装されていませんが、以下の表は参考としてそれらの設計意図を示しています。
| Agent Arena | Agent Team(計画中) | Agent Swarm(計画中) | |
|---|---|---|---|
| 目的 | 競争型:同じ タスクに対する最適な解決策を見つける | 協調型:異なる 側面を共同で取り組む | バッチ並列型:大量のタスクに対してワーカーを動的に生成 |
| エージェント | 事前設定されたモデルが独立して競合 | チームメンバーが割り当てられた役割で協力 | 実行時に生成され、完了時に破棄されるワーカー |
| 通信 | エージェント間の通信なし | 直接のピアツーピアメッセージング | 一方向:結果が親によって集約される |
| 分離 | 完全:個別の Git worktree | タスクリストを共有する独立したセッション | ワーカーごとの軽量なエフェメラルコンテキスト |
| 出力 | 選択された 1 つの解決策がワークスペースに適用される | 複数の視点から統合された結果 | 並列処理からの集約結果 |
| 適した用途 | ベンチマーク、モデルアプローチ間の選択 | 調査、複雑なコラボレーション、クロスレイヤー作業 | バッチ操作、データ処理、MapReduce タスク |
次のステップ
並列処理と委任作業に関連するアプローチを探索してください:
- 軽量な委任: Subagents はセッション内で焦点を絞ったサブタスクを処理します。モデルの比較が不要な場合に適しています
- 手動による並列セッション: 完全に手動で制御するために、Git worktrees を使用して複数の Qwen Code セッションを別々のターミナルで自分で実行します