## A convergência que ninguém planejou

Manus é um agente de IA voltado para o consumidor. Claude Code é o assistente de codificação da Anthropic. OpenClaw é uma IA pessoal de código aberto. Equipes diferentes, bases de código diferentes, modelos de negócios diferentes.

Todos os três armazenam a memória do agente em arquivos markdown.

Manus usa uma lista de verificação `todo.md` que se reescreve após cada etapa. OpenClaw usa `MEMORY.md` mais arquivos datados em um diretório `memory/`. Claude Code usa arquivos `CLAUDE.md` hierárquicos com escopo em diretórios, com um limite de 200 linhas em conteúdo sempre carregado.

Nenhum parecia copiar os outros. [Yaohua Chen na comunidade DEV](https://dev.to/imaginex/ai-agent-memory-management-when-markdown-files-are-all-you-need-5ekk) chamou isso de "evolução convergente". Quando três sistemas independentes sob restrições diferentes chegam à mesma arquitetura, a arquitetura está lhe dizendo algo sobre o problema.

Micheal Lanham [documentou essa convergência](https://medium.com/@Micheal-Lanham/the-markdown-file-that-beat-a-50m-vector-database-38e1f5113cbe) em março de 2026. Sua análise de todos os três sistemas é a comparação pública mais completa de arquiteturas de memória de agente de produção que já vi. Vale a pena interagir diretamente com os dados.

## Por que os arquivos são o ponto de partida padrão

A explicação óbvia é a simplicidade. Os arquivos são legíveis por humanos, rastreáveis ​​pelo git e não requerem infraestrutura. Verdadeiro, mas incompleto.

A razão mais profunda é a economia do LLM.

O cofundador da Manus, Yichao “Peak” Ji, publicou os números. Manus processa 100 tokens de entrada para cada 1 token de saída. No Claude Sonnet, os tokens armazenados em cache custam cerca de US$ 0,30 por milhão. Os tokens sem cache custam US$ 3 por milhão. Esse spread de 10x significa que o custo dos insumos domina. Qualquer coisa que aumente as taxas de acerto do cache KV economiza dinheiro real.

A memória baseada em arquivo é um texto estável e previsível que funciona bem com prefixos de cache KV. O contexto somente de acréscimo que raramente muda entre as chamadas significa que o modelo pode reutilizar cálculos armazenados em cache. Um sistema RAG baseado em banco de dados que monta diferentes fragmentos de contexto a cada vez anula essa otimização.

O padrão `todo.md` de Manus é o exemplo mais claro. O agente reescreve a lista de verificação após cada etapa. Isto coloca o plano atual na posição mais recente da janela de contexto. As informações no meio de contextos longos são ignoradas. Um arquivo de plano recém-reescrito no final do contexto corrige isso sem infraestrutura de recuperação.

O argumento económico vai além de Manus. O Claude Code limita a memória sempre carregada em 200 linhas porque os arquivos de memória consomem tokens a cada sessão. A restrição não é o armazenamento. É orçamento de atenção. Os arquivos permitem controlar o que o modelo vê e onde aparece no contexto.

Estas não são escolhas acidentais. Eles são arquiteturas conscientes dos custos.

## Onde os arquivos quebram

O artigo de Lanham é honesto sobre os modos de falha. Essa honestidade é a parte mais valiosa da análise.

**Pressão orçamentária contextual.** Claude Code alerta que grandes arquivos `CLAUDE.md` reduzem a aderência do modelo. Os arquivos funcionam até ficarem inchados e internamente contraditórios. Um limite de 200 linhas é uma solução pragmática, não uma solução. À medida que o uso do agente aumenta, o arquivo cresce, se contradiz e ninguém sabe qual versão de um fato é atual.

**Simultaneidade.** Vários agentes gravando no mesmo estado corrompido do arquivo de memória. Lanham afirma isso diretamente: “No momento em que vários agentes ou usuários precisam tocar na mesma memória, gravações simultâneas de arquivos podem corromper os dados”. O teto do agente único é real. A maioria dos fluxos de trabalho de agente [não permanecerá como agente único](/posts/when-agents-share-state-everything-breaks) para sempre.

**Sem controle de versão.** Os arquivos são sobrescritos. A compactação de memória do OpenClaw aciona um agente silencioso que grava memórias duráveis ​​antes do truncamento. O que havia no arquivo antes da compactação? Desconhecido. Se a versão compactada abandonou um fato, ele desapareceu. Nenhum registro de observação. Sem reversão.

**Sem proveniência.** Quando um agente escreve uma entrada na memória, não há registro de qual fonte a produziu, quando ou se ela contradiz algo escrito na semana passada. O arquivo é um resumo. Os resumos obscurecem seus ingredientes.

**Sem resolução de entidade.** "Acme Corp" em uma sessão e "ACME CORP" na próxima. O agente infere novamente a identidade a cada vez a partir da janela de contexto. Sem IDs estáveis. Sem regras de mesclagem. Nenhuma entidade canônica. Cada sessão é uma inferência com escopo de sessão.

**Sem restrições de esquema.** Qualquer agente ou ferramenta pode gravar qualquer coisa em um arquivo de memória. Sem validação. Nenhuma verificação de tipo. Nenhuma imposição do que uma entrada de memória deve conter. Escritas ruins se propagam como verdade.

Essas falhas não são hipotéticas. Eles são documentados pelas equipes que constroem esses sistemas. Eles são o limite operacional da memória baseada em arquivos.

## A lacuna no equilíbrio

Lanham propõe uma “arquitetura de equilíbrio” com quatro camadas. Arquivos como interface primária. Descarregamento agressivo para disco. Camadas de recuperação derivadas (índice vetorial sobre arquivos). Escalonamento claro para bancos de dados quando a simultaneidade e a correção assim o exigirem.

As três primeiras camadas estão bem documentadas. A quarta fica como exercício para o leitor.

"Escalar para um banco de dados" pressupõe que o banco de dados resolva os problemas de integridade. O Postgres não fornece observações versionadas por padrão. Não fornece cadeias de proveniência. Ele não oferece resolução de entidade determinística em documentos. Ele não oferece restrições de esquema no estado escrito pelo agente. Mover de um arquivo markdown para uma tabela de banco de dados não resolve “sem controle de versão”. Resolve "sem acesso simultâneo". Esses são problemas diferentes.

O equilíbrio tem uma lacuna entre as camadas três e quatro. Entre "arquivos markdown que funcionam para um agente" e "infraestrutura completa de banco de dados", falta uma camada. Estado estruturado com garantias de integridade. Nenhum esquema de banco de dados personalizado é necessário.

A arquitetura do OpenClaw sugere isso. Sua recuperação híbrida, sqlite-vec com ponderação de vetor/texto configurável, decaimento temporal, diversificação MMR, é mais sofisticada do que a simples pesquisa de arquivos. Mas ainda trata os arquivos markdown como fonte da verdade. O índice é uma otimização de leitura, não uma camada de integridade de estado.

As primitivas ausentes são as mesmas que identifiquei [executando minha própria pilha de agente](/posts/agentic-search-and-the-truth-layer):

- **Observações versionadas.** Cada gravação anexada, nada substituído. Reconstrua o estado a qualquer momento.
- **Proveniência.** Cada fato rastreável até uma fonte, um carimbo de data/hora e o agente ou humano que o escreveu.
- **Resolução de entidade determinística.** IDs canônicos baseados em regras estáveis, não em inferência por sessão.
- **Restrições de esquema.** Validação em gravações. Dados inválidos rejeitados antes de entrarem na loja.

Esses não são recursos de banco de dados. Eles são recursos de integridade de estado. Você pode construí-los em cima de um banco de dados. O Postgres não os fornecerá imediatamente. E você não pode obtê-los de um arquivo markdown.

## Os arquivos são o verdadeiro responsável

O insight estratégico mais importante da análise de Lanham não é sobre arquivos versus bancos de dados. É sobre como é o cenário competitivo real.

As empresas de infraestrutura de memória levantaram dezenas de milhões posicionando-se contra problemas de recuperação. [Mem0](https://mem0.ai) arrecadou US$ 24 milhões. [Letta](https://www.letta.com) fechou uma semente de US$ 10 milhões com uma avaliação de US$ 70 milhões. O projeto [Zep](https://www.getzep.com) [Graphiti](https://github.com/getzep/graphiti) ultrapassou 20 mil estrelas no GitHub. [MemPalace](https://github.com/MemPalace/mempalace) atingiu 46 mil estrelas nas primeiras duas semanas com uma abordagem de armazenamento literal e local. Eles resolvem problemas reais: durabilidade em implantações, personalização, recuperação em escala e recall estruturado.

Mas os sistemas que lidam com a maioria das interações entre agentes não usam bancos de dados vetoriais para memória. Eles estão usando arquivos de texto. A evidência de produção de plataformas à escala de três mil milhões de dólares confirma que o verdadeiro incumprimento não é um produto de base de dados existente. É um arquivo.

Isso muda a história do deslocamento. O caminho de atualização não é de bancos de dados vetoriais para algo melhor. Vai dos arquivos markdown ao estado estruturado. As pessoas que precisam de garantias de integridade do estado não usam atualmente Mem0 ou Zep. No momento, eles estão gravando em `MEMORY.md`.

## Migração, não substituição

O conselho final de Lanham está correto em espírito: "Comece com um arquivo Markdown. Você sempre pode adicionar um banco de dados mais tarde." Os arquivos são uma arquitetura inicial racional. A economia os apoia. A inspecionabilidade é real. A simplicidade é importante.

A questão é como é “mais tarde”.

Estou construindo [Neotoma](https://github.com/markmhendrickson/neotoma) como esse caminho de atualização. O estado estruturado com integridade garante a falta de arquivos: versionamento, proveniência, resolução de entidade, restrições de esquema.

A questão da eficiência de custos é importante. Se o caminho de atualização sacrificar a economia do cache KV que tornou os arquivos racionais, não será uma atualização real. O caminho de leitura do Neotoma é projetado em torno dessa restrição. Os agentes acessam via MCP. A resposta é um texto estruturado injetado na janela de contexto, o mesmo formato que um modelo veria ao ler um arquivo. Os instantâneos da entidade são estáveis ​​entre chamadas. A mesma entidade consultada duas vezes retorna o mesmo texto, a menos que uma observação o altere. Texto estável significa sequências de tokens estáveis. Sequências de token estáveis ​​significam ocorrências no cache KV.

O caminho da gravação é onde a economia difere e onde deveria. Escrever uma observação em um armazenamento estruturado com validação de esquema custa mais do que anexar uma linha a um arquivo markdown. Essa sobrecarga é o preço do controle de versão, origem e detecção de conflitos. A questão é se vale a pena pagar essa sobrecarga. Se você nunca precisou responder “o que meu agente sabia na terça-feira passada” ou “que texto corrompeu esta entidade”, então não. A marcação está correta. Se você precisava dessas respostas e não conseguiu obtê-las, o custo do caminho de gravação é a parte mais barata do problema.

A história da migração é simples. Você começou com `MEMORY.md` porque era o padrão correto. Você atingiu o limite máximo quando precisou de controle de versão, ou acesso simultâneo, ou proveniência, ou resolução de entidade entre sessões. A próxima etapa não é “configurar o Postgres e construir um esquema personalizado”. É uma camada estruturada que oferece essas garantias enquanto preserva o que funcionou nos arquivos: inspecionabilidade, simplicidade, operação local primeiro.

A evolução convergente documentada por Lanham valida o problema. Três equipes que valem bilhões no total chegaram à mesma arquitetura e atingiram as mesmas paredes. As paredes definem a próxima camada.