Início rápido
Cole emopenclaw.json para usar uma configuração padrão segura: plugin ativado, restrito a main,
somente sessões de mensagens diretas, com o modelo herdado da sessão.
plugins.entries.* (incluindo active-memory.config) está na categoria de configuração
sem reinicialização:
o Gateway recarrega o runtime do plugin automaticamente, sem necessidade de
reinicialização manual. Se ainda assim quiser forçar uma reinicialização completa, execute:
plugins.entries.active-memory.enabled: trueativa o pluginconfig.agents: ["main"]inclui somente o agentemainconfig.allowedChatTypes: ["direct"]restringe o uso a sessões de mensagens diretas (inclua grupos/canais explicitamente)config.model(opcional) fixa um modelo dedicado de recuperação; quando não definido, herda o modelo da sessão atualconfig.modelFallbacké usado somente quando nenhum modelo explícito ou herdado é resolvidoconfig.fastModesubstitui opcionalmente o modo rápido para a recuperação sem alterar o agente principalconfig.promptStyle: "balanced"é o padrão para o modorecent- Active Memory ainda é executado somente em sessões de chat interativas, persistentes e qualificadas (consulte Quando é executado)
Como funciona
O subagente bloqueante pode chamar somente as ferramentas configuradas de recuperação de memória (consulte Ferramentas de memória). Se a conexão entre a consulta e a memória disponível for fraca, ele retornaNONE, e a resposta principal prossegue
sem contexto adicional.
Active Memory é um recurso de enriquecimento de conversas, não um recurso de
inferência para toda a plataforma:
Use-o quando a sessão for persistente e voltada ao usuário, o agente tiver
memória significativa de longo prazo para pesquisar e a continuidade/personalização forem
mais importantes do que o determinismo puro do prompt: preferências estáveis, hábitos recorrentes,
contexto de longo prazo que deve surgir naturalmente. Ele não é adequado para
automação, processos internos, tarefas isoladas de API ou qualquer situação em que a
personalização oculta possa causar surpresa.
Quando é executado
Dois critérios precisam ser atendidos:- Ativação na configuração — o plugin está ativado e o id do agente atual está em
config.agents. - Qualificação no runtime — a sessão é uma sessão de chat interativa persistente e qualificada, seu tipo de chat é permitido e seu id de conversa não está filtrado.
Tipos de sessão
config.allowedChatTypes controla quais tipos de conversa podem executar
Active Memory. Padrão:
direct, group, channel, explicit (sessões no estilo de portal
com um id de sessão opaco, por exemplo, agent:main:explicit:portal-123).
Sessões de mensagens diretas são executadas por padrão; grupos, canais e sessões explícitas
precisam ser incluídos:
config.allowedChatIds e config.deniedChatIds:
allowedChatIdsé uma lista de permissões de ids de conversa resolvidos. Quando não estiver vazia, Active Memory será executado somente em sessões cujo id de conversa esteja na lista — isso restringe todos os tipos de chat permitidos de uma só vez, incluindo mensagens diretas. Para manter todas as mensagens diretas e restringir somente grupos, adicione também os ids dos pares diretos aallowedChatIdsou mantenhaallowedChatTypesrestrito à implantação em grupo/canal que está sendo testada.deniedChatIdsé uma lista de negações que sempre prevalece sobreallowedChatTypeseallowedChatIds.
chat_id/open_id, id do chat do Telegram, id do canal do Slack). A correspondência
não diferencia maiúsculas de minúsculas. Se allowedChatIds não estiver vazio e o OpenClaw não conseguir
resolver um id de conversa para a sessão, Active Memory ignorará o turno
em vez de tentar adivinhar.
Alternância da sessão
Pause ou retome o Active Memory na sessão de chat atual sem editar a configuração:plugins.entries.active-memory.config.enabled nem outras configurações globais.
Para pausar/retomar em todas as sessões, use o formato global (requer
proprietário ou operator.admin):
plugins.entries.active-memory.config.enabled, mas
mantém plugins.entries.active-memory.enabled ativado, para que o comando continue
disponível e permita reativar o Active Memory mais tarde.
Como visualizá-lo
Por padrão, Active Memory injeta um prefixo de prompt oculto e não confiável que não é exibido na resposta normal. Ative as opções de sessão correspondentes à saída desejada:/verbose onadiciona uma linha de status:🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace onadiciona um resumo de depuração:🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw, o bloco rastreado Model Input (User Role) mostra o prefixo
oculto bruto:
Modos de consulta
config.queryMode controla quanto da conversa o subagente bloqueante
vê. Escolha o menor modo que ainda responda bem aos acompanhamentos; aumente
timeoutMs conforme o tamanho do contexto crescer, de message para recent e depois para full.
- message
- recent
- full
Somente a mensagem mais recente do usuário é enviada.Use quando quiser o comportamento mais rápido, a maior tendência a recuperar
preferências estáveis e quando turnos de acompanhamento não precisarem de contexto
da conversa. Comece em torno de
3000-5000 ms para config.timeoutMs.Estilos de prompt
config.promptStyle controla o quanto o subagente é propenso ou rigoroso ao
retornar memórias:
Mapeamento padrão quando
config.promptStyle não está definido:
config.promptStyle explícito sempre substitui o mapeamento.
Política de modelo alternativo
Seconfig.model não estiver definido, Active Memory resolve um modelo nesta ordem:
config.modelFallbackPolicy é um campo de compatibilidade obsoleto mantido para
configurações antigas; ele não altera mais o comportamento do runtime — modelFallback é
estritamente o último recurso na cadeia acima, não um failover de runtime que
troca para outro modelo quando o modelo resolvido apresenta erro.
Recomendações de velocidade
Manterconfig.model não definido (herdando o modelo da sessão) é a opção
padrão mais segura: ela segue suas preferências existentes de provedor,
autenticação e modelo. Para obter menor latência, use um modelo rápido dedicado —
a qualidade da recuperação importa, mas a latência importa mais aqui do que no
fluxo principal de resposta, e a superfície de ferramentas é restrita (somente
ferramentas de recuperação de memória).
Boas opções de modelos rápidos:
cerebras/gpt-oss-120b, um modelo dedicado de recuperação com baixa latênciagoogle/gemini-3-flash, uma alternativa de baixa latência sem alterar seu modelo principal de chat- seu modelo normal de sessão, mantendo
config.modelnão definido
Configuração do Cerebras
chat/completions ao modelo
escolhido — apenas a visibilidade /v1/models não garante esse acesso.
Ferramentas de memória
config.toolsAllow define os nomes concretos das ferramentas que o subagente
bloqueante pode chamar. Os padrões dependem do provedor de memória ativo:
Se nenhuma das ferramentas configuradas estiver disponível ou a execução do
subagente falhar, a Active Memory ignora a recuperação nesse turno, e a resposta
principal continua sem contexto de memória. Para ferramentas de recuperação
personalizadas, uma saída não vazia da ferramenta visível para o modelo conta
como evidência de recuperação, a menos que os campos estruturados do resultado
informem explicitamente um resultado vazio ou uma falha.
toolsAllow aceita apenas nomes concretos de ferramentas de memória:
curingas, entradas group:* e ferramentas principais do agente
(read, exec, message, web_search e
similares) são filtrados silenciosamente antes que o subagente oculto seja iniciado.
memory-core integrado
NenhumtoolsAllow explícito é necessário:
Memória LanceDB
Selecionar o slot de memória é suficiente para a Active Memory usarmemory_recall:
Lossless Claw
O Lossless Claw é um plugin externo de mecanismo de contexto (openclaw plugins install @martian-engineering/lossless-claw) com suas próprias
ferramentas de recuperação. Primeiro, configure-o como um mecanismo de contexto;
consulte Mecanismo de contexto. Depois, direcione a
Active Memory para as ferramentas dele:
lcm_expand a toolsAllow aqui; o Lossless Claw a usa
como uma ferramenta de nível inferior para expansão delegada, não destinada ao
subagente de Active Memory de nível superior.
Opções avançadas de escape
Não fazem parte da configuração recomendada.config.thinking substitui o nível de raciocínio do subagente (o padrão é
"off", pois a Active Memory é executada no fluxo de resposta, e o
tempo adicional de raciocínio aumenta diretamente a latência visível ao usuário):
config.fastMode substitui o modo rápido somente para o subagente bloqueante de
memória. Use true, false ou "auto";
mantenha-o não definido para herdar os padrões normais do agente, da sessão e do
modelo. "auto" usa o limite fastAutoOnSeconds configurado no modelo
de recuperação:
config.promptAppend adiciona instruções do operador depois do prompt padrão e
antes do contexto da conversa — combine-o com um toolsAllow personalizado
quando um plugin de memória que não seja o principal precisar de uma ordem
específica de ferramentas ou de formatação de consulta:
config.promptOverride substitui completamente o prompt padrão (o contexto da
conversa ainda é acrescentado depois). Isso não é recomendado, a menos que se
esteja testando deliberadamente um contrato de recuperação diferente — o prompt
padrão é ajustado para retornar NONE ou um contexto compacto de
fatos do usuário para o modelo principal:
Persistência de transcrições
As execuções do subagente bloqueante criam uma transcriçãosession.jsonl
real durante a chamada. Por padrão, ela é gravada em um diretório temporário e
excluída imediatamente após o término da execução.
Para manter essas transcrições no disco para depuração:
config.transcriptDir. Use isso com cuidado: as
transcrições podem se acumular rapidamente em sessões movimentadas, o modo de
consulta full duplica uma grande quantidade de contexto da
conversa, e essas transcrições contêm o contexto oculto do prompt, além das
memórias recuperadas.
Configuração
Toda a configuração da Active Memory fica emplugins.entries.active-memory.
Campos úteis de ajuste:
Configuração recomendada
Comece comrecent:
/verbose on para a linha de status e /trace on para o resumo de depuração
durante o ajuste — ambos são enviados como acompanhamento após a resposta principal, não
antes. Em seguida, mude para message para obter menor latência ou para full se o contexto adicional
compensar a execução mais lenta do subagente.
Tolerância para inicialização a frio
Antes da v2026.5.2, o plugin estendia silenciosamentetimeoutMs em mais 30000
ms durante a inicialização a frio, para que o aquecimento do modelo, o carregamento do índice de embeddings e a primeira
recuperação pudessem compartilhar um único orçamento maior. A v2026.5.2 moveu essa tolerância para uma
configuração explícita setupGraceTimeoutMs: timeoutMs agora é o orçamento do trabalho de recuperação
por padrão, a menos que essa opção seja ativada. O hook bloqueante envolve esse orçamento em
duas fases fixas: até 1500 ms para a verificação preliminar da sessão/configuração antes do início da recuperação
e, depois, 1500 ms adicionais fixos para concluir o cancelamento e recuperar a transcrição
após o encerramento do trabalho de recuperação. Nenhuma dessas concessões estende a execução do modelo ou das
ferramentas.
Se você fez upgrade da v2026.4.x e ajustou timeoutMs para o antigo
modelo de carência implícita (o valor inicial recomendado timeoutMs: 15000 é um
exemplo), defina setupGraceTimeoutMs: 30000 para restaurar o orçamento efetivo
anterior à v5.2:
timeoutMs + setupGraceTimeoutMs + 3000 ms (o
orçamento configurado para o trabalho de recuperação, mais até 1500 ms de pré-verificação,
mais uma tolerância fixa de 1500 ms para conclusão após a recuperação). O executor de
recuperação incorporado usa o mesmo orçamento efetivo de tempo limite, portanto
setupGraceTimeoutMs abrange tanto o watchdog externo de construção do prompt quanto
a execução de recuperação bloqueante interna.
Para gateways com recursos limitados, nos quais a latência de inicialização a frio é uma
contrapartida aceitável, valores menores (5000-15000 ms) também funcionam — a contrapartida
é uma probabilidade maior de a primeira recuperação após uma reinicialização do gateway
retornar vazia enquanto o aquecimento é concluído.
Depuração
Se a Active Memory não estiver aparecendo onde esperado:- 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 o teste está sendo feito por meio de uma sessão de chat persistente e interativa.
- Ative
config.logging: truee acompanhe os logs do gateway. - Verifique se a própria busca de memória funciona com
openclaw status --deep.
maxSummaryChars. Se a Active Memory
estiver muito lenta, reduza queryMode, reduza timeoutMs ou diminua a quantidade
de turnos recentes e os limites de caracteres por turno.
Problemas comuns
A Active Memory utiliza o pipeline de recuperação do Plugin de memória configurado, portanto, a maioria dos comportamentos inesperados de recuperação decorre de problemas com o provedor de embeddings, e não de bugs da Active Memory. O caminho padrãomemory-core usa
memory_search e memory_get; o slot memory-lancedb usa
memory_recall. Se outro Plugin de memória for usado, confirme que
config.toolsAllow especifica as ferramentas que esse Plugin realmente registra.
O provedor de embeddings foi alterado ou parou de funcionar
O provedor de embeddings foi alterado ou parou de funcionar
Se
memorySearch.provider não estiver definido, o OpenClaw usará embeddings da OpenAI. Defina
memorySearch.provider explicitamente para embeddings do Bedrock, DeepInfra, Gemini, GitHub
Copilot, LM Studio, locais, Mistral, Ollama, Voyage ou compatíveis com a OpenAI.
Se o provedor configurado não puder ser executado, memory_search poderá
se limitar à recuperação somente lexical; falhas de execução após um provedor já ter sido
selecionado não acionam um fallback automaticamente.Defina um memorySearch.fallback opcional somente quando quiser um único
fallback deliberado. Consulte Busca de memória para ver a lista
completa de provedores e exemplos.A recuperação parece lenta, vazia ou inconsistente
A recuperação parece lenta, vazia ou inconsistente
- Ative
/trace onpara exibir na sessão o resumo de depuração da Active Memory pertencente ao Plugin. - Ative
/verbose onpara também ver a linha de status🧩 Active Memory: ...após cada resposta. - Acompanhe os logs do gateway em busca de
active-memory: ... start|done,memory sync failed (search-bootstrap)ou erros de embeddings do provedor. - Execute
openclaw status --deeppara inspecionar o backend da busca de memória e a integridade do índice. - Se
ollamafor usado, confirme que o modelo de embeddings está instalado (ollama list).
A primeira recuperação após a reinicialização do gateway retorna `status=timeout`
A primeira recuperação após a reinicialização do gateway retorna `status=timeout`
Na v2026.5.2 e posteriores, se a configuração da inicialização a frio (aquecimento do modelo +
carregamento do índice de embeddings) não tiver terminado quando a primeira recuperação for
acionada, a execução poderá atingir o orçamento configurado em
timeoutMs e retornar
status=timeout com a saída vazia. Os logs do gateway mostram active-memory timeout after Nms
por volta da primeira resposta elegível após uma reinicialização.Consulte Carência da inicialização a frio em Configuração recomendada para
ver o valor recomendado de setupGraceTimeoutMs.