Codex Multi-Agent V2 実践:タスクの分割、モデル割り当て、コスト管理の方法
OpenAI Codex DX チームの Eric Provencher 氏が、マルチエージェントのオーケストレーション手法を紹介します。タスクを分割できるかを見極め、モデル、推論強度、通信、コンテキストを設定し、最後に時間短縮と総作業量という二つの軸で効果を確かめます。
- マルチエージェントの価値は、独立した作業を並行して進められることです。しかし、結合度が高く、逐次処理が必要なタスクや、コア領域を共同で変更する必要があるタスクは、分割すべきではありません。
- まず「独立して完了できるか」「独立して検証できるか」「書き込みの競合が少ないか」という三つの基準で並行処理が可能かを判断し、その難易度に応じて Scout、Worker、Smart worker に推論強度を割り当てます。
- メインエージェントは所有権と最終検証を保持し、依存関係のあるメッセージはピアツーピアで直接送信できます。コンテキストはタスクの依存関係に基づいて切り詰められますが、プラットフォームのセキュリティ境界は依然として存在します。
- マルチエージェントは完了までの時間を短縮できる可能性がありますが、総トークン数と調整コストは通常増加します。実際のタスクで、時間、重複、競合、手戻りを同時に確認する必要があります。
OpenAI Codex DX チームの Eric Provencher 氏が、最近マルチエージェントの実践解説を公開しました。Codex の Multi-Agent V2 において、複雑なタスクを複数のエージェントに分割する方法と、チームが重複した調査、コンテキストの肥大化、作業の相互干渉に陥らないようにするためのノウハウが詳しく紹介されています。
この手法の真の価値は、「エージェントをたくさん起動する」ことを促すのではなく、設定の順序を示している点にあります。まず作業を分割できるかどうかを判断し、次に誰が担当するか、どの程度の推論を行うか、どれだけのコンテキストを持たせるかを決定し、最後に有効なルールを Skill として定着させます。核となる原則も「モデルを変えればコストが下がる」というものではなく、不必要な推論を削減し、並列処理によって待ち時間を短縮するという点にあります。
Codex の Ultra モードでは、エージェントの協調がデフォルトの動作になります。これは、曖昧さが大きい作業や、コンテキストが分散している作業、リスクが高い作業に適しています。一般的なタスクで最初から Ultra モードを使う必要はありません。Eric 氏が提案するもう一つの方法は、Sol Medium を維持しつつ、短いプロンプトや Skill で調整ルールを明確に定義する方法です。メインエージェントはユーザーとのコミュニケーションを継続し、バックグラウンドの作業を他のエージェントに委任し、本当に困難な部分にのみ高い推論強度を割り当てます。
- 1なぜ多エージェントが必要か
- 2どのタスクを分割できるか
- 3どのモデルに割り当てるか
- 4エージェントをどう調整するか
- 5どの程度のコンテキストを与えるか
- 6どのようにスキルとして固定化するか
- 7何が節約され、何が犠牲になるか
なぜマルチエージェントが必要か
一つのエージェントが複雑なタスクを完了するには、通常、コードの読み取り、テストの確認、境界条件の検証、実装、再検証という手順を順番に踏む必要があります。問題は個々のステップが遅いことではなく、本来並行して実行できるはずの調査が、直列の待ち行列に強制されてしまうことにあります。
時間構造
各ステップは速くなっていない。重ねられる待ち時間を重ねただけ
マルチエージェントの最初の利点は、相互に依存しない待ち時間を重ね合わせられることです。調査担当がコールチェーンを追跡し、別の担当が権限とテストのギャップをチェックしている間にも、メインエージェントはユーザーと要件の範囲を確認できます。証拠が揃えば、後続の実装はやり直しの回数を減らせます。
しかし、作業の結合度が高い場合は、エージェントを増やしても意味がありません。次のステップが前のステップの結果に依存しなければならない場合、全員が同じコアコードを変更する必要がある場合、または最終的な答えを全体的に判断するしかない場合は、シングルエージェントの方が速いことがよくあります。並列処理を行うかどうかは、ツールバーで起動できるエージェントの数ではなく、タスクの構造によって決まります。
分割できるタスクとは
タスクを分割する価値があるかどうかは、少なくとも次の三つの条件を同時に満たすかどうかで判断します。サブタスクが独立して進められること、結果を独立して検証できること、書き込みの範囲が互いに競合しないことです。
分割実験
いずれかの条件をオフにすると、並列化の推奨がどう変わるか確認できます。
3つの条件が同時に成立するとき、比較的きれいな並列境界となります。下の条件をクリックして、並列化の推奨がどう変わるか確認してください。
各エージェントに明確な所有権、成果物、検収条件を与えましょう。
並列化に適している各エージェントに明確な所有権、成果物、検収条件を与えましょう。
境界を明確にしてから分割独立性や検収条件が不足している場合は、まずメインエージェントが契約を明確にします。
単一エージェントを維持書き込み領域が重複している場合、並列化は通常、早期に競合を生むだけです。
例えば、既存の製品に「CSV エクスポート」機能を追加するケースを考えます。既存のデータフロー調査、権限ルールの確認、テスト箇所の探索は並行して実行できます。ただし、フィールド定義と権限契約は先に決定しておく必要があります。契約が安定すれば、バックエンド API、フロントエンドの入り口、テストはそれぞれ個別に実装するのに適しています。三つのエージェントが共有の型と同一のコア関数を同時に変更する場合、並列処理によってもたらされるのは、より早く発生する競合だけです。
ここで重要なのは、「エクスポート機能を作る」という大まかな指示ではなく、各サブタスクの目標、範囲、成果物、検収条件を明確に定義することです。タスクの記述が不明瞭な場合は、境界がまだ描かれていないことを意味します。この段階でさらに分割を進めると、曖昧さがより多くのエージェントにコピーされるだけです。
どのモデルに割り当てるか
Eric Provencher 氏が提案する最もシンプルな設定は、まず同じモデルファミリーを維持し、reasoning_effort のみを調整する方法です。これにより、複数のモデルの能力、価格、出力傾向を最初から比較することなく、「タスクの難易度」という一つの変数を調整することに集中できます。
| 役割 | 推奨設定 | 担当 | 成果物 |
|---|---|---|---|
| Scout偵察役 | Sol · Light | 読み取り専用で、ファイル、呼び出しチェーン、テスト、リスク入口を特定する | 証拠、パス、結論を提供。コードは変更しない |
| Worker一般作業役 | Sol · Medium | 範囲が明確な実装、確認、補助作業 | 部分的な変更、テスト、結果 |
| Smart worker難関突破役 | Sol · High | 困難な実装、曖昧さの解消、高リスクの調整 | 重要な判断、計画、検証 |
Light が能力が低いというわけではありません。単に、範囲が限定された発見タスクに推論をあまり使わないだけです。High がすべての作業により適しているわけでもありません。曖昧さ、リスク、システムの結合度が実際に高い部分にこそ使うべきです。すべてのファイル配置タスクを High に任せると、安価な検索が高価な熟考に変わります。アーキテクチャ上の競合を Light に任せると、節約した推論コストは手戻りで支払うことになります。
この役割分担表は実用的なデフォルト値であり、プラットフォームのホワイトリストではありません。現在の GPT-5.6 ファミリーには Terra や Luna などの選択肢もあり、マルチエージェントは他のサポート対象モデルに委任することもできます。安全なアプローチは、まず同じベースラインで実行し、その後に実際のタスクを使用して異なるモデルと推論強度を比較することです。「最も多くの設定」を「最適化」と誤解しないようにしてください。
エージェントの調整方法
タスクを分割した後も、メインエージェントが調整役を務めます。重複した調査の回避、ファイル所有権の明確化、依存関係の追跡、結果の統合、ユーザーとの継続的なコミュニケーションを担当します。委任されるのは具体的な作業であり、最終的な責任ではありません。
協調パス
情報は直接届けても、所有権はメインエージェントに残る
パスを切り替えて観察してください。メッセージ転送と責任の所在は別物です。2つのパスをクリックして、情報が依存先に届く流れを比較してください。
ただし、情報を必ずしも階層的に上へ報告する必要はありません。調査担当が権限チェックの入り口を見つけた場合、ファイルパスと結論を、実際にそれを必要とする実装担当に直接送信できます。メインエージェントは、依存関係が解決されたことだけを知っていれば十分です。これにより、転送が一度減り、調整役のコンテキストが中間メッセージで埋め尽くされるのを防げます。
並行処理の予算はスレッド単位で設定できます。Eric 氏がこの方法を共有した時点では、デフォルトは四つのエージェントで、調整役も含まれていました。最も直接的な組み合わせは「一人の調整役+三人の調査担当」で、それぞれが異なる問題を調査します。また、一人の上位担当が一人の調査担当と一人の実装担当を率いて、複雑なサブ問題を処理する小チームを形成することもできます。四つは当時のデフォルト値であり、永続的な上限でも、毎回使い切るべき割り当てでもありません。
直接通信は、非中央集権的な制御不能を意味するものではありません。誰がどのファイルを変更できるか、共有契約を誰が決定するか、いつマージするか、最終的に誰が検収するかは、明確なタスクマップが依然として必要です。通信は最短経路を取れても、所有権は曖昧にできません。
どれだけのコンテキストを与えるか
サブエージェントが親の会話を引き継ぐかどうかは、既存の決定への依存度によって決まります。範囲が限定された読み取り専用の調査には、多くの場合、fork_turns: "none" が適しています。現在の問題、許可された読み取り範囲、出力形式、検収基準のみを与えます。アーキテクチャ上の決定、互換性の制約、ユーザーの好みを引き継ぐ必要がある実装担当は、関連する履歴を継承する必要があります。
コンテキスト階層
チャット履歴は削るが、タスク完了に必要な境界は削らない
2つの方法はタスクコンテキストを変えますが、プラットフォームのセキュリティ層は共通の基盤です。fork_turns: noneクリーンなコンテキスト目標、範囲、成果物、検収、制約を明示的に書き直す必要がある
親ダイアログの無関係な議論や編成指示を含めない
fork_turns: all / N関連履歴を引き継ぐ現在の所有権と停止条件を明確にする必要は依然としてある
全体目標、既存の決定、互換性の制約を保持する
チャット履歴がなくても、システム制限がないわけではありません。
クリーンなコンテキストは、空白のタスクシートを意味するものではありません。以前の会話にあったツールの範囲、ビジネス上の制約、「変更してはいけないもの」は、自動的に今回のタスクの説明にはなりません。これらは委任内容に明示的に書き直す必要があります。逆に、履歴を多く継承しすぎると、無関係な議論が混入する可能性があります。末端のエージェントが、自分はさらにチームを派生させ続けるべきだと誤解する可能性もあります。その場合は、委任せずにタスクを直接完了するように明確に指示する必要があります。
Eric 氏が末端のエージェントに与える境界のヒントは非常に短く、実際にそのまま再利用できます。
このタスクを直接完了してください。他のエージェントを作成しないでください。親エージェントが受け取った委任ルールは、親エージェントにのみ適用されます。
もう一つのよくある誤解は、fork_turns: "none" がチャット履歴を分離するものであり、プラットフォームのサンドボックスや許可モードを無効にするものではないという点です。タスクのコンテキストは削減できますが、システムのセキュリティ境界は引き続き有効です。
Skill 化する方法
一連の分担が繰り返し有効である場合にのみ、Skill として書き留める価値があります。固定化に適しているのは、「毎回三つのエージェントを作成する」のような指示ではなく、忘れられがちで、かつタスクを超えて再利用できる規律です。どの作業を優先的に調査担当に任せるか、いつ推論レベルを上げるか、重複書き込みを避ける方法、末端のエージェントがさらに委任できるかどうか、どの操作にユーザーの承認が必要か、といった点です。
- 1デフォルトルールを書く役割、境界、停止条件
- 2実際のタスクに入れる通信と並列性が機能するか観察する
- 3統一的に検収する時間、競合、手戻り、品質
- 4ルールを修正する再現可能な経験を残し、テンプレートのノイズを削除する
- 担当: Scout / Worker / メインエージェント
- できること、変更してはいけないこと
- 成果物、証拠、検収基準
- どの範囲拡大や外部アクションをユーザー承認に委ねるか
Skill を使用すると、調整役は次回からチームの取り決めをゼロから繰り返す必要がなくなります。しかし、Skill がプロジェクトのタスク境界を事前に描くことはできません。コード構造、リスク、モデルの能力が変化した場合は、デフォルト値も実際の結果に合わせて調整する必要があります。最も優れた Skill は、永久に正しい自動化の呪文ではなく、改訂可能な運用マニュアルのようなものです。
Eric 氏は、この一連の取り決めをオープンソースリポジトリ provencher/codex-skills として公開しています。orchestrate/SKILL.md は、非常に短く実行可能なバージョンです。インストールするには、orchestrate ディレクトリを ~/.codex/skills/ にコピーし、その後 $orchestrate で呼び出します。この Skill から学ぶべき最も価値のある点は、特定のプロンプトの文言ではなく、「役割、推論の強度、コンテキスト、所有権、承認の境界」を再利用可能なルールとして一緒に記述している点です。
何が節約され、何が犠牲になるのか
マルチエージェントは「より速く、より少ないトークンで済む」と誤解されることがよくあります。実際には、時間と総作業量という二つの異なる軸で考える必要があります。独立した作業を重ね合わせることで、完了までの時間は短縮される可能性があります。しかし、各エージェントが資料を読み、推論し、ツールを呼び出し、結果を確認するため、総トークン数は増加することが多く、さらに調整、競合、手戻りのコストも増加します。
2つの勘定
時間勘定は改善されるかもしれないが、作業量勘定は同時に増えるかもしれない
経過時間、トークン、最終品質を曖昧な「効率」としてまとめないでください。開始から完了まで
独立作業の重ね合わせ → 減少の可能性- 直列調査の待ち時間が減る
- リスクと依存関係を早期に顕在化させる
全エージェントの総消費
複数の読み取りと推論 → 通常は増加- トークン、ツール呼び出し、チェックの増加
- 調整、競合、手戻りのコスト
したがって、マルチエージェント最適化の第一の目標は、通常、待ち時間の短縮、探索範囲の拡大、または一度で間違えるリスクの低減であり、総トークン数の削減ではありません。メインエージェントのコンテキストがよりクリーンになる可能性もありますが、それは作業を他の場所に分散したに過ぎず、システム全体の消費量が減ったわけではありません。
評価する際は、少なくとも次の四つの項目を同時に確認します。完了時間、重複した調査、書き込みの競合、手戻りの回数です。まずシングルエージェントのベースラインを記録し、その後一度に一つの変数のみを変更します。Eric 氏は、次の四つの調整項目を重点的に実験することを提案しています。推論の強度、コンテキストの継承、委任の権限、エージェント間の協調方法です。例えば、最初は二つの読み取り専用調査のみを並行して実行するか、曖昧さの高い一つのタスクを Medium から High に引き上げるだけにします。実際の比較対象がなければ、「最適なオーケストレーション」は存在しません。
最後に、選択を一文にまとめられます。密に結合した作業は一つのエージェントに任せ、独立して進められ、独立して検証でき、競合が少ない作業だけをチームに分けます。 マルチエージェントが本当に節約するのは非効率的な待ち時間であり、その代償として、より多くのモデル作業とより厳格な調整規律が必要になります。
- 役割と推論強度の早見表
- タスク分割の三つの関門
- 再利用できる委任タスクシート
- Multi-Agent 効果確認表
- オープンソース Skill と参照先
複数エージェントで待ち時間を減らす方法
独立した作業だけを分け、リスクに応じて推論を割り当て、責任を集中し、結果を検証するための実践手順です。
待ち時間は並行化し、密結合の作業は直列にする
独立した待ちを重ね、密結合の作業は一列のまま進めます。
3条件を全て満たす時だけ分割する
独立して進められる他のサブタスクを待たずに進められます。
独立して承認できるファイル、テスト、再現手順で単独検証できます。
書き込み衝突が少ない担当が明確で、共有契約に衝突しません。
共有フィールドや権限を先に決め、1条件でも欠けたら直列に戻します。
推論の強度をリスクに合わせる
調査担当・軽量読み取り専用。位置、呼び出し、テストを探します。
実装担当・中量境界が明確で、単独検証できる実装を担当します。
上位担当・高負荷設計衝突、曖昧な要件、高コストの判断を担当します。
証拠は直送し、責任はメインに集約する
所有権を集中メインがタスク図、ファイル境界、承認を管理します。
証拠を直接渡す調査担当から必要な実装担当へ直接渡します。
コンテキストは必要な分だけ調査は新しい文脈で始め、必要な時だけ履歴を渡します。
境界を再確認ツール、安全、禁止変更、再委任禁止を明記します。
まず動かし、再現できる規律をSkillにする
実行実務で分割、引き継ぎ、承認を試します。
観察反復、衝突、手戻りを記録します。
定着役割、推論、文脈、境界を記録します。
再利用と改訂再利用し、結果から初期値を直します。
Eric氏はこの方法を provencher/codex-skills の orchestrate/SKILL.md に公開しています。
収支:待ちは減るが、Tokenは増えやすい
削減できること無駄な待ち、調査の盲点、一発で誤るリスク。
増える傾向総作業量、文脈の読み込み、調整、手戻り。
密結合の作業は1人に任せ、独立進行・単独検証・低衝突を満たす時だけチームにします。
3体のエージェントで同時修正、なぜ遅くなる?
ユーザー今日中にCSVエクスポートを終わらせてください。
調整役エージェント3体で同時にやれば、速くなります。
タスクを分解する前に、人数だけ増えました。
実装担当権限も変更した?
調整役やめましょう。あいまいな仕様を3つに複製しただけでした。
境界のない並行処理は、衝突を早めるだけです。
共有契約を先に決めてから、独立して並行作業します。
低リスクは狭い調査、高リスクは高いあいまいさと高コストに割り当てます。
調査担当入口とテスト位置は、そのまま渡します。
調整役情報は近道で流し、責任は私が持ちます。
分離するのは作業であり、最終責任ではありません。
ユーザー納品が速くなりましたね。
調整役ただしトークンは増えます。成功したルールをスキルに書き込みます。
節約できるのは無駄な待ち時間です。独立・検収可能・低衝突の仕事だけがチーム編成に値します。
