すべての投稿に戻る
公開日 · 著者 Renaud Deraison

Bromure Agentic Coding に Fusion モードが加わりました

複数モデルのパネルを、判定し合成すれば、どの単一フロンティアモデルにも勝てる。OpenRouter はそんな目を引く結果を公表しました。私たちはその手法をゼロから Bromure Agentic Coding の中に作り直しました — OpenRouter を経由するものは何もありません。製品はすでに、あなたのコーディングエージェントとモデル API のあいだのワイヤ上に座っているので、バージョン 3.0 では私たち自身の Fusion をまさにそこに置きました。タイトルバーの ⚡ をオンにすれば、すべてのプロンプトが最大 3 つのモデルで同時に答えられます。judge (判定役) が突き合わせ、synthesizer (合成役) が結果を書き上げ、まるで 1 つのモデルが書いたかのように Claude Code へ一つの答えが返されます。あなた自身のキーやサブスクリプションで動き、各 leg はすべてトレースに記録されます。

先月 OpenRouter は、私たちがすぐにでも欲しくなるものを示しました。複数モデルの パネル — 一つがパネルを判定し、もう一つが評決を書き上げる — が、 ボード上で最強の単一モデルに勝つのです。いくつかのモデルに同時に尋ね、 その答えを一つに合成します。彼らの目玉となった fusion は、ある深掘り リサーチ・ベンチマークで 69.0% に達しました。Fable 5 が単独では 65.3% だったところを、です。私たちは彼らのサービスにつないだのではありません。 この手法を私たち自身で作り直しました — 一段下に、あなたのコーディング エージェントがすでに会話を通しているプロキシの中に。Bromure Agentic Coding 3.0 は、それを一つの稲妻として出荷します。

仕組みはシンプルです。プロンプトを複数のモデルへ並列で送る。judge がすべての 答えを読み、合意点、衝突点、それぞれのモデルだけが捉えたもの、全員が見落とした ものに印を付ける。次に synthesizer が、下書きを目視で見比べるのではなく、 その分析から最終的な答えを書く。 OpenRouter の Fusion 解説記事 が、私たちが作り直したその仕組みを明快に説明しており、その伸び幅の大きさには驚かされました。あるケースでは、 あるモデルをそれ自身と組ませても、それでもスコアが上がったのです。伸びの ほとんどは、その合成ステップから来ています。

私たちには置きたい場所が分かっていました。Bromure Agentic Coding は、あなたのエージェントを使い捨ての Linux VM の中で 動かし、その間ホスト側の中間者プロキシが、それが api.anthropic.com に送る すべてのバイトを見張っています。私たちはすでにワイヤを押さえているので、 パネルはまさにそこで動きます。あなたのコード、プロンプト、認証情報が、 他人のルーターを経由して回り道することのない場所で、です。Fusion はその プロキシのふるまいの一つです。それは外向きの Claude リクエストを一つ、手早い 委員会の会議に変え、エージェントが期待したワイヤ形式で一つの答えを返します。 Claude Code は、GPT-5.5 と Grok がその部屋にいたことを決して知りません。

一つの稲妻。

Fusion の操作はちょうど一つだけ、エージェントセッションウィンドウのタイトル バーにあります。

Fusion の稲妻が暗い灰色で解除状態になっているエージェントセッションのタイトルバー
解除 · 灰色の稲妻
Fusion の稲妻が黄色に灯って起動状態になっているエージェントセッションのタイトルバー
起動 · 黄色の稲妻
Fusion の UI のすべて: セッションタイトルバーの ⚡ です。左では解除状態に座っています — 暗い灰色に塗りつぶされた稲妻で、このセッションで利用可能だがオフ。右では黄色に灯って起動状態です。2 つ未満のモデルしか設定されていない場合、稲妻は中空で無効になります。1 つだけのパネルはただのモデルだからです。アドレスバーの 192.168.64.2 は、エージェントがその中で動くプロファイル別の VM で、それが Fusion の座るワイヤです。

Fusion は Claude Code のセッション上で動きます。なぜなら、それは Claude の /v1/messages API を傍受するからです — ファンアウトして再構成するやり方を 心得たリクエストです。プロファイルの Agents タブで認証情報付きのエージェントを 2 つか 3 つ設定し、どのプロバイダーがパネルに加わり、どのモデルが判定するかを 選べば、それ以降あなたが触れるのは稲妻だけです。灰色はオフ、素の Claude。 黄色はオン、委員会が招集されます。稲妻は実行時のフラグなので、再起動なしで セッションの途中で切り替えられます。

ワイヤ上で何が起きるか。

稲妻が黄色のとき、プロキシはエージェントのリクエストを Anthropic に転送する だけにとどまりません。下記のシーケンスを実行します。

ワイヤ上 · プロファイル別 VM の MITM プロキシの中CLAUDE CODE (VM 内)POST /v1/messages model: claude-opus-4-8 stream: true tools: [bash, edit, …] 認識: 1 モデルLEG A · Claude · 最初に尋ねる、ツールそのままapi.anthropic.com · 非ストリーミング · 本物のリクエストTEXT ターンなら → 融合 · TOOL ターンなら → 素通しパネル · 同じ質問を並列でLeg A · Claude下書き (すでに手元に)Leg B · GPT-5.5api.openai.comLeg C · Grokapi.x.aiJUDGE · Opus 4.8下書きを分析する、投票はしない合意 · 衝突独自 · 盲点JSON 分析を出す、散文ではないSYNTHESIZER · Opus 4.8一つの答えを書く、上の分析に根ざして再包装 · Claude 自身の id / model / usage 封筒、中身は融合テキストに差し替えAnthropic SSE または単一の JSON ボディとしてストリームバック、エージェントが求めた形でセッショントレース · 各 leg は名前付きの SubCall: anthropic · openai · x.ai · judge · synth (エージェントが発行したのは 1 コール)一つの答えをエージェントへ返す
あなたに語りかけるターンに対する Fusion の経路。プロキシはまず Claude に尋ね、エージェントの本物のリクエストをツールごと運びます。プレーンなテキストの答えなら、残りのパネルにも同じ質問を出し、すべての下書きを judge に渡して構造化された分析を返させ、synthesizer にその分析から一つの最終的な答えを書かせます。次にプロキシは結果を Claude 自身のメッセージ封筒に再び包み、エージェントが求めたとおりの形でストリームバックします。3 つのモデルが答え、エージェントが読むのは一つです。

ある一つの細部が、これを単なるデモと分けています。プロキシはまず Claude に尋ね、 しかも丸ごと尋ねます。Leg A はエージェントの本物のリクエストを運び、ツールも 完全なトランスクリプトもそのまま、本物の認証情報で Anthropic に送られます。 プロキシはそれを強制的に非ストリーミングにし、何をするか決める前に答え全体を 読めるようにします。ルーティングの判断は、その最初の答えにかかっています。

コーディングエージェントが問題を変える。

コーディングエージェントの中の Fusion は、チャットボックスの中の Fusion とは 別の問題を突きつけます。そしてここが、私が一番誇りに思っている部分です。

チャット製品では、ほとんどのターンは人間が読むための散文で、まさに judge と synthesize が作られた相手です。しかし エージェント型 のループでは、ほとんどの ターンはアクションです。bashnpm test で呼べ、このファイルを edit しろ。 そのそれぞれが、SDK が実行を待っている構造化された入力を持つ tool_use ブロックです。そこで 3 つのモデルの意見を一段落に融合すれば、あなたはツール コールを削除したことになり、ループは止まります。Fusion は動く前に確かめます。 まず Claude に尋ねてターンを検査し、それから答えのでルーティングします。

Claude が最初に答える非ストリーミング · ツールそのままターンを検査するどんな形?TOOL ターン → 素通しstop_reason: tool_use (または任意の tool_use ブロック)Claude の本物のレスポンスを一字一句再生GPT なし · judge なし · synth なし · ループ無傷TEXT ターン → 融合stop_reason: end_turn、プレーンなテキストの答えパネルを回す · 判定する · 合成するあなたに語りかけるターン
ターンルーターは Claude の最初の答えを読みます。ツールターン — tool_use ブロックや tool_use の停止理由を持つもの — はアクションなので、Fusion は Claude の本物のレスポンスを一字一句そのまま再生し、パネルを飛ばします。GPT コールなし、judge なし、synthesis なし、コマンドを剥ぎ取るリスクなし。プレーンなテキストターン — あなたに語りかける類のもの — だけが、委員会の全工程にかけられます。ルーターはエージェント型ループを無傷に保ちます。

セッションのほとんどを通じて、Fusion は静かにしています。テストを回す、失敗を 読む、ファイルにパッチを当てる、という長い区間はすべてツールターンで、全速力で そのまま手渡されます。委員会が招集されるのは、Claude が行動するのではなく説明 するときです。アーキテクチャの質問、見つけたことの最終的なまとめ。それらの ターンでこそ、2 つ目、3 つ目の意見が元を取ります。

judge は投票するのではなく分析する。

「3 つのモデルを使う」の素朴な版は、多数決か、モデルに「どれが一番?」と尋ねて 勝者を転送することです。どちらもシグナルの大部分を捨てています。パネルが 1 つの モデルに勝つのは、モデルたちが違う場所で間違えるからで、投票はそれを数える ことしかできません。

judge は答えを生み出しません。質問とラベル付きのすべての下書きを渡され、 構造化された分析を返し、それ以外は何も出しません。

{
  "consensus":   [ "答えが一致している点" ],
  "conflicts":   [ { "topic": "...", "positions": "誰が何を言っているか" } ],
  "unique":      [ { "source": "プロバイダー名", "insight": "..." } ],
  "blind_spots": [ "答えが見落とした、または間違えたこと" ],
  "verdict":     "どの答えが最も強くてなぜか、一文で"
}

その JSON こそがパネルの本当の成果物です。synthesizer は質問とその JSON を取り、 最終的な答えを書きます。衝突は正しさへ向けて解消し、独自の知見を織り込み、 盲点を埋め、パネルについては一切触れません。ユーザーに対しては、ただ最初から 答えを知っていたかのように書きます。

Fusion は judge と synthesizer をどちらもデフォルトで Opus に固定します。分析と 書き上げは品質の要となるステップなので、Fusion はエージェントが要求したもの ではなく、強いモデルでそれらを動かします。judge は Fusion ペインで変更できます。 デフォルトを強いモデルにしているのは意図的です。

Fable いらずの Fable。

コーディングエージェントの正直なデモはビルドです。私たちは同じプロンプトを、 単一の強いモデルとパネルに渡しました。稲妻は灰色、それから黄色、そしてそれぞれが 生み出したものをそのまま出荷しました。

Tron にインスパイアされた、美しくデザインされた WebGL ページで、ユーザー エージェントをエコーバックする node のウェブサイトを書いてください。ページは 速くて動的であるべきで、訪問者をあっと言わせるべきです。

⚡ 灰色 · 単一モデル (Opus 4.8)
⚡ 黄色 · Fusion パネル
同じプロンプト、同じエージェント、一つのトグル。左、稲妻は灰色: 単一のモデル、Opus 4.8。右、稲妻は黄色: Claude + GPT-5.5 + Grok のパネルを Opus が判定し合成。Fusion はファイル編集には手をつけません — それらはツールターンでそのまま素通しされます — エージェントが声に出して推論するターンだけに手をかけます。訪問者をあっと言わせるページを着地させたのは、パネルのほうです。

一つのプロンプトだけでは、それ自体は何も証明しません。OpenRouter はきちんとした 測定を行いました。100 個の深掘りリサーチタスク、何十もの重み付き基準、最良の単一 モデルを数ポイント上回るパネル、その中には Fable 5 もありました。仕組みは同じで、 あなた自身のモデルに向けてあります。Claude + GPT-5.5 + Grok のパネルを Opus が 判定し合成すれば、コーディングセッションの散文ターンにおいて、単独で答えるどの 一つにも勝ちます。Fable も含めて、です。部屋に Fable を置かずに、Fable 級の 出力が手に入ります。

モデルは単純ななぞなぞでつまずくことで有名です。パネルは、明白な間違いがあなたに 届く前に捕まえます。

Fusion を起動した Claude Code のセッション: 「strawberry」に r が 3 つあることを正しく数え、50 メートル先の洗車場に歩くべきか車で行くべきかについて慎重な答えを出している
「LLM は本当は推論できない」という千ものスレッドを生んだ 2 つの質問への Fusion。文字を数えるひっかけは正しく返ってきます — r は 3 つ、位置は 3、8、9 — そして 50 メートル先の洗車場に歩くべきか車で行くべきかという質問には、自信たっぷりの間違いではなく、慎重な答えが返ります。3 つのモデルが互いを突き合わせるので、弱い答えは生き残りません。

すべてはトレースの中に。

ここが、Bromure だけが主張できる部分で、それは Fusion がどこに住んでいるかから 来ています。エージェントは VM の中に座り、すべての外向きコールはホストプロキシを 通るので、Fusion のサイドコールは、エージェントから見えないときでも見えたまま です。ホストは各 leg — Claude の下書き、GPT の下書き、Grok の下書き、judge の パス、synthesis のパス — を記録し、エージェントがやった他のすべてと同じ セッショントレースに収めます。

一つの融合されたターン · 記録されたとおりleghostrolewireA · Claudeapi.anthropic.comdraft200 · 2.1 KBB · GPT-5.5api.openai.comdraft200 · 1.8 KBC · Grokapi.x.aidraft200 · 1.6 KBjudgeapi.anthropic.comJSON analysis200 · 0.9 KBsynthapi.anthropic.comfinal answer200 · 2.4 KBエージェントの視点: Anthropic へ 1 リクエスト · トレースの視点: 5 つの上流コール、すべて帰属付き
管理者が見る、一つの融合されたターンの様子。エージェントは Anthropic に 1 コールしたと信じています。トレースは 5 つを記録します: Claude の下書き、api.openai.com での GPT の下書き、api.x.ai での Grok の下書き、それから judge のパスと synthesis のパス。Fusion はエージェントに対して透過で、セッションをレビューする者に対しては読み取り可能です — これは、私たちのエンタープライズ向け投稿が繰り返し戻ってくるハウススタイルです。

サイドコールを隠すモデル融合ルーターは、エンタープライズに対して、あなたの プロンプトとコードの監査されていない複製を、記録なしでさらに 2 つのベンダーへ ファンアウトすることになります。Fusion はファンアウトし、すべてのコールを書き 留めます。あなたのセキュリティチームは、なぜ api.openai.com がプロンプトを 受け取ったのかを問うことができ、その答えをトレースの一行から読み取れます。 稲妻が黄色だったから、です。

Fusion の代価。

Fusion はあなたの時間を費やします。融合されたテキストターンはパネルを回し、 それからOpus への追加コールを 2 回 — 一つは judge の分析、一つは synthesis — 行います。それらは Claude 自身の答えのあとに順番に走ります。融合するか決める 前に、プロキシがその答えを読まなければならないからです。融合されたターンは プレーンなものより遅くなります。トレードは限られたものです。あなたに物事を 説明するターンで、より良い答えのために少しだけ長く待つ、それだけです。だから こそ Fusion は、デフォルトではなく、あなたがオンにする稲妻なのです。だからこそ、 散文ターンに手をかけ、ツールループには手をつけないのです。

稲妻をオンに。

Bromure Agentic Coding 3.0 は、すべてのエージェントセッションの タイトルバーに Fusion を置きます。2 つか 3 つのエージェントを設定し、judge を 選べば、⚡ は中空から灰色へ、そして委員会が欲しいときには黄色へと変わります。 あなたのコーディングエージェントは、まるで一つのモデルと話しているかのように ふるまい続けます。なぜなら、それが分かる限りでは、実際にそうだからです。トレースが、 それぞれの答えの背後にある 5 つのコールを見せてくれます。