Brain: Memória Agêntica como uma Wiki de Conhecimento

Um sistema de arquivos Markdown estruturado, rastreável e autoaperfeiçoável, compilado offline e navegado sob demanda.

AutoresPerplexity Engineering

Os usuários do Computer realizam trabalhos que abrangem meses e centenas de sessões. Até a décima sessão, o sistema deve ser muito mais produtivo do que na primeira. Ele deve acumular contexto sobre o usuário, suas preferências e o trabalho que já foi feito.

Por exemplo, quando solicitado a desenhar um diagrama de um fluxo de trabalho que o usuário explicou anteriormente, o Computer deve lembrar os detalhes e usá-los para criar e gerar uma figura no estilo preferido do usuário. O usuário não deve precisar reexplicar os detalhes do fluxo de trabalho ou reiterar sua preferência por artefatos em PDF em vez de PNG; o sistema deve ser capaz de recuperar com precisão esse contexto de sessões passadas e aplicá-lo automaticamente.

A memória é a base para o aperfeiçoamento contínuo do agente. Um sistema de memória eficaz deve ser estruturado, rastreável e adaptável, permitindo que os agentes pesquisem na amplitude e profundidade certas para cada tarefa, baseando cada decisão nas informações mais atuais.

Introdução

Dotar os agentes de contexto relevante é um problema multifacetado. Primeiro, os agentes precisam saber o que existe e como acessá-lo. Segundo, quando encontram uma informação útil, precisam ter certeza de que ela está completa, precisa e atualizada. Um fato isolado tem valor limitado, a menos que o agente possa encontrar informações relacionadas, verificar se elas vêm de uma fonte confiável e garantir que não precisam ser atualizadas com uma observação mais recente.

Inserir arquivos de memória estática diretamente no contexto do modelo maximiza a acessibilidade para os agentes, mas apresenta um clássico trade-off de precisão-revocação. Muita informação saturará a janela de contexto do agente com itens de relevância cada vez menor, enquanto muito pouco degradará a qualidade da resposta devido à falta de contexto relevante. Em contrapartida, o acesso sob demanda a bancos de dados externos é mais flexível, mas transfere o ônus da navegação para o agente. Os bancos de dados vetoriais geralmente armazenam fragmentos desconectados, e os bancos de dados de grafos exigem que os agentes saibam como consultar efetivamente.

Recentemente, introduzimos o Brain, um componente central do sistema de memória do Computer que oferece o melhor dos dois mundos. O Brain é uma wiki de conhecimento estruturada que fica em cima de arquivos de memória estáticos e evidências. As citações vinculam afirmações às suas fontes, e partes relacionadas de informações são conectadas lateralmente. A wiki organizada torna o contexto navegável sob demanda, enquanto artefatos detalhados são retidos na camada abaixo dela.

A wiki de conhecimento Brain visualizada como um grafo, com entidades como nós e arestas conectando assuntos relacionados.
Um Brain de exemplo baseado em uma persona sintética.

O Brain conecta-se a um sistema de memória abrangente com três componentes principais: armazenamento de memória durável, agentes de primeiro plano que usam a memória para responder a consultas e agentes de segundo plano que atualizam e melhoram a memória. A figura a seguir retrata esses componentes situados dentro da arquitetura geral do sistema do Brain.

Diagrama de arquitetura mostrando armazenamento de memória durável, agentes de primeiro plano que leem a memória e agentes de segundo plano que atualizam a memória.
O sistema de memória consiste em memória durável compartilhada, agentes de primeiro plano que usam a memória e agentes de segundo plano que atualizam a memória.

Neste artigo, descrevemos cada camada em profundidade, explicando como o Brain organiza a memória, como os agentes a utilizam e como os processos em segundo plano a mantêm atualizada. Também apresentamos resultados de avaliações internas que validam o design do Brain, demonstrando que ele melhora o desempenho do agente com menor custo.

Organização e Armazenamento de Memória

A memória precisa de uma representação que seja dimensionada para o histórico completo do usuário, sem forçar cada pedaço de contexto para dentro do prompt. O sistema de memória do Computer representa o contexto persistente como um sistema de arquivos. O Brain sintetiza o conhecimento em fontes brutas, conectando assuntos relacionados e vinculando afirmações de volta às sessões e arquivos que as suportam. Essa estrutura, detalhada abaixo, nos permite organizar a memória de uma forma particularmente adequada para agentes.

Memória Baseada em Sistema de Arquivos

As sessões do Computer já vivem em um sandbox com um sistema de arquivos, um shell e utilitários de E/S. Ao projetar o Brain, queríamos introduzir o mínimo possível de novos mecanismos na interface entre o modelo e a memória do agente. É por isso que construímos o Brain sobre uma camada de contexto nativa do sistema de arquivos. A memória é materializada como arquivos no sandbox sob o diretório memory/, e o agente simplesmente usa as mesmas ferramentas nos arquivos de memória que já usa em todo o resto.

Na raiz da árvore de memória encontram-se três diretórios de nível superior que mantêm o contexto em vários níveis de abstração. knowledge/ é o próprio Brain, uma wiki de conhecimento sintetizada que conecta entidades, conceitos, projetos ativos e aprendizados passados; notes/ contém trechos destilados organizados como pastas temáticas; e sessions/ armazena índices, resumos e transcrições completas como as histórias brutas. A figura abaixo mostra uma visão simplificada do layout.

Árvore de diretórios mostrando memory/ com as subpastas knowledge/, notes/ e sessions/.
Uma visão de exemplo do layout do sistema de arquivos de memória.

As superfícies são propositalmente redundantes. Para perguntas simples de salto único, geralmente basta pesquisar trechos dentro de /notes por uma palavra-chave, enquanto a camada /knowledge é mais útil para perguntas que exigem a união de evidências ao longo de semanas ou meses de sessões do Computer.

Brain: A Wiki de Conhecimento

O Brain é formatado como uma wiki de LLM, um sistema de arquivos Markdown vinculados. Essa forma de Markdown levemente estruturado fornece uma visão holística do contexto existente, para que os agentes possam entender facilmente quais registros estão disponíveis, como eles se relacionam e onde encontrá-los. Cada página é uma visão mantida de um assunto; ela deve permanecer útil quando lida isoladamente, ao mesmo tempo que facilita a exploração posterior por meio de links.

Os links vêm em dois tipos. [[wikilinks]] são arestas de contexto. Eles conectam páginas lateralmente; um projeto pode se conectar ao seu proprietário, ao seu cliente ou aos conceitos dos quais depende. Segui-los responde a "o que mais preciso saber?". As referências [cite:N] são arestas de evidência. Elas conectam afirmações para baixo às sessões brutas ou fontes de conectores que as sustentam. Segui-las responde a "como sei que isso é verdade?"

As figuras abaixo retratam como seria uma parte do Brain para uma persona sintética, uma pesquisadora de acessibilidade chamada Nadia. O Brain dela inclui uma página sobre um projeto de exemplo, um sprint de design universal no Japão, sintetizando conhecimento de sessões e conectores. A visão de grafo demonstra como as arestas de contexto e evidência presentes na página conectam entidades e fontes relacionadas.

Uma página de wiki do Brain de exemplo renderizada como Markdown, mostrando wikilinks e arestas de citação embutidas.
O Brain é um sistema de arquivos Markdown.
Um subgrafo de uma página de wiki do Brain de exemplo, visualizado como um grafo de entidades e fontes conectadas.
Contexto incorporado e arestas de evidência formam uma estrutura de grafo para fácil navegação.

O Brain possui suporte do Git para preservar o histórico de versões, apoiando sua natureza em constante evolução. As páginas podem ser editadas ao longo do tempo, enquanto os changelogs registram atualizações importantes e permitem que os agentes inspecionem facilmente versões anteriores e diffs. Isso também apoia a coordenação agêntica, o que é fundamental, pois vários agentes podem usar e atualizar o Brain ao mesmo tempo.

Usando o Brain

Ao responder à consulta de um usuário, os agentes precisam ser capazes de encontrar o contexto certo no nível certo de detalhe. A estrutura do Brain facilita a exploração da memória pelos agentes. Os agentes podem escolher entre etapas acionáveis, como seguir links de contexto para encontrar informações relacionadas, seguir links de evidências para verificar afirmações ou chamar um subagente para obter e sintetizar contexto adicional. Direcionamos o processo de exploração agêntica de várias maneiras destinadas a maximizar a facilidade de acesso dos agentes a informações relevantes.

Estratégia de Exploração

Incluímos um índice compacto do Brain na mensagem inicial do usuário, para que o agente comece com o conhecimento prático do que já existe. O agente então interage com o Brain usando operações familiares: ler itens específicos referenciados pelo índice, usar grep para pesquisar em páginas, seguir links e inspecionar citações, comparar revisões do Git e descer em sessões ou trajetórias brutas. O bloco de código abaixo retrata comandos de exemplo para uma persona sintética.

bash
# 1. Orient: the index is a map of everything known cat memory/knowledge/index.md # 2. Target: find pages that touch the question grep -Ril "kyoto\|sendai" memory/knowledge/ # 3. Read the page; follow context edges as needed cat memory/knowledge/projects/japan-universal-design-sprint.md cat memory/knowledge/entities/sora-city-laboratory.md # via [[wikilink]] cat memory/knowledge/entities/sapphir-mobility-coop.md # via [[wikilink]] # 4. Only if the claim must be verified: resolve evidence # city bases → [cite:1], [cite:10] → pplx://sessions/<id> # # Example (pseudo, replace with your real tool): # pplx-session-fetch 1eaf53d4-09e0-5823-bb96-c8662f582708 --slice <slice-id> # 5. Some evidence lives outside the sessions # meeting slots → [cite:15] → connector://google-calendar # # pplx-connector-fetch google-calendar --query "japan-sprint"

Os agentes exploram esse contexto por meio de um loop autodirigido, em vez de um pipeline fixo. Portanto, o agente pode continuar pesquisando até ficar satisfeito com o contexto encontrado. O agente também pode escolher quando inspecionar citações e evidências para encontrar ou verificar detalhes. Uma questão menor de preferência pode ser adotada diretamente de uma única página do Brain, enquanto uma decisão consequente ou um conflito entre fontes pode justificar seguir a citação e ler o registro original. A estrutura baseada em grafos permite que o agente escolha entre próximas etapas concretas, em vez de pesquisar sem rumo por informações relacionadas.

Diagrama de fluxo de um agente explorando progressivamente o Brain ao seguir links entre páginas e citações de fontes brutas.
O agente pode seguir links do Brain para novas páginas do Brain ou fontes de evidências até ter certeza de que possui contexto suficiente para a tarefa.

Materialização de Arquivos

Para que a exploração agêntica funcione, o agente precisa ter acesso a toda a árvore memory/ por meio do sistema de arquivos do sandbox. Copiar toda a árvore localmente sempre que um sandbox é inicializado é custoso e desnecessário, pois o agente não tocará na esmagadora maioria desses arquivos. Outra opção seria usar um sistema de arquivos remoto, para que os agentes possam acessar qualquer arquivo sem copiá-los localmente. No entanto, os agentes geralmente realizam milhares de operações no sistema de arquivos em um único comando; se cada uma se tornar uma solicitação de rede, o custo de ida e volta começa a dominar o loop de exploração. Em testes internos, cargas de trabalho simples com grep em um caminho remoto baseado em FUSE foram aproximadamente 400 a 500 vezes mais lentas do que as operações equivalentes em arquivos locais.

Em vez disso, construímos um conjunto de trabalho local de arquivos materializados, enquanto o corpus maior permanece atrás de um sistema de recuperação de memória. O Computer pré-carrega um mapa inicial (obtido de memórias recentes, sessões, resumos e conhecimento disponível) no sandbox quando ele é inicializado. Os agentes do Computer têm acesso a um Agente de Memória, um subagente que pode realizar pesquisas semânticas e carregar um novo conjunto de arquivos. Quando o contexto necessário está ausente, o Computer pode chamar o Agente de Memória com uma descrição das informações necessárias. O Agente de Memória pesquisa em arquivos, retornando uma síntese de texto imediata e materializando os registros de suporte como arquivos sob a árvore de memória. Desta forma, o conjunto de trabalho expande-se de forma natural e gradual ao longo do tempo, preservando caminhos estáveis e relações de origem para evidências já presentes.

Diagrama mostrando o pré-carregamento inicial de arquivos mais a recuperação sob demanda do Agente de Memória materializando arquivos no sandbox.
O pré-carregamento de sessões e a recuperação semântica pelo Agente de Memória carregam um mapa inicial de arquivos de que o agente provavelmente precisará.

Esse design resolve de forma limpa o gargalo de latência. Armazenar arquivos relevantes localmente garante que as operações do sistema de arquivos necessárias para a exploração permaneçam rápidas, e a recuperação em lote permite que o pool de arquivos materializados cresça sem exigir chamadas separadas para cada arquivo ou o carregamento de um grande número de arquivos irrelevantes. O design de agente aninhado também oferece ao Computer os benefícios da recuperação agêntica sem exigir que o agente principal pesquise diretamente todo o corpus de back-end a cada vez, preservando sua própria janela de contexto para as informações de maior valor.

Mantendo o Brain

Os usuários estão constantemente aprendendo com o trabalho que fazem e com as conversas que têm, de modo que a memória agêntica precisa fazer o mesmo. Para que o Brain continue útil, ele deve ser uma representação concisa do conhecimento mais importante. Novas páginas devem ser criadas para novas entidades importantes, novas informações devem ser adicionadas às páginas relevantes do Brain e o contexto desatualizado deve ser removido sazonalmente. Por exemplo, se o emprego de um usuário mudar, o Brain deve refletir essa mudança; ele deve conter o novo emprego do usuário e priorizar informações relacionadas às suas novas responsabilidades e projetos.

O Brain é mantido por agentes em segundo plano que chamamos de Dream. Os agentes Dream executam offline sobre a memória baseada em arquivos, sintetizando novas informações em atualizações do Brain. Definimos cuidadosamente o escopo e o comportamento dos agentes Dream para realizar esta tarefa com eficiência, juntamente com salvaguardas específicas do Dream para garantir que as atualizações do Brain sejam consistentes e precisas.

Dream: Agentes em Segundo Plano para Refinamento de Memória

Os agentes Dream executam em sandboxes com acesso ao mesmo sistema de arquivos e ferramentas somente leitura que uma sessão interativa do Computer teria, mas seu único objetivo é melhorar o contexto para sessões futuras. Cada execução começa a partir do Brain produzido por execuções anteriores, em vez de reconstruir o contexto do usuário do zero. Ele então usa esse Brain atual para se orientar e produz um Brain atualizado para uso em execuções futuras.

Diagrama de loop: sessões interativas alimentam o Dream, que atualiza o Brain, o que melhora sessões futuras.
Os agentes Dream trabalham em segundo plano para atualizar o Brain, formando um loop de autoaperfeiçoamento.

Um agente Dream recebe um ambiente e decide como explorá-lo, em vez de receber uma entrada fixa achatada em um único prompt. Ele pode navegar na memória baseada em arquivos, usar ferramentas de conector somente leitura aprovadas para verificar uma parte do conhecimento e delegar partes limitadas do trabalho a subagentes, incluindo o Agente de Memória. O escopo e as responsabilidades do agente Dream são especificados como um Skill.

Em termos gerais, uma execução do Dream consiste em 4 fases:

  1. Orientar: O agente conclui um procedimento de orientação ordenado. Ele identifica o escopo autoritativo, instruções permanentes, log de exclusão, entradas adicionais e condições de parada.
  2. Resumir sessões: Para cada sessão que seja nova (ou que tenha tido novos turnos) desde a última atualização, o agente escreve (ou atualiza) um pequeno resumo da sessão.
  3. Anexar fatos a assuntos: O agente adiciona cada observação que considera significativa ao seu local adequado, que normalmente é uma página de wiki. Ele sonda e consulta conectores autenticados quando disponíveis.
  4. Atualizar wiki de conhecimento: O agente atualiza a wiki com base em suas descobertas. Ele pode produzir novas páginas para assuntos duráveis, revisar páginas quando a síntese atual mudou ou adicionar novos links ou citações que apoiam uma reivindicação factual. Ele também pode optar por não fazer alterações quando o grafo atual já estiver correto.

Para garantir que quaisquer atualizações no Brain sejam completas e consistentes, os agentes escrevem o estado proposto em uma árvore de saída em estágio. Nenhuma alteração permanente é feita até que o agente tenha feito todas as atualizações que considera necessárias. Coordenar essas decisões em um processo agêntico torna possível atualizar o grafo como um todo, em vez de páginas não relacionadas.

Diagrama de raias (swimlane) de uma execução do Dream produzindo propostas de atualização para páginas do Brain.
Os agentes Dream usam o Brain existente e novas informações para propor e escrever atualizações.

Quaisquer alterações devem passar por dois tipos de verificações de validação. As verificações de validação determinística garantem que as páginas estejam bem formadas e atendam a critérios objetivos, como frontmatter obrigatório e formato de citação. As verificações de verificação semântica garantem que uma síntese proposta seja suportada pelas evidências coletadas e permaneça consistente com o resto do grafo. Após o término bem-sucedido do agente, uma etapa de sincronização controlada compara a saída em estágio com o estado anterior e aplica as alterações ao repositório. Quando uma etapa de sincronização é concluída, o conjunto final de edições pode ser inspecionado por meio do histórico de versões do Git.

Validando o Brain

Um sistema de memória útil deve preservar evidências relevantes, exibi-las quando necessário e ajudar o agente a converter essa evidência em uma resposta correta. Portanto, avaliamos o Brain em vários níveis: ablações offline controladas, repetição emparelhada contínua e experimentos de produção randomizados.

Avaliações Offline

Nossa principal avaliação offline usa um conjunto de dados interno de 640 perguntas em 44 personas sintéticas. As personas reproduzem padrões derivados de produção em cadência de sessões, contagem de turnos, mix de tópicos e densidade de fatos, sem conter nenhum texto de consulta de produção para preservar a privacidade do usuário. Cada conta é povoada através do pipeline de memória de produção, incluindo extração de memória, resumos de conversas e a compilação do wiki de conhecimento pelo Dream. Para cada pergunta, a resposta correta está mecanicamente vinculada a evidências específicas presentes no histórico da conta.

Por exemplo, para a Nadia, a persona sintética de pesquisadora de acessibilidade introduzida anteriormente, o conjunto de dados inclui a pergunta: "Quais organizações estou encontrando em Kyoto e Sendai?". A resposta (Sora City Lab em Kyoto e Sapphir Mobility Coop em Sendai) aparece diretamente na página Wiki correspondente.

Comparamos as mesmas perguntas e contas com a wiki de conhecimento compilada ativada versus desativada. Outras superfícies de memória permanecem disponíveis em ambas as condições. Isso isola a contribuição incremental do Brain, em vez de comparar a memória com a ausência de memória. No geral, o Brain aumentou a correção das respostas de 0,600 para 0,661, um ganho de 6,1 pontos percentuais, e a recuperação de evidências de 0,573 para 0,625, um ganho de 5,2 pontos percentuais. O efeito foi maior para perguntas sobre preferências (+10,2 pp), raciocínio temporal (+8,6 pp) e extração de detalhes de atividades anteriores (+6,9 pp). Em 84% das perguntas, o agente tocou comprovadamente em uma fonte vinculada à evidência de ouro.

Gráfico de barras comparando a correção de respostas e a recuperação de evidências com e sem o Brain em várias categorias de perguntas.
O Brain melhora o desempenho em nosso benchmark interno.

Também executamos ablações do Brain correspondentes em subconjuntos de dois benchmarks públicos. No LoCoMo, remover a wiki reduziu a correção das respostas em 4,6 pontos percentuais em média, ao longo de três execuções com diferentes modelos. No LongMemEval-S, não produziu nenhuma alteração estatisticamente significativa. Este resultado é consistente com o papel pretendido do Brain. O LongMemEval-S testa principalmente a recuperação de fatos de sessões individuais, onde as transcrições subjacentes fornecem um caminho redundante para a resposta. O LoCoMo dá maior ênfase a evidências dispersas em conversas, palestrantes e datas, criando mais oportunidades para que a síntese entre sessões da wiki contribua.

No geral, com o Brain ativado, o agente de produção atingiu 0,91 de correção de resposta no LongMemEval-S e 0,83 no LoCoMo. Como esses experimentos usaram subconjuntos de benchmark, eles não são resultados de benchmark definitivos. No entanto, as ablações ainda fornecem um sinal forte de que a wiki melhora o desempenho, especialmente quando as evidências devem ser integradas em conversas. Como o Brain faz parte do Computer, em vez de ser um sistema de recuperação otimizado e específico para benchmark, acreditamos que a competitividade só aumentará com tarefas que se assemelham mais aos fluxos de trabalho de produção.

Avaliações Online

Os conjuntos de dados offline não conseguem capturar todos os recursos dos históricos reais dos usuários, por isso também executamos uma avaliação emparelhada diária sobre coortes recém-derivadas da produção. As mesmas perguntas fixas são respondidas contra o estado do usuário correspondente com o Brain ativado e desativado, sendo então julgadas quanto à correção, atualidade e recuperação.

Resultados preliminares relatados em 18 de junho demonstraram que o Brain aumenta a correção das respostas em 25% e a recuperação em 16%. Esses ganhos de desempenho continuaram a se manter; nos últimos 30 dias, as sessões com o Brain ativado superaram o controle em todas as execuções e em todas as dimensões avaliadas. Em termos absolutos, os usuários do Computer desfrutaram de melhorias de 9,3 pontos na correção, 8,0 pontos na atualidade e 8,9 pontos na recuperação. As trajetórias com o Brain ativado também usaram aproximadamente 15% menos tokens, custaram 10% menos e completaram a geração 10% mais rápido.

Gráfico de resultados de avaliação emparelhada online mostrando ganhos em correção, atualidade e recuperação juntamente com reduções de tokens, custos e latência.
O Brain aumenta a qualidade das respostas e diminui os custos.

Aperfeiçoamento Contínuo

Continuamos a refinar o Brain para trazer a melhor experiência de memória aos usuários. Uma mudança recente coloca o índice compacto do Brain diretamente no contexto inicial do agente, em vez de exigir que o agente o descubra e o leia mais tarde. Em um experimento randomizado, esse tratamento de pré-preenchimento aumentou o uso do Brain e reduziu a insatisfação relacionada à memória em 6,9%.

O harness de avaliação offline também funciona como parte de um pipeline de melhoria autônoma. As alterações propostas para o subagente de memória, habilidades de recuperação e prompts do Brain são executadas por meio das ablações correspondentes em nosso conjunto de dados interno e benchmarks públicos. Os agentes do Computer podem iterar nos resultados de forma autônoma, preservando a alteração, os deltas e o custo de cada iteração como um registro durável e mantendo apenas as alterações que movem os números. O resultado é um sistema onde os avaliadores do Brain também são seus otimizadores, impulsionando melhorias futuras.

Conclusão

O aprendizado contínuo é um dos desafios determinantes para a construção de sistemas de agentes que funcionam por semanas e meses. Acreditamos que as arquiteturas de memória são mais bem expostas como ambientes que os agentes podem explorar diretamente usando seus conjuntos de ferramentas comuns. Expor a memória como um sistema de arquivos, com o Brain como uma wiki de conhecimento estruturada no topo, torna o contexto eficientemente navegável por meio de ferramentas simples e familiares.

O Brain foi projetado para o autoaperfeiçoamento, para que o sistema de memória possa continuar melhorando à medida que o uso cresce. Os agentes de segundo plano do Dream destilam novas informações em atualizações do Brain, garantindo que os agentes de primeiro plano sempre iniciem uma nova sessão com uma visão organizada do contexto mais recente. O harness de avaliação funciona também como um campo de testes para loops de auto-pesquisa na arquitetura de memória principal e nas interfaces voltadas para o agente.

O Brain já resultou em sessões de agentes mais precisas e eficientes, reduzindo o gasto de tokens. Nosso cuidadoso co-design do Brain com a pilha de produção do Computer garante que esses ganhos se traduzam diretamente em benefícios reais para os usuários.

Continuamos a criar mais recursos para melhorar a qualidade da memória do Computer. Enquanto isso, para usuários com o Brain ativado, a memória melhorará a cada sessão.