Memória ativa
A memória ativa é um subagente opcional de memória de bloqueio, pertencente ao plugin, que é executado antes da resposta principal em sessões conversacionais qualificadas. Ela existe porque a maioria dos sistemas de memória é capaz, mas reativa. Eles dependem do agente principal para decidir quando pesquisar na memória, ou do usuário para dizer coisas como “lembre-se disso” ou “pesquise na memória”. Nessa altura, o momento em que a memória teria feito a resposta parecer natural já passou. A memória ativa dá ao sistema uma chance limitada de trazer memória relevante antes de a resposta principal ser gerada.Cole isto no seu agente
Cole isto no seu agente se você quiser habilitar a Memória ativa com uma configuração autocontida e segura por padrão:main, o mantém limitado por padrão a
sessões no estilo de mensagens diretas, permite que ele herde primeiro o modelo da
sessão atual e ainda permite o fallback remoto integrado caso nenhum modelo explícito
ou herdado esteja disponível.
Depois disso, reinicie o gateway:
Ativar a memória ativa
A configuração mais segura é:- habilitar o plugin
- direcioná-lo para um agente conversacional
- manter o logging ativado apenas durante o ajuste fino
openclaw.json:
plugins.entries.active-memory.enabled: trueativa o pluginconfig.agents: ["main"]habilita a memória ativa apenas para o agentemainconfig.allowedChatTypes: ["direct"]mantém a memória ativa habilitada por padrão apenas para sessões no estilo de mensagens diretas- se
config.modelnão estiver definido, a memória ativa herda primeiro o modelo da sessão atual config.modelFallbackPolicy: "default-remote"mantém o fallback remoto integrado como padrão quando nenhum modelo explícito ou herdado está disponívelconfig.promptStyle: "balanced"usa o estilo de prompt padrão de uso geral para o modorecent- a memória ativa ainda é executada apenas em sessões de chat persistentes interativas qualificadas
Como vê-la
A memória ativa injeta contexto oculto de sistema para o modelo. Ela não expõe tags brutas<active_memory_plugin>...</active_memory_plugin> ao cliente.
Alternância por sessão
Use o comando do plugin quando quiser pausar ou retomar a memória ativa na sessão de chat atual sem editar a configuração:plugins.entries.active-memory.enabled, o direcionamento por agente nem outras
configurações globais.
Se você quiser que o comando grave a configuração e pause ou retome a memória ativa para
todas as sessões, use a forma global explícita:
plugins.entries.active-memory.config.enabled. Ela deixa
plugins.entries.active-memory.enabled ativado para que o comando continue disponível
para reativar a memória ativa depois.
Se você quiser ver o que a memória ativa está fazendo em uma sessão ao vivo, ative o
modo detalhado para essa sessão:
- uma linha de status da memória ativa como
Active Memory: ok 842ms recent 34 chars - um resumo de depuração legível como
Active Memory Debug: Lemon pepper wings with blue cheese.
Quando ela é executada
A memória ativa usa dois critérios:- Opt-in de configuração
O plugin deve estar habilitado, e o id do agente atual deve aparecer em
plugins.entries.active-memory.config.agents. - Qualificação estrita em tempo de execução Mesmo quando habilitada e direcionada, a memória ativa só é executada em sessões de chat persistentes interativas qualificadas.
Tipos de sessão
config.allowedChatTypes controla quais tipos de conversas podem executar a Memória
ativa de qualquer forma.
O padrão é:
Onde ela é executada
A memória ativa é um recurso de enriquecimento conversacional, não um recurso de inferência para toda a plataforma.| Superfície | Executa memória ativa? |
|---|---|
| Sessões persistentes da UI de controle / chat web | Sim, se o plugin estiver habilitado e o agente for direcionado |
| Outras sessões de canal interativas no mesmo caminho de chat persistente | Sim, se o plugin estiver habilitado e o agente for direcionado |
| Execuções avulsas sem interface | Não |
| Execuções de heartbeat/background | Não |
Caminhos internos genéricos de agent-command | Não |
| Execução interna de subagente/helper | Não |
Por que usá-la
Use a memória ativa quando:- a sessão for persistente e voltada ao usuário
- o agente tiver memória de longo prazo significativa para pesquisar
- continuidade e personalização importarem mais do que o determinismo bruto do prompt
- preferências estáveis
- hábitos recorrentes
- contexto de longo prazo do usuário que deve surgir naturalmente
- automação
- workers internos
- tarefas de API de execução única
- lugares em que a personalização oculta seria surpreendente
Como ela funciona
O formato em tempo de execução é: O subagente de memória de bloqueio pode usar apenas:memory_searchmemory_get
NONE.
Modos de consulta
config.queryMode controla quanto da conversa o subagente de memória de bloqueio vê.
Estilos de prompt
config.promptStyle controla quão disposto ou rigoroso o subagente de memória de bloqueio é
ao decidir se deve retornar memória.
Estilos disponíveis:
balanced: padrão de uso geral para o modorecentstrict: menos disposto; melhor quando você quer muito pouca interferência do contexto próximocontextual: mais favorável à continuidade; melhor quando o histórico da conversa deve importar maisrecall-heavy: mais disposto a trazer memória em correspondências mais sutis, mas ainda plausíveisprecision-heavy: prefere agressivamenteNONE, a menos que a correspondência seja óbviapreference-only: otimizado para favoritos, hábitos, rotinas, gostos e fatos pessoais recorrentes
config.promptStyle não está definido:
config.promptStyle explicitamente, essa substituição prevalece.
Exemplo:
Política de fallback de modelo
Seconfig.model não estiver definido, a Memória ativa tenta resolver um modelo nesta ordem:
config.modelFallbackPolicy controla a última etapa.
Padrão:
resolved-only se quiser que a Memória ativa ignore a recuperação em vez de usar
o padrão remoto integrado como fallback quando nenhum modelo explícito ou herdado
estiver disponível.
Escapes avançados
Essas opções intencionalmente não fazem parte da configuração recomendada.config.thinking pode substituir o nível de raciocínio do subagente de memória de bloqueio:
config.promptAppend adiciona instruções extras do operador após o prompt padrão da
Memória ativa e antes do contexto da conversa:
config.promptOverride substitui o prompt padrão da Memória ativa. O OpenClaw
ainda anexa o contexto da conversa em seguida:
NONE ou um contexto compacto de fatos do usuário para o modelo principal.
message
Apenas a mensagem mais recente do usuário é enviada.
- você quiser o comportamento mais rápido
- você quiser o viés mais forte em direção à recuperação de preferências estáveis
- turnos de acompanhamento não precisarem de contexto conversacional
- comece em torno de
3000a5000ms
recent
A mensagem mais recente do usuário, mais uma pequena cauda recente da conversa, são enviadas.
- você quiser um melhor equilíbrio entre velocidade e contextualização conversacional
- perguntas de acompanhamento frequentemente dependerem dos últimos turnos
- comece em torno de
15000ms
full
A conversa completa é enviada ao subagente de memória de bloqueio.
- a melhor qualidade de recuperação for mais importante do que a latência
- a conversa contiver preparação importante muito antes na thread
- aumente-o substancialmente em comparação com
messageourecent - comece em torno de
15000ms ou mais, dependendo do tamanho da thread
Persistência de transcrições
As execuções do subagente de memória de bloqueio da memória ativa criam uma transcrição realsession.jsonl durante a chamada do subagente de memória de bloqueio.
Por padrão, essa transcrição é temporária:
- ela é gravada em um diretório temporário
- ela é usada apenas para a execução do subagente de memória de bloqueio
- ela é excluída imediatamente após o término da execução
config.transcriptDir.
Use isso com cuidado:
- as transcrições do subagente de memória de bloqueio podem se acumular rapidamente em sessões movimentadas
- o modo de consulta
fullpode duplicar muito contexto de conversa - essas transcrições contêm contexto oculto de prompt e memórias recuperadas
Configuração
Toda a configuração da memória ativa fica em:| Chave | Tipo | Significado |
|---|---|---|
enabled | boolean | Habilita o próprio plugin |
config.agents | string[] | IDs de agente que podem usar memória ativa |
config.model | string | Referência opcional de modelo do subagente de memória de bloqueio; quando não definido, a memória ativa usa o modelo atual da sessão |
config.queryMode | "message" | "recent" | "full" | Controla quanto da conversa o subagente de memória de bloqueio vê |
config.promptStyle | "balanced" | "strict" | "contextual" | "recall-heavy" | "precision-heavy" | "preference-only" | Controla quão disposto ou rigoroso o subagente de memória de bloqueio é ao decidir se deve retornar memória |
config.thinking | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | Substituição avançada do nível de raciocínio para o subagente de memória de bloqueio; padrão off para velocidade |
config.promptOverride | string | Substituição avançada completa do prompt; não recomendada para uso normal |
config.promptAppend | string | Instruções extras avançadas anexadas ao prompt padrão ou substituído |
config.timeoutMs | number | Tempo limite rígido para o subagente de memória de bloqueio |
config.maxSummaryChars | number | Máximo de caracteres totais permitidos no resumo da memória ativa |
config.logging | boolean | Emite logs da memória ativa durante o ajuste fino |
config.persistTranscripts | boolean | Mantém em disco as transcrições do subagente de memória de bloqueio em vez de excluir arquivos temporários |
config.transcriptDir | string | Diretório relativo das transcrições do subagente de memória de bloqueio dentro da pasta de sessões do agente |
| Chave | Tipo | Significado |
|---|---|---|
config.maxSummaryChars | number | Máximo de caracteres totais permitidos no resumo da memória ativa |
config.recentUserTurns | number | Turnos anteriores do usuário a incluir quando queryMode é recent |
config.recentAssistantTurns | number | Turnos anteriores do assistente a incluir quando queryMode é recent |
config.recentUserChars | number | Máximo de caracteres por turno recente do usuário |
config.recentAssistantChars | number | Máximo de caracteres por turno recente do assistente |
config.cacheTtlMs | number | Reutilização de cache para consultas idênticas repetidas |
Configuração recomendada
Comece comrecent.
/verbose on na
sessão em vez de procurar um comando de depuração separado da memória ativa.
Depois passe para:
messagese quiser menor latênciafullse decidir que o contexto extra vale o subagente de memória de bloqueio mais lento
Depuração
Se a memória ativa não estiver aparecendo onde você espera:- Confirme que o plugin está habilitado em
plugins.entries.active-memory.enabled. - Confirme que o id do agente atual está listado em
config.agents. - Confirme que você está testando por meio de uma sessão de chat persistente interativa.
- Ative
config.logging: truee observe os logs do gateway. - Verifique se a própria pesquisa de memória funciona com
openclaw memory status --deep.
maxSummaryChars
- reduza
queryMode - reduza
timeoutMs - reduza as contagens de turnos recentes
- reduza os limites de caracteres por turno