Motor de contexto
Um motor de contexto controla como o OpenClaw cria o contexto do modelo para cada execução. Ele decide quais mensagens incluir, como resumir o histórico antigo e como gerenciar o contexto entre limites de subagentes. O OpenClaw vem com um motorlegacy integrado. Plugins podem registrar
motores alternativos que substituem o ciclo de vida ativo do motor de contexto.
Início rápido
Verifique qual motor está ativo:Instalando um plugin de motor de contexto
Plugins de motor de contexto são instalados como qualquer outro plugin do OpenClaw. Instale primeiro e, em seguida, selecione o motor no slot:contextEngine como "legacy" (ou
remova a chave completamente — "legacy" é o padrão).
Como funciona
Toda vez que o OpenClaw executa um prompt de modelo, o motor de contexto participa em quatro pontos do ciclo de vida:- Ingestão — chamada quando uma nova mensagem é adicionada à sessão. O motor pode armazenar ou indexar a mensagem em seu próprio armazenamento de dados.
- Montagem — chamada antes de cada execução do modelo. O motor retorna um conjunto
ordenado de mensagens (e um
systemPromptAdditionopcional) que cabe dentro do orçamento de tokens. - Compactação — chamada quando a janela de contexto está cheia, ou quando o usuário executa
/compact. O motor resume o histórico antigo para liberar espaço. - Após o turno — chamada depois que uma execução é concluída. O motor pode persistir o estado, disparar compactação em segundo plano ou atualizar índices.
Ciclo de vida do subagente (opcional)
Atualmente, o OpenClaw chama um hook de ciclo de vida de subagente:- onSubagentEnded — limpa quando uma sessão de subagente é concluída ou removida.
prepareSubagentSpawn faz parte da interface para uso futuro, mas
o runtime ainda não o invoca.
Adição ao prompt do sistema
O métodoassemble pode retornar uma string systemPromptAddition. O OpenClaw
a antepõe ao prompt do sistema para a execução. Isso permite que motores injetem
orientações dinâmicas de recuperação, instruções de recuperação ou dicas
sensíveis ao contexto sem exigir arquivos estáticos do workspace.
O motor legado
O motorlegacy integrado preserva o comportamento original do OpenClaw:
- Ingestão: no-op (o gerenciador de sessão lida diretamente com a persistência de mensagens).
- Montagem: passagem direta (o pipeline existente sanitize → validate → limit no runtime lida com a montagem do contexto).
- Compactação: delega para a compactação de sumarização integrada, que cria um único resumo de mensagens antigas e mantém as mensagens recentes intactas.
- Após o turno: no-op.
systemPromptAddition.
Quando nenhum plugins.slots.contextEngine é definido (ou quando ele é definido como "legacy"), este
motor é usado automaticamente.
Motores de plugin
Um plugin pode registrar um motor de contexto usando a API de plugin:A interface ContextEngine
Membros obrigatórios:| Member | Kind | Purpose |
|---|---|---|
info | Propriedade | Id, nome, versão do motor e se ele é dono da compactação |
ingest(params) | Método | Armazenar uma única mensagem |
assemble(params) | Método | Montar o contexto para uma execução de modelo (retorna AssembleResult) |
compact(params) | Método | Resumir/reduzir o contexto |
assemble retorna um AssembleResult com:
messages— as mensagens ordenadas a serem enviadas ao modelo.estimatedTokens(obrigatório,number) — a estimativa do motor para o total de tokens no contexto montado. O OpenClaw usa isso para decisões de limite de compactação e relatórios de diagnóstico.systemPromptAddition(opcional,string) — anteposto ao prompt do sistema.
| Member | Kind | Purpose |
|---|---|---|
bootstrap(params) | Método | Inicializar o estado do motor para uma sessão. Chamado uma vez quando o motor vê uma sessão pela primeira vez (por exemplo, importar histórico). |
ingestBatch(params) | Método | Ingerir um turno concluído como lote. Chamado depois que uma execução é concluída, com todas as mensagens daquele turno de uma vez. |
afterTurn(params) | Método | Trabalho de ciclo de vida pós-execução (persistir estado, disparar compactação em segundo plano). |
prepareSubagentSpawn(params) | Método | Configurar estado compartilhado para uma sessão filha. |
onSubagentEnded(params) | Método | Limpar após o término de um subagente. |
dispose() | Método | Liberar recursos. Chamado durante o desligamento do gateway ou recarregamento do plugin — não por sessão. |
ownsCompaction
ownsCompaction controla se a auto-compactação integrada em tentativa do Pi permanece
ativada para a execução:
true— o motor é responsável pelo comportamento de compactação. O OpenClaw desativa a auto-compactação integrada do Pi para essa execução, e a implementação decompact()do motor é responsável por/compact, compactação de recuperação por overflow e qualquer compactação proativa que ele queira fazer emafterTurn().falseou não definido — a auto-compactação integrada do Pi ainda pode ser executada durante a execução do prompt, mas o métodocompact()do motor ativo ainda é chamado para/compacte recuperação por overflow.
ownsCompaction: false não significa que o OpenClaw recorre automaticamente a
o caminho de compactação do motor legado.
Isso significa que há dois padrões de plugin válidos:
- Modo proprietário — implemente seu próprio algoritmo de compactação e defina
ownsCompaction: true. - Modo de delegação — defina
ownsCompaction: falsee façacompact()chamardelegateCompactionToRuntime(...)deopenclaw/plugin-sdk/corepara usar o comportamento de compactação integrado do OpenClaw.
compact() sem operação é inseguro para um motor ativo não proprietário, porque ele
desativa o caminho normal de compactação de /compact e de recuperação por overflow para esse
slot de motor.
Referência de configuração
kind: "context-engine" ativados ainda podem carregar e executar seu código
de registro; plugins.slots.contextEngine apenas seleciona qual id de motor registrado
o OpenClaw resolve quando precisa de um motor de contexto.
Relação com compactação e memória
- Compactação é uma das responsabilidades do motor de contexto. O motor legado delega para a sumarização integrada do OpenClaw. Motores de plugin podem implementar qualquer estratégia de compactação (resumos DAG, recuperação vetorial etc.).
- Plugins de memória (
plugins.slots.memory) são separados dos motores de contexto. Plugins de memória fornecem busca/recuperação; motores de contexto controlam o que o modelo vê. Eles podem trabalhar juntos — um motor de contexto pode usar dados do plugin de memória durante a montagem. Motores de plugin que quiserem o caminho de prompt de memória ativo devem preferirbuildMemorySystemPromptAddition(...)deopenclaw/plugin-sdk/core, que converte as seções do prompt de memória ativo em umsystemPromptAdditionpronto para ser anteposto. Se um motor precisar de controle de nível mais baixo, ele ainda pode extrair linhas brutas deopenclaw/plugin-sdk/memory-host-coreviabuildActiveMemoryPromptSection(...). - Poda de sessão (remoção de resultados antigos de ferramentas da memória) ainda é executada independentemente de qual motor de contexto está ativo.
Dicas
- Use
openclaw doctorpara verificar se seu motor está sendo carregado corretamente. - Se estiver alternando motores, as sessões existentes continuam com seu histórico atual. O novo motor assume para execuções futuras.
- Erros do motor são registrados em logs e exibidos em diagnósticos. Se um motor de plugin
falhar ao registrar ou se o id de motor selecionado não puder ser resolvido, o OpenClaw
não faz fallback automático; as execuções falham até que você corrija o plugin ou
altere
plugins.slots.contextEnginede volta para"legacy". - Para desenvolvimento, use
openclaw plugins install -l ./my-enginepara vincular um diretório de plugin local sem copiar.
Relacionado
- Contexto — como o contexto é criado para os turnos do agente
- Arquitetura de plugins — registrando plugins de motor de contexto
- Compactação — resumindo conversas longas