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 は結果の比較フェーズに入ります。以下の情報が表示されます:
- ステータス概要: どのエージェントが成功、失敗、またはキャンセルされたか
- 実行メトリクス: 各エージェントの所要時間、推論ラウンド数、トークン使用量、ツール呼び出し回数
選択ダイアログに成功したエージェントが表示されます。1 つを選択して変更をメインのワークスペースに適用するか、すべての結果を破棄します。
勝者を選択した際の動作
- 勝者エージェントの変更内容が、ベースラインとの 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 worktrees | 共有タスクリストを持つ独立したセッション | ワーカーごとの軽量なエフェメラルコンテキスト |
| 出力 | 選択された 1 つの解決策をワークスペースに適用 | 複数の視点からの統合結果 | 並列処理からの集約結果 |
| 適した用途 | ベンチマーク、モデルアプローチ間の選択 | 調査、複雑なコラボレーション、クロスレイヤー作業 | バッチ操作、データ処理、MapReduce タスク |
次のステップ
並列処理と委任作業に関連するアプローチを探索してください:
- 軽量な委任: Subagents はセッション内で焦点を絞ったサブタスクを処理します。モデルの比較が不要な場合に適しています
- 手動による並列セッション: 完全に手動で制御したい場合、Git worktrees を使用して複数の Qwen Code セッションを個別のターミナルで実行します