Visão geral
As conversas e sessões do agente produzem conhecimento de duas formas: memória de curto prazo e memória de longo prazo. A memória de curto prazo mantém a conversa passo a passo. A memória de longo prazo contém o conhecimento destilado dessa conversa, seja por meio da extração de memória ou como escrita direta de um agente ou aplicação. Para saber mais sobre as diferenças entre as duas camadas de memória, consulte Memória do agente.
O pipeline de extração de memória
O Atlas Agent Engine executa a extração em segundo plano em quatro estágios:
Ele armazena voltas de conversa no cluster MongoDB configurado. Para agentes distribuídos em plataforma, isso acontece automaticamente quando a memória é habilitada.
Um processo de propriedade da plataforma monitora essas gravações por sessão e, com base em parâmetros configuráveis de tamanho e tempo, as agrupa em snapshots.
Um LLM extrai memória de longo prazo de cada snapshot. Você pode configurar quais tipos de memória ele extrai na configuração de memória do projeto.
Reconcilia cada memória extraída com o que ela já sabe.
Ativar a gravação e snapshots de sessão
A plataforma armazena mudanças de conversa no cluster MongoDB configurado à medida que ocorrem. Para agentes distribuídos em plataforma, isso acontece automaticamente quando a memória é habilitada. As voltas de uma conversa se acumulam na memória de curto prazo até que a plataforma as implemente em um instantâneo de sessão. Uma sessão se torna elegível para promoção quando atinge uma contagem máxima de mensagens ou fica ociosa por um período configurado.
Uma vez elegíveis, os voltas não registradas de uma sessão são promovidos juntos. Cada snapshot cobre uma execução contígua da conversa como uma unidade limitada única. Uma sessão longa produz uma série de snapshots à medida que novas voltas se acumulam. Cada passagem de extração é lida a partir de um snapshot, não de voltas individuais.
Importante
Identidade de memória da conta de serviço
Quando uma conta de serviço invoca um agente implementado, o Atlas Agent Engine utiliza a própria identidade da conta de serviço como a identidade da memória de tempo de execução. A plataforma ignora qualquer valor user_id de usuário final que a solicitação de invocação ou o sinalizador agentengine invoke --user-id forneça.
As operações automáticas de registro, extração, consolidação e app.memory usam essa identidade resolvida. Como resultado, as invocações que autenticam por meio da mesma conta de serviço compartilham um escopo de usuário de memória.
Esta limitação se aplica apenas aos agentes implementados que uma conta de serviço invoca. O serviço de memória autônomo do, com escopo de projeto, não é afetado. Este serviço continua a aceitar valores user_id e session_id explícitos do chamador.
Para isolar a memória pelo usuário final, chame o serviço de memória autônomo do seu aplicação e passe um valor user_id e session_id explícito para cada chamada. Para saber mais, consulte Usar o serviço de memória independente.
Extração assíncrona
Registrar uma curva é uma gravação rápida na memória de curto prazo. A plataforma não executa extração durante a gravação.
Um processo em segundo plano de propriedade da plataforma é executado de forma assíncrona, verificando as sessões quanto à elegibilidade para promoção e verificando periodicamente se há sessões ociosas. Um trabalhador de background pega esse trabalho e executa os manipuladores de extração habilitados em cada snapshot recém-promovido.
O agente nunca espera por esse trabalho. O conhecimento adquirido em uma conversa fica disponível na próxima conversa, em vez de no próximo passo da conversa atual. As voltas recentes permanecem disponíveis por meio da memória de curto prazo. O conhecimento de longo prazo extraído aparece após o término da extração.
Passe de extração LLM
A extração destila um snapshot em quatro tipos de memória de longo prazo. Quando um instantâneo está pronto, o manipulador de extração de cada tipo de memória habilitado o lê independentemente. Um manipulador não classifica uma mudança como pertencente a um tipo em detrimento de outro. Em vez disso, ele solicita que um LLM procure seu tipo específico de conhecimento no snapshot. Cada manipulador extrai e armazena um resultado diferente:
Semântica: fatores, reconciliados com o que a plataforma já sabe
Capitais: eventos e seus participantes, cada um armazenado com um relato resumido do que aconteceu
Processual: procedimentos reutilizáveis que a conversa demonstra
Tagonomic: termos de domínio e suas definições
As memória extraídas recebem uma incorporação no momento da extração, o que permite que a plataforma as encontre por meio de pesquisa semântica em conversas posteriores. Uma incorporação é uma representação numérica do significado de uma memória. O manipulador de extração semântica usa incorporações para comparar um novo fato com o que ele já sabe.
Para saber mais sobre cada tipo de memória de longo prazo, consulte Tipos de memória de longo prazo.
Reconciliação de memória
Cada manipulador de extração reconcilia novas memória com o que a plataforma já sabe, de modo que informações repetidas ou evolutivas não criem registros duplicados ou contraditórios. Cada manipulador aplica uma de três ações a uma memória extraída:
ADD: A memória extraída não corresponde a um registro existente no escopo do chamador, então o manipulador cria um novo documento.UPDATE: a memória extraída substitui um registro existente, como um usuário relatando um novo aeroporto de origem. O manipulador escreve uma nova versão do documento e marca a versão anterior como substituída.REINFORCE: a memória extraída atualiza um registro existente. O manipulador não cria uma duplicata. Em vez disso, fortalecer o registro existente. Por exemplo, ele incrementa a contagem de reforçar de um fato semântica ou mescla novas provas em um termo indexado existente.
A reconciliação mantém a memória de longo prazo atual e, ao mesmo tempo, preserva a história de como cada memória foi aprender e reforçar.
Configurar tipos de extração
Você pode configurar quais tipos de memória de longo prazo a plataforma extrai automaticamente no arquivo project-config.yaml do seu projeto:
memory: extraction: enabled: - semantic - episodic - procedural - taxonomic
A plataforma fornece a lista enabled para o servidor de memória como a variável de ambiente MONGOMEM_ENABLED_EXTRACTIONS. Remover um tipo da lista apenas desativa sua extração automática em segundo plano. Seu aplicação ainda pode salvar esse tipo de memória diretamente por meio do set de desenvolvimento de software (SDK).
Depois de editar a lista, execute agentengine memory configure para carregar a configuração e, em seguida, execute agentengine memory apply --wait para entregar a configuração e reinicie o servidor de memória, aguardando até que ele relate que está pronto. Execute agentengine memory status para confirmar que a alteração entrou em vigor. Para saber mais sobre o fluxo de trabalho de configuração completo, consulte Configurar memória.
O servidor de memória requer um provedor de incorporação e uma chave de provedor LLM para ficar pronto, independentemente de quais tipos de extração estejam habilitados. Se o projeto não tiver uma chave de fornecedor LLM configurada, a plataforma falhará na implantação antes do início do servidor de memória. Para saber mais sobre esses pré-requisitos, consulte a seção Pré-requisitos de Adicionar memória ao seu agente.
Próximos passos
Depois de entender como funciona a extração, você pode explorar os seguintes guias:
Para habilitar memória para seu agente, consulte Adicionar memória ao seu agente.
Para gravar e recuperar conversas de um cliente MCP, consulte Conectar um cliente MCP à memória.