Compaction
Ogni modello ha una finestra di contesto, ovvero il numero massimo di token che può elaborare. Quando una conversazione si avvicina a quel limite, OpenClaw esegue la Compaction dei messaggi più vecchi in un riepilogo, così la chat può continuare.Come funziona
- I turni più vecchi della conversazione vengono riassunti in una voce compatta.
- Il riepilogo viene salvato nella trascrizione della sessione.
- I messaggi recenti vengono mantenuti intatti.
toolResult. Se un punto
di divisione cade all’interno di un blocco di strumenti, OpenClaw sposta il confine in modo
che la coppia resti unita e che la coda corrente non riassunta venga preservata.
L’intera cronologia della conversazione resta su disco. La Compaction cambia solo ciò che il
modello vede al turno successivo.
Auto-Compaction
L’auto-Compaction è attiva per impostazione predefinita. Viene eseguita quando la sessione si avvicina al limite di contesto, o quando il modello restituisce un errore di overflow del contesto (in quel caso OpenClaw esegue la Compaction e riprova). Le firme tipiche di overflow includonorequest_too_large, context length exceeded, input exceeds the maximum number of tokens, input token count exceeds the maximum number of input tokens, input is too long for the model e ollama error: context length exceeded.
Prima di eseguire la Compaction, OpenClaw ricorda automaticamente all’agente di salvare note importanti
nei file di memory. Questo previene la perdita di contesto.
agents.defaults.compaction nel tuo openclaw.json per configurare il comportamento della Compaction (modalità, token di destinazione, ecc.).
Il riepilogo della Compaction preserva per impostazione predefinita gli identificatori opachi (identifierPolicy: "strict"). Puoi modificarlo con identifierPolicy: "off" oppure fornire testo personalizzato con identifierPolicy: "custom" e identifierInstructions.
Puoi facoltativamente specificare un modello diverso per il riepilogo della Compaction tramite agents.defaults.compaction.model. Questo è utile quando il tuo modello principale è locale o di piccole dimensioni e vuoi che i riepiloghi di Compaction siano prodotti da un modello più capace. L’override accetta qualsiasi stringa provider/model-id:
Provider di Compaction collegabili
I Plugin possono registrare un provider di Compaction personalizzato tramiteregisterCompactionProvider() sull’API del plugin. Quando un provider è registrato e configurato, OpenClaw gli delega il riepilogo invece di usare la pipeline LLM integrata.
Per usare un provider registrato, imposta l’id del provider nella tua configurazione:
provider forza automaticamente mode: "safeguard". I provider ricevono le stesse istruzioni di Compaction e lo stesso criterio di preservazione degli identificatori del percorso integrato, e OpenClaw continua comunque a preservare il contesto del suffisso dei turni recenti e dei turni divisi dopo l’output del provider. Se il provider fallisce o restituisce un risultato vuoto, OpenClaw torna al riepilogo LLM integrato.
Auto-Compaction (attiva per impostazione predefinita)
Quando una sessione si avvicina o supera la finestra di contesto del modello, OpenClaw attiva l’auto-Compaction e può riprovare la richiesta originale usando il contesto compattato. Vedrai:🧹 Auto-compaction completein modalità verbose/statusche mostra🧹 Compactions: <count>
Compaction manuale
Digita/compact in qualsiasi chat per forzare una Compaction. Aggiungi istruzioni per guidare
il riepilogo:
Uso di un modello diverso
Per impostazione predefinita, la Compaction usa il modello principale del tuo agente. Puoi usare un modello più capace per ottenere riepiloghi migliori:Notifiche di Compaction
Per impostazione predefinita, la Compaction viene eseguita in modo silenzioso. Per mostrare brevi notifiche quando la Compaction inizia e quando completa, abilitanotifyUser:
Compaction vs pruning
| Compaction | Pruning | |
|---|---|---|
| Cosa fa | Riassume la conversazione più vecchia | Riduce i vecchi risultati degli strumenti |
| Salvato? | Sì (nella trascrizione della sessione) | No (solo in memoria, per richiesta) |
| Ambito | Intera conversazione | Solo risultati degli strumenti |
Risoluzione dei problemi
Compaction troppo frequente? La finestra di contesto del modello potrebbe essere piccola, oppure gli output degli strumenti potrebbero essere grandi. Prova ad abilitare il pruning della sessione. Il contesto sembra datato dopo la Compaction? Usa/compact Focus on <topic> per
guidare il riepilogo, oppure abilita il flush della memory affinché le note
sopravvivano.
Hai bisogno di ripartire da zero? /new avvia una nuova sessione senza eseguire la Compaction.
Per la configurazione avanzata (token riservati, preservazione degli identificatori, motori di
contesto personalizzati, Compaction lato server OpenAI), vedi
l’Approfondimento sulla gestione delle sessioni.
Correlati
- Sessione — gestione e ciclo di vita della sessione
- Pruning della sessione — riduzione dei risultati degli strumenti
- Contesto — come viene costruito il contesto per i turni dell’agente
- Hook — hook del ciclo di vita della Compaction (before_compaction, after_compaction)