A assimetria que torna a hierarquização vantajosa
Se você mudar uma coisa na forma como projeta a memória do agente, que seja esta: pare de tratar custo de armazenamento e custo de atenção como se fossem a mesma coisa.
Tenho me aprofundado nisso em 19 sistemas, e a descoberta que continua surgindo é que aqueles que lidam bem com a memória não são necessariamente os que têm a recuperação mais sofisticada. São os que descobriram quais memórias devem estar no prompt. Esse é um problema diferente e tem uma solução diferente.
Armazenamento é barato. Atenção é cara. Um modelo com contexto de 128k lendo 110k de contexto medíocre não é, empiricamente, um agente melhor do que o mesmo modelo lendo 8k de contexto cuidadosamente selecionado. A pesquisa sobre isso é consistente: a qualidade da recuperação degrada conforme o contexto se enche de ruído, e a degradação não é linear. O modelo não simplesmente ignora o material irrelevante. Ele o processa, e o processamento sufoca o sinal.
O armazenamento não tem essa propriedade. Um fato armazenado em um banco de dados não custa nada para ser mantido. O custo só chega quando você o recupera e o carrega no prompt. O que significa que a pergunta não é "devo armazenar isso?", mas "devo recuperar isso e, se sim, quando?".
Esse reenquadramento é de onde vem a hierarquização. Itens de memória diferentes têm padrões de acesso diferentes. Algumas coisas um agente precisa a cada turno: o nome do usuário, seu projeto atual, suas preferências declaradas. Algumas coisas ele precisa com frequência, mas nem sempre: decisões recentes, perguntas em aberto, fatos episódicos das últimas sessões. Algumas coisas ele deve conseguir encontrar quando necessário, mas nunca deve sobrecarregar cada turno: notas de reunião de três meses atrás, tarefas concluídas, transcrições brutas, material de referência avulso.
Um armazenamento plano trata todas as três categorias de forma idêntica. Itens quentes pagam o custo de busca de itens frios. Itens frios inflam o prompt com ruído. Não há mecanismo para itens progredirem à medida que se tornam mais relevantes, e não há mecanismo para itens serem removidos à medida que se tornam menos relevantes. A analogia com sistemas operacionais é exata: CPUs têm L1, L2, L3, RAM, SSD e disco não porque os bytes são diferentes, mas porque a frequência de acesso varia em ordens de grandeza. Sete dos 19 sistemas que analisei já haviam construído hierarquização explícita antes de eu começar a olhar. Dois deles valem a pena entender em detalhe.
MemoryOS como implementação de referência
O MemoryOS é a implementação mais clara de memória hierarquizada entre os 19 sistemas. Três níveis, cada um com um formato de dados distinto, um orçamento de latência distinto e um papel distinto.
O nível de curto prazo é um deque do Python com comprimento máximo de 10 pares de Q&A. Sem embeddings, sem índice de busca, sem rastreamento de calor. É puro material bruto conversacional, as últimas dez trocas, disponível com latência de microssegundos. Quando o deque se enche, o par mais antigo é drenado para o nível de médio prazo.
O nível de médio prazo comporta até 2000 sessões. Cada sessão carrega um resumo, um embedding, um conjunto de palavras-chave e contadores de calor. O nível é indexado com Faiss e buscado por similaridade de cosseno. Quando o nível atinge a capacidade, as sessões mais frias são expulsas. Quando uma sessão fica quente o suficiente, é promovida ao nível de longo prazo.
O nível de longo prazo é um esquema de psicologia e alinhamento de 90 dimensões, dois deques de base de conhecimento, um para fatos do usuário e outro para fatos do assistente, cada um com limite de 100 entradas. Esta é a camada persistente, a que sobrevive entre sessões e carrega o modelo duradouro do usuário.
A fórmula de calor que governa a promoção são doze linhas de Python. Três sinais: frequência de visita, um análogo de LFU; profundidade de interação, um proxy para engajamento tópico; e decaimento de recência, exponencial com meia-vida de 24 horas. Um segmento cruza o limiar de promoção em 5,0. Após a promoção, os contadores de visita e interação são reiniciados para zero, e o calor colapsa de volta para aproximadamente 1,0.
A decisão de design que é fácil de perder: o calor controla a promoção, não a recuperação. O recuperador é puramente semântico, similaridade de cosseno sobre os embeddings de médio prazo. O calor é um sinal de fundo que decide se um segmento deve ser promovido ao nível de longo prazo. As duas preocupações são desacopladas, e esse desacoplamento importa mais do que a própria fórmula.
O que o MemoryOS deixa de lado merece ser nomeado. Os coeficientes são fixados em 1,0, não há mecanismo para aprender pesos a partir de padrões reais de uso. Não há caminhos de rebaixamento; uma vez que algo chega ao nível de longo prazo, permanece. E a fórmula otimiza para frequência em vez de importância. Um fato crítico, mas raro — o nome de um parceiro, uma condição médica, uma restrição forte — pode nunca cruzar o limiar de promoção se só aparecer uma vez. Quando o nível de médio prazo expulsa o segmento, o fato desaparece.
Níveis derivados da teoria do Hindsight
O Hindsight chega à mesma estrutura de três níveis a partir de um ponto de partida completamente diferente. Enquanto o MemoryOS se baseia na teoria de cache de SO, o Hindsight se baseia na ciência cognitiva.
Os três níveis são Mundo, Experiência e Observações. Mundo contém afirmações objetivas sobre o universo, verdade fundamental, sempre ativa, de longa duração. Experiência contém ações em primeira pessoa do próprio sistema, o registro episódico. Observações contêm crenças consolidadas derivadas de fatos de Mundo e Experiência, carregando IDs de memória de origem, uma contagem de provas e um campo de histórico que rastreia como a crença evoluiu.
Todos os três níveis vivem na mesma tabela de banco de dados, diferenciados por um discriminador de tipo de fato. Índices HNSW parciais são construídos por tipo de fato. O esquema é unificado; os padrões de acesso não são.
A promoção no Hindsight não é orientada por contadores. É uma consolidação orientada por LLM em lote. Quando um novo fato é escrito, ele é enfileirado em uma tabela de operações assíncronas. Um worker em segundo plano busca os novos fatos junto com observações existentes sobrepostas, constrói um prompt em lote e pede ao modelo para criar, atualizar e excluir. As memórias de origem recebem um carimbo de consolidated-at para evitar reprocessamento. Todo novo fato, independentemente da frequência com que foi acessado, é considerado para promoção ao nível de Observações.
Essa é a principal diferença em relação ao MemoryOS. Ao vincular a promoção de nível superior à consolidação em vez do calor, o Hindsight evita o ponto cego para fatos críticos, mas raros. Uma única passagem de consolidação considera cada novo fato. A frequência é irrelevante para a progressão de algo.
Dito de forma simples: dois sistemas, primeiros princípios diferentes, linguagens de implementação diferentes, casos de uso-alvo diferentes, e ambos chegam a três níveis com material bruto na base, uma camada de trabalho no meio e uma camada persistente sintetizada no topo. Ambos usam promoção assíncrona. Ambos carregam proveniência de volta para níveis inferiores. Isso é o que a evolução convergente parece na arquitetura de software, e é o sinal mais forte que conheço de que um padrão é estrutural.
Hierarquização condicionada por gênero do @supermemory
O supermemory opera no formato de implantação de API gerenciada, o que muda a implementação sem mudar a arquitetura. Os três níveis são perfil estático, perfil dinâmico e armazenamento de documentos e chunks.
O perfil estático contém fatos estáveis de longo prazo, o nível quente. Ele é retornado como um array estático do endpoint de perfil, cacheado na borda, com um orçamento de latência de aproximadamente 50ms. O perfil dinâmico contém contexto recente e episódico, o nível morno. Muitas entradas carregam um campo forgetAfter que define um TTL. O armazenamento de documentos e chunks é o nível frio, consultado via endpoints de busca quando necessário.
A atribuição de nível ocorre no momento da escrita. Um LLM de extração classifica cada memória recebida com um booleano isStatic e, opcionalmente, um valor forgetAfter. A classificação é imposta por um prompt de extração fechado, uniforme para todos os consumidores.
O formato de implantação de API gerenciada permite três coisas que um designer in-process não pode copiar diretamente, mas deve entender. Os dados do nível frio podem ficar em hardware mais barato: armazenamento de objetos para bytes brutos, um armazenamento relacional padrão para metadados e chunks, com o perfil quente cacheado separadamente na borda. O nível quente tem seu próprio endpoint com seu próprio SLA, separado do caminho de busca. E o prompt de extração é centralizado, o que significa que a atribuição de nível é consistente de uma forma que a classificação por agente raramente é.
As compensações são reais. Um nível quente remoto só é rápido se a rede for rápida. O agente não pode substituir a classificação de nível do motor. O prompt de extração é uma caixa-preta. Mas o padrão arquitetônico — nível quente como seu próprio endpoint, nível frio em hardware mais barato, atribuição de nível no momento da escrita — vale a pena ser copiado mesmo que o formato de implantação não seja.
Promoção vs. tipologia fixa
O mem9 é o caso de contraste que esclarece o que hierarquização não é.
O mem9 tem uma coluna de tipo de memória com três valores: fixado, insight e resumo. Memórias fixadas são atribuídas por caminhos explícitos de escrita de conteúdo, criadas manualmente, protegidas da reconciliação do LLM. Insights são atribuídos por cada escrita extraída pelo LLM, mutáveis, versionáveis, substituíveis. Ambos participam do mesmo recall híbrido com a mesma pontuação RRF. O campo de tipo é uma flag de proteção de escrita, não um filtro de recuperação e não um sinal de nível.
Isso é tipologia, não hierarquização. A distinção importa porque os dois são fáceis de confundir. Tipologia descreve governança: quem pode modificar essa memória e sob quais condições. Hierarquização descreve padrões de acesso: com que frequência essa memória é necessária e qual representação de armazenamento atende melhor a essa frequência. Um sistema pode ter ambos. O isStatic do supermemory é um sinal de nível, enquanto uma flag isInference separada está mais próxima de uma classe de governança. Mas confundi-los produz a maior ambiguidade na prática.
Se você se pegar adicionando um campo de tipo às suas linhas de memória, a pergunta a fazer é se o campo descreve um padrão de acesso ou uma classe de governança. Se for um padrão de acesso, você está construindo hierarquização. Se for uma classe de governança, você está construindo tipologia. Ambos são úteis. Não são a mesma coisa.
O que o plano custa a você
Quatro coisas concretas decorrem do uso de um armazenamento de memória plano.
O caminho quente paga o custo de busca do caminho frio. Cada recuperação varre o mesmo índice sobre os mesmos itens. O agente procurando o nome do usuário paga o mesmo custo de busca que o agente procurando uma nota de reunião de seis meses atrás. Em pequena escala, isso é invisível. Em escala, é um problema de latência.
O caminho frio infla o prompt com ruído. A recuperação retorna itens semanticamente próximos, o que inclui contexto permanente, fatos substituídos e material que é factualmente correto, mas irrelevante para o turno atual. O modelo processa tudo isso. A relação sinal-ruído na janela de contexto degrada à medida que o armazenamento cresce.
Não há mecanismo para itens progredirem. A memória não é estática. Um fato episódico fugaz do início de um relacionamento pode, com o tempo, se tornar um sinal duradouro sobre as preferências ou restrições do usuário. Um armazenamento plano não oferece mecanismo para perceber essa transição. O item permanece na mesma representação em que foi escrito, independentemente de como sua relevância mudou.
Não há mecanismo para itens serem removidos por envelhecimento. Rebaixamento não é exclusão. Um armazenamento plano que deseja remover material obsoleto precisa excluí-lo. Um armazenamento hierarquizado pode movê-lo para uma representação mais fria, ainda encontrável, sem mais sobrecarregar o caminho quente. O armazenamento plano força uma escolha binária que o hierarquizado não força.
O resultado final
18 dos 19 sistemas implementam hierarquização, fazem gestos a ela ou têm recomendações explícitas para ela. A exceção é o mem9, que tem uma camada de tipologia resolvendo um problema diferente e se beneficiaria de hierarquização sobre ela.
Se você está construindo memória de agente do zero, a progressão que os 19 sistemas apontam é esta. Identifique o que o agente precisa a cada turno — esse é seu nível quente. Identifique o que ele precisa com frequência, mas nem sempre — esse é seu nível morno. Identifique o que ele deve encontrar quando necessário, mas nunca sobrecarregar cada turno — esse é seu nível frio. Escolha um mecanismo de promoção: baseado em calor como o MemoryOS, julgamento por LLM como o Hindsight, ou classificação no momento da extração como o supermemory. Escolha um mecanismo de rebaixamento: decaimento temporal, TTL ou categorias de frescor. Mantenha promoção e pontuação de recuperação separadas no início; o desacoplamento é mais fácil de adicionar do que de desfazer. Rastreie a proveniência dos níveis superiores de volta aos níveis inferiores, para que você possa sempre responder à pergunta de onde veio uma crença sintetizada.
Os 19 sistemas não são unânimes em muita coisa. Nisto, são: um único armazenamento de memória plano é o padrão errado para qualquer sistema de memória de agente não trivial.
Armazenamento é barato. Atenção é cara. Construa o sistema que explora a diferença.
Se você achou este artigo interessante, por favor compartilhe.





