Fusion — el panel multimodelo

Los modelos de frontera fallan de maneras distintas. Uno se salta un caso límite que otro pilla; uno alucina una API que los otros tres se niegan a inventar. Fusion convierte esa diversidad en una función: cuando está engranada, cada pregunta que hace tu sesión de Claude Code la responden varios modelos a la vez, un modelo juez cartografía dónde coinciden los borradores, dónde se contradicen y dónde brilla cada uno, y una única respuesta sintetizada — asentada en ese análisis — se entrega a Claude Code como si la hubiera escrito un solo modelo. El agente nunca sabe que se reunió un panel.

Fusion se ejecuta enteramente en el proxy del lado del anfitrión (ver Conceptos), así que dentro de la VM no cambia nada: sin opciones del agente, sin guiones envoltorio, sin ninguna fuente de latencia visible a la que el agente pudiera reaccionar. Se configura por máquina (un espacio de trabajo, en el editor de ajustes) en el panel de ajustes Fusion, y se engrana con el botón de rayo (⚡) de la barra de herramientas mientras una de las pestañas de terminal de la máquina está en pantalla.

Nota: Fusion está etiquetada BETA en la interfaz. Es un prototipo que funciona: el mecanismo es estable, pero los prompts del juez, los backends de los proveedores y el manejo de fallos siguen evolucionando. Ver Limitaciones de la beta antes de confiar en ella.

Cómo funciona Fusion

Fusion intercepta el tráfico de la sesión de Claude Code hacia el punto final /v1/messages de Anthropic. Cada petición se maneja por etapas:

  1. Rama A — Claude responde primero. La petición original del invitado va a Anthropic sin cambios (forzada a no ser en streaming, para que se pueda inspeccionar la respuesta completa). Tu sesión de Claude Code es siempre una de las ramas del fusible.
  2. Los turnos de herramienta pasan de largo. Si la respuesta de Claude es una llamada de herramienta — el caso común en la programación agéntica, donde la mayoría de los turnos son "lee este archivo", "ejecuta esta orden" — se reenvía al agente palabra por palabra y la fusión se salta en ese turno. El bucle agéntico nunca se rompe por una llamada de herramienta sintetizada.
  3. Los turnos de texto se abren en abanico. Solo cuando Claude devuelve una respuesta en texto llano entra Fusion. Todas las demás ramas seleccionadas — Codex (OpenAI), Grok (xAI), Kimi Code (Moonshot AI), Oh My Pi, y opcionalmente un modelo local — reciben la misma pregunta sobre la misma transcripción aplanada.
  4. El juez cartografía el terreno. El modelo juez compara todos los borradores y emite un análisis JSON estructurado — consenso, conflictos, aportaciones únicas, puntos ciegos, y un veredicto — en lugar de un comentario en prosa.
  5. El juez sintetiza. El mismo modelo juez escribe entonces la respuesta definitiva, asentada en el análisis que acaba de producir.
  6. Entrega. La respuesta fusionada se devuelve en flujo al agente de la VM exactamente en la forma que pidió (SSE de Anthropic o JSON). Desde el punto de vista de Claude Code, respondió un modelo.

Un fallo en cualquier etapa se degrada con suavidad en vez de romper la sesión: una rama cuya credencial no se puede resolver, o que da error o agota el tiempo, se descarta en silencio del fusible. Si sobreviven menos de dos respuestas, se devuelve la propia respuesta de Claude sin cambios.

Turnos de herramienta frente a turnos de texto

La distinción entre turno de herramienta y turno de texto es lo que hace segura a Fusion para el trabajo agéntico. Las acciones (llamadas de herramienta) se ejecutan exactamente como las emitió Claude; solo las respuestas — explicaciones, diseños, revisiones, planes — se fusionan. En una sesión de programación típica la mayoría de los turnos son acciones, así que la influencia de Fusion se concentra donde más importa la diversidad de modelos: en el razonamiento y las conclusiones, no en las ediciones mecánicas de archivos.

De dónde viene la identidad de cada rama

Fusion no tiene interfaz de credenciales propia. Cada rama usa la sesión o la clave de API ya configurada para ese agente en los ajustes de modelos efectivos de la máquina — Ajustes › Modelos más la anulación Modelos propia de la máquina (ver Modelos y proveedores). Cuando cambias esos ajustes, la configuración de Fusion de una máquina en marcha se refresca en el momento; si el cambio deja menos de dos modelos utilizables, Fusion se desengrana.

  • Suscripción — la rama usa un token vivo del almacén de suscripciones del anfitrión (Claude, ChatGPT, Grok o Kimi); el anfitrión lo renueva cuando hace falta. Los tokens de suscripción de Claude reciben automáticamente el bloque de sistema de identidad de Claude Code y la cabecera beta de OAuth que Anthropic exige.
  • Clave de API — la rama usa la clave de API real del mapa de intercambio de tokens del lado del anfitrión (el invitado solo vio un señuelo; ver Credenciales).
  • Oh My Pi — omp funciona solo con clave de API y habla el proveedor al que está cambiado, así que su rama usa la clave de API de ese proveedor, con el modelo que los ajustes de Modelos eligen para omp allí (si no, el modelo de rama por omisión de ese proveedor). Solo Anthropic, OpenAI y xAI se pueden fusionar; omp en z.ai o en un punto final personalizado no se ofrece como rama.
  • Modelo local — la rama apunta al motor local de la máquina: tu servidor personalizado cuando hay uno configurado, y si no el motor en el dispositivo del Mac (ver Modelos y proveedores).
  • Amazon Bedrock — una sesión de Claude Code en Bedrock solo contribuye a través de la petición del propio invitado; no hay una rama de fusión de Bedrock aparte.

Una rama cuya credencial no se puede resolver se descarta con una línea de registro, nunca con un error que llegue al agente.

Requisitos

Fusion necesita al menos dos modelos utilizables:

  • Tu sesión de Claude Code cuenta siempre como una rama, siempre que el agente Claude Code tenga una credencial utilizable.
  • Cada rama de nube adicional — Codex (OpenAI), Grok (xAI), Kimi Code (Moonshot AI) — necesita una credencial para ese agente, configurada en Ajustes › Modelos o en la anulación Modelos de la máquina. Hasta que la haya, la fila está atenuada con la pista — sin credencial de nube (configura una en Ajustes › Modelos).
  • La rama Oh My Pi necesita omp cambiado a Anthropic, OpenAI o xAI, con una clave de API de ese proveedor. Si no, su fila muestra — necesita una clave de API de Anthropic, OpenAI o xAI para Oh My Pi (ponla en Ajustes › Modelos).
  • La rama Modelo local necesita un modelo local: un modelo en el dispositivo descargado en En el dispositivo dentro de Modelos, o un Servidor personalizado. Hasta entonces, su fila muestra — descarga uno en Ajustes › Modelos.

Con menos de dos modelos utilizables seleccionados, el panel muestra el texto de ayuda "Elige al menos dos modelos a fusionar — tu sesión de Claude Code cuenta como uno, así que añade uno más (un agente de nube o un modelo local)." y el botón de rayo sigue desactivado.

Configurar Fusion para una máquina

Fusion se configura en el panel Fusion, bajo Modelos en los ajustes de la máquina (el icono de rayo amarillo; el panel está marcado BETA). La referencia campo por campo vive en Ajustes de Fusion; esta sección recorre el flujo.

El panel Fusion del editor del espacio de trabajo Web app: la insignia BETA y su explicación, la lista Modelos a fusionar con Claude Code (Anthropic) — tu sesión, Codex (OpenAI), Grok (xAI), Kimi Code (Moonshot AI) y Oh My Pi atenuados con la pista sin credencial de nube, la fila Modelo local, y el texto de ayuda naranja que pide al menos dos modelos

En la captura de arriba no hay ningún proveedor configurado para el espacio de trabajo, así que todas las filas bajo Modelos a fusionar están atenuadas y el texto de ayuda naranja explica lo que falta.

  1. Abre los ajustes de la máquina (Ajustes… en el menú de máquinas) y selecciona el panel Fusion.
  2. Bajo Modelos a fusionar, marca los agentes cuyas respuestas quieres en el panel. Claude Code (Anthropic) — tu sesión es siempre una rama; añade Codex (OpenAI), Grok (xAI), Kimi Code (Moonshot AI), Oh My Pi y/o Modelo local. La fila Modelo local incluye un selector de los modelos locales disponibles.
  3. Bajo Juez, elige el Proveedor y el Modelo que pesarán los borradores y escribirán la respuesta final. La lista de proveedores ofrece todos los agentes con credencial utilizable (la misma prueba que las ramas), más Local cuando hay un modelo local disponible. Las listas de modelos de nube se obtienen en vivo del punto final /v1/models del proveedor e incluyen una entrada (por omisión); si la obtención falla, se ofrece una pequeña lista integrada. Un juez local elige entre los modelos del catálogo instalado.
  4. Haz clic en Guardar.
AjustePor omisiónNotas
Modelos a fusionarNinguno seleccionadoClaude Code es siempre una rama; los demás necesitan credencial (nube) o un modelo local.
Juez → ProveedorEl primer proveedor utilizableLocal aparece en cuanto hay un modelo local disponible.
Juez → Modelo(por omisión) → claude-opus-4-8Listas de nube obtenidas en vivo de /v1/models.

Cuando el modelo de una rama no está fijado de forma explícita, los valores por omisión son: Claude → claude-opus-4-8; Codex → gpt-5.5 con suscripción o gpt-5.5-2026-04-23 con clave de API; Grok → grok-build; Kimi Code → kimi-k2.5; Oh My Pi → el valor por omisión del proveedor con el que habla (el de Claude, el por omisión con clave de API de Codex, o el de Grok). Un juez Oh My Pi recurre al modelo de rama de omp.

Consejo: un modelo local es una rama extra capaz y de coste marginal cero — y el juez mismo puede ejecutarse localmente, manteniendo toda la etapa de análisis y síntesis en tu Mac. Ver Modelos y proveedores.

Engranar Fusion en una máquina

Configurar el panel solo hace que Fusion esté disponible. La engranas por máquina, con el botón de rayo (⚡) de la barra de herramientas de la ventana principal. El rayo solo aparece mientras una de las pestañas de terminal de la máquina está en pantalla — bajo Máquinas virtuales en la barra lateral, o después de pulsar la cápsula Linux (⌥⌘U) en una sesión para saltar a su terminal. Nunca aparece en un chat.

Aspecto del rayoEstadoDescripción emergente
Hueco, desactivadoNo disponible — menos de dos modelos utilizables"Activa al menos dos modelos para usar Fusion"
Relleno, gris oscuroDisponible, desengranada"Fusion disponible — haz clic para engranarla"
Relleno, amarilloEngranada"Fusion engranada — haz clic para desengranarla"

Haz clic en el rayo para alternar. Engranarla se aplica a toda la máquina: cada sesión de Claude Code que corra en ella se fusiona hasta que la desengranes. Una máquina arranca con Fusion desengranada — es una elección explícita, nunca un valor por omisión silencioso.

Desde la línea de órdenes

Con la app en marcha, puedes alternar Fusion en una VM en ejecución sin tocar la ventana:

bromure-cli vm fusion enable <vm>
bromure-cli vm fusion disable <vm>

<vm> es un id de VM o un nombre de espacio de trabajo, y on/off/engage/disengage se aceptan como alias. La salida de estado de bromure-cli vm incluye una fila de fusion que dice engaged o available (off). Estas órdenes hablan con la API de control de la app, así que exigen que la app (o su agente) esté en marcha; ver CLI, API y MCP.

Lo que cuesta Fusion

Fusion multiplica el consumo de modelos, y conviene engranarla sabiendo la aritmética. Para cada turno en que Claude devuelve una respuesta en texto llano:

  • Cada rama seleccionada adicional hace una llamada de modelo completa, y recibe la misma transcripción aplanada como contexto — así que las conversaciones largas cuestan proporcionalmente en cada rama, en cada turno fusionado.
  • El juez hace dos llamadas más: una para producir el análisis JSON, otra para escribir la síntesis. Las dos están limitadas a 4096 tokens de salida.

Con Codex, Grok y un modelo local seleccionados junto a Claude, una única respuesta fusionada cuesta por tanto hasta cinco llamadas de modelo más allá de la llamada a Claude que ya ibas a hacer; cada rama adicional añade una más. Los turnos de llamada de herramienta se abren en abanico a cero llamadas extra, lo que en la práctica mantiene las sesiones agénticas mucho más baratas que el peor caso — la mayoría de los turnos de un bucle de programación son llamadas de herramienta.

Cómo se factura cada rama sigue su credencial: las ramas con clave de API facturan por token, las de suscripción tiran de la cuota de la suscripción, y una rama local solo cuesta cómputo en el dispositivo (y batería, en un portátil). Cada rama tiene por omisión un tiempo límite hacia arriba de 600 segundos.

Fusion en la traza

Fusion es deliberadamente invisible para el agente, pero completamente visible para ti. Cada llamada lateral hacia arriba — cada rama, el análisis del juez y la síntesis — la captura el pipeline de trazado como cualquier otro intercambio de IA, sujeto al nivel de traza de la máquina (ver Trazado).

Consecuencias prácticas:

  • El Inspector de trazas (menú Ventana → Inspector de trazas…) lista los intercambios extra junto al tráfico normal de la sesión, y presenta las peticiones y respuestas capturadas como conversaciones analizadas — puedes leer exactamente qué respondió cada rama y qué concluyó el juez.
  • bromure-cli trace hostnames muestra que se contactaron hosts como api.openai.com desde una sesión que quizá creías solo de Anthropic. Si tu organización audita la salida, espera que las sesiones fusionadas muestren los puntos finales de todos los proveedores seleccionados.
  • Fusion también registra con detalle en el registro de la app (~/Library/Logs/BromureAC/bromure-ac.log) con el prefijo [fusion] — útil al diagnosticar por qué se descartó una rama.

Nota: si tus reglas de tratamiento de datos restringen qué proveedores pueden ver tu código, recuerda que cada rama seleccionada recibe la transcripción aplanada completa de la conversación. Elige las ramas en consecuencia. Cuando la Protección de datos personales está activada para la máquina, los datos personales se cambian por señuelos antes del abanico, así que cada rama recibe los señuelos.

Anulaciones por variables de entorno

Unos pocos valores por omisión se pueden anular con variables de entorno al lanzar la app — útil para experimentar, no pensado como configuración del día a día:

VariablePor omisiónEfecto
BROMURE_FUSION_TIMEOUT600Tiempo límite hacia arriba por rama, en segundos.
BROMURE_FUSION_OPENAI_MAX_TOKENS128000 (GPT-5/serie o), 16384 (gpt-4o y anteriores)Tope de tokens de completado de la rama de OpenAI.

Limitaciones de la beta

Fusion es una función en beta, con aristas que vale la pena conocer:

  • Solo sesiones de Claude Code. Fusion intercepta las peticiones POST /v1/messages de Anthropic. Las sesiones que ejecutan Codex, Grok, Kimi u omp no se fusionan — el tráfico de esos agentes pasa con normalidad.
  • Las ramas que no son de Claude responden sin herramientas. Las definiciones de herramientas se retiran para las ramas de Codex, Grok, Kimi Code, Oh My Pi y la local; responden en prosa sobre una transcripción aplanada. Sus borradores informan la síntesis, pero no pueden actuar por sí mismos.
  • Backends de suscripción al mejor esfuerzo. La rama de suscripción de Codex va sobre el backend de ChatGPT por WebSocket, y la de suscripción de Grok usa cli-chat-proxy.grok.com — ambas interfaces sin documentar. Ante cualquier error la rama se descarta en vez de hacer fallar el fusible.
  • Oh My Pi solo en tres proveedores. Una rama o un juez Oh My Pi funciona solo mientras omp esté cambiado a Anthropic, OpenAI o xAI con una clave de API; en z.ai o en un punto final personalizado no se ofrece.
  • Degradación silenciosa. Las ramas descartadas y los fallos del juez recurren a la propia respuesta de Claude (o a un borrador en bruto) sin avisar al agente. La traza y las líneas [fusion] del registro de la app son los únicos sitios donde verás que pasó.
  • Latencia. Un turno de texto fusionado espera a la rama superviviente más lenta, y luego a dos llamadas al juez. Cuenta con turnos de respuesta bastante más lentos que en una sesión simple; los turnos de herramienta no se ven afectados.