Pular para o conteúdo principal

Documentação oficial desta página · v0.20.6

Mistura de Agentes

Mistura de Agentes

A Mistura de Agentes (Mixture of Agents, ou MoA) é um provedor de modelos virtual. Cada preset de MoA nomeado aparece como um modelo selecionável dentro do provedor moa.

Quando você seleciona um preset de MoA, o agregador do preset é o modelo que atua. É ele que escreve a resposta do assistente e emite as chamadas de ferramenta. Os modelos de referência rodam antes e fornecem análise para o agregador usar.

Use MoA quando uma tarefa difícil se beneficia de várias perspectivas de modelo mas ainda precisa do laço de agente normal do Hermes: chamadas de ferramenta, iterações de acompanhamento, interrupções, persistência de transcrição e o mesmo contexto de sessão de qualquer outra mensagem.

Selecione um preset de MoA como seu modelo​

Você pode selecionar um preset pelas superfícies normais de escolha de modelo:

/model default --provider moa
/model review --provider moa

Presets de MoA são selecionáveis em todas as superfícies do Hermes, porque MoA é um provedor normal no sistema de modelos:

  • /model na CLI, no gateway e na TUI — /model <preset> --provider moa, ou /model --provider moa para o preset padrão. Um /model <preset> sem mais nada também funciona quando o nome corresponde exatamente a um preset configurado.
  • hermes model e o seletor de modelo do painel — aparece uma linha de provedor Mixture of Agents com os nomes dos seus presets como modelos.
  • Aplicativo de desktop — o menu de modelos mostra uma seção MoA presets; escolher um deles (MoA: <preset>) troca o modelo ativo para esse preset. O painel de configurações do desktop também cria e edita presets.

Ou seja, os presets configurados aparecem em todo lugar onde você escolheria qualquer outro modelo.

Atalho por comando de barra​

O /moa é açúcar de conveniência para uma única vez. Ele roda um único prompt pelo preset de MoA padrão e depois restaura o modelo em que você estava:

/moa projete e implemente um plano de migração para este cluster de testes instáveis

O Hermes troca temporariamente para o preset de MoA padrão naquele único turno, envia o prompt e, depois, restaura o seu modelo anterior. O argumento inteiro é o prompt — o /moa não o interpreta mais como nome de preset.

/moa

Um /moa sozinho (sem prompt) apenas imprime as instruções de uso.

Para trocar para um preset de MoA pelo resto da sessão, selecione-o no seletor de modelo — presets de MoA aparecem sob um provedor Mixture of Agents em toda superfície de seleção de modelo (veja acima). O /moa deliberadamente não é uma troca de modelo, para que um prompt comum nunca mude o seu modelo por acidente.

Como funciona no laço do agente​

Para cada chamada ao modelo principal quando o provedor moa está selecionado, o Hermes:

  1. resolve o preset selecionado pelo nome;
  2. roda os modelos de referência configurados sem schemas de ferramenta (eles recebem só o texto de usuário/assistente da conversa — não o prompt de sistema do Hermes nem a transcrição de chamadas de ferramenta — para que as chamadas de referência fiquem baratas e evitem rejeições de provedores rigorosos);
  3. anexa as saídas de referência como contexto privado para o agregador;
  4. chama o agregador configurado com o schema normal de ferramentas do Hermes;
  5. trata a resposta do agregador como a resposta real do modelo;
  6. se o agregador chama ferramentas, o Hermes executa essas ferramentas normalmente;
  7. na iteração seguinte do modelo, o mesmo processo de MoA roda de novo sobre a conversa atualizada, incluindo os resultados das ferramentas.

Como MoA é selecionado pelo sistema normal de modelos, ele se combina automaticamente com /goal, sessões de gateway, sessões de TUI e o chat do desktop.

Configure os presets​

Você pode configurar presets de MoA nomeados a partir de:

  • Painel → Models → Model Settings → Mixture of Agents
  • Aplicativo de desktop → Settings → Model → Mixture of Agents
  • hermes moa configure [nome]
  • config.yaml

A configuração guarda pares explícitos de provedor/modelo, então você pode misturar provedores e usar vários modelos do mesmo provedor:

moa:
default_preset: default
presets:
default:
reference_models:
- provider: openai-codex
model: gpt-5.5
- provider: openrouter
model: deepseek/deepseek-v4-pro
aggregator:
provider: openrouter
model: anthropic/claude-opus-4.8
# Opcional: fixe as temperaturas de amostragem. Quando omitidas (o padrão),
# a temperatura NÃO é enviada e cada modelo usa o padrão do seu provedor —
# o mesmo comportamento de um agente Hermes de modelo único.
# reference_temperature: 0.6
# aggregator_temperature: 0.4
max_tokens: 4096
enabled: true

Preset padrão:

  • referência: openai-codex:gpt-5.5
  • referência: openrouter:deepseek/deepseek-v4-pro
  • agregador / modelo que atua: openrouter:anthropic/claude-opus-4.8

Ajustar a velocidade dos consultores com reference_max_tokens​

A cada turno, o MoA roda os modelos de referência (os consultores) em paralelo e depois o agregador atua. A geração dos consultores é a latência dominante do turno — o tempo total do turno tem forte correlação com quantos tokens os consultores emitem, porque o turno espera o consultor mais lento terminar de escrever. Por padrão, os consultores são ilimitados (reference_max_tokens sem valor), então podem escrever conselhos longos, do tamanho de um ensaio.

Defina reference_max_tokens num preset para limitar a saída dos consultores e receber conselhos concisos. O agregador só precisa da essência do julgamento de cada consultor, então um limite (por exemplo, 600) reduz de forma mensurável o tempo total do turno com pouco impacto na qualidade. O limite vale só para os consultores — a saída do agregador que atua (a resposta visível ao usuário) nunca é limitada.

moa:
presets:
fast:
reference_models:
- provider: openrouter
model: anthropic/claude-opus-4.8
- provider: openrouter
model: openai/gpt-5.5
aggregator:
provider: openrouter
model: anthropic/claude-opus-4.8
reference_max_tokens: 600 # conselho conciso → turnos mais rápidos

Deixe sem valor (ou 0/vazio) para manter o comportamento ilimitado anterior.

Cadência dos consultores com fanout​

Por padrão, os consultores rodam uma vez por turno do usuário (fanout: user_turn) — eles sintetizam conselhos no nível do plano na primeira mensagem do turno e, depois, o agregador que atua percorre sozinho o resto do laço de ferramentas. Essa é a cadência mais barata: o custo dos consultores não se multiplica com o número de chamadas de ferramenta do turno. Duas cadências alternativas trocam custo por conselho mais atual:

  • fanout: per_iteration — os consultores rodam de novo em toda iteração de ferramenta, então o conselho sempre acompanha os resultados mais recentes — ao custo de multiplicar a latência e o gasto dos consultores pelo número de chamadas de ferramenta do turno.
  • fanout: every_n:3 — o meio do caminho: os consultores rodam na primeira iteração de cada turno do usuário e depois a cada 3ª iteração de ferramenta (qualquer N >= 2 funciona). As iterações intermediárias reusam a orientação em cache da última rodada de consultores, então o agregador continua recebendo conselho em cada passo — só que atualizado a cada N passos em vez de a cada passo. O contador é zerado a cada nova mensagem do usuário, então todo turno começa com conselho novo. A forma de mapa fanout: {mode: every_n, n: 3} também é aceita e normalizada para a forma em texto.
moa:
presets:
fresh:
reference_models:
- provider: openrouter
model: anthropic/claude-opus-4.8
aggregator:
provider: openrouter
model: openai/gpt-5.5
fanout: per_iteration # consultores se atualizam em toda iteração de ferramenta

Valores desconhecidos ou malformados voltam para user_turn.

Mudança de padrão

Antes de julho de 2026, a cadência padrão era per_iteration. Agora o padrão é user_turn — a cadência mais barata e de menor impacto — até que benchmarks por modo justifiquem um padrão mais caro. Presets que queiram o conselho a cada passo de volta definem fanout: per_iteration explicitamente.

Filtro de privacidade para as saídas dos consultores​

As saídas dos consultores podem repetir dados sensíveis da conversa — e-mails, números de telefone formatados, chaves de API, JWTs — nos blocos de referência exibidos na interface, nos traços de MoA salvos e no prompt do agregador. O moa.privacy_filter (desligado por padrão) censura essas superfícies:

moa:
privacy_filter: display # ou: full
  • display — censura apenas as superfícies visíveis ao usuário: os blocos de referência rotulados que aparecem na interface e os registros escritos por save_traces. O agregador continua recebendo o texto cru dos consultores, então a qualidade da resposta não é afetada.
  • full — censura também o texto dos consultores injetado no prompt do agregador (e a entrada de síntese do /moa de uma única vez).

Formatos de credencial (prefixos de chave de API, JWTs, chaves privadas, strings de conexão de banco) são mascarados pelo redator central de segredos do Hermes; o filtro do MoA acrescenta a censura de e-mails e de números de telefone claramente formatados. Os padrões são deliberadamente conservadores para conselhos de revisão de código: sequências soltas de dígitos, números de linha, marcas de tempo, SHAs de git e endereços IP nunca são tocados — só casam formatos de telefone delimitados, como (555) 123-4567 ou 555-123-4567.

Esforço de raciocínio por posição​

As posições de referência e de agregador também podem definir reasoning_effort. Use isso quando quiser que o mesmo modelo contribua em profundidades diferentes, ou quando o agregador deve pensar mais que as referências consultivas. Os valores válidos são os mesmos dos controles normais de raciocínio do Hermes: none, minimal, low, medium, high, xhigh, max e ultra.

moa:
presets:
deep_review:
reference_models:
- provider: openai-codex
model: gpt-5.6-sol
reasoning_effort: low
- provider: openai-codex
model: gpt-5.6-sol
reasoning_effort: xhigh
- provider: xai-oauth
model: grok-4.5
aggregator:
provider: openai-codex
model: gpt-5.6-sol
reasoning_effort: high

Omita reasoning_effort para usar o padrão do provedor ou do Hermes naquela posição.

Gerenciar presets no terminal​

hermes moa list
hermes moa configure # atualiza o preset padrão
hermes moa configure review # cria ou atualiza um preset nomeado
hermes moa delete review

Benchmarks​

No HermesBench, um preset de MoA com dois modelos — claude-opus-4.8 agregando sobre uma referência gpt-5.5 — pontua mais que cada um dos modelos rodando sozinho:

ModeloPontuação no HermesBench
Agregador Opus (opus-4.8 + referência gpt-5.5) — MoA0,8202
anthropic/claude-opus-4.80,7607
openai/gpt-5.50,7412

A configuração de MoA supera o seu componente mais forte (opus-4.8) em cerca de 6 pontos, confirmando que agregar uma segunda perspectiva eleva a qualidade em tarefas difíceis, em vez de só tirar a média das duas.

Cache de prompt​

O MoA foi construído para que o cache de prompt da conversa principal nunca seja quebrado. Selecionar um preset de MoA é uma seleção normal de modelo: não altera o contexto passado, não troca conjuntos de ferramentas nem reconstrói o prompt de sistema no meio da conversa. O seu histórico de conversa, o prompt de sistema e o schema de ferramentas continuam estáveis byte a byte, então o prefixo em cache do qual todo outro modelo depende é preservado exatamente como seria com um modelo comum. Entrar ou sair de um preset de MoA custa a mesma invalidação de cache que qualquer outra troca de /model — nada além disso.

Os dois tipos internos de chamada usam cache normalmente:

  • Modelos de referência recebem uma visão enxuta e determinística da conversa (sem o prompt de sistema e sem a transcrição de ferramentas — veja o laço acima). Como essa visão é uma função estável do histórico estável, o prefixo do prompt de um modelo de referência se repete entre iterações e vai para o cache normalmente. As referências são chamadas consultivas curtas, sem ferramentas.
  • O agregador é o modelo que atua. As saídas de referência são anexadas ao fim do último turno do usuário, como orientação privada. Como esse texto fica na cauda — abaixo de todo o prefixo estável (prompt de sistema + histórico anterior) — ele não invalida nenhum prefixo em cache: o agregador acerta o cache em tudo o que está acima da injeção, e só a cauda recém-anexada é nova. É exatamente assim que todo turno normal se comporta, em que cada nova mensagem do usuário também é uma cauda de tokens fora do cache.

Portanto, o MoA não sacrifica o cache de prompt em nenhum dos dois tipos de chamada. O seu único custo real são as chamadas extras de referência por iteração — você paga por várias perspectivas de modelo, não por caches quebrados. O prefixo de conversa de vida longa, compartilhado com o resto do Hermes, fica totalmente intacto.

Observações​

  • O MoA não aparece mais na lista de hermes tools; não existe um conjunto de ferramentas moa para habilitar.
  • Definir enabled: false num preset desativa o leque de referências daquele preset: o agregador atua sozinho, exatamente como se você o tivesse selecionado como modelo comum. Esse é o interruptor por preset exposto no painel e nas configurações do desktop.
  • O agregador de um preset não pode ser outro preset de MoA. Árvores recursivas de MoA são bloqueadas de propósito.
  • Falhas de credencial em um dos modelos de referência não abortam o turno. O Hermes inclui a falha no contexto de referência e segue com os modelos que responderam.
  • O MoA aumenta a quantidade de chamadas ao modelo. Uma única iteração de modelo pode envolver várias chamadas de referência mais a chamada do agregador.