Memória Partilhada para Frotas de Agentes: hermes-memory-pgvector
Quando executa mais do que um agente de IA — um minion de marketing, um minion de trading, um minion de resposta a incidentes — cada um precisa de memória. A ferramenta de memória incorporada dá a cada agente a sua própria. Isso é suficiente até querer que partilhem, ou até querer recordar o que o agente aprendeu há seis semanas sem pagar uma ida e volta a um LLM só para procurar a informação.
hermes-memory-pgvector é um pequeno plugin de Postgres + pgvector que espelha as escritas da memória do agente para um armazenamento partilhado, incorporado e pesquisável. Publicado no PyPI na v0.4.2.
Novo na v0.4.2 — instalação nativa via pip
hermes-agent descobre fornecedores de memória ao analisar diretórios de plugins (plugins/memory/<name>/ incluído no pacote, $HERMES_HOME/plugins/<name>/ do utilizador) — nunca procura em site-packages, por isso pip install por si só deixava o plugin corretamente instalado e completamente invisível. A v0.4.2 resolve essa lacuna: pip install coloca o código na máquina, e um único comando hermes-pgvector install gera o shim de descoberta que a framework realmente lê.
Novo na v0.4.1 — recall híbrido (vetor + texto integral)
recall_memory e recall_conversation passam agora a fundir a classificação de cosseno HNSW com uma classificação de texto integral do PostgreSQL usando Reciprocal Rank Fusion (k=60). Uma linha surge se qualquer dos classificadores gostar dela, o que resolve os dois pontos cegos da pesquisa vetorial pura: correspondências lexicais exatas que o cosseno suaviza (códigos de erro, nomes de anfitrião, flags, identificadores raros) e linhas apenas de texto com uma embedding NULL — escritas enquanto o endpoint de embedding estava indisponível — que o índice vetorial não consegue ver de todo. O recall híbrido também serve como recuperação de melhor esforço para essas linhas até à próxima execução de backfill.
O que a v0.4.0 acrescentou
Essa versão manteve a regra "sem LLM no caminho crítico" e acrescentou quatro capacidades na camada de armazenamento:
- Governança de identidade. As chaves de sessão de mensagens diretas fundem-se num único contentor seguro para a privacidade — sem dispersão de temas por contacto, sem PII — o tráfego de benchmark é colocado em quarentena, e uma allow-list opcional encaminha nomes de temas escritos com erro para um padrão seguro em vez de criar silenciosamente um novo.
- Atribuição e delegação de agentes. Um novo registo e arestas de proveniência registam que agente delegou o quê a quem, consultável através de uma vista de base de dados. Proveniência pura de quem/quando — nunca um repositório de factos.
- Backfill de embeddings. As linhas escritas apenas em texto durante uma indisponibilidade do endpoint de embeddings já não ficam presas: um comando idempotente volta a gerar embeddings para elas para que voltem a ficar pesquisáveis.
- TTL de conversação e controlos de custos. Uma limpeza executada pelo operador reduz turnos antigos de chat (memórias duradouras nunca são tocadas), e uma política de embeddings ajusta o custo de embeddings para cima ou para baixo.
Tudo é disponibilizado através de uma CLI de manutenção (hermes-pgvector) cujos comandos destrutivos têm por predefinição o modo dry-run. A linha 0.4.x é uma atualização drop-in a partir da v0.3.x — aplique as migrações aditivas e os novos hooks entram em funcionamento; salte-os e todo o resto corre inalterado.
O que faz, na prática
Em uma linha: "uma camada de armazenamento que dá ao modelo de memória incorporado um suporte duradouro, multi-tenant e pesquisável semanticamente, sem LLM no caminho crítico."
Duas tabelas, ambas com índices vetoriais HNSW. memory_entries espelha as escritas para os ficheiros MEMORY.md/USER.md do agente. conversations guarda turnos de chat substantivos (≥40 carateres, com material padrão filtrado). As embeddings têm 768 dimensões, calculadas por um endpoint externo — Ollama, compatível com OpenAI, à sua escolha. O agente nunca fica bloqueado por isso: as escritas regressam em microssegundos e o worker de embeddings trata do resto numa fila em segundo plano.
Temas por agente por predefinição
Cada pedido transporta um cabeçalho X-Hermes-Session-Key que delimita os dados por agent_identity. As notas de marketing não contaminam o recall de trading. Quando realmente quer pesquisa entre temas, passe scope='all' explicitamente. A predefinição é a opção segura.
Porque autónomo, e não um fork
hermes-agent fechou a sua lista integrada de fornecedores de memória por política, por isso isto existe como uma análise separada do diretório /plugins em vez de um fork upstream. Coloque-o ao lado do agente, defina algumas chaves de configuração, reinicie. O rollback é simétrico: desative o fornecedor, opcionalmente elimine as tabelas. Sem estado de longa duração para migrar, sem patches de kernel para manter.
O que não é
Não é uma substituição para Honcho. Não é um grafo de conhecimento. Não é uma framework RAG. É intencionalmente uma camada fina que faz uma coisa — transformar a ferramenta de memória incorporada num armazenamento partilhado, duradouro e pesquisável por vetor — e sai do caminho. Sem derivador LLM, sem ciclo dialético, sem opinião sobre como deve dividir em blocos ou reclassificar. Apenas matemática vetorial.
Obtenha-o
pip install hermes-memory-pgvector
hermes-pgvector install
Código-fonte, migração e configuração no GitHub:
