🧊 Memória persistente como snapshot frozen
No início de cada sessão, o Hermes lê o conteúdo de ~/.hermes/memories/USER.md e ~/.hermes/memories/MEMORY.md e injeta tudo no system prompt como um bloco fixo. Esse bloco não muda mais durante a sessão — é um snapshot frozen.
📐Os dois arquivos por dentro
- USER.md — perfil seu, ~500 tokens, limite 1.375 chars
- MEMORY.md — notas do agente, ~800 tokens, limite 2.200 chars
- Local:
~/.hermes/memories/ - Carregamento: uma vez por sessão (frozen)
- Atualização entre sessões: via tool
memoryou edição direta
⚠️Implicação prática
Se o agente atualizar memória durante a sessão atual, o snapshot já injetado não muda nessa sessão. Quem usa essa nova entrada é a próxima sessão. Por isso "salva isso na memória" só impacta as próximas conversas.
👤 USER.md — quem é VOCÊ
USER.md é o perfil do usuário: nome, papel, preferências, estilo de comunicação, idiomas, contextos relevantes. Tem limite rígido de 1.375 caracteres (~500 tokens). Excedeu, o agente para de aceitar novas entradas até abrir espaço.
✅ O que faz sentido aqui
- •Nome, papel/profissão, fuso horário, idioma preferido
- •Estilo: respostas curtas vs detalhadas, formal vs informal
- •Preferências técnicas estáveis (linguagens, stack, sistemas operacionais usados)
- •Regras pessoais não-negociáveis ("não me chame por apelido", "evite emojis em mensagens financeiras")
❌ O que NÃO entra em USER.md
- •Status atual ("estou trabalhando no projeto X agora") — é volátil
- •To-do list e tarefas em andamento — uso outro lugar (issues, planner)
- •Senhas, tokens, API keys — vão em
~/.hermes/.env - •Identidade do agente — isso é SOUL.md
📓 MEMORY.md — notas pessoais do agente
MEMORY.md é a memória "de trabalho" do agente. Notas sobre ambiente, decisões fechadas, paths, atalhos, fatos aprendidos. Limite rígido de 2.200 caracteres (~800 tokens). Quando enche, o próprio agente consolida entradas redundantes.
🧱 Bons exemplos de entrada
- •"Repo principal do usuário fica em
~/projetos/site/, deploy via Hostinger." - •"Usuário prefere commits no formato
tipo: descrição curta, sem prefixos extras." - •"Banco Postgres do projeto X fica acessível via
db.local.exampleporta 5432." - •"Cron de backup roda às 3h, não interferir nesse horário."
💡Limite apertado é feature
2.200 chars força você a guardar só o que realmente importa. Ferramenta perfeita pra evitar "memória bagunçada que não ajuda em nada". Se você sente falta de mais espaço, provavelmente está colocando coisa errada lá (status, tarefa, histórico).
🔧 Tool memory: add, replace, remove
O agente gerencia a própria memória via tool memory. Três operações disponíveis. Você não edita os arquivos manualmente o tempo todo — pede em linguagem natural e o modelo dispara a operação certa.
add
Adiciona nova entrada. Frase: "Salva na memória que prefiro Postgres pra projetos novos."
replace
Substitui entrada existente. Frase: "Atualiza a entrada sobre meu fuso, agora estou em Lisboa."
remove
Apaga entrada obsoleta. Frase: "Remove o que sabe sobre o projeto X, descontinuei."
🤖Auto-consolidação quando enche
Quando MEMORY.md ou USER.md atinge o limite, o agente faz pass de consolidação: junta entradas redundantes, reescreve mais conciso, descarta o que ficou obsoleto. Você pode forçar manualmente: "Faz uma limpeza no MEMORY.md, junta o que for redundante."
🔍 session_search: SQLite + FTS5
Toda conversa passa por SQLite com índice full-text (FTS5) em ~/.hermes/state.db. A tool session_search permite buscar conversas antigas por palavra-chave — é a "memória longa" complementar.
📚 Quando usar cada um
- MEMORY.md: fato durável e relevante pra MUITAS sessões. Sempre carregado.
- USER.md: seu perfil. Sempre carregado.
- SQLite + FTS5: conversa específica que pode ou não voltar a ser útil. Pesquisado sob demanda.
💡Frase pronta
"Busca no histórico de sessões qualquer conversa onde falamos sobre <tópico> e me resume os pontos principais." O agente roda session_search e te traz o material consolidado sem inflar memória.
💾Backup importa
Backup do state.db = backup da história inteira do agente. Inclua esse arquivo na rotina de backup do VPS. Perdeu, perdeu o passado.
🚫 O que NUNCA salvar na memória
Memória mal usada não é só desperdício — vira ruído ativo que prejudica o raciocínio do agente em toda sessão. E pior: secret salvo lá pode vazar em logs ou em chamadas pra modelos remotos.
🚨 Lista do "não"
- ✗Secrets, tokens, API keys, senhas — vão em
~/.hermes/.env, nunca em arquivos de memória - ✗Tarefa temporária — issue tracker, planner ou conversa atual
- ✗Status atual ("estou em férias") — vai estar errado em duas semanas
- ✗Histórico de conversa — já está no SQLite, não duplique
- ✗Procedimentos longos — vire skill (Markdown completo cabe lá)
- ✗Personalidade do agente — vai em SOUL.md
🎯Teste do "vai me servir em 6 meses?"
Antes de salvar, pergunte: "isso vai me ser útil em 6 meses, em qualquer sessão, independente da tarefa?" Se sim → memória. Se não → outro lugar.
🎯Resumo do módulo
~/.hermes/memories/.~/.hermes/state.db.Próximo módulo:
3.2 - 🛠️ Skills: SKILL.md + Progressive Disclosure