Pular para o conteúdo

Memória Autônoma

Quando habilitado, o agente extrai automaticamente conhecimento durável de sessões passadas e injeta um resumo compacto em cada nova sessão. Com o tempo, ele constrói um armazenamento de memória com escopo de projeto — decisões técnicas, fluxos de trabalho recorrentes, armadilhas — que é transferido automaticamente sem esforço manual.

Desabilitado por padrão. Habilite via /settings ou config.yml:

memories:
enabled: true

No início da sessão, se um resumo de memória existir para o projeto atual, ele é injetado no prompt do sistema como um bloco de Memory Guidance. O agente é instruído a:

  • Tratar a memória como contexto heurístico — útil para processos e decisões anteriores, não autoritativo sobre o estado atual do repositório.
  • Citar o caminho do artefato de memória quando a memória alterar o plano, e combiná-lo com evidências do repositório atual antes de agir.
  • Preferir o estado do repositório e a instrução do usuário quando conflitarem com a memória; tratar memória conflitante como obsoleta.

O agente pode ler arquivos de memória diretamente usando URLs memory:// com a ferramenta read:

URLConteúdo
memory://rootResumo compacto injetado na inicialização
memory://root/MEMORY.mdDocumento completo de memória de longo prazo
memory://root/skills/<name>/SKILL.mdUm playbook de habilidade gerado
SubcomandoEfeito
viewMostrar o payload atual de injeção de memória
clear / resetExcluir todos os dados de memória e artefatos gerados
enqueue / rebuildForçar a consolidação a executar na próxima inicialização

As memórias são construídas por um pipeline em segundo plano que é executado na inicialização ou acionado manualmente via comando slash.

Fase 1 — extração por sessão: Para cada sessão passada que foi alterada desde o último processamento, um modelo lê o histórico da sessão e extrai sinais duráveis: decisões técnicas, restrições, falhas resolvidas, fluxos de trabalho recorrentes. Sessões muito recentes, muito antigas ou atualmente ativas são ignoradas. Cada extração produz um bloco de memória bruto e uma sinopse curta para aquela sessão.

Fase 2 — consolidação: Após a extração, uma segunda passagem do modelo lê todas as extrações por sessão e produz três saídas escritas em disco:

  • MEMORY.md — um documento de memória de longo prazo curado
  • memory_summary.md — o texto compacto injetado no início da sessão
  • skills/ — playbooks procedurais reutilizáveis, cada um em seu próprio subdiretório

A Fase 2 usa um lease para evitar execução duplicada quando múltiplos processos iniciam simultaneamente. Diretórios de habilidades obsoletos de execuções anteriores são podados automaticamente.

Toda saída é verificada quanto a segredos antes de ser escrita em disco.

O comportamento de extração e consolidação de memória é inteiramente orientado por arquivos de prompt estáticos em src/prompts/memories/.

ArquivoPropósitoVariáveis
stage_one_system.mdPrompt do sistema para extração por sessão
stage_one_input.mdTemplate de turno do usuário envolvendo conteúdo da sessão{{thread_id}}, {{response_items_json}}
consolidation.mdPrompt para consolidação entre sessões{{raw_memories}}, {{rollout_summaries}}
read_path.mdOrientação de memória injetada em sessões ativas{{memory_summary}}

A memória utiliza o sistema de roles de modelo.

FaseRolePropósito
Fase 1 (extração)defaultExtração de conhecimento por sessão
Fase 2 (consolidação)smolSíntese entre sessões

Se smol não estiver configurado, a Fase 2 recorre ao role default.

ConfiguraçãoPadrãoDescrição
memories.enabledfalseChave principal
memories.maxRolloutAgeDays30Sessões mais antigas que este valor não são processadas
memories.minRolloutIdleHours12Sessões ativas mais recentemente que este valor são ignoradas
memories.maxRolloutsPerStartup64Limite de sessões processadas em uma única inicialização
memories.summaryInjectionTokenLimit5000Máximo de tokens do resumo injetado no prompt do sistema

Ajustes adicionais (concorrência, durações de lease, orçamentos de tokens) estão disponíveis na configuração para uso avançado.

  • src/memories/index.ts — orquestração do pipeline, injeção, tratamento de comandos slash
  • src/memories/storage.ts — fila de trabalhos e registro de threads com suporte SQLite
  • src/prompts/memories/ — templates de prompts de memória
  • src/internal-urls/memory-protocol.ts — manipulador de URLs memory://