Motori di contesto di OpenClaw
I quattro punti del ciclo di vita dell’assemblaggio, il motore legacy predefinito, scrivere un motore plugin con commitTurn e la semantica della trascrizione, i parametri host accettati, i requisiti di capacità dell’host, l’isolamento degli errori e cosa significa davvero ownsCompaction
Tutto ciò che il modello vede viene assemblato da qualcosa. In OpenClaw quel qualcosa è un motore di contesto, ed è sostituibile. Quello integrato mantiene il comportamento originale, ma è nell’interfaccia sottostante che si inseriscono le strategie basate soprattutto sul recupero o sui riassunti. Ecco i punti del ciclo di vita, il contratto che un plugin deve rispettare e i due comportamenti in caso di errore che impediscono a un motore difettoso di ammutolire l’agente.
Quattro punti del ciclo di vita
- Ingest viene chiamato quando un nuovo messaggio entra nella sessione, così il motore può salvarlo o indicizzarlo; assemble viene chiamato prima di ogni esecuzione del modello e restituisce un insieme ordinato di messaggi più un’aggiunta facoltativa al prompt di sistema che rientra nel budget di token; compact viene chiamato quando la finestra è piena o quando l’utente lo chiede; e un hook di fine turno permette al motore di salvare lo stato, avviare una compattazione in background o aggiornare gli indici.
- Un metodo maintain facoltativo esegue la manutenzione della trascrizione dopo il bootstrap, un turno riuscito o una compattazione, usando un helper di riscrittura sicura, e può essere dichiarato come lavoro in background così non blocca la risposta; una compattazione di budget in coda che accetta la manutenzione in background mantiene attivo il runtime preparato durante manutenzione, riesecuzioni e dismissione, quindi l’accettazione non significa che la pulizia sia finita.
- Due hook facoltativi per i sub-agent preparano lo stato condiviso prima che parta un’esecuzione figlia e fanno pulizia quando termina; l’hook di preparazione riceve le chiavi di sessione del genitore e del figlio, la modalità di contesto, gli identificatori di trascrizione disponibili e una durata facoltativa, e può restituire un handle di rollback che OpenClaw chiama se l’avvio fallisce in seguito.
- Il motore legacy integrato è volutamente minimale: ingest non fa nulla perché è il gestore delle sessioni a salvare i messaggi, assemble passa direttamente alla pipeline esistente di sanitizzazione, validazione e limitazione, compact delega al riassunto integrato, e l’hook di fine turno non fa nulla; non registra strumenti e non aggiunge nulla al prompt di sistema.
ownsCompaction: false non significa che OpenClaw ripieghi automaticamente sul percorso di compattazione del motore legacy.
Scrivere un motore
Un plugin registra un motore con un ID, un nome, l’indicazione se possiede la compattazione e i parametri host che accetta; OpenClaw interseca questa dichiarazione con i campi disponibili per ciascun metodo del ciclo di vita, così chiavi non dichiarate o sconosciute non vengono mai iniettate, e un motore che omette la dichiarazione riceve tutti i campi host attuali. Per i turni ammessi durevoli, un motore dichiara entrambe le semantiche della trascrizione e implementa un metodo di commit come un’unica scrittura atomica e idempotente indicizzata da una chiave di avanzamento, restituendo uno stato committed per la prima scrittura e uno stato duplicate quando un nuovo tentativo dell’host presenta la stessa chiave; il payload copre solo l’intervallo che va dalla voce utente ammessa fino alla voce terminale accettata, e la cronologia precedente si legge tramite il cursore della trascrizione. Senza la dichiarazione completa e il metodo, OpenClaw usa il percorso legacy per l’intero turno logico, nuovi tentativi compresi, lascia invariato lo slot configurato e riprova il motore al turno successivo. Il risultato di assemble contiene i messaggi, un conteggio stimato dei token, un’aggiunta facoltativa al prompt di sistema, un flag di autorità sul prompt che decide quale stima usa il controllo preventivo di overflow, e un ciclo di vita di proiezione facoltativo per gli host con thread di backend persistenti.
Requisiti ed errori
- Un motore può dichiarare requisiti di capacità dell’host, per esempio che deve controllare il prompt effettivo tramite assemble; le esecuzioni native e incorporate dell’agente soddisfano questa capacità, mentre i backend generici a riga di comando no, quindi un motore che la richiede viene rifiutato prima dell’avvio del processo e fallisce in modalità chiusa con un messaggio descrittivo.
- Se un motore non legacy manca, non supera la validazione del contratto, lancia un’eccezione durante la creazione o da un metodo del ciclo di vita, OpenClaw lo mette in quarantena per il processo del gateway corrente, riporta il lavoro sul contesto al motore legacy così le risposte continuano, e registra l’errore con l’operazione fallita così l’operatore può riparare, aggiornare o disattivare il plugin.
- Possedere la compattazione disattiva, per quell’esecuzione, l’auto-compattazione integrata durante il tentativo e il controllo preventivo generico di overflow prima del prompt, rendendo il motore responsabile della compattazione manuale, del recupero dall’overflow e di qualsiasi lavoro proattivo; non possederla lascia disponibile l’auto-compattazione integrata ma continua a instradare verso il motore la compattazione manuale e il recupero dall’overflow, ed è per questo che un metodo compact che non fa nulla non è sicuro.
La compattazione in OpenClaw è il comportamento a cui delega il motore legacy e il contesto di OpenClaw è ciò che viene assemblato.
Selezionare e deselezionare
Lo slot è esclusivo a runtime: per una data esecuzione o compattazione viene risolto un solo motore registrato, anche se gli altri plugin di motore attivati vengono comunque caricati ed eseguono il loro codice di registrazione. Disinstallare il plugin attualmente selezionato nello slot lo reimposta sul valore predefinito, e lo stesso reset vale per lo slot della memoria, quindi non serve alcuna modifica manuale della configurazione. Cambiare motore non riscrive le sessioni esistenti: continuano con la loro cronologia attuale mentre il nuovo motore prende in carico le esecuzioni future. I plugin di memoria sono uno slot separato che fornisce ricerca e recupero, e un motore può attingervi durante l’assemblaggio tramite l’helper documentato invece di mettere le mani nella loro struttura interna. La guida ai plugin di OpenClaw copre il sistema dei plugin e la guida alla ricerca nella memoria di OpenClaw il lato del recupero.
Su Diali
Su Diali la configurazione del runtime viene generata dalla dashboard e sostituita a ogni rilascio, quindi la scelta del motore fa parte di quella configurazione generata anziché di un file che i clienti modificano a mano. La pagina sull’hosting OpenClaw di Diali descrive l’assistente ospitato e la pagina sulla sicurezza di Diali il confine attorno a ciascun runtime.
- Ingest, assemble, compact, fine turno: quattro punti, un solo contratto.
- Un motore difettoso viene messo in quarantena; il legacy fa continuare a rispondere l’agente.
- Dichiara le semantiche della trascrizione, altrimenti il turno usa in silenzio il legacy.
Basta leggere, creane uno tuo
Configura un agente, scegli un canale e fallo lavorare dentro l’app che tieni già aperta.
