Voltar para todas as publicações
Publicado em · por Renaud Deraison

O Bromure Agentic Coding agora inclui o modo Fusion

O OpenRouter publicou um resultado marcante: um painel de modelos, julgado e sintetizado, supera qualquer modelo de fronteira sozinho. Reimplementamos essa técnica do zero dentro do Bromure Agentic Coding — nada passa pelo OpenRouter. Como o produto já fica no fio entre o seu agente de codificação e as APIs dos modelos, a versão 3.0 coloca o nosso próprio Fusion bem ali. Acione o ⚡ na barra de título e até três modelos respondem a cada prompt de uma vez. Um juiz os reconcilia, um sintetizador escreve o resultado, e o Claude Code recebe de volta uma única resposta, como se um único modelo a tivesse escrito. Você traz as suas próprias chaves ou assinaturas, e o trace registra cada perna.

No mês passado o OpenRouter nos mostrou algo que quisemos na hora: um painel de modelos, com um julgando o painel e outro redigindo o veredito, supera o melhor modelo isolado da mesa. Ele pergunta a vários modelos ao mesmo tempo e sintetiza as respostas deles numa só. A fusão de destaque deles chegou a 69,0% num benchmark de pesquisa profunda no qual o Fable 5, sozinho, marcou 65,3%. Não plugamos no serviço deles: reimplementamos a técnica nós mesmos, uma camada abaixo, no proxy pelo qual o seu agente de codificação já está conversando. O Bromure Agentic Coding 3.0 entrega tudo isso como um único raio.

O mecanismo é simples. Você manda o prompt para vários modelos em paralelo. Um juiz lê cada resposta e marca onde elas concordam, os conflitos, o que cada modelo captou sozinho e o que todos deixaram passar. Um sintetizador então escreve a resposta final a partir dessa análise, em vez de avaliar os rascunhos no olho. O artigo do OpenRouter sobre o Fusion expõe o mecanismo que reconstruímos, e o tamanho do ganho nos surpreendeu: num caso, parear um modelo com ele mesmo ainda elevou a nota. A maior parte do ganho vem desse passo de síntese.

Sabíamos onde a queríamos. O Bromure Agentic Coding roda o seu agente numa VM Linux descartável, enquanto um proxy man-in-the-middle no host vigia cada byte que ele envia para api.anthropic.com. Já estamos no fio, então o painel roda bem ali, onde o seu código, prompts e credenciais nunca dão um desvio pelo roteador de mais ninguém. O Fusion é um comportamento desse proxy. Ele transforma uma requisição Claude de saída numa rápida reunião de comitê e devolve uma única resposta na forma de fio que o agente esperava. O Claude Code nunca fica sabendo que GPT-5.5 e Grok estavam na sala.

Um único raio.

O Fusion tem um único controle, na barra de título da janela da sessão do agente.

Barra de título da sessão do agente com o raio do Fusion em cinza escuro, desacionado
desacionado · raio cinza
Barra de título da sessão do agente com o raio do Fusion aceso em amarelo, acionado
acionado · raio amarelo
Toda a interface do Fusion: o ⚡ na barra de título da sessão. À esquerda ele fica desacionado, um raio preenchido em cinza escuro, disponível nesta sessão mas desligado. À direita ele acende em amarelo, acionado. Com menos de dois modelos configurados, o raio fica vazado e desabilitado, porque um painel de um só é apenas um modelo. O 192.168.64.2 na barra de endereço é a VM por perfil em que o agente roda, e é esse o fio em que o Fusion fica.

O Fusion roda na sessão do Claude Code, já que intercepta a API /v1/messages do Claude, a requisição que ele sabe como ramificar e remontar. Você configura dois ou três agentes com credenciais na aba Agents do perfil, escolhe quais provedores entram no painel e qual modelo julga, e dali em diante a única coisa em que você toca é o raio. Cinza significa desligado, Claude puro. Amarelo significa ligado, o comitê se reúne. O raio é uma flag de runtime, então você pode alterná-lo no meio da sessão sem reiniciar.

O que acontece no fio.

Com o raio amarelo, o proxy faz mais do que encaminhar a requisição do agente para a Anthropic. Ele roda a sequência abaixo.

NO FIO · dentro do proxy MITM da VM por perfilCLAUDE CODE (na VM)POST /v1/messages model: claude-opus-4-8 stream: true tools: [bash, edit, …] pensa: um modeloPERNA A · Claude · perguntado PRIMEIRO, tools intactasapi.anthropic.com · não-streaming · a requisição realse for um turno de TEXTO → fundir · se de TOOL → passa diretoO PAINEL · mesma pergunta, em paraleloPerna A · Clauderascunho (já em mãos)Perna B · GPT-5.5api.openai.comPerna C · Grokapi.x.aiJUIZ · Opus 4.8analisa os rascunhos, não votaconsenso · conflitosúnico · pontos cegosemite análise JSON, não prosaSINTETIZADOR · Opus 4.8escreve UMA resposta, ancoradana análise acimaREEMBALAR · o próprio envelope id / model / usage do Claude, conteúdo trocado pelo texto fundidotransmitido de volta como SSE da Anthropic ou um único corpo JSON, a forma que o agente pediuTRACE DA SESSÃO · cada perna é um SubCall nomeado: anthropic · openai · x.ai · juiz · synth (o agente emitiu uma chamada)uma resposta de volta ao agente
O caminho do Fusion para um turno que fala com você. O proxy pergunta ao Claude primeiro, carregando a requisição real do agente com suas ferramentas. Numa resposta de texto puro, ele faz a mesma pergunta ao resto do painel, entrega cada rascunho a um juiz que devolve uma análise estruturada, e deixa um sintetizador escrever a única resposta final a partir dessa análise. O proxy então reembala o resultado no próprio envelope de mensagem do Claude e o transmite de volta na forma que o agente pediu. Três modelos respondem, e o agente lê uma.

Um detalhe separa isso de uma demo: o proxy pergunta ao Claude primeiro, e pergunta por inteiro. A Perna A carrega a requisição real do agente, com ferramentas e transcrição completa intactas, enviada à Anthropic com a credencial real. O proxy a força a não-streaming para poder ler a resposta inteira antes de decidir o que fazer. A decisão de roteamento depende dessa primeira resposta.

Um agente de codificação muda o problema.

O Fusion dentro de um agente de codificação coloca um problema diferente do Fusion dentro de uma caixa de chat, e essa é a parte da qual mais me orgulho.

Num produto de chat, a maioria dos turnos é prosa para um humano ler, exatamente para o que julgar-e-sintetizar foi construído. Num loop agêntico, a maioria dos turnos são ações: chamar o bash com npm test, editar este arquivo. Cada uma é um bloco tool_use com entrada estruturada que o SDK está esperando para rodar. Funda as opiniões de três modelos num parágrafo ali e você terá apagado a chamada de ferramenta, e o loop trava. O Fusion verifica antes de agir. Ele pergunta ao Claude primeiro para poder inspecionar o turno, e então roteia pela forma da resposta:

Claude responde primeironão-streaming · tools intactasinspeciona o turnoqual forma?TURNO DE TOOL → passa diretostop_reason: tool_use (ou qualquer bloco tool_use)repete a resposta real do Claude, literalmentesem GPT · sem juiz · sem synth · loop intactoTURNO DE TEXTO → fundirstop_reason: end_turn, resposta de texto puroroda o painel · juiz · sintetizao turno que fala com você
O roteador de turnos lê a primeira resposta do Claude. Um turno de ferramenta, qualquer coisa com um bloco tool_use ou um stop reason tool_use, é uma ação, então o Fusion repete a resposta real do Claude literalmente e pula o painel: sem chamada ao GPT, sem juiz, sem síntese, sem risco de remover o comando. Um turno de texto puro, do tipo que fala com você, recebe o comitê completo. O roteador mantém o loop agêntico intacto.

Na maior parte de uma sessão o Fusion fica silencioso. A longa sequência de rodar-testes, ler-falha, aplicar-patch é toda de turnos de ferramenta, passada direto a toda velocidade. O comitê se reúne quando o Claude explica em vez de agir: a pergunta de arquitetura, o resumo final do que ele encontrou. Uma segunda e uma terceira opinião compensam nesses turnos.

O juiz analisa em vez de votar.

A versão ingênua de "use três modelos" é um voto majoritário, ou perguntar a um modelo "qual é o melhor?" e encaminhar o vencedor. Ambas jogam fora a maior parte do sinal. Um painel supera um modelo porque os modelos erram em lugares diferentes, e um voto só os conta.

O juiz não produz resposta. Recebendo a pergunta e cada rascunho rotulado, ele devolve uma análise estruturada e nada mais:

{
  "consensus":   [ "pontos em que as respostas concordam" ],
  "conflicts":   [ { "topic": "...", "positions": "quem diz o quê" } ],
  "unique":      [ { "source": "nome do provedor", "insight": "..." } ],
  "blind_spots": [ "coisas que as respostas deixaram passar ou erraram" ],
  "verdict":     "uma frase sobre qual resposta é a mais forte e por quê"
}

Esse JSON é o verdadeiro produto do painel. O sintetizador pega a pergunta e esse JSON e escreve a resposta final: resolve os conflitos rumo à correção, incorpora os insights únicos, cobre os pontos cegos e não diz nada sobre o painel. Ele escreve para você como se soubesse a resposta o tempo todo.

O Fusion fixa tanto o juiz quanto o sintetizador no Opus por padrão. A análise e a redação são os passos críticos para a qualidade, então o Fusion os roda no modelo forte, em vez de no que quer que o agente tenha pedido. Você pode trocar o juiz no painel do Fusion. O padrão é o modelo forte, de propósito.

Fable sem Fable.

Para um agente de codificação, a demo honesta é uma construção. Entregamos o mesmo prompt a um único modelo forte e ao painel, raio cinza e depois raio amarelo, e publicamos o que quer que cada um produzisse:

Escreva um site em node que ecoe de volta o user agent numa página WebGL lindamente projetada e inspirada em Tron, rápida e dinâmica, que deve encantar o visitante.

⚡ cinza · modelo único (Opus 4.8)
⚡ amarelo · painel Fusion
Mesmo prompt, mesmo agente, um toggle. À esquerda, o raio cinza: um único modelo, Opus 4.8. À direita, o raio amarelo: um painel de Claude + GPT-5.5 + Grok, julgado e sintetizado pelo Opus. O Fusion deixa as edições de arquivo em paz, já que são turnos de ferramenta passados direto, e trabalha apenas os turnos em que o agente raciocina em voz alta. A página do painel é a que encanta o visitante.

Um prompt sozinho não prova nada. O OpenRouter fez a medição de verdade: uma centena de tarefas de pesquisa profunda, dezenas de critérios ponderados, um painel pousando vários pontos acima do melhor modelo isolado, Fable 5 entre eles. O mecanismo é o mesmo, apontado para os seus próprios modelos. Um painel de Claude + GPT-5.5 + Grok, julgado e sintetizado pelo Opus, supera qualquer um deles respondendo sozinho nos turnos de prosa de uma sessão de codificação, Fable incluído. Você obtém saída da classe do Fable sem nenhum Fable na sala.

Os modelos são famosos por tropeçar em charadas simples. O painel pega os erros óbvios antes que eles cheguem a você.

Uma sessão do Claude Code com o Fusion acionado: ele conta corretamente três erres em «strawberry» e dá uma resposta ponderada sobre se vale a pena andar ou dirigir até um lava-rápido a 50 metros de distância
O Fusion nas duas perguntas que lançaram mil threads de «LLMs não conseguem raciocinar de verdade». A pegadinha de contar letras volta correta, três erres nas posições 3, 8, 9, e a pergunta de andar-ou-dirigir recebe uma resposta ponderada no lugar de uma resposta errada e confiante. Três modelos checam uns aos outros, então as respostas fracas não sobrevivem.

Está tudo no trace.

Essa é a parte que só a Bromure pode reivindicar, e ela decorre de onde o Fusion vive. O agente fica numa VM e cada chamada de saída passa pelo proxy do host, então as chamadas laterais do Fusion permanecem visíveis mesmo quando o agente não consegue vê-las. O host registra cada perna, o rascunho do Claude, o rascunho do GPT, o rascunho do Grok, a passagem do juiz, a passagem da síntese, no mesmo trace da sessão que tudo o mais que o agente fez.

UM TURNO FUNDIDO · como registradopernahostpapelfioA · Claudeapi.anthropic.comrascunho200 · 2.1 KBB · GPT-5.5api.openai.comrascunho200 · 1.8 KBC · Grokapi.x.airascunho200 · 1.6 KBjuizapi.anthropic.comanálise JSON200 · 0.9 KBsynthapi.anthropic.comresposta final200 · 2.4 KBvisão do agente: 1 requisição à Anthropic · visão do trace: 5 chamadas upstream, todas atribuídas
A visão de um admin para um único turno fundido. O agente acredita ter feito uma chamada à Anthropic. O trace registra cinco: um rascunho do Claude, um rascunho do GPT em api.openai.com, um rascunho do Grok em api.x.ai, depois uma passagem de juiz e uma de síntese. O Fusion permanece transparente para o agente e legível para quem revisa a sessão, a marca da casa à qual nossos posts enterprise sempre voltam.

Um roteador que funde modelos e escondesse suas chamadas laterais entregaria a uma empresa uma cópia não auditada dos seus prompts e código, ramificada para mais dois fornecedores sem registro. O Fusion faz a ramificação e anota cada chamada. O seu time de segurança pode perguntar por que api.openai.com recebeu um prompt e ler a resposta numa linha do trace: o raio estava amarelo.

O preço do Fusion.

O Fusion custa tempo a você. Um turno de texto fundido roda o painel e então faz duas chamadas extras ao Opus, uma para a análise do juiz e outra para a síntese. Elas rodam em sequência, depois da própria resposta do Claude, já que o proxy precisa ler essa resposta antes de decidir fundir. Um turno fundido é mais lento que um simples. A troca é estreita: nos turnos que explicam coisas a você, você espera um pouco mais por uma resposta melhor. É por isso que o Fusion é um raio que você aciona, e não um padrão, e por isso ele toca os turnos de prosa e deixa o loop de ferramentas em paz.

Acione o raio.

O Bromure Agentic Coding 3.0 coloca o Fusion na barra de título de cada sessão do agente. Configure dois ou três agentes, escolha um juiz, e o ⚡ vai de vazado a cinza, e depois a amarelo quando você quiser o comitê. O seu agente de codificação continua se comportando como se falasse com um único modelo, porque, até onde ele pode saber, fala. O trace mostra as cinco chamadas por trás de cada resposta.