Funktionsweise
- Ältere Unterhaltungsdurchläufe werden zu einem kompakten Eintrag zusammengefasst.
- Die Zusammenfassung wird im Sitzungs-Transkript gespeichert.
- Aktuelle Nachrichten bleiben unverändert erhalten.
toolResult-Einträgen zusammen. Wenn ein Trennpunkt innerhalb eines Tool-Blocks liegt, verschiebt OpenClaw die Grenze, damit das Paar zusammenbleibt und der aktuelle nicht zusammengefasste Abschnitt erhalten bleibt.
Der vollständige Unterhaltungsverlauf bleibt auf der Festplatte. Compaction ändert nur, was das Modell im nächsten Durchlauf sieht.
Automatische Compaction
Automatische Compaction ist standardmäßig aktiviert. Sie wird ausgeführt, wenn sich die Sitzung dem Kontextlimit nähert oder wenn das Modell einen Kontextüberlauf-Fehler zurückgibt (in diesem Fall führt OpenClaw eine Compaction durch und versucht es erneut). Sie sehen:embedded run auto-compaction start/completein normalen Gateway-Logs.🧹 Auto-compaction completeim ausführlichen Modus./statuszeigt🧹 Compactions: <count>.
Vor der Compaction erinnert OpenClaw den Agenten automatisch daran, wichtige Notizen in memory-Dateien zu speichern. Dies verhindert Kontextverlust.
Erkannte Überlauf-Signaturen
Erkannte Überlauf-Signaturen
OpenClaw erkennt Kontextüberläufe anhand dieser Provider-Fehlermuster:
request_too_largecontext length exceededinput exceeds the maximum number of tokensinput token count exceeds the maximum number of input tokensinput is too long for the modelollama error: context length exceeded
Manuelle Compaction
Geben Sie in einem beliebigen Chat/compact ein, um eine Compaction zu erzwingen. Fügen Sie Anweisungen hinzu, um die Zusammenfassung zu steuern:
agents.defaults.compaction.keepRecentTokens gesetzt ist, berücksichtigt die manuelle Compaction diesen OpenClaw-Schnittpunkt und behält den aktuellen Abschnitt im neu aufgebauten Kontext. Ohne explizites Beibehaltungsbudget verhält sich die manuelle Compaction wie ein harter Kontrollpunkt und fährt allein mit der neuen Zusammenfassung fort.
Konfiguration
Konfigurieren Sie Compaction unteragents.defaults.compaction in Ihrer openclaw.json. Die häufigsten Stellschrauben sind unten aufgeführt; die vollständige Referenz finden Sie unter Detaillierter Überblick zur Sitzungsverwaltung.
Ein anderes Modell verwenden
Standardmäßig verwendet Compaction das primäre Modell des Agenten. Setzen Sieagents.defaults.compaction.model, um die Zusammenfassung an ein leistungsfähigeres oder spezialisierteres Modell zu delegieren. Die Überschreibung akzeptiert eine provider/model-id-Zeichenfolge oder einen einfachen Alias, der unter agents.defaults.models konfiguriert ist:
agents.defaults.compaction.model bleibt exakt und erbt nicht die Sitzungs-Fallback-Kette.
Beibehaltung von Bezeichnern
Die Compaction-Zusammenfassung bewahrt standardmäßig undurchsichtige Bezeichner (identifierPolicy: "strict"). Überschreiben Sie dies mit identifierPolicy: "off", um es zu deaktivieren, oder mit identifierPolicy: "custom" plus identifierInstructions für benutzerdefinierte Vorgaben.
Byte-Schutz für aktives Transkript
Wennagents.defaults.compaction.maxActiveTranscriptBytes gesetzt ist, löst OpenClaw vor einem Lauf eine normale lokale Compaction aus, falls die aktive JSONL-Datei diese Größe erreicht. Das ist nützlich für lange laufende Sitzungen, in denen providerseitige Kontextverwaltung den Modellkontext gesund halten kann, während das lokale Transkript weiter wächst. Es teilt keine rohen JSONL-Bytes auf; es weist die normale Compaction-Pipeline an, eine semantische Zusammenfassung zu erstellen.
Nachfolge-Transkripte
Wennagents.defaults.compaction.truncateAfterCompaction aktiviert ist, schreibt OpenClaw das vorhandene Transkript nicht direkt um. Es erstellt aus der Compaction-Zusammenfassung, dem beibehaltenen Zustand und dem nicht zusammengefassten Abschnitt ein neues aktives Nachfolge-Transkript und zeichnet anschließend Kontrollpunkt-Metadaten auf, die Branch-/Restore-Flows auf diesen kompakten Nachfolger verweisen.
Nachfolge-Transkripte entfernen außerdem exakte Duplikate langer Benutzerdurchläufe, die innerhalb eines kurzen Wiederholungsfensters eintreffen, sodass Kanal-Wiederholungsstürme nach der Compaction nicht in das nächste aktive Transkript übernommen werden.
OpenClaw schreibt für neue Compactions keine separaten .checkpoint.*.jsonl-Kopien mehr. Vorhandene Legacy-Kontrollpunktdateien können weiterhin verwendet werden, solange sie referenziert werden, und werden durch die normale Sitzungsbereinigung entfernt.
Compaction-Hinweise
Standardmäßig läuft Compaction still. Setzen SienotifyUser, um kurze Statusmeldungen anzuzeigen, wenn Compaction startet und abgeschlossen ist:
Speicher-Flush
Vor der Compaction kann OpenClaw einen stillen Speicher-Flush-Durchlauf ausführen, um dauerhafte Notizen auf der Festplatte zu speichern. Setzen Sieagents.defaults.compaction.memoryFlush.model, wenn dieser Verwaltungsdurchlauf ein lokales Modell statt des aktiven Unterhaltungsmodells verwenden soll:
Austauschbare Compaction-Provider
Plugins können überregisterCompactionProvider() in der Plugin-API einen benutzerdefinierten Compaction-Provider registrieren. Wenn ein Provider registriert und konfiguriert ist, delegiert OpenClaw die Zusammenfassung an ihn statt an die integrierte LLM-Pipeline.
Um einen registrierten Provider zu verwenden, setzen Sie dessen ID in Ihrer Konfiguration:
provider erzwingt automatisch mode: "safeguard". Provider erhalten dieselben Compaction-Anweisungen und dieselbe Richtlinie zur Beibehaltung von Bezeichnern wie der integrierte Pfad, und OpenClaw bewahrt nach der Provider-Ausgabe weiterhin den Suffix-Kontext aktueller Durchläufe und geteilter Durchläufe.
Wenn der Provider fehlschlägt oder ein leeres Ergebnis zurückgibt, fällt OpenClaw auf die integrierte LLM-Zusammenfassung zurück.
Compaction vs. Pruning
| Compaction | Pruning | |
|---|---|---|
| Was es tut | Fasst ältere Unterhaltung zusammen | Kürzt alte Tool-Ergebnisse |
| Gespeichert? | Ja (im Sitzungs-Transkript) | Nein (nur im Arbeitsspeicher, je Anfrage) |
| Umfang | Gesamte Unterhaltung | Nur Tool-Ergebnisse |
Fehlerbehebung
Compaction erfolgt zu häufig? Das Kontextfenster des Modells ist möglicherweise klein, oder Tool-Ausgaben sind möglicherweise groß. Versuchen Sie, Session-Pruning zu aktivieren. Der Kontext wirkt nach der Compaction veraltet? Verwenden Sie/compact Focus on <topic>, um die Zusammenfassung zu steuern, oder aktivieren Sie den Speicher-Flush, damit Notizen erhalten bleiben.
Sie benötigen einen sauberen Neustart? /new startet eine frische Sitzung ohne Compaction.
Erweiterte Konfiguration (reservierte Tokens, Beibehaltung von Bezeichnern, benutzerdefinierte Kontext-Engines, serverseitige OpenAI-Compaction) finden Sie im detaillierten Überblick zur Sitzungsverwaltung.
Verwandte Themen
- Sitzung: Sitzungsverwaltung und Lebenszyklus.
- Session-Pruning: Kürzen von Tool-Ergebnissen.
- Kontext: wie Kontext für Agenten-Durchläufe aufgebaut wird.
- Hooks: Compaction-Lebenszyklus-Hooks (
before_compaction,after_compaction).