legacy integrato e lo utilizza per impostazione predefinita. Installare e selezionare un motore Plugin solo quando si desidera un comportamento diverso per l’assemblaggio, la Compaction o il recupero tra sessioni.
Avvio rapido
1
Verificare quale motore è attivo
2
Installare un motore Plugin
I Plugin del motore di contesto vengono installati come qualsiasi altro Plugin di OpenClaw.
- Da npm
- Da un percorso locale
3
Abilitare e selezionare il motore
4
Tornare al motore precedente (facoltativo)
Impostare
contextEngine su "legacy" (oppure rimuovere completamente la chiave: "legacy" è il valore predefinito).Funzionamento
Ogni volta che OpenClaw esegue un prompt del modello, il motore di contesto interviene in quattro punti del ciclo di vita:1. Acquisizione
1. Acquisizione
Chiamato quando viene aggiunto un nuovo messaggio alla sessione. Il motore può archiviare o indicizzare il messaggio nel proprio archivio dati.
2. Assemblaggio
2. Assemblaggio
Chiamato prima di ogni esecuzione del modello. Il motore restituisce un insieme ordinato di messaggi (e un
systemPromptAddition facoltativo) che rientrano nel budget di token.3. Compattazione
3. Compattazione
Chiamato quando la finestra di contesto è piena o quando si esegue
/compact. Il motore riassume la cronologia meno recente per liberare spazio.4. Dopo il turno
4. Dopo il turno
Chiamato al completamento di un’esecuzione. Il motore può rendere persistente lo stato, attivare la Compaction in background o aggiornare gli indici.
maintain() per la manutenzione della trascrizione (riscritture sicure tramite runtimeContext.rewriteTranscriptEntries()) dopo il bootstrap, un turno completato correttamente o la Compaction. Impostare info.turnMaintenanceMode: "background" per eseguirlo come attività differita anziché bloccare la risposta.
Per l’harness Codex non ACP incluso, OpenClaw applica lo stesso ciclo di vita proiettando il contesto assemblato nelle istruzioni per sviluppatori di Codex e nel prompt del turno corrente. Codex continua a gestire la propria cronologia nativa dei thread e il proprio compattatore nativo.
Ciclo di vita dei subagenti (facoltativo)
OpenClaw chiama due hook facoltativi del ciclo di vita dei subagenti:method
Prepara lo stato di contesto condiviso prima dell’avvio di un’esecuzione figlia. L’hook riceve le chiavi delle sessioni padre e figlia,
contextMode (isolated o fork), gli id/file di trascrizione disponibili e un TTL facoltativo. Se restituisce un handle di rollback, OpenClaw lo chiama quando la generazione non riesce dopo il completamento della preparazione. Le generazioni native di subagenti che richiedono lightContext e si risolvono in contextMode="isolated" ignorano intenzionalmente questo hook, affinché la sessione figlia inizi dal contesto di bootstrap leggero senza uno stato precedente alla generazione gestito dal motore di contesto.method
Esegue la pulizia quando una sessione del subagente termina o viene rimossa.
Aggiunta al prompt di sistema
Il metodoassemble può restituire una stringa systemPromptAddition. OpenClaw la antepone al prompt di sistema dell’esecuzione. Ciò consente ai motori di inserire indicazioni dinamiche per il recupero, istruzioni di reperimento o suggerimenti sensibili al contesto senza richiedere file statici nell’area di lavoro.
Il motore precedente
Il motorelegacy integrato mantiene il comportamento originale di OpenClaw:
- Acquisizione: nessuna operazione (il gestore delle sessioni gestisce direttamente la persistenza dei messaggi).
- Assemblaggio: pass-through (la pipeline esistente di sanificazione → convalida → limitazione nel runtime gestisce l’assemblaggio del contesto).
- Compattazione: delega alla Compaction di riepilogo integrata, che crea un singolo riepilogo dei messaggi meno recenti e mantiene intatti quelli recenti.
- Dopo il turno: nessuna operazione.
systemPromptAddition.
Quando non è impostato alcun plugins.slots.contextEngine (oppure è impostato su "legacy"), questo motore viene utilizzato automaticamente.
Motori Plugin
Un Plugin può registrare un motore di contesto utilizzando l’API del Plugin:ctx include valori facoltativi config, agentDir e workspaceDir
per consentire ai Plugin di inizializzare lo stato per agente o per area di lavoro prima
dell’esecuzione del primo hook del ciclo di vita.
Quindi abilitarlo nella configurazione:
L’interfaccia ContextEngine
Membri obbligatori:assemble restituisce un AssembleResult con:
Message[]
obbligatorio
I messaggi ordinati da inviare al modello.
number
obbligatorio
La stima del motore relativa al numero totale di token nel contesto assemblato. OpenClaw la utilizza per le decisioni sulle soglie di Compaction e per i rapporti diagnostici.
string
Anteposto al prompt di sistema.
"assembled" | "preassembly_may_overflow"
Controlla quale stima dei token viene utilizzata dal runner per i controlli
preventivi di overflow. Il valore predefinito è
"assembled", che indica che, per i motori che non gestiscono la Compaction, viene controllata soltanto la stima
del prompt assemblato.
I motori che impostano ownsCompaction: true gestiscono autonomamente l’ammissione dei prompt,
pertanto OpenClaw ignora per impostazione predefinita il controllo generico precedente al prompt. Impostare
"preassembly_may_overflow" soltanto quando la vista assemblata può nascondere un rischio di overflow
nella trascrizione sottostante; il runner mantiene quindi attivo il controllo generico
e considera il valore massimo tra la stima assemblata e quella precedente
all’assemblaggio (senza finestra) della cronologia della sessione quando decide se
eseguire preventivamente la Compaction. In ogni caso, i messaggi restituiti rimangono quelli
visualizzati dal modello: promptAuthority influisce soltanto sul controllo preliminare.ContextEngineProjection
Ciclo di vita facoltativo della proiezione per host con thread backend persistenti (ad esempio il server applicativo Codex).
mode: "thread_bootstrap" con un epoch stabile richiede all’host di inserire il contesto assemblato una volta per epoca e riutilizzare il thread backend finché l’epoca non cambia, anziché ripetere la proiezione a ogni turno. Omettere questo campo per la normale proiezione a ogni turno.compact restituisce un CompactResult. Quando la Compaction modifica l’identità della sessione attiva,
result.sessionTarget (un ContextEngineSessionTarget tipizzato che contiene
l’identità della sessione e l’ambito dell’archivio) identifica la sessione successiva che deve essere utilizzata
dal tentativo o turno successivo; result.sessionId rispecchia l’id successivo.
Membri facoltativi:
Impostazioni di runtime
Gli hook del ciclo di vita eseguiti all’interno di OpenClaw ricevono un oggetto facoltativoruntimeSettings. Si tratta di una superficie API interna
produttore/consumatore, di sola lettura e con versione: OpenClaw la produce per il motore di contesto
selezionato e il motore di contesto la utilizza negli hook del ciclo di vita. Non viene
mostrata direttamente agli utenti e non crea una superficie dedicata per i rapporti.
schemaVersion: attualmente1runtime: host OpenClaw, modalità runtime (normal,fallbackodegraded) e ID facoltativi dell’harness/runtimecontextEngineSelection: ID del motore di contesto selezionato e origine della selezioneexecutionHost: ID e etichetta dell’host per la superficie che invoca l’hookmodel: modello richiesto, modello risolto, provider e famiglia di modelli facoltativalimits: budget dei token del prompt e numero massimo di token di output, quando notidiagnostics: codici del fallback chiuso e del motivo del funzionamento degradato, quando noti
null; i campi discriminanti,
come la modalità runtime e l’origine della selezione, rimangono non nullable. I motori meno recenti rimangono
compatibili: se un motore legacy rigoroso rifiuta runtimeSettings come proprietà
sconosciuta, OpenClaw ripete la chiamata del ciclo di vita senza di essa invece di mettere
il motore in quarantena.
Requisiti dell’host
I motori di contesto possono dichiarare requisiti relativi alle capacità dell’host ininfo.hostRequirements.
OpenClaw verifica tali requisiti prima di avviare l’operazione e applica il blocco preventivo
con un errore descrittivo quando il runtime selezionato non è in grado di soddisfarli.
Per le esecuzioni dell’agente, dichiarare assemble-before-prompt quando il motore deve controllare
il prompt effettivo del modello tramite assemble():
assemble-before-prompt.
I backend CLI generici non lo fanno, pertanto i motori che lo richiedono vengono rifiutati prima
dell’avvio del processo CLI.
Isolamento degli errori
OpenClaw isola il motore del plugin selezionato dal percorso principale delle risposte. Se un motore non legacy è assente, non supera la convalida del contratto, genera un’eccezione durante la creazione della factory o da un metodo del ciclo di vita, OpenClaw mette tale motore in quarantena per il processo Gateway corrente e trasferisce il lavoro del motore di contesto al motorelegacy integrato. L’errore viene registrato insieme all’operazione non riuscita, affinché
l’operatore possa riparare, aggiornare o disabilitare il plugin senza che l’agente smetta
di rispondere.
Gli errori relativi ai requisiti dell’host sono diversi: quando un motore dichiara che a un runtime
manca una capacità richiesta, OpenClaw applica il blocco preventivo prima di avviare l’esecuzione. Ciò
protegge i motori che danneggerebbero lo stato se venissero eseguiti in un host non supportato.
ownsCompaction
ownsCompaction determina se la compattazione automatica integrata nel runtime di OpenClaw durante il tentativo rimane abilitata per l’esecuzione:
ownsCompaction: true
ownsCompaction: true
Il motore gestisce il comportamento di compattazione. OpenClaw disabilita la compattazione automatica integrata nel runtime di OpenClaw e il controllo preliminare generico dell’overflow prima del prompt per tale esecuzione; l’implementazione
compact() del motore è responsabile di /compact, della compattazione per il recupero dall’overflow del provider e di qualsiasi compattazione proattiva che intenda eseguire in afterTurn(). OpenClaw esegue comunque la protezione dall’overflow prima del prompt quando il motore restituisce promptAuthority: "preassembly_may_overflow" da assemble().ownsCompaction: false or unset
ownsCompaction: false or unset
La compattazione automatica integrata nel runtime di OpenClaw può ancora essere eseguita durante l’elaborazione del prompt, ma il metodo
compact() del motore attivo viene comunque chiamato per /compact e il recupero dall’overflow.- Modalità proprietaria
- Modalità delegata
Implementare un algoritmo di compattazione personalizzato e impostare
ownsCompaction: true.compact() non è sicura per un motore attivo non proprietario, perché disabilita il normale percorso di compattazione /compact e di recupero dall’overflow per lo slot di tale motore.
Riferimento per la configurazione
Lo slot è esclusivo durante l’esecuzione: per una determinata esecuzione o operazione di compattazione viene risolto un solo motore di contesto registrato. Gli altri plugin
kind: "context-engine" abilitati possono comunque essere caricati ed eseguire il proprio codice di registrazione; plugins.slots.contextEngine seleziona soltanto l’ID del motore registrato che OpenClaw risolve quando necessita di un motore di contesto.Disinstallazione del plugin: quando si disinstalla il plugin attualmente selezionato come
plugins.slots.contextEngine, OpenClaw reimposta lo slot sul valore predefinito (legacy). Lo stesso comportamento di reimpostazione si applica a plugins.slots.memory. Non è necessario modificare manualmente la configurazione.Relazione con la compattazione e la memoria
Compaction
Compaction
La compattazione è una delle responsabilità del motore di contesto. Il motore legacy delega alla riepilogazione integrata di OpenClaw. I motori dei plugin possono implementare qualsiasi strategia di compattazione (riepiloghi DAG, recupero vettoriale e così via).
Plugin di memoria
Plugin di memoria
I plugin di memoria (
plugins.slots.memory) sono distinti dai motori di contesto. I plugin di memoria forniscono ricerca e recupero; i motori di contesto controllano ciò che vede il modello. Possono operare insieme: un motore di contesto potrebbe utilizzare i dati di un plugin di memoria durante l’assemblaggio. I motori dei plugin che desiderano il percorso attivo del prompt di memoria dovrebbero preferire buildMemorySystemPromptAddition(...) da openclaw/plugin-sdk/core, che converte le sezioni attive del prompt di memoria in un systemPromptAddition pronto da anteporre. Se un motore necessita di un controllo di livello inferiore, può comunque recuperare le righe non elaborate da openclaw/plugin-sdk/memory-host-core tramite buildActiveMemoryPromptSection(...).Riduzione della sessione
Riduzione della sessione
La rimozione in memoria dei risultati meno recenti degli strumenti viene comunque eseguita, indipendentemente dal motore di contesto attivo.
Suggerimenti
- Usare
openclaw doctorper verificare che il motore venga caricato correttamente. - Quando si cambia motore, le sessioni esistenti proseguono con la cronologia corrente. Il nuovo motore subentra nelle esecuzioni future.
- Gli errori del motore vengono registrati e il motore del plugin selezionato viene messo in quarantena per il processo Gateway corrente. OpenClaw ricorre a
legacyper i turni dell’utente affinché le risposte possano continuare, ma è comunque necessario riparare, aggiornare, disabilitare o disinstallare il plugin non funzionante. - Per lo sviluppo, usare
openclaw plugins install -l ./my-engineper collegare una directory locale del plugin senza copiarla.
Contenuti correlati
- Compaction - riepilogo delle conversazioni lunghe
- Contesto - modalità di creazione del contesto per i turni dell’agente
- Architettura dei plugin - registrazione dei plugin dei motori di contesto
- Manifest del plugin - campi del manifest del plugin
- Plugin - panoramica dei plugin