Estudos de caso
Exocortex: como dei memória permanente à IA para que as conversas parem de evaporar
Por padrão, toda conversa com IA começa do zero — e as correções nativas, o /compact e as memórias embutidas, deterioram o contexto em vez de preservá-lo. Este é o estudo de caso do Exocortex, a memória em camadas que construí para que nem eu nem a IA voltemos a começar do zero. Dados reais, medidos no dia 16 de julho de 2026, com as limitações abertas por inteiro.
Existe um defeito na forma como a maioria de nós usa IA e que a gente nem percebe mais, de tão acostumado: toda conversa começa do zero. Você passa uma tarde inteira ensinando um modelo o contexto de um projeto — as decisões, os becos sem saída, o porquê de cada escolha —, fecha a janela, e no dia seguinte é como se nada tivesse acontecido. A inteligência estava toda ali, e evaporou junto com a sessão.
Este texto é sobre o que eu fiz para parar de aceitar isso. Não um truque, não um plugin: uma memória permanente, em camadas, que captura o que acontece nas conversas, destila esse material, guarda para sempre e devolve o que importa quando importa. Eu a chamo de Exocortex — internamente, também de CMS, Context Memory System. Faz oito meses que ela roda todo dia no meu trabalho, e a essa altura eu não sei mais trabalhar sem ela.
Por ser proprietária, o que compartilho neste estudo de caso são os resultados, a arquitetura e o mecanismo — não o passo a passo de implementação, o molho secreto. Mas por ser um estudo de caso, e não um artigo de vitrine, eu vou mais fundo no técnico do que num post comum: explico o quê, o como em nível de camada e pipeline, e principalmente de onde vem cada número. Inclusive os feios. Sobretudo os feios.
O problema de verdade não é a IA esquecer. É que a "solução" nativa piora as coisas.
Todo mundo que trabalha com IA de forma séria bateu nessa parede: a janela de contexto tem um limite, e quando ela enche, alguma coisa precisa sair. As ferramentas oferecem duas saídas nativas para isso. A primeira é a compactação — no Claude Code, o /compact — que resume a conversa para caber mais. A segunda são os recursos de "memória" embutidos em praticamente qualquer CLI de IA, que prometem guardar o que você já disse.
O problema é que, na minha experiência de uso diário, as duas deterioram o contexto em vez de preservá-lo. A compactação nativa é subtração: ela resume, e resumir é escolher o que jogar fora. Pontos importantes da janela somem ou ficam borrados, e você só descobre quais quando a IA responde como se nunca tivesse tido aquela informação. A memória nativa tem o mesmo defeito de origem — ela guarda uma versão empobrecida, não o sinal limpo.
E aqui está a consequência concreta, a que doeu: projetos que antes eram simplesmente impossíveis de tocar por causa dessa perda de contexto passaram a ser viáveis quando resolvi o problema por baixo. Não é conveniência. É a diferença entre "dá para fazer" e "não dá".
A compactação nativa de contexto é subtração: ela resume, e resumir é decidir o que jogar fora. O problema de a IA esquecer não se resolve descartando com mais elegância — se resolve guardando o sinal limpo em outro lugar e trazendo de volta o que importa.
A pergunta que ficou martelando foi essa: e se, em vez de espremer a conversa para caber numa janela que sempre vai encher de novo, eu tirasse a memória de dentro da janela? Guardasse fora, num lugar próprio, destilada e organizada — e devolvesse à IA só o pedaço relevante, na hora certa?
Por que memória, e por que em camadas: o modelo veio da cabeça humana
A ideia não foi inventada do nada. Ela veio de olhar para como a memória humana funciona.
Você não carrega o dia inteiro na consciência o tempo todo. Tem o que está agora na sua frente — quente, imediato, volátil. Tem o contexto de médio prazo, aquilo que você acessa quando precisa. E tem a memória de longo prazo, consolidada, que não some, mas também não fica ocupando espaço mental o tempo inteiro — você a puxa quando algo a evoca, por associação, por data, por semelhança.
O Exocortex copia essa arquitetura em três camadas:
Foundation — a base. O que é estável e quase sempre relevante: quem é você, as decisões estruturais, o que não muda de uma sessão para outra. É a memória de longo prazo consolidada.
Context — a camada intermediária. O contexto de médio prazo que se acessa quando o assunto pede.
Active — o que está quente agora, o material da sessão em andamento, volátil e cheio de detalhe.
A analogia com memória de curto e longo prazo não é enfeite de texto: ela é o princípio de projeto. Cada camada tem um orçamento próprio de tokens e um comportamento próprio. A Foundation é enxuta e protegida; a Active é generosa e efêmera. E isso resolve um problema que a compactação nativa nunca resolve: em vez de tratar toda a conversa como uma coisa só que precisa encolher, o sistema sabe o que é permanente, o que é contextual e o que é descartável — e trata cada um de forma diferente.
Para dar dimensão concreta, estes eram os orçamentos e o uso real de cada camada no momento em que apurei os dados: a Foundation em 843 de 5.000 tokens, a Context em 1.043 de 10.000, e a Active em 59.210 de 15.000 — sim, acima do orçamento, num estado de alerta. Volto a esse alerta mais adiante, na parte das limitações, porque ele conta uma verdade sobre o sistema em vez de esconder um defeito.
A jornada até aqui: 8 meses, de 32 para 4.276 memórias
Uma memória só prova o seu valor com o tempo — porque a graça dela é justamente acumular. Então o dado que mais me diz alguma coisa não é uma medição de um instante, é a curva.
O Exocortex começou a registrar em novembro de 2025 com 32 memórias. Em julho de 2026, quando apurei os números para este texto, eram 4.276 — cerca de 229 dias de acúmulo contínuo, sem que nada tenha evaporado no caminho. A curva mês a mês conta a história: 32 em novembro de 2025, 223 em dezembro, 326 em janeiro de 2026, 499 em fevereiro, 1.519 em março, 3.034 em abril, 4.004 em maio, 4.225 em junho, 4.276 em julho. O pico de crescimento foi entre março e maio de 2026 — o período em que a coisa passou de experimento a infraestrutura do meu dia a dia.
Uma memória de IA que nunca evapora se prova na curva, não no instante: de 32 registros em novembro de 2025 para 4.276 em julho de 2026, sem perder o acumulado no caminho. É a diferença entre uma ferramenta que lembra e uma que recomeça do zero toda sessão.

Isso é a prova mais direta do argumento inteiro. Cada uma dessas 4.276 memórias é uma conversa que, num fluxo normal de IA, teria evaporado no fechamento da sessão. Aqui, ficou.
Como a memória se forma: o pipeline de destilação, contado por dentro
Capturar a conversa é a parte fácil. O trabalho de verdade é transformar um monte de texto bruto de sessão em memória que valha a pena guardar e recuperar. É aí que mora a engenharia, e é aqui que vou ser o mais concreto possível sem entregar o passo a passo.
O material passa por um funil de estágios:
L0 — captura bruta. É a conversa como ela aconteceu, sem tratamento. Volumosa, repetitiva, cheia de ruído: idas e vindas, coisas que não deram em nada, o mesmo ponto dito de três formas. É a matéria-prima.
L1 — refinamento. Aqui é onde a inteligência acontece. O bruto é lido, entendido e reescrito como uma memória limpa: o que importou, por quê, quais decisões ficaram de pé. É o estágio que separa sinal de ruído — e, como vou mostrar nos números, é o que custa tempo, porque pensar custa.
Densificação com NTC. Sobre a memória já refinada entra o NTC, a engenharia de prompt proprietária que criei — a mesma do primeiro estudo de caso desta série. Aqui ele não corta muito; ele organiza. A memória fica mais densa e mais fácil de buscar depois, sem virar um resumo empobrecido. Sinal sem ruído, do jeito que a tese do NTC prega.
Embeddings. Cada memória vira também um vetor — uma representação numérica do seu significado — para permitir busca por semelhança semântica, não por palavra exata.
L2 — PostgreSQL. No fim, a memória destilada e vetorizada é persistida num banco de dados dedicado, permanente, fora da janela de qualquer sessão.
Repare no encadeamento: bruto → refinado → densificado → vetorizado → guardado. Cada estágio faz uma coisa e passa adiante. E o resultado é uma memória que não é um "resumo" no sentido de coisa cortada — é uma destilação no sentido de coisa concentrada.

A recuperação: por relação, por data, por significado — não por "colar tudo de volta"
A parte que muda a minha vida no dia a dia não é o guardar. É o recuperar.
Quando abro uma sessão nova, o sistema não me faz colar o histórico. Ele reinjeta a memória relevante por conta própria — e "relevante" aqui é definido por vínculos: relacionamentos entre memórias, datas, e proximidade semântica via os embeddings. Eu pergunto algo sobre um projeto, e o que volta é o que aquele assunto evoca em toda a base, inclusive coisas de outras sessões que eu nem lembraria de procurar.
Na prática, isso significa uma coisa que virou rotina para mim: eu saio de uma sessão com a janela em torno de 90% de uso — cheia — e abro uma nova sem perder os detalhes. Não só os da conversa anterior, mas os de várias. A memória volta pela relação, pela data, pelo significado. É o mais perto de "lembrar" que eu já vi uma máquina chegar.
E tem o controle: as camadas são geradas de forma automática, mas eu posso forçar o salvamento quando quero cravar um momento. Automático por padrão, manual quando importa. Essa combinação é o que me dá a segurança de saber que nada vai se perder.
Os números, e de onde cada um veio
Agora os dados. Todos foram apurados em modo somente-leitura no dia 16 de julho de 2026, direto do sistema em produção. Nada aqui é estimativa.
O funil de compressão
O número de manchete é este: as 4.276 memórias ocupavam 56,08 milhões de tokens em estado bruto (L0). Depois do refinamento (L1), caíram para 14,05 milhões. Depois da densificação com NTC, para 11,00 milhões. Isso dá uma redução média de ~80% ao longo das 4.276 memórias — de 56 milhões para 11 milhões de tokens, cerca de 45 milhões economizados. Só a etapa de refinamento (L0 para L1) já responde por 42 milhões desse corte; a densificação com NTC apara o resto.
Na memória típica, a mediana guarda por volta de 19% do tamanho bruto — ou seja, uns 81% de redução na conversa mediana. Uma única conversa chegou a passar de 92% de redução, mas isso é um caso ilustrativo, o melhor da distribuição, não a média — e eu marco isso de propósito, porque citar o melhor caso como se fosse o normal é o começo da desonestidade.
Tem uma nuance que preciso abrir, porque ela é contraintuitiva. O corte pesado acontece de L0 para L1 — o refinamento. A etapa do NTC, de L1 para o final, é um aperto leve: na mediana, ela guarda uns 90% dos tokens que recebeu. O valor do NTC aqui não é cortar, é densificar e deixar buscável. Confundir uma coisa com a outra seria vender fumaça, então: o grande enxugamento é a destilação; o NTC é a organização por cima.
A escala
Para dar dimensão do que existe guardado hoje: 4.276 memórias em NTC, 4.254 memórias refinadas em L1, 2.644 capturas brutas ocupando 5,28 GB. A deduplicação por SHA-256 identificou 1.348 conteúdos únicos (647 hashes de conversa e 701 de documento) — ou seja, o sistema não guarda a mesma coisa duas vezes. Os embeddings são 4.271 memórias representadas em 384 dimensões cada, com um modelo multilíngue. No total, 123.906 mensagens já passaram pelo pipeline, ao longo de 2.021 execuções.
Um aviso que faço questão de repetir sempre que apareço com um número grande de tokens: token é escala de uso, não prova de competência. 56 milhões de tokens brutos dizem que eu uso IA muito, não que uso bem. A parte que fala de qualidade é a redução e a recuperação — não o tamanho da pilha.
A latência: a inteligência custa tempo
O pipeline rodou 2.019 execuções completas de ponta a ponta. A mediana de tempo foi de cerca de 227 segundos (uns 3,8 minutos), e o percentil 95 ficou em torno de 581 segundos (uns 9,7 minutos).
Mas a distribuição é bimodal, e esconder isso distorceria a leitura. Há 367 execuções abaixo de 10 segundos — essas são casos em que não havia nada de novo para processar: cache batido, sem trabalho a fazer. O resto são as execuções de verdade, as de 2 a 10 minutos, que fazem o processamento completo.
Quando abro uma execução real por estágio, fica claro onde o tempo mora: o refinamento L1 levou 272,6 segundos, algo em torno de 73% do tempo total. A densificação com NTC, 73,8 segundos. Embeddings e a sincronização com o L2 são caudas baratas. A lição é honesta e vale como frase solta:
A parte cara do pipeline não é comprimir nem guardar — é entender. O refinamento, que transforma bruto em memória limpa, come cerca de 73% do tempo. A inteligência custa; o armazenamento é barato.
PostgreSQL não é fraqueza. É a memória que atravessa máquinas.
Tem uma objeção que eu ouço e discordo: "mas guardar num banco de dados externo não é frágil?". Para mim é o contrário — é justamente a força do projeto.
Uma memória presa dentro de uma janela de contexto morre com a sessão. Uma memória num banco de dados dedicado, com embeddings vetoriais, é portátil. Ela pode ser compartilhada entre máquinas, entre aplicações — em tese, até entre robôs. Uma instância aprende, e todas podem lembrar. É a diferença entre a lembrança de um indivíduo e o conhecimento de uma organização.
Sobre a evidência dessa camada, preciso ser rigoroso e honesto. No livro-razão local, 4.275 das 4.276 memórias estão marcadas como sincronizadas com o L2, e 1.645 processos filhos de sincronização foram disparados ao longo do histórico. Na execução mais recente, os estágios de sincronização e de embeddings do L2 completaram — o que prova que a cadeia inteira, de L0 até o PostgreSQL, chega ao fim de ponta a ponta.
Agora o limite, dito na cara: eu não consultei a contagem de linhas ao vivo no PostgreSQL. Isso exigiria abrir credenciais do banco, o que evitei de propósito para este estudo. Então a capacidade de memória distribuída eu afirmo pelo livro-razão local de sincronização e pelos estágios que completaram — não por uma contagem de linhas no banco em tempo real. Não vou inventar um número de PG que eu não fui buscar.
As limitações (porque candura é credibilidade)
Um estudo de caso que só tem boas notícias é panfleto. Então, com o mesmo cuidado dos números bons, os buracos.
Tem lixo na base, e eu sei disso. Das memórias que passaram de L0 para L1, 823 entradas ficaram com zero tokens refinados — são pedaços vazios ou só de metadado, coisas que entraram no pipeline mas não tinham conteúdo real para destilar. E, na direção oposta, 122 memórias cresceram em vez de encolher: eram entradas minúsculas que ganharam mais estrutura do que tinham de origem. Nenhuma das duas coisas é bonita, e as duas são reais.
O orçamento da camada Active está estourado agora, no momento em que escrevo. Os números que mostrei lá em cima: Foundation em 843 de 5.000 tokens, Context em 1.043 de 10.000, e Active em 59.210 de 15.000 — 394% do orçamento, em alerta. Eu poderia ter apurado num momento mais bonito. Não apurei de propósito. Esse alerta é a fiscalização de orçamento funcionando ao vivo: quando a Active estoura, o sistema reage — reorganiza, comprime, consolida. Ver o alerta aceso é ver o mecanismo trabalhando, não um defeito varrido para debaixo do tapete.
E aqui vale uma comparação que confunde muita gente, então deixo explícita: a soma da camada Active (59.210 tokens) e o current.md (o retrato consolidado e ao vivo da memória, 4.254 tokens, bem abaixo do alvo de 30.000) são coisas diferentes. A Active soma todo o conteúdo quente de sessão, bruto. O current.md é a visão destilada — o que sobra depois de organizar. Um é a bagunça momentânea; o outro é o resumo limpo dela.
Não meço tudo que eu gostaria. Uma coisa eu consigo cravar com número real, e outra não. O custo de arrastar uma janela cheia contra recuperar a memória numa sessão nova, isso eu calculo com o preço de tabela do modelo, e mostro adiante. Mas a qualidade da recuperação — o quanto a IA de fato trabalha melhor com a memória destilada do que com a janela entulhada — essa é a minha experiência e a minha lógica, não uma métrica que eu bati num teste controlado. Vou defender esse ponto com o que tenho: raciocínio ancorado em dados. Mas aviso que é raciocínio, não um índice de qualidade que eu não medi.
Uma sessão de quase 1 milhão de tokens vira uma memória de 15 mil
Este é o número que melhor resume o que a memória faz, e ele merece ser dito com cuidado, porque é fácil apresentar errado.
Primeiro, o que não fazer: pegar um estágio intermediário do meu pipeline e dizer "olha quanto isso comprimiu". O começo real de tudo não é um arquivo já tratado — é a janela de contexto da sessão, cheia, do jeito que ela fica depois de uma tarde de trabalho: o system prompt, as ferramentas, os arquivos que a IA leu, e o ruído que se repete a cada turno da conversa. É essa janela inteira que precisa virar memória. E o fim de tudo é a memória final — refinada, densificada, organizada em camadas — que eu recupero na sessão seguinte.
Então medi exatamente isso, de ponta a ponta, em sessões reais deste e de outros projetos: qual era o pico da janela de contexto, e em quanto de memória final ela se transformou. Os números são estes:

Uma sessão que chegou a 969 mil tokens de janela — quase 97% de uma janela de 1 milhão — virou uma memória final de 18,6 mil tokens. Outra, de 966 mil, virou 13,8 mil. Outra, de 943 mil, virou 8,3 mil. O padrão se repete: uma janela beirando o milhão se transforma numa memória final na casa dos 13 a 19 mil tokens. Sessões menos densas geram menos; algumas ficam em 7 ou 8 mil. A faixa é essa, e eu prefiro dar a faixa a fingir um número único.
E aqui está a parte que quero deixar clara, porque é o mérito do sistema e não um acaso: esse encolhimento não é "espremer" a janela. É o resultado de estágios sucessivos de eliminação de ruído. A captura já entra tirando repetição; o refinamento tira mais, e reescreve o que sobrou como conhecimento limpo; a densificação com NTC organiza; e as camadas separam o que é permanente do que é passageiro. Cada etapa joga fora ruído e preserva sinal. O que sobra no fim não é um resumo cortado — é o essencial concentrado.
Uma sessão de IA que encheu quase 1 milhão de tokens de janela de contexto vira, no fim do pipeline, uma memória final de 13 a 19 mil tokens. Não por compressão bruta, mas por eliminação de ruído em camadas: a captura tira repetição, o refinamento reescreve como conhecimento limpo, e o que sobra é sinal concentrado — pequeno o bastante para caber numa sessão nova, grande o bastante para não perder o que aconteceu.
Repare que a memória final não é minúscula, e isso é de propósito. Se eu espremesse até virar meia dúzia de linhas, ela perderia o detalhe do que aconteceu — e recuperar uma memória sem detalhe é começar quase do zero de novo. Os 15 mil tokens são o ponto de equilíbrio: uma fração limpa da janela original, mas densa o suficiente para reconstruir o contexto de verdade. Não é à toa que, quando recupero cerca de 30 memórias de uma vez, isso dá algo em torno de 100 mil tokens — o suficiente para retomar semanas de trabalho numa sessão nova e leve.
Onde a memória em camadas muda o meu trabalho de verdade
Números são abstratos até você ver onde eles pousam. Então deixa eu ser concreto sobre o que essa memória faz no meu dia a dia — e são dois modos de uso bem diferentes.
Modo um: uso normal, do dia a dia. No trabalho comum, eu não fico compactando a toda hora. Deixo a sessão correr, e chega um ponto — por volta de 70% a 90% de uso da janela — em que já não compensa continuar ali. Uma janela nesse nível de ocupação atrapalha mais do que ajuda: virou bagunça, ruído acumulado, e cada mensagem nova fica mais cara e menos precisa. Aí eu salvo a memória, fecho, e recupero o destilado numa sessão nova e limpa. Isso conecta direto com a tese do NTC do primeiro estudo de caso: o inimigo da compreensão não é a densidade, é a bagunça. Sinal sem ruído.
E a diferença de custo aqui não é retórica — dá para calcular, com o preço real do modelo. Vou usar o Claude Opus 4.8, cujo preço de tabela é 5 dólares por milhão de tokens de entrada, ou 50 centavos por milhão quando a entrada vem do cache. O detalhe importante é como o cache funciona: a primeira mensagem numa janela grande precisa escrever o cache — e paga caro por isso; as mensagens seguintes leem do cache, mais barato, mas ainda proporcional ao tamanho da janela. Ou seja: janela grande é cara mesmo com o cache ajudando. Veja o que custam duas mensagens em cada cenário:

Continuar numa janela em 900 mil tokens custa cerca de US$ 6,16 por duas mensagens. Na mesma situação, salvar a memória e recuperá-la numa sessão nova de uns 18 mil tokens custa US$ 0,20 — cerca de 30 vezes mais barato. Numa janela em 700 mil, a conta é US$ 4,81 contra os mesmos US$ 0,20 (umas 24 vezes). Em 500 mil, US$ 3,46 (umas 17 vezes). E isso já contando o cache a favor da janela cheia, no cenário mais generoso possível para ela. Preciso ser honesto sobre o que é isto: um cálculo ilustrativo, com preços reais de tabela, não uma fatura que eu bati. Mas a proporção é robusta, porque o que encarece é físico — quanto maior a janela, mais tokens você reprocessa a cada mensagem.
Continuar trabalhando numa janela de contexto em 900 mil tokens custa, no Claude Opus 4.8, cerca de 30 vezes mais por mensagem do que salvar a memória e recuperá-la numa sessão nova de 18 mil tokens. Janela cheia não é só mais lenta e mais confusa — é literalmente mais cara, porque cada mensagem reprocessa a janela inteira.
Modo dois: agentes rodando 24 horas, por dias ou semanas. Este é o uso que a memória de fato viabiliza, e onde eu configuro as coisas de um jeito diferente. Quando deixo um agente coordenador dirigindo vários sub-agentes num projeto complexo, sem parar, eu ligo a compactação automática para disparar quando a janela chega a 45% de uso. Parece contraintuitivo compactar tão cedo, mas o motivo é justamente a memória: a compactação nativa, sozinha, deterioraria o contexto — comeria pedaços importantes a cada ciclo, até o projeto perder o rumo. Com a memória em camadas por baixo, ela vira só uma limpeza de janela. O que importava já foi guardado limpo, e é reinjetado automaticamente na continuação, por conta própria, via hooks e configuração complementar. A sessão seguinte não fica refém da compactação — ela recomeça com o sinal, não com o resíduo.
Para deixar agentes trabalhando 24 horas por dia, por dias ou semanas, eu configuro a compactação automática em 45% da janela. Sozinha, a compactação nativa deterioraria o contexto. Com a memória permanente por baixo, ela vira apenas uma limpeza — o que importa é reinjetado automaticamente, e o desenvolvimento não para.
É a diferença entre um agente que se perde depois de algumas horas e um que atravessa a semana inteira sem perder o fio. Sem memória em camadas, projetos assim são inviáveis — cada compactação seria uma amnésia parcial. Com ela, o coordenador e os sub-agentes seguem, porque a cada ciclo recuperam o sinal limpo em vez de arrastarem a bagunça acumulada.
O que isso significa, e por que conta a mesma história do NTC
Tirando a moldura de estudo, o que sobra é simples: eu não consigo mais trabalhar sem essa memória. Não é força de expressão. A segurança de saber que consigo recuperar o que foi feito — pelas camadas, pela geração automática, pelo poder de forçar um salvamento quando quero — mudou o que eu me permito começar.
E isso fecha um arco com o primeiro estudo de caso desta série. O NTC mostrou que o inimigo da compreensão da IA não é a densidade da informação, é a bagunça. O Exocortex é essa mesma ideia aplicada ao tempo: o inimigo da continuidade não é a quantidade de história acumulada, é o ruído dela. Guarde o sinal, jogue fora o ruído, e traga de volta só o que importa — e a IA para de recomeçar do zero. O NTC, aliás, é uma das peças de dentro do Exocortex: a etapa que densifica a memória depois de destilada.
Isso conversa com a ideia que guia tudo o que faço no método Prompthen, que também criei: a complexidade deve ser opcional, nunca uma barreira. Você não precisa entender como um pipeline de destilação em camadas funciona por dentro para colher o resultado de uma IA que lembra. A porta está aberta para quem quiser abrir o capô — este texto é essa porta —, mas ninguém é obrigado.
E, para ser transparente sobre o sustento de quem escreve: o método e o conteúdo são gratuitos. O que se cobra, quando se cobra, é o serviço de aplicar isso na dor específica de alguém — consultoria, treinamento, projeto. Menciono uma vez só, para você saber de onde vem o pão, e sigo. O conhecimento fica aberto.
No fim, o Exocortex não é sobre um banco de dados esperto. É sobre uma teimosia: a de que uma IA que esquece tudo a cada sessão está desperdiçando a parte mais valiosa do trabalho, que é o contexto construído. Dê memória a ela — memória de verdade, destilada e permanente, não um resumo que apaga o que importa — e ela para de começar do zero. Eu também.
Perguntas frequentes
Por que a IA esquece tudo a cada nova conversa?
Porque, por padrão, o contexto de uma conversa vive dentro da janela daquela sessão — e quando a sessão fecha, ele evapora. A inteligência construída ali, as decisões, o porquê de cada escolha, tudo some junto. Foi para resolver isso que construí o Exocortex, uma memória permanente em camadas: ela captura a conversa, destila o que importa e guarda num banco de dados fora da janela, para devolver depois. Assim nem eu nem a IA começamos do zero na sessão seguinte.
O /compact do Claude Code preserva o contexto da conversa?
Na minha experiência de uso diário, não bem — ele deteriora. A compactação nativa funciona por resumo, e resumir é decidir o que jogar fora; pontos importantes da janela somem ou ficam borrados, e você só percebe quando a IA responde como se nunca tivesse tido aquela informação. A memória embutida nas CLIs de IA tem o mesmo defeito de origem: guarda uma versão empobrecida. Por isso construí uma memória em camadas por baixo, que preserva o sinal limpo em vez de apenas descartar com mais elegância.
O que é o Exocortex?
É uma memória permanente para IA que criei — internamente também chamada de CMS, Context Memory System — inspirada em como funciona a memória humana. Ela captura conversas automaticamente, destila esse material por um pipeline de vários estágios, guarda de forma permanente num banco de dados e reinjeta a memória relevante quando você precisa. A arquitetura tem três camadas (Foundation, Context e Active, como memória de longo e curto prazo) e usa busca semântica por vetores para recuperar por significado, não por palavra exata.
Como dar memória permanente a uma IA?
O caminho que segui foi tirar a memória de dentro da janela de contexto e guardá-la fora, num banco de dados dedicado. O material da conversa é capturado bruto, refinado para separar sinal de ruído, densificado, transformado em vetores para busca semântica e persistido em PostgreSQL. Na sessão seguinte, a memória relevante é reinjetada automaticamente por relação, data e semelhança de significado. O resultado é que a conversa não evapora quando a sessão fecha — ela fica, e volta quando importa.
Como funciona a arquitetura de memória em camadas do Exocortex?
São três camadas espelhando a memória humana. A Foundation guarda o que é estável e quase sempre relevante — a memória de longo prazo consolidada. A Context guarda o médio prazo, acessado quando o assunto pede. A Active guarda o que está quente na sessão atual, volátil e detalhado. Cada camada tem orçamento próprio de tokens e comportamento próprio, então o sistema trata de forma diferente o que é permanente, o que é contextual e o que é descartável — em vez de espremer tudo junto como faz a compactação nativa.
Como a IA recupera a memória certa sem eu colar o histórico de novo?
Por vínculos, não por cópia. Quando abro uma sessão nova, o sistema reinjeta a memória relevante por conta própria, e "relevante" é definido por relacionamentos entre memórias, por datas e por proximidade semântica calculada com embeddings vetoriais. Eu pergunto sobre um projeto e volta o que aquele assunto evoca em toda a base — inclusive coisas de outras sessões que eu nem lembraria de procurar. É o mais perto de "lembrar" que já vi uma máquina chegar.
Quanto de contexto o Exocortex já acumulou?
Apurado em 16 de julho de 2026, eram 4.276 memórias, partindo de 32 em novembro de 2025 — cerca de 229 dias de acúmulo contínuo sem perder nada no caminho. A base tem 4.254 memórias refinadas, 2.644 capturas brutas ocupando 5,28 GB, embeddings de 4.271 memórias em 384 dimensões cada, e 123.906 mensagens já processadas ao longo de 2.021 execuções do pipeline. O pico de crescimento foi entre março e maio de 2026.
Quanta compressão o Exocortex faz na memória?
Ao longo das 4.276 memórias, a redução média foi de cerca de 80%: o material bruto ocupava 56,08 milhões de tokens e caiu para 11,00 milhões depois de destilado e densificado — cerca de 45 milhões de tokens economizados. Na memória típica, a mediana guarda uns 19% do tamanho bruto (uns 81% de redução). Uma única conversa passou de 92% de redução, mas isso é o melhor caso da distribuição, não a média — e faço questão de marcar a diferença.
O NTC é usado dentro do Exocortex?
É, como um dos estágios. Depois que a memória é refinada — o passo que separa sinal de ruído —, o NTC, a engenharia de prompt proprietária que criei e que foi tema do primeiro estudo de caso desta série, entra por cima para densificar. Aqui ele não corta muito: na mediana, guarda uns 90% dos tokens que recebeu. O valor dele nesse ponto não é enxugar, é organizar e deixar a memória mais densa e mais fácil de buscar depois. O grande enxugamento é a destilação; o NTC é a arrumação por cima.
Guardar a memória da IA em banco de dados não é uma fraqueza?
Para mim é o oposto — é a força do projeto. Uma memória presa dentro de uma janela de contexto morre com a sessão. Uma memória num banco de dados dedicado, com embeddings vetoriais, é portátil: pode ser compartilhada entre máquinas, entre aplicações e, em tese, até entre robôs. Uma instância aprende e todas podem lembrar. É a diferença entre a lembrança de um indivíduo e o conhecimento de uma organização.
Em que ponto da janela de contexto compensa salvar a memória e começar uma sessão nova?
Depende do modo de uso, e eu trabalho com dois. No uso normal do dia a dia, não fico compactando: deixo a sessão correr e, por volta de 70% a 90% de uso da janela, salvo a memória e recupero numa sessão nova — a partir daí uma janela cheia atrapalha mais do que ajuda, e fica mais cara. No modo em que deixo agentes rodando 24 horas por dias ou semanas, é diferente: configuro a compactação automática para disparar já em 45% da janela, porque a memória permanente por baixo garante que a sessão seguinte não fique refém dessa compactação — o que importa é reinjetado automaticamente. São os dois únicos percentuais que eu cravo; não invento precisão além disso.
Sai mais barato continuar numa janela cheia ou salvar a memória e abrir uma sessão nova?
Sai muito mais barato recuperar a memória numa sessão nova, e dá para calcular com o preço real do modelo. No Claude Opus 4.8, continuar numa janela de contexto em 900 mil tokens custa cerca de US$ 6,16 por duas mensagens; salvar a memória e recuperá-la numa sessão nova de uns 18 mil tokens custa cerca de US$ 0,20 — aproximadamente 30 vezes mais barato. Numa janela de 700 mil são umas 24 vezes, e em 500 mil, umas 17 vezes. É um cálculo ilustrativo com preços de tabela, não uma fatura, mas a proporção é robusta: cada mensagem numa janela cheia reprocessa a janela inteira, então quanto maior ela está, mais cara fica.
Uma sessão de quase 1 milhão de tokens vira uma memória de que tamanho?
Medindo em sessões reais, uma janela de contexto no pico de cerca de 950 a 970 mil tokens — perto de 95% de uma janela de 1 milhão — vira uma memória final na casa de 13 a 19 mil tokens. Não é compressão bruta: é o resultado de estágios sucessivos de eliminação de ruído (a captura tira repetição, o refinamento reescreve como conhecimento limpo, a densificação organiza) e das camadas. E não é minúsculo de propósito: se a memória fosse espremida demais, perderia o detalhe do que aconteceu. Os ~15 mil tokens são o equilíbrio entre caber numa sessão nova e não perder o contexto.
Dá para rodar projetos de IA por 24 horas sem parar?
Dá, mas na prática só com memória em camadas por baixo. Eu rodo projetos que trabalham 24 horas por dia, por dias ou semanas, com agentes e sub-agentes contínuos. Sem a memória, cada compactação de janela comeria um pedaço do contexto até o projeto perder o rumo. Com ela, o trabalho não para: a cada ciclo os agentes recuperam o sinal limpo em vez de arrastar a bagunça acumulada.
Quanto tempo o Exocortex leva para processar uma memória?
Em 2.019 execuções completas de ponta a ponta, a mediana foi de cerca de 227 segundos (uns 3,8 minutos) e o percentil 95 ficou em torno de 581 segundos (uns 9,7 minutos). A distribuição é bimodal: 367 execuções abaixo de 10 segundos são casos sem nada novo para processar (cache batido), e o resto são os processamentos completos de 2 a 10 minutos. O estágio mais caro é o refinamento, que sozinho leva cerca de 73% do tempo. A inteligência custa; o armazenamento é barato.
O sistema evita guardar a mesma informação duas vezes?
Evita, por deduplicação com SHA-256. Entre as capturas, foram identificados 1.348 conteúdos únicos — 647 hashes de conversa e 701 de documento —, então conteúdo repetido não é armazenado de novo. É parte de manter a base como sinal, e não como um depósito que só cresce acumulando cópia do que já existe.
Esses números do Exocortex são confiáveis? De onde vêm?
Foram todos apurados em modo somente-leitura no dia 16 de julho de 2026, direto do sistema em produção — nada é estimativa. E eu abro as limitações junto com os acertos: há 823 entradas que ficaram com zero tokens refinados (pedaços vazios), 122 memórias que cresceram em vez de encolher, e a camada Active estava com o orçamento estourado (394%, em alerta) no momento da apuração. Também sou honesto sobre o que não medi: não consultei a contagem de linhas ao vivo no PostgreSQL, então afirmo a memória distribuída pelo livro-razão local de sincronização, não por uma contagem no banco em tempo real.
O alerta de orçamento estourado na camada Active é um defeito?
Não — é o mecanismo funcionando. No momento da apuração, a Active estava em 59.210 tokens contra um orçamento de 15.000 (394%), em alerta. Eu poderia ter esperado um momento mais bonito para apurar e não esperei de propósito: esse alerta é a fiscalização de orçamento reagindo ao vivo. Quando a Active estoura, o sistema reorganiza, comprime e consolida. Ver o alerta aceso é ver a engrenagem trabalhando, não um problema escondido debaixo do tapete.
O Exocortex funciona com qualquer IA ou só com uma ferramenta específica?
A memória é guardada num banco de dados dedicado, com embeddings vetoriais, fora da janela de qualquer sessão — e é justamente isso que a torna portátil. Por não viver presa dentro de uma CLI ou de uma janela de contexto, pode em tese ser compartilhada entre máquinas e aplicações diferentes. A ideia de projeto é essa: uma instância aprende e todas podem lembrar, em vez de cada ferramenta ter sua própria memória isolada que morre com a sessão.
Preciso ser programador para me beneficiar de uma memória de IA como essa?
Não. Você não precisa entender como um pipeline de destilação em camadas funciona por dentro para colher o resultado de uma IA que lembra — do mesmo jeito que não precisa saber como a geladeira funciona para conservar comida. Isso é parte do método Prompthen que guia o meu trabalho: a complexidade deve ser opcional, nunca uma barreira. A porta está aberta para quem quiser abrir o capô, mas ninguém é obrigado. O que importa é o resultado: a conversa que não evapora.