Retour à tous les articles
Publié le · par Renaud Deraison

Bromure Agentic Coding intègre désormais le mode Fusion

OpenRouter a publié un résultat frappant : un panel de modèles, arbitré puis synthétisé, bat n'importe quel modèle de pointe pris isolément. Nous avons réimplémenté cette technique de zéro à l'intérieur de Bromure Agentic Coding — rien ne transite par OpenRouter. Comme le produit se tient déjà sur le fil, entre votre agent de coding et les API des modèles, la version 3.0 place notre propre Fusion exactement là. Basculez le ⚡ dans la barre de titre et jusqu'à trois modèles répondent à chaque prompt d'un coup. Un juge les réconcilie, un synthétiseur rédige le résultat, et Claude Code récupère une réponse unique comme si un seul modèle l'avait écrite. Vous apportez vos propres clés ou abonnements, et la trace consigne chaque leg.

Le mois dernier, OpenRouter nous a montré quelque chose que nous avons voulu aussitôt : un panel de modèles, l'un arbitrant le panel et un autre rédigeant le verdict, bat le meilleur modèle pris seul sur le tableau. Il interroge plusieurs modèles d'un coup et synthétise leurs réponses en une seule. Leur fusion phare a atteint 69,0 % sur un benchmark de deep research là où Fable 5, seul, plafonnait à 65,3 %. Nous n'avons pas branché leur service : nous avons réimplémenté la technique nous-mêmes, une couche plus bas, dans le proxy par lequel votre agent de coding discute déjà. Bromure Agentic Coding 3.0 le livre sous la forme d'un unique éclair.

Le mécanisme est limpide. Vous envoyez le prompt à plusieurs modèles en parallèle. Un juge lit chaque réponse et marque les accords, les conflits, ce que chaque modèle a saisi à lui seul et ce qu'ils ont tous manqué. Un synthétiseur rédige ensuite la réponse finale à partir de cette analyse plutôt qu'en jaugeant les brouillons à l'œil. Le billet d'OpenRouter sur Fusion expose le mécanisme que nous avons reconstruit, et l'ampleur du gain nous a surpris : dans un cas, apparier un modèle avec lui-même relevait encore le score. L'essentiel du gain vient de cette étape de synthèse.

On savait où on voulait ça. Bromure Agentic Coding exécute votre agent dans une VM Linux jetable pendant qu'un proxy man-in-the-middle, sur l'hôte, surveille chaque octet envoyé à api.anthropic.com. On tient déjà le fil, alors le panel se déroule précisément là, où votre code, vos prompts et vos identifiants ne font jamais le détour par le routeur de quelqu'un d'autre. Fusion est un comportement de ce proxy. Il transforme une requête Claude sortante en une brève réunion de comité et renvoie une réponse unique dans la forme de fil que l'agent attendait. Claude Code n'apprend jamais que GPT-5.5 et Grok étaient dans la pièce.

Un seul éclair.

Fusion a un seul contrôle, dans la barre de titre de la fenêtre de session de l'agent.

Barre de titre de la session de l'agent avec l'éclair Fusion en gris foncé, désengagé
désengagé · éclair gris
Barre de titre de la session de l'agent avec l'éclair Fusion allumé en jaune, engagé
engagé · éclair jaune
Toute l'interface de Fusion : le ⚡ dans la barre de titre de la session. À gauche, il est désengagé, un éclair plein en gris foncé, disponible cette session mais éteint. À droite, il s'allume en jaune, engagé. Avec moins de deux modèles configurés, l'éclair devient creux et désactivé, car un panel d'un seul n'est qu'un modèle. Le 192.168.64.2 dans la barre d'adresse est la VM par profil dans laquelle l'agent s'exécute ; c'est le fil sur lequel Fusion se tient.

Fusion tourne sur la session Claude Code, puisqu'il intercepte l'API /v1/messages de Claude, la requête qu'il sait éclater puis recomposer. Vous configurez deux ou trois agents avec leurs identifiants dans l'onglet Agents du profil, choisissez quels fournisseurs rejoignent le panel et quel modèle arbitre, et à partir de là vous ne touchez plus que l'éclair. Gris veut dire éteint, Claude tel quel. Jaune veut dire allumé, le comité se réunit. L'éclair est un drapeau d'exécution : vous pouvez le basculer en cours de session sans redémarrage.

Ce qui se passe sur le fil.

Avec l'éclair au jaune, le proxy fait plus que transmettre la requête de l'agent à Anthropic. Il exécute la séquence ci-dessous.

SUR LE FIL · dans le proxy MITM de la VM par profilCLAUDE CODE (dans la VM)POST /v1/messages model: claude-opus-4-8 stream: true tools: [bash, edit, …] croit : un seul modèleLEG A · Claude · interrogé EN PREMIER, outils intactsapi.anthropic.com · sans streaming · la vraie requêtesi tour TEXTE → fusion · si tour OUTIL → passthroughLE PANEL · même question, en parallèleLeg A · Claudebrouillon (déjà en main)Leg B · GPT-5.5api.openai.comLeg C · Grokapi.x.aiJUGE · Opus 4.8analyse les brouillons, ne vote pasconsensus · conflitssingularités · angles mortsémet une analyse JSON, pas de la proseSYNTHÉTISEUR · Opus 4.8rédige UNE réponse, ancréedans l'analyse ci-dessusRÉ-EMBALLAGE · enveloppe id / modèle / usage propre à Claude, contenu remplacé par le texte fusionnérenvoyé en SSE Anthropic ou en un seul corps JSON, la forme que l'agent a demandéeTRACE DE SESSION · chaque leg est un SubCall nommé : anthropic · openai · x.ai · juge · synth (l'agent n'a émis qu'un appel)une réponse renvoyée à l'agent
Le chemin de Fusion pour un tour qui s'adresse à vous. Le proxy interroge Claude en premier, en portant la vraie requête de l'agent avec ses outils. Sur une réponse en texte simple, il pose la même question au reste du panel, remet chaque brouillon à un juge qui renvoie une analyse structurée, et laisse un synthétiseur rédiger l'unique réponse finale à partir de cette analyse. Le proxy ré-emballe ensuite le résultat dans l'enveloppe de message propre à Claude et le renvoie en streaming dans la forme que l'agent a demandée. Trois modèles répondent, et l'agent en lit une.

Un détail sépare cela d'une démo : le proxy interroge Claude en premier, et il l'interroge intégralement. Le leg A porte la vraie requête de l'agent, outils et transcript complet intacts, envoyée à Anthropic avec le vrai identifiant. Le proxy la force sans streaming pour pouvoir lire toute la réponse avant de décider quoi faire. La décision de routage repose sur cette première réponse.

Un agent de coding change le problème.

Fusion dans un agent de coding pose un problème différent de Fusion dans une boîte de chat, et c'est la partie dont je suis le plus fier.

Dans un produit de chat, la plupart des tours sont de la prose à lire par un humain, ce pour quoi juge-et-synthèse est fait. Dans une boucle agentique, la plupart des tours sont des actions : appeler bash avec npm test, modifier ce fichier. Chacune est un bloc tool_use avec une entrée structurée que le SDK attend pour s'exécuter. Fusionnez là les opinions de trois modèles en un paragraphe et vous avez supprimé l'appel d'outil : la boucle cale. Fusion regarde avant d'agir. Il interroge Claude en premier pour pouvoir inspecter le tour, puis route selon la forme de la réponse :

Claude répond en premiersans streaming · outils intactsinspecter le tourquelle forme ?TOUR OUTIL → passthroughstop_reason: tool_use (ou tout bloc tool_use)rejoue la vraie réponse de Claude, verbatimpas de GPT · pas de juge · pas de synth · boucle intacteTOUR TEXTE → fusionstop_reason: end_turn, réponse en texte simplelance le panel · juge · synthétisele tour qui s'adresse à vous
Le routeur de tours lit la première réponse de Claude. Un tour outil, tout ce qui comporte un bloc tool_use ou un stop reason tool_use, est une action : Fusion rejoue alors la vraie réponse de Claude verbatim et saute le panel : pas d'appel GPT, pas de juge, pas de synthèse, aucun risque d'amputer la commande. Un tour texte simple, celui qui s'adresse à vous, obtient le comité au complet. Le routeur garde la boucle agentique intacte.

Pendant l'essentiel d'une session, Fusion reste silencieux. La longue séquence lance-les-tests, lis-l'échec, patche-le-fichier n'est faite que de tours outils, transmis directement à pleine vitesse. Le comité se réunit quand Claude explique au lieu d'agir : la question d'architecture, le résumé final de ce qu'il a trouvé. Un deuxième et un troisième avis paient sur ces tours-là.

Le juge analyse au lieu de voter.

La version naïve de « utiliser trois modèles », c'est un vote à la majorité, ou demander à un modèle « lequel est le meilleur ? » et transmettre le vainqueur. Les deux jettent l'essentiel du signal. Un panel bat un seul modèle parce que les modèles se trompent à des endroits différents, et un vote ne fait que les compter.

Le juge ne produit aucune réponse. À partir de la question et de chaque brouillon étiqueté, il renvoie une analyse structurée et rien d'autre :

{
  "consensus":   [ "points sur lesquels les réponses s'accordent" ],
  "conflicts":   [ { "topic": "...", "positions": "qui dit quoi" } ],
  "unique":      [ { "source": "nom du fournisseur", "insight": "..." } ],
  "blind_spots": [ "choses que les réponses ont manquées ou ont eues fausses" ],
  "verdict":     "une phrase sur quelle réponse est la plus solide et pourquoi"
}

Ce JSON est le vrai produit du panel. Le synthétiseur prend la question et ce JSON et rédige la réponse finale : il résout les conflits vers la justesse, intègre les singularités, couvre les angles morts, et ne dit rien du panel. Il vous écrit comme s'il avait connu la réponse depuis le début.

Par défaut, Fusion épingle le juge comme le synthétiseur à Opus. L'analyse et la rédaction sont les étapes critiques pour la qualité, alors Fusion les exécute sur le modèle fort plutôt que sur ce que l'agent a demandé. Vous pouvez changer le juge dans le panneau Fusion. Le défaut, c'est le modèle fort, à dessein.

Fable sans Fable.

Pour un agent de coding, la démo honnête est un build. On a remis le même prompt à un seul modèle fort puis au panel, éclair gris puis éclair jaune, et on a livré ce que chacun a produit :

Écris en node un site web qui renvoie en écho le user agent dans une page WebGL magnifiquement conçue et inspirée de Tron, rapide et dynamique, qui doit épater le visiteur.

⚡ gris · modèle unique (Opus 4.8)
⚡ jaune · panel Fusion
Même prompt, même agent, un seul bascule. À gauche, l'éclair gris : un seul modèle, Opus 4.8. À droite, l'éclair jaune : un panel Claude + GPT-5.5 + Grok, arbitré et synthétisé par Opus. Fusion laisse les éditions de fichiers tranquilles, car ce sont des tours outils transmis directement, et ne travaille que les tours où l'agent raisonne à voix haute. La page du panel est celle qui épate le visiteur.

Un prompt ne prouve rien à lui seul. OpenRouter a fait la vraie mesure : une centaine de tâches de deep research, des dizaines de critères pondérés, un panel se posant plusieurs points au-dessus du meilleur modèle pris seul, Fable 5 compris. Le mécanisme est le même, pointé sur vos propres modèles. Un panel Claude + GPT-5.5 + Grok, arbitré et synthétisé par Opus, bat n'importe lequel d'entre eux répondant seul sur les tours de prose d'une session de coding, Fable compris. Vous obtenez du résultat de la classe de Fable, sans Fable dans la pièce.

Les modèles sont réputés se vautrer sur des énigmes simples. Le panel attrape les erreurs flagrantes avant qu'elles ne vous parviennent.

Une session Claude Code avec Fusion engagé : elle compte correctement trois r dans « strawberry » et donne une réponse mesurée sur l'opportunité de marcher ou de conduire jusqu'à une station de lavage à 50 mètres
Fusion sur les deux questions qui ont lancé un millier de fils « les LLM ne savent pas vraiment raisonner ». Le piège du comptage de lettres revient juste, trois r aux positions 3, 8, 9, et la question marcher-ou-conduire obtient une réponse mesurée à la place d'une réponse fausse et péremptoire. Trois modèles se contre-vérifient, alors les réponses faibles ne survivent pas.

Tout est dans la trace.

Voici la partie que seul Bromure peut revendiquer, et elle découle de l'endroit où vit Fusion. L'agent siège dans une VM et chaque appel sortant passe par le proxy de l'hôte, alors les appels annexes de Fusion restent visibles même quand l'agent ne peut pas les voir. L'hôte enregistre chaque leg, le brouillon Claude, le brouillon GPT, le brouillon Grok, la passe du juge, la passe de synthèse, dans la même trace de session que tout le reste de ce qu'a fait l'agent.

UN TOUR FUSIONNÉ · tel qu'enregistréleghôterôlefilA · Claudeapi.anthropic.combrouillon200 · 2.1 KBB · GPT-5.5api.openai.combrouillon200 · 1.8 KBC · Grokapi.x.aibrouillon200 · 1.6 KBjugeapi.anthropic.comanalyse JSON200 · 0.9 KBsynthapi.anthropic.comréponse finale200 · 2.4 KBvue de l'agent : 1 requête vers Anthropic · vue de la trace : 5 appels amont, tous attribués
La vue d'un administrateur sur un seul tour fusionné. L'agent croit avoir fait un appel à Anthropic. La trace en enregistre cinq : un brouillon Claude, un brouillon GPT sur api.openai.com, un brouillon Grok sur api.x.ai, puis une passe de juge et une passe de synthèse. Fusion reste transparent pour l'agent et lisible pour quiconque révise la session, la marque de fabrique sur laquelle nos billets entreprise reviennent sans cesse.

Un routeur qui fusionne les modèles en cachant ses appels annexes remettrait à une entreprise une copie non auditée de ses prompts et de son code, éclatée vers deux fournisseurs de plus sans aucune trace. Fusion éclate et écrit chaque appel. Votre équipe sécurité peut demander pourquoi api.openai.com a reçu un prompt et lire la réponse sur une ligne de la trace : l'éclair était au jaune.

Le prix de Fusion.

Fusion vous coûte du temps. Un tour texte fusionné lance le panel puis fait deux appels supplémentaires à Opus, un pour l'analyse du juge et un pour la synthèse. Ils s'exécutent en séquence, après la réponse propre de Claude, car le proxy doit lire cette réponse avant de décider de fusionner. Un tour fusionné est plus lent qu'un tour ordinaire. Le compromis est étroit : sur les tours qui vous expliquent les choses, vous attendez un peu plus longtemps pour une meilleure réponse. C'est pour ça que Fusion est un éclair que l'on bascule plutôt qu'un défaut, et pour ça qu'il touche les tours de prose et laisse la boucle d'outils tranquille.

Basculez l'éclair.

Bromure Agentic Coding 3.0 place Fusion dans la barre de titre de chaque session d'agent. Configurez deux ou trois agents, choisissez un juge, et le ⚡ passe de creux à gris, puis au jaune quand vous voulez le comité. Votre agent de coding continue de se comporter comme s'il parlait à un seul modèle, parce que, pour autant qu'il puisse en juger, c'est le cas. La trace montre les cinq appels derrière chaque réponse.