Pular para o conteúdo principal
O Mixture-of-Agents (MoA) roda o mesmo prompt em vários modelos em paralelo (os proponentes) e então usa um agregador para sintetizar uma única resposta de alta qualidade a partir de todas as propostas. A técnica é baseada em Wang et al., arXiv:2406.04692.
MoA é distinto da Orquestração Multi-Agent: lá o eixo é agents especialistas (planner, reviewer…) despachados em paralelo dentro de uma tarefa. Aqui o eixo é a diversidade de modelos/provedores respondendo à mesma pergunta. Acionado pelo comando /moa.

Como funciona

/moa <prompt>

     ├─ proponente 1 (openai:gpt-5)        ┐
     ├─ proponente 2 (claudeai:opus-4-8)   ├─ em paralelo, mesmo prompt
     ├─ proponente 3 (googleai:gemini-2.5) ┘


  agregador (provider/modelo ativo, ou CHATCLI_MOA_AGGREGATOR)


  resposta única sintetizada
  1. Proposta paralela — cada proponente recebe o mesmo prompt, concorrentemente.
  2. Tolerância a falhas — erros de um proponente são tolerados; o MoA segue desde que pelo menos um tenha respondido. Só falha se o agregador em si falhar.
  3. Agregação — o agregador recebe um prompt de síntese com todas as propostas e produz uma resposta correta e coesa (sem mencionar que houve agregação).
Um timeout de 5 minutos envolve toda a rodada. Ao final, o ChatCLI mostra quais proponentes contribuíram (✓/✗) e renderiza a resposta final.

Configuração

VariávelDescrição
CHATCLI_MOA_MODELSOpcional. Proponentes em CSV provider:model. Sem ela, /moa e @moa usam os provedores configurados (ordenados, cap 4).
CHATCLI_MOA_AGGREGATOROpcional. Modelo agregador (provider:model). Default: o provider/modelo ativo da sessão.
export CHATCLI_MOA_MODELS="openai:gpt-5,claudeai:claude-opus-4-8,googleai:gemini-2.5-pro"
export CHATCLI_MOA_AGGREGATOR="claudeai:claude-opus-4-8"   # opcional
Autenticação: funciona com OAuth, não só API key — quando um proponente/agregador coincide com o provider ativo da sessão, o MoA reusa o client da sessão, honrando o token OAuth (preferido sobre API key quando logado) ou tokens encaminhados (modo server/gateway). Nomes de provider são resolvidos de forma case-insensitive (openaiOPENAI). O comando /moa e o tool @moa compartilham a mesma resolução e os mesmos defaults.
Use provedores diferentes como proponentes para maximizar a diversidade — é daí que vem o ganho de qualidade do MoA. O agregador costuma render mais sendo um modelo forte (Opus, GPT-5).

Uso

> /moa explique os trade-offs entre WAL e snapshotting num scheduler durável
  Rodando Mixture-of-Agents com 3 modelos…
    ✓ openai:gpt-5
    ✓ claudeai:claude-opus-4-8
    ✓ googleai:gemini-2.5-pro

  <resposta única sintetizada, renderizada em Markdown>
Qualquer provedor configurado pode participar como proponente ou agregador. Veja Provedores Suportados.

Tool @moa (para o agente)

Além do comando /moa, há o tool @moa, que o agente pode invocar dentro de um fluxo agent/coder para consultar vários modelos e sintetizar a melhor resposta:
<tool_call name="@moa" args='{"cmd":"ask","args":{"prompt":"Projete um rate limiter para 1M rps"}}' />
<tool_call name="@moa" args='{"cmd":"list"}' />
  • ask {prompt, models?, aggregator?}models opcional (ex. ["openai","anthropic:claude-opus-4-8"]); default é um conjunto dos provedores configurados. aggregator default é o modelo da sessão.
  • list — provedores disponíveis para participar.
Degrada com elegância: um único proponente bem-sucedido é retornado direto; se o agregador estiver indisponível, retorna o melhor candidato em vez de falhar.

Veja também