Pular para o conteúdo principal

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

Quando o Agente Parece Ter Piorado

Às vezes o Hermes parece menos afiado do que estava ontem, ou esquece algo que você disse vinte minutos atrás. Isso quase nunca é um mistério — em geral há uma causa específica e verificável. Percorra esta lista de conferência na ordem: os passos estão ordenados pela frequência com que cada um acaba sendo a resposta.

1. Confira qual modelo a sessão está usando de verdade​

Sintoma: As respostas estão mais rasas, a qualidade do código caiu, o raciocínio parece fraco — em tudo.

Confira: Rode /model sem argumentos para ver o modelo atual, ou /status para ver modelo, provedor e perfil da sessão numa única tela.

O que isso significa: Trocar de modelo é mudar de capacidade, e é fácil acabar em um modelo diferente do que você imagina:

  • Uma troca simples com /model <nome> vale só para a sessão por padrão (a menos que model.persist_switch_by_default: true esteja definido), então o modelo em uso pode não bater com o que está no config.yaml.
  • Mudar o modelo principal pela página Models do painel vale só para sessões novas — um chat já aberto continua rodando o modelo com que começou.
  • Se você trocou para um modelo mais rápido em uma tarefa simples (um padrão recomendado em Dicas e Boas Práticas), lembre de voltar para o modelo bom no trabalho de raciocínio complexo.

Se o modelo estiver errado, /model <nome> resolve nesta sessão; use --global para gravar a mudança no config.yaml. Note que trocar de modelo no meio da sessão zera o cache de prompt, então o turno seguinte relê a conversa pagando preço cheio de entrada — numa sessão longa pode sair mais barato começar do zero já no modelo certo.

2. Confira o uso de contexto​

Sintoma: A sessão começou bem, mas as respostas estão ficando lentas, truncadas, ou perdendo detalhes anteriores.

Confira: Rode /usage para ver o consumo de tokens e o estado da janela de contexto, ou /context para uma visão detalhada do que ocupa a janela (prompt de sistema, definições de ferramentas, skills, memória, conversa) contra o espaço livre.

O que isso significa: Conversas longas acumulam mensagens e saídas de ferramentas, chegando perto dos limites de contexto. Quando notar queda numa sessão longa:

# Comprime a conversa (resume o histórico, preserva o contexto essencial)
/compress

# Ou comece uma sessão nova
/new

O /compress resume o histórico da conversa, reduzindo muito a contagem de tokens e preservando o contexto essencial. O /compress here [N] mantém as N trocas mais recentes na íntegra e resume o resto, e um tópico de foco (/compress focus <tópico>) restringe o que um resumo completo preserva.

dica

Use /compress com regularidade em sessões longas, em vez de esperar o problema aparecer, e /usage de tempos em tempos para saber como está a situação.

3. Verifique o tamanho de contexto detectado​

Sintoma: Os problemas de contexto aparecem cedo demais — a primeira conversa longa já bate no limite, ou a compressão dispara bem antes do que a janela anunciada do modelo permitiria.

Confira: Olhe a linha de inicialização da CLI — ela mostra o tamanho de contexto detectado (por exemplo, 📊 Context limit: 128000 tokens). Você também pode checar com /usage durante a sessão.

O que isso significa: O Hermes pode ter detectado automaticamente o tamanho de contexto errado para o seu modelo. Defina explicitamente:

# Em ~/.hermes/config.yaml
model:
default: nome-do-seu-modelo
context_length: 131072 # a janela de contexto real do seu modelo

Ou, para endpoints personalizados, por modelo na entrada do provedor:

providers:
meu-servidor:
api: "http://localhost:11434/v1"
models:
qwen3.5:27b:
context_length: 64000

Quem usa Ollama: se você definir um num_ctx personalizado, defina o tamanho de contexto correspondente no Hermes — o /api/show do Ollama informa o contexto máximo do modelo, não o num_ctx efetivo que você configurou. Com o gateway rodando, edições em model.context_length ou em qualquer chave compression.* valem a partir da mensagem seguinte — não precisa reiniciar.

Veja Detecção de tamanho de contexto para entender como a detecção automática funciona e todas as opções de sobrescrita.

4. "Eu falei uma coisa e ele esqueceu" — o retrato congelado da memória​

Sintoma: Você pediu ao Hermes para lembrar de algo durante esta sessão, ele confirmou que salvou, mas depois, na mesma sessão, ele parece não saber.

Confira: Nada está quebrado — repare no momento. A memória salva no meio da sessão é escrita em disco na hora, mas o prompt de sistema só reflete isso na sessão seguinte.

O que isso significa: É um comportamento documentado e intencional. A memória é injetada no prompt de sistema como um retrato congelado no início da sessão, e essa injeção nunca muda no meio do caminho — isso preserva o cache de prefixo do LLM e o desempenho. Quando o agente adiciona ou remove entradas de memória durante uma sessão, as mudanças vão para o disco imediatamente, mas só aparecem no prompt de sistema quando a próxima sessão começa. As respostas das ferramentas sempre mostram o estado ao vivo, então o salvamento em si é confirmado e real.

informação

O retrato congelado na prática: "lembre de X" durante uma sessão significa que X está garantido na próxima sessão. Dentro da sessão atual, o fato continua existindo no próprio histórico da conversa — o agente só o esquece se aquela parte da conversa já tiver sido comprimida (veja o passo 7).

Veja Memória persistente para a mecânica completa.

5. A memória é limitada e curada — não é uma transcrição​

Sintoma: O Hermes não lembra de um detalhe de uma sessão da semana passada, mesmo que vocês tenham discutido bastante o assunto.

Confira: A capacidade e o conteúdo da memória. O cabeçalho de memória do prompt de sistema mostra o uso (por exemplo, [67% — 1,474/2,200 chars]), e hermes journey list mostra todas as entradas de memória e skills salvas.

O que isso significa: A memória persistente é limitada de propósito — 2.200 caracteres (~800 tokens) para o MEMORY.md e 1.375 caracteres (~500 tokens) para o USER.md. Ela guarda fatos-chave curados, não transcrições de conversa. Vale salvar preferências, fatos do ambiente, convenções e correções; detalhe bruto de discussão não é guardado ali, por design.

Para lembrar do tipo "a gente discutiu X semana passada?", o agente tem outro mecanismo: o session_search consulta todas as sessões passadas (guardadas em SQLite com busca full-text) e consegue achar coisas discutidas semanas atrás, mesmo fora da memória ativa. É só pedir — "procure nas nossas sessões passadas a discussão sobre o deploy".

Você também pode ajudar diretamente: diga "lembre disso para a próxima" depois de uma sessão produtiva, ou "faça uma limpeza na sua memória" quando ela estiver perto da capacidade, para o agente consolidar as entradas. Veja Dicas de memória e skills e Gestão de capacidade.

6. Confira se as skills e as ferramentas estão carregadas​

Sintoma: O Hermes cuidava de um fluxo específico com maestria e agora o encara de forma ingênua, ou diz que não consegue fazer algo que já fez antes.

Confira:

  • /skills — navegue pelas skills instaladas (uma skill de que o agente dependia pode ter sido removida).
  • /reload-skills — varre de novo ~/.hermes/skills/ em busca de skills instaladas ou removidas recentemente.
  • /tools list — veja as ferramentas disponíveis; uma ferramenta desativada antes com /tools disable fica fora do conjunto do agente pelo resto da sessão.
  • /context all — lista o custo por skill e por conjunto de ferramentas, o que serve também como inventário do que está realmente carregado.

O que isso significa: As skills são o conhecimento procedural do agente — fluxos de vários passos e instruções específicas de ferramentas. Se uma skill sumiu ou um conjunto de ferramentas foi enxugado (por exemplo, uma sessão iniciada com hermes chat -t "terminal" para reduzir o peso do prompt), o agente realmente tem menos com que trabalhar naquela sessão. Reative ferramentas com /tools enable, ou invoque a skill explicitamente pelo nome (/github-pr-workflow) para confirmar que ela carrega.

7. Efeitos colaterais da compressão​

Sintoma: Depois de uma sessão longa (ou logo após rodar /compress), o Hermes lembra das linhas gerais mas perdeu detalhes finos do começo da conversa.

Confira: Se a compressão disparou — /usage e /context mostram estatísticas de compressão e o estado do contexto nas plataformas de mensagem, e o /compress manual sempre informa o resultado.

O que isso significa: A compressão substitui o histórico mais antigo por um resumo — é esse o objetivo, e isso necessariamente troca detalhe por espaço. Entenda o formato disso:

  • As mensagens recentes são protegidas: por padrão, as últimas 20 mensagens ficam sem compressão (protect_last_n) e a troca inicial é fixada (protect_first_n: 3), para que o objetivo original continue visível.
  • A compactação não é destrutiva: com o padrão compression.in_place: true, a sessão mantém um único id durável e os turnos anteriores à compactação são arquivados de forma leve — ainda pesquisáveis via session_search e recuperáveis, não apagados.
  • Com in_place: false (comportamento antigo), cada compactação rotaciona para uma sessão nova ligada à anterior — uma sessão com título vira "meu projeto" → "meu projeto #2" → "meu projeto #3". Se você retomar pelo título, hermes -c "meu projeto" escolhe automaticamente a variante mais recente.
  • Um tópico de foco restringe o que um resumo completo preserva: /compress focus refatoracao-auth mantém o detalhe daquele fio às custas do resto.

Se um detalhe que sumiu na compressão importa, peça ao agente para procurá-lo (o session_search alcança os turnos arquivados), ou cole os fatos-chave de novo na conversa.

Veja Compressão de contexto para a referência completa de configurações e Linhagem automática na compressão para entender como as sessões com título se encadeiam.


Referência rápida​

SintomaPrimeiro comandoCausa provável
Tudo parece menos capaz/modelA sessão está em um modelo diferente do que você pensa
Sessão longa piorando/usagePressão de contexto — comprima ou comece de novo
Limites batidos cedo demaisLinha de inicialização da CLI / /usageTamanho de contexto detectado errado
Esqueceu o que eu disse nesta sessão— (por design)Retrato congelado da memória — aparece na próxima sessão
Esqueceu a discussão da semana passadapeça um session_searchA memória é limitada, só fatos curados
Perdeu uma habilidade específica/skills, /tools listSkill ou conjunto de ferramentas não carregado nesta sessão
Perdeu detalhes antigos depois de sessão longa/usage, /contextA compressão resumiu o histórico mais antigo