Fusion — マルチモデルパネル
フロンティアモデルはそれぞれ異なる形で失敗します。あるモデルが見逃すエッジケースを別のモデルが捉え、あるモデルが幻覚(ハルシネーション)で作り上げる API を、ほかの 3 つは頑として作り出さない、といった具合です。Fusion はその多様性を機能へと変えます。有効にすると、Claude Code セッションが投げるすべての質問が複数のモデルで同時に回答され、ジャッジモデルがそれらのドラフトの一致点、対立点、そして個々に光る点をマッピングし、その分析に裏打ちされた単一の統合回答が、まるで 1 つのモデルが書いたかのように Claude Code へ返されます。エージェントはパネルが招集されたことを一切知りません。
Fusion は完全にホスト側のプロキシ内で動作するため(コンセプトを参照)、VM 内では何も変わりません。エージェントのフラグも、ラッパースクリプトも、エージェントが反応できるような目に見えるレイテンシの発生源もありません。設定はワークスペースごとに Fusion 設定ペインで行い、有効化はセッションごとにセッションタイトルバーの稲妻ボタン(⚡)で行います。
メモ: Fusion は UI 上で BETA と表示されます。これは動作するプロトタイプです。仕組み自体は安定していますが、ジャッジのプロンプト、プロバイダーのバックエンド、そして失敗時の処理は依然として進化の途上にあります。運用に頼る前にベータ版の制限を参照してください。
Fusion の仕組み
Fusion は Claude Code セッションの Anthropic の /v1/messages エンドポイントへのトラフィックを傍受します。各リクエストは段階的に処理されます。
- レッグ A — Claude が最初に回答する。 ゲストの元のリクエストは変更なしで Anthropic へ送られます(完全な応答を検査できるよう、強制的に非ストリーミングとなります)。Claude Code セッションは常に fuse の一レッグです。
- ツールターンはそのまま通過する。 Claude の応答がツール呼び出しである場合 —「このファイルを読め」「このコマンドを実行しろ」など、ほとんどのターンがこれに該当するエージェント型コーディングでは一般的なケースです — その応答はそのままエージェントへ転送され、そのターンでは fusion がスキップされます。エージェント型ループが合成されたツール呼び出しによって中断されることは決してありません。
- テキストターンはファンアウトする。 Claude がプレーンテキストの回答を返したときにのみ Fusion が動作します。選択された他のすべてのプロバイダー — Codex(OpenAI)、Grok(xAI)、そしてオプションでオンデバイスのローカルモデル — が、同じ平坦化されたトランスクリプトを介して同じ質問を尋ねられます。
- ジャッジが全体像をマッピングする。 ジャッジモデルはすべてのドラフトを比較し、散文的な論評ではなく、構造化された JSON 分析 — コンセンサス、対立点、独自の洞察、盲点、そして判定 — を出力します。
- ジャッジが統合する。 同じジャッジモデルが続いて、いま生成したばかりの分析に裏打ちされた決定的な回答を書き上げます。
- 配信。 統合された回答は、エージェントが要求したのとまったく同じワイヤ形式(Anthropic SSE または JSON)で VM 内のエージェントにストリーミングで返されます。Claude Code から見れば、1 つのモデルが回答したように見えます。
いずれかの段階での失敗は、セッションを壊すのではなく、緩やかに劣化します。認証情報を解決できない、あるいはエラーやタイムアウトを起こしたレッグは、静かに fuse から除外されます。生き残った回答が 2 つ未満の場合は、Claude 自身の回答が変更なしで返されます。
ツールターン対テキストターン
ツールターンとテキストターンの区別こそが、Fusion をエージェント型作業にとって安全なものにしています。アクション(ツール呼び出し)は Claude が発行したとおりに正確に実行され、統合されるのは回答 — 説明、設計、レビュー、計画 — のみです。典型的なコーディングセッションではほとんどのターンがアクションであるため、Fusion の影響はモデルの多様性が最も重要となる部分、すなわち推論と結論に集中し、機械的なファイル編集には及びません。
各レッグのアイデンティティの出所
Fusion には独自の認証情報 UI がありません。各レッグは、ワークスペースの Agents タブがそのプロバイダー向けにすでに保持している認証情報を解決します。
- サブスクリプションモード — レッグはホストのサブスクリプションストアからライブの OAuth トークンを使用し、ホストが必要に応じてそれを更新します。Claude のサブスクリプショントークンには、Anthropic が要求する Claude Code アイデンティティのシステムブロックと OAuth ベータヘッダーが自動的に付与されます。
- API トークンモード — レッグはホスト側のトークンスワップマップにある実際の API キーを使用します(ゲストはおとり認証情報しか見ていません。認証情報を参照)。
- ローカルモデル — レッグはホスト上の推論エンジンを内部キーでターゲットにします(ローカル & ハイブリッド推論を参照)。
- Bedrock(AWS) — Bedrock モードの Claude エージェントは、ゲスト自身のリクエストを通じてのみ寄与します。個別の Bedrock fusion レッグは存在しません。
認証情報を解決できないレッグは、ログ行とともに除外され、エージェントにエラーが表面化することは決してありません。
要件
Fusion には少なくとも 2 つの使用可能なモデルが必要です。
- Claude Code エージェントが使用可能な認証情報を持っている限り、Claude Code セッションは常に 1 つのレッグとしてカウントされます。
- 各追加のクラウドレッグ — Codex(OpenAI)、Grok(xAI) — には、ワークスペースの Agents タブでその認証情報が設定されている必要があります。設定されるまで、Fusion ペイン内のその行はグレーアウトされ、ヒント — no cloud credential (configure it in Agents) が表示されます。
- Local model レッグには、Local Models ペインで少なくとも 1 つのモデルがダウンロードされている必要があります。それまでは、その行に — download one in Local Models と表示されます。
使用可能なモデルが 2 つ未満しか選択されていない場合、ペインにはヘルパーテキスト "Pick at least two models to fuse — your Claude Code session counts as one, so add one more (a cloud agent or a local model)." が表示され、セッションの稲妻ボタンは無効のままになります。
ワークスペースの Fusion を設定する
Fusion は、ワークスペースを編集ウィンドウの Fusion ペイン(サイドバー内の黄色い稲妻アイコン、BETA マーク付き)で設定します。フィールドごとのリファレンスは Fusion 設定にあります。このセクションではワークフローを解説します。
上のスクリーンショットでは、まだエージェントの認証情報が設定されていないため、Models to fuse の下のすべての行がグレーアウトされ、オレンジ色のヘルパーテキストが不足しているものを説明しています。Agents タブが認証情報を保持すると、行は選択可能になります。
- ワークスペースブラウザでワークスペースを開き、ワークスペースを編集をクリックして、Fusion ペインを選択します。
- Models to fuse の下で、パネルに回答を含めたいプロバイダーにチェックを入れます。Claude Code (Anthropic) — your session は常に 1 つのレッグです。Codex (OpenAI)、Grok (xAI)、および/または Local model を追加します。Local model 行には、インストール済みのローカルモデルのピッカーが含まれます。
- Judge の下で、ドラフトを検討して最終回答を書く Provider と Model を選択します。Provider リストには、使用可能な認証情報を持つすべてのクラウドプロバイダーと、少なくとも 1 つのローカルモデルがインストールされている場合の Local が表示されます。クラウドのモデルリストはプロバイダーの
/v1/modelsエンドポイントからライブで取得され、(default) エントリを含みます。取得に失敗した場合は、代わりに小さな組み込みリストが提供されます。ローカルジャッジは、インストール済みのカタログモデルから選択します。 - 保存をクリックします。
| 設定 | デフォルト | 備考 |
|---|---|---|
| Models to fuse | 選択なし | Claude Code は常にレッグです。他は認証情報(クラウド)またはインストール済みモデル(ローカル)が必要です。 |
| Judge → Provider | 最初の使用可能なプロバイダー | Local はローカルモデルがインストールされると表示されます。 |
| Judge → Model | (default) → claude-opus-4-8 | クラウドリストは /v1/models からライブで取得されます。 |
レッグのモデルが明示的にピン留めされていない場合、デフォルトは次のとおりです。Claude → claude-opus-4-8、Codex → サブスクリプションでは gpt-5.5、API キーでは gpt-5.5-2026-04-23、Grok → grok-build。
ヒント: ローカルモデルは、限界コストがゼロの有能な追加レッグになります。さらにジャッジ自体もローカルで実行でき、分析と統合の段階全体を Mac 上に保つことができます。ローカル & ハイブリッド推論を参照してください。
セッションで Fusion を有効にする
ペインを設定しても、Fusion は利用可能になるだけです。各セッションは、セッションウィンドウのタイトルバーにある稲妻ボタン(⚡)を介して、それを使うかどうかを決定します。
| 稲妻の見た目 | 状態 | ツールチップ |
|---|---|---|
| 中空、無効 | 利用不可 — 使用可能なモデルが 2 つ未満 | "To enable Fusion you need to have at least two models enabled." |
| 塗りつぶし、濃いグレー | 利用可能、未有効 | "Fusion available — disengaged. Click to engage multi-model synthesis." |
| 塗りつぶし、黄色 | 有効 | "Fusion engaged — answers are synthesized across your selected models. Click to disengage." |
稲妻をクリックして切り替えます。新しいセッションは常に未有効の状態で開始します。Fusion は明示的でセッションごとの選択であり、静かなデフォルトになることは決してありません。
コマンドラインから
アプリが実行されていれば、ウィンドウに触れることなく、実行中の VM で Fusion を切り替えられます。
bromure-cli vm fusion enable <vm>
bromure-cli vm fusion disable <vm>
<vm> は VM ID またはワークスペース名で、on/off/engage/disengage がエイリアスとして受け付けられます。bromure-cli vm のステータス出力には、engaged または available (off) と表示される fusion 行が含まれます。これらのコマンドはアプリの制御 API と通信するため、アプリ(またはそのエージェント)が実行されている必要があります。自動化 & CLIを参照してください。
Fusion のコスト
Fusion はモデルの使用量を増加させるため、その計算を理解したうえで有効化すべきです。Claude がプレーンテキストの回答を返すすべてのターンについて、次のとおりです。
- 選択された各追加レッグは、コンテキストとして同じ平坦化されたトランスクリプトを受け取り、1 回の完全なモデル呼び出しを行います。そのため、長い会話はすべてのレッグ、すべての統合ターンで比例してコストがかかります。
- ジャッジはさらに 2 回の呼び出しを行います。1 回は JSON 分析を生成するため、もう 1 回は統合を書くためです。どちらも出力トークンは 4,096 に制限されています。
したがって、4 つのレッグすべてを選択した場合、単一の統合回答には、すでに行っていた Claude の呼び出しに加えて最大 5 回のモデル呼び出しがかかります。ツール呼び出しターンはゼロ回の追加呼び出しにファンアウトするため、実際にはエージェント型セッションは最悪のケースよりもはるかに安価に保たれます。コーディングループのほとんどのターンはツール呼び出しだからです。
各レッグの課金方法はその認証情報に従います。API キーのレッグはトークンごとに課金され、サブスクリプションのレッグはサブスクリプションのクォータを消費し、ローカルレッグはオンデバイスの計算(およびラップトップではバッテリー)のみのコストがかかります。各レッグにはデフォルトで 600 秒のアップストリームタイムアウトがあります。
トレース内の Fusion
Fusion は意図的にエージェントには見えませんが、あなたには完全に見えます。すべてのアップストリームのサイド呼び出し — 各レッグ、ジャッジ分析、統合 — は、他の AI 交換と同様にトレースパイプラインによってキャプチャされ、ワークスペースのトレースレベルに従います(トレースを参照)。
実際上の帰結は次のとおりです。
- トレースインスペクタ(Window メニュー → Trace Inspector…)は、追加の交換をセッションの通常のトラフィックと並べて一覧表示し、キャプチャされたリクエストとレスポンスを解析された会話としてレンダリングします。各レッグが何を回答し、ジャッジが何を結論づけたかを正確に読むことができます。
bromure-cli trace hostnamesは、Anthropic のみと思っていたかもしれないセッションからapi.openai.comなどのホストに接続されたことを示します。組織がエグレスを監査している場合、統合されたセッションでは選択したすべてのプロバイダーのエンドポイントが表示されると考えてください。- Fusion はまた、
[fusion]プレフィックス付きでアプリの stderr に詳細にログを記録します。レッグが除外された理由を診断する際に役立ちます。
メモ: ワークスペースのデータ取り扱いルールが、どのプロバイダーがコードを閲覧できるかを制限している場合、選択された各レッグが会話の完全な平坦化トランスクリプトを受け取ることを忘れないでください。それに応じてレッグを選択してください。
環境変数によるオーバーライド
アプリの起動時に、いくつかのデフォルトを環境変数でオーバーライドできます。実験には有用ですが、日常的な設定として意図されたものではありません。
| 変数 | デフォルト | 効果 |
|---|---|---|
BROMURE_FUSION_TIMEOUT | 600 | レッグごとのアップストリームタイムアウト(秒)。 |
BROMURE_FUSION_OPENAI_MAX_TOKENS | 128000(GPT-5/o シリーズ)、16384(gpt-4o 以前) | OpenAI レッグの補完トークン上限。 |
ベータ版の制限
Fusion はベータ機能であり、知っておく価値のある鋭利なエッジがあります。
- Claude Code セッションのみ。 Fusion は Anthropic の
/v1/messagesPOST リクエストを傍受します。Codex または Grok を主要なエージェントとして実行するセッションは統合されません。それらのエージェントのトラフィックは通常どおり通過します。 - Claude 以外のレッグはツールなしで回答する。 Codex、Grok、ローカルレッグではツール定義が破棄され、それらは平坦化されたトランスクリプトに対して散文として回答します。それらのドラフトは統合に情報を提供しますが、それ自体がアクションを実行することはできません。
- ベストエフォートのサブスクリプションバックエンド。 Codex サブスクリプションのレッグは WebSocket 経由で ChatGPT バックエンドに乗り、Grok サブスクリプションのレッグは
cli-chat-proxy.grok.comを使用します。どちらも文書化されていないインターフェースです。エラーが発生した場合、レッグは fuse を失敗させるのではなく除外されます。 - 静かな劣化。 除外されたレッグやジャッジの失敗は、エージェントに警告することなく Claude 自身の回答(または生のドラフト)にフォールバックします。トレースと
[fusion]の stderr ログだけが、それが起きたことを確認できる場所です。 - レイテンシ。 統合されたテキストターンは、生き残った最も遅いレッグを待ってから、2 回のジャッジ呼び出しを行います。プレーンなセッションよりも回答ターンが目立って遅くなることを予期してください。ツールターンは影響を受けません。