Volver a todas las publicaciones
Publicado el · por Renaud Deraison

Bromure Agentic Coding ahora incluye el modo Fusion

OpenRouter publicó un resultado llamativo: un panel de modelos, juzgado y sintetizado, supera a cualquier modelo de frontera por sí solo. Reimplementamos esa técnica desde cero dentro de Bromure Agentic Coding — nada pasa por OpenRouter. Como el producto ya se sienta sobre el cable, entre tu agente de codificación y las APIs de los modelos, la versión 3.0 pone nuestro propio Fusion justo ahí. Pulsa el ⚡ de la barra de título y hasta tres modelos responden cada prompt a la vez. Un juez los reconcilia, un sintetizador escribe el resultado, y Claude Code recibe una sola respuesta como si la hubiera escrito un único modelo. Tú aportas tus propias claves o suscripciones, y la traza registra cada leg.

El mes pasado OpenRouter nos enseñó algo que quisimos al instante: un panel de modelos, con uno juzgando al panel y otro redactando el veredicto, supera al mejor modelo individual del tablero. Pregunta a varios modelos a la vez y sintetiza sus respuestas en una sola. Su fusión estrella alcanzó el 69,0 % en un benchmark de investigación profunda donde Fable 5, en solitario, sacó un 65,3 %. No nos conectamos a su servicio: reimplementamos la técnica nosotros mismos, una capa más abajo, en el proxy a través del cual tu agente de codificación ya está hablando. Bromure Agentic Coding 3.0 lo entrega como un único rayo.

El mecanismo es sencillo. Envías el prompt a varios modelos en paralelo. Un juez lee cada respuesta y marca los acuerdos, los conflictos, lo que acertó cada modelo en solitario y lo que se les escapó a todos. Luego un sintetizador escribe la respuesta final a partir de ese análisis, en vez de juzgar los borradores a ojo. El artículo de OpenRouter sobre Fusion explica el mecanismo que reconstruimos, y el tamaño de la mejora nos sorprendió: en un caso, emparejar un modelo consigo mismo aun así elevó la puntuación. La mayor parte de la ganancia viene de ese paso de síntesis.

Sabíamos dónde lo queríamos. Bromure Agentic Coding ejecuta tu agente en una VM Linux desechable mientras un proxy man-in-the-middle en el host vigila cada byte que envía a api.anthropic.com. Ya estamos sobre el cable, así que el panel corre justo ahí, donde tu código, tus prompts y tus credenciales nunca dan un rodeo por el router de nadie más. Fusion es un comportamiento de ese proxy. Convierte una petición saliente de Claude en una rápida reunión de comité y devuelve una sola respuesta con la forma de cable que el agente esperaba. Claude Code nunca se entera de que GPT-5.5 y Grok estaban en la sala.

Un solo rayo.

Fusion tiene un único control, en la barra de título de la ventana de la sesión del agente.

Barra de título de la sesión del agente con el rayo de Fusion en gris oscuro, desactivado
desactivado · rayo gris
Barra de título de la sesión del agente con el rayo de Fusion encendido en amarillo, activado
activado · rayo amarillo
Toda la interfaz de Fusion: el ⚡ en la barra de título de la sesión. A la izquierda está desactivado, un rayo relleno en gris oscuro, disponible esta sesión pero apagado. A la derecha se enciende en amarillo, activado. Con menos de dos modelos configurados el rayo se vuelve hueco y se deshabilita, porque un panel de uno no es más que un modelo. El 192.168.64.2 de la barra de direcciones es la VM por perfil dentro de la cual corre el agente, y ese es el cable sobre el que se sienta Fusion.

Fusion corre sobre la sesión de Claude Code, porque intercepta la API /v1/messages de Claude, la petición que sabe desplegar en abanico y volver a ensamblar. Configura dos o tres agentes con credenciales en la pestaña Agents del perfil, elige qué proveedores se unen al panel y qué modelo juzga, y a partir de ahí lo único que tocas es el rayo. Gris significa apagado, Claude a secas. Amarillo significa encendido, el comité se reúne. El rayo es un flag en tiempo de ejecución, así que puedes conmutarlo a mitad de sesión sin reiniciar.

Qué ocurre sobre el cable.

Con el rayo en amarillo, el proxy hace más que reenviar la petición del agente a Anthropic. Corre la secuencia de abajo.

SOBRE EL CABLE · dentro del proxy MITM de la VM por perfilCLAUDE CODE (en la VM)POST /v1/messages model: claude-opus-4-8 stream: true tools: [bash, edit, …] cree: un modeloLEG A · Claude · preguntado PRIMERO, tools intactosapi.anthropic.com · sin streaming · la petición realsi es un turn de TEXTO → fusionar · si es de TOOL → passthroughEL PANEL · misma pregunta, en paraleloLeg A · Claudeborrador (ya en mano)Leg B · GPT-5.5api.openai.comLeg C · Grokapi.x.aiJUEZ · Opus 4.8analiza los borradores, no votaconsenso · conflictosúnico · puntos ciegosemite análisis JSON, no prosaSINTETIZADOR · Opus 4.8escribe UNA respuesta, ancladaen el análisis de arribaREENVOLVER · el propio sobre de id / model / usage de Claude, contenido cambiado por el texto fusionadodevuelto en streaming como SSE de Anthropic o un único cuerpo JSON, la forma que el agente pidióTRAZA DE LA SESIÓN · cada leg es un SubCall con nombre: anthropic · openai · x.ai · judge · synth (el agente emitió una sola llamada)una respuesta de vuelta al agente
El camino de Fusion para un turn que habla contigo. El proxy le pregunta a Claude primero, llevando la petición real del agente con sus tools. Ante una respuesta de texto plano, plantea la misma pregunta al resto del panel, entrega cada borrador a un juez que devuelve un análisis estructurado, y deja que un sintetizador escriba la única respuesta final a partir de ese análisis. Luego el proxy reenvuelve el resultado en el propio sobre de mensaje de Claude y lo devuelve en streaming con la forma que el agente pidió. Respondieron tres modelos, y el agente lee uno.

Un detalle separa esto de un demo: el proxy le pregunta a Claude primero, y se lo pregunta entero. El Leg A lleva la petición real del agente, con tools y la transcripción completa intactas, enviada a Anthropic con la credencial real. El proxy lo fuerza a no hacer streaming para poder leer la respuesta entera antes de decidir qué hacer. La decisión de enrutamiento depende de esa primera respuesta.

Un agente de codificación cambia el problema.

Fusion dentro de un agente de codificación plantea un problema distinto de Fusion dentro de un chat, y esta es la parte de la que más orgulloso estoy.

En un producto de chat, casi todos los turns son prosa para que la lea un humano, que es exactamente para lo que se diseñó juzgar-y-sintetizar. En un bucle agéntico, la mayoría de los turns son acciones: llamar a bash con npm test, editar este archivo. Cada uno es un bloque tool_use con una entrada estructurada que el SDK está esperando para ejecutar. Fusiona ahí las opiniones de tres modelos en un párrafo y acabas de borrar la llamada a la tool, y el bucle se atasca. Fusion comprueba antes de actuar. Le pregunta a Claude primero para poder inspeccionar el turn, y luego enruta según la forma de la respuesta:

Claude responde primerosin streaming · tools intactosinspeccionar el turn¿qué forma?TURN DE TOOL → passthroughstop_reason: tool_use (o cualquier bloque tool_use)repite la respuesta real de Claude, al pie de la letrasin GPT · sin juez · sin synth · bucle intactoTURN DE TEXTO → fusionarstop_reason: end_turn, respuesta de texto planocorre el panel · juzga · sintetizael turn que habla contigo
El enrutador de turns lee la primera respuesta de Claude. Un turn de tool, cualquier cosa con un bloque tool_use o un stop reason tool_use, es una acción, así que Fusion repite la respuesta real de Claude al pie de la letra y se salta el panel: sin llamada a GPT, sin juez, sin síntesis, sin riesgo de cargarse el comando. Un turn de texto plano, el tipo que habla contigo, recibe el comité completo. El enrutador mantiene el bucle agéntico intacto.

Durante la mayor parte de una sesión Fusion permanece callado. El largo tramo de correr-tests, leer-fallo, parchear-archivo es todo turns de tool, pasados directamente a toda velocidad. El comité se reúne cuando Claude explica en vez de actuar: la pregunta de arquitectura, el resumen final de lo que encontró. Una segunda y una tercera opinión rinden en esos turns.

El juez analiza en vez de votar.

La versión ingenua de «usa tres modelos» es un voto por mayoría, o preguntarle a un modelo «¿cuál es mejor?» y reenviar al ganador. Ambas tiran a la basura la mayor parte de la señal. Un panel supera a un solo modelo porque los modelos se equivocan en sitios distintos, y un voto solo sabe contarlos.

El juez no produce ninguna respuesta. Dada la pregunta y cada borrador etiquetado, devuelve un análisis estructurado y nada más:

{
  "consensus":   [ "puntos en los que las respuestas coinciden" ],
  "conflicts":   [ { "topic": "...", "positions": "quién dice qué" } ],
  "unique":      [ { "source": "nombre del proveedor", "insight": "..." } ],
  "blind_spots": [ "cosas que las respuestas omitieron o erraron" ],
  "verdict":     "una frase sobre qué respuesta es la más fuerte y por qué"
}

Ese JSON es el verdadero producto del panel. El sintetizador toma la pregunta y ese JSON y escribe la respuesta final: resuelve los conflictos hacia la corrección, incorpora los insights únicos, cubre los puntos ciegos y no dice nada del panel. Le escribe al usuario como si hubiera sabido la respuesta desde el principio.

Fusion fija tanto al juez como al sintetizador a Opus por defecto. El análisis y la redacción son los pasos críticos para la calidad, así que Fusion los corre en el modelo fuerte en vez de en el que pidió el agente. Puedes cambiar el juez en el panel de Fusion. Lo dejamos en el modelo fuerte a propósito.

Calidad Fable, sin Fable.

Para un agente de codificación, el demo honesto es una build. Le dimos el mismo prompt a un único modelo fuerte y al panel, con el rayo gris y luego con el rayo amarillo, y enviamos lo que produjo cada uno:

Escribe una web en node que devuelva el user agent en una página WebGL bellamente diseñada e inspirada en Tron, rápida y dinámica, que debe deslumbrar al visitante.

⚡ gris · modelo único (Opus 4.8)
⚡ amarillo · panel Fusion
Mismo prompt, mismo agente, un solo conmutador. A la izquierda, el rayo gris: un único modelo, Opus 4.8. A la derecha, el rayo amarillo: un panel de Claude + GPT-5.5 + Grok, juzgado y sintetizado por Opus. Fusion deja en paz las ediciones de archivos, porque son turns de tool pasados directamente, y solo trabaja los turns en los que el agente razona en voz alta. La página del panel es la que deslumbra al visitante.

Un solo prompt no demuestra nada por sí mismo. OpenRouter hizo la medición de verdad: cien tareas de investigación profunda, docenas de criterios ponderados, un panel que aterriza varios puntos por encima del mejor modelo individual, Fable 5 entre ellos. El mecanismo es el mismo, apuntado a tus propios modelos. Un panel de Claude + GPT-5.5 + Grok, juzgado y sintetizado por Opus, supera a cualquiera de ellos respondiendo en solitario en los turns de prosa de una sesión de codificación, Fable incluido. Obtienes salida de la clase de Fable sin Fable en la sala.

Los modelos son famosos por meter la pata en acertijos sencillos. El panel atrapa los errores obvios antes de que te lleguen.

Una sesión de Claude Code con Fusion activado: cuenta correctamente tres erres en «strawberry» y da una respuesta mesurada sobre si caminar o conducir a un lavadero de coches a 50 metros
Fusion ante las dos preguntas que lanzaron mil hilos de «los LLM no razonan de verdad». La trampa de contar letras vuelve correcta, tres erres en las posiciones 3, 8, 9, y la pregunta de si caminar o conducir recibe una respuesta mesurada en vez de una confiada y equivocada. Tres modelos se comprueban entre sí, así que las respuestas débiles no sobreviven.

Todo está en la traza.

Esta es la parte que solo Bromure puede reclamar, y viene de dónde vive Fusion. El agente está dentro de una VM y cada llamada saliente pasa por el proxy del host, así que las llamadas laterales de Fusion siguen siendo visibles aun cuando el agente no las ve. El host registra cada leg, el borrador de Claude, el borrador de GPT, el borrador de Grok, la pasada del juez, la pasada de síntesis, en la misma traza de la sesión que todo lo demás que hizo el agente.

UN TURN FUSIONADO · tal como queda registradoleghostrolcableA · Claudeapi.anthropic.comborrador200 · 2.1 KBB · GPT-5.5api.openai.comborrador200 · 1.8 KBC · Grokapi.x.aiborrador200 · 1.6 KBjudgeapi.anthropic.comanálisis JSON200 · 0.9 KBsynthapi.anthropic.comrespuesta final200 · 2.4 KBvista del agente: 1 petición a Anthropic · vista de la traza: 5 llamadas upstream, todas atribuidas
Lo que ve un administrador para un solo turn fusionado. El agente cree que hizo una sola llamada a Anthropic. La traza registra cinco: un borrador de Claude, un borrador de GPT en api.openai.com, un borrador de Grok en api.x.ai, y luego una pasada de juez y una de síntesis. Fusion es transparente para el agente y legible para quien revise la sesión, el estilo de la casa al que nuestros posts de empresa no dejan de volver.

Un router que fusiona modelos y oculta sus llamadas laterales le entregaría a una empresa una copia sin auditar de sus prompts y su código, desplegada en abanico a dos proveedores más sin registro alguno. Fusion despliega en abanico y anota cada llamada. Tu equipo de seguridad puede preguntar por qué api.openai.com recibió un prompt y leer la respuesta en una fila de la traza: el rayo estaba en amarillo.

El precio de Fusion.

Fusion te cuesta tiempo. Un turn de texto fusionado corre el panel y luego hace dos llamadas extra a Opus, una para el análisis del juez y otra para la síntesis. Corren en secuencia, después de la propia respuesta de Claude, porque el proxy tiene que leer esa respuesta antes de decidir fusionar. Un turn fusionado es más lento que uno normal. El intercambio es estrecho: en los turns que te explican cosas, esperas un poco más por una respuesta mejor. Por eso Fusion es un rayo que pulsas en vez de un valor por defecto, y por eso toca los turns de prosa y deja en paz el bucle de tools.

Pulsa el rayo.

Bromure Agentic Coding 3.0 pone Fusion en la barra de título de cada sesión de agente. Configura dos o tres agentes, elige un juez, y el ⚡ pasa de hueco a gris, y luego a amarillo cuando quieres el comité. Tu agente de codificación sigue comportándose como si hablara con un solo modelo, porque por lo que él sabe, así es. La traza muestra las cinco llamadas detrás de cada respuesta.