Sessions and memory
Sitzungsbereinigung
Session-Pruning kürzt alte Tool-Ergebnisse vor jedem LLM-Aufruf aus dem Kontext. Dadurch wird eine Aufblähung des Kontexts durch angesammelte Tool-Ausgaben (Ausführungsergebnisse, gelesene Dateien, Suchergebnisse) reduziert, ohne normalen Konversationstext umzuschreiben.
Warum es wichtig ist
In langen Sitzungen sammeln sich Tool-Ausgaben an, die das Kontextfenster vergrößern. Dies erhöht die Kosten und kann eine Compaction früher als nötig erzwingen.
Pruning ist besonders wertvoll für das Prompt-Caching von Anthropic. Nachdem die Cache-TTL abgelaufen ist, speichert die nächste Anfrage den vollständigen Prompt erneut im Cache. Pruning reduziert die Größe des Cache-Schreibvorgangs und senkt dadurch direkt die Kosten.
Funktionsweise
Pruning wird im Modus cache-ttl ausgeführt und hängt sowohl von einer Zeitprüfung als auch von einer Prüfung der Kontextgröße ab:
- Warten Sie, bis die Cache-TTL abgelaufen ist (standardmäßig 5 Minuten bei manueller Festlegung; den automatischen Anthropic-Standardwert finden Sie unter Intelligente Standardwerte). Vor Ablauf der TTL wird das Pruning vollständig übersprungen, damit der Prompt-Cache für zeitlich nahe aufeinanderfolgende Interaktionen wiederverwendet werden kann.
- Nach Ablauf der TTL wird die Gesamtkontextgröße im Verhältnis zum Kontextfenster des Modells geschätzt. Liegt das Verhältnis unter
softTrimRatio(standardmäßig 0.3), wird das Pruning übersprungen und die TTL-Uhr läuft weiter. - Soft-Trim für übergroße Tool-Ergebnisse oberhalb des Verhältnisses: Anfang und Ende werden beibehalten (standardmäßig jeweils 1500 Zeichen, zusammen auf 4000 Zeichen begrenzt) und dazwischen wird
...eingefügt. - Wenn das Verhältnis weiterhin mindestens
hardClearRatio(standardmäßig 0.5) beträgt und mindestensminPrunableToolChars(standardmäßig 50,000) an kürzbaren Tool-Inhalten verbleiben, werden diese Ergebnisse vollständig gelöscht: Ihr Inhalt wird durch einen Platzhalter ersetzt (standardmäßig[Old tool result content cleared]). - Die TTL-Uhr wird nur zurückgesetzt, wenn das Pruning den Kontext tatsächlich verändert hat, sodass Folgeanfragen den neuen Cache wiederverwenden.
Unabhängig von den Schwellenwerten gelten zwei Sicherheitsregeln: Die neuesten keepLastAssistants Assistant-Interaktionen (standardmäßig 3) werden niemals gekürzt, und Inhalte vor der ersten Benutzernachricht der Sitzung werden ebenfalls niemals gekürzt (dies schützt initiale Lesevorgänge wie SOUL.md/USER.md).
Nur Nachrichten vom Typ toolResult kommen infrage; normaler Konversationstext bleibt unverändert. Mit agents.defaults.contextPruning.tools.{allow,deny} legen Sie fest, welche Tool-Namen gekürzt werden dürfen.
Bereinigung älterer Bilder
OpenClaw erstellt außerdem eine separate idempotente Wiedergabeansicht für Sitzungen, in deren Verlauf rohe Bildblöcke oder Medienmarker zur Prompt-Hydration gespeichert sind.
- Sie behält die 3 neuesten abgeschlossenen Interaktionen Byte für Byte bei, damit die Präfixe des Prompt-Caches für kürzlich erfolgte Folgeanfragen stabil bleiben. Diese Anzahl umfasst alle abgeschlossenen Interaktionen, nicht nur solche mit Bildern; daher belegen auch reine Textinteraktionen das Fenster.
- In der Wiedergabeansicht werden ältere, bereits verarbeitete Bildblöcke aus dem Verlauf von
userodertoolResultdurch[image data removed - already processed by model]ersetzt. - Ältere textuelle Medienverweise wie
[media attached: ...],[Image: source: ...]undmedia://inbound/...werden durch[media reference removed - already processed by model]ersetzt. Anhangsmarker der aktuellen Interaktion bleiben unverändert, damit Vision-Modelle weiterhin neue Bilder laden können. - Das rohe Sitzungsprotokoll wird nicht umgeschrieben, sodass Verlaufsansichten weiterhin die ursprünglichen Nachrichteneinträge und deren Bilder darstellen können.
- Dies erfolgt unabhängig vom oben beschriebenen normalen Cache-TTL-Pruning. Es verhindert, dass wiederholte Bildnutzlasten oder veraltete Medienverweise bei späteren Interaktionen den Prompt-Cache ungültig machen.
Intelligente Standardwerte
Das mitgelieferte Anthropic-Plugin konfiguriert beim erstmaligen Auflösen eines Authentifizierungsprofils für Anthropic (oder die Claude CLI) automatisch das Pruning und den Heartbeat-Takt, jedoch nur für Felder, die Sie nicht bereits explizit festgelegt haben:
| Authentifizierungsmodus | contextPruning.mode |
contextPruning.ttl |
heartbeat.every |
|---|---|---|---|
| OAuth/Token (einschließlich Wiederverwendung der Claude CLI) | cache-ttl |
1h |
1h |
| API-Schlüssel | cache-ttl |
1h |
30m |
Wenn Sie agents.defaults.contextPruning.mode oder agents.defaults.heartbeat.every selbst festlegen, überschreibt OpenClaw diese Werte nicht. Dieser automatische Standardwert wird nur bei Authentifizierung für die Anthropic-Familie angewendet; bei anderen Providern ist das Pruning off, sofern Sie es nicht konfigurieren.
Aktivieren oder deaktivieren
Für Provider außerhalb der Anthropic-Familie ist das Pruning standardmäßig deaktiviert. So aktivieren Sie es:
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", ttl: "5m" }, }, },}Zum Deaktivieren: Setzen Sie mode: "off".
Pruning im Vergleich zur Compaction
| Pruning | Compaction | |
|---|---|---|
| Was | Kürzt Tool-Ergebnisse | Fasst die Konversation zusammen |
| Gespeichert? | Nein (pro Anfrage) | Ja (im Protokoll) |
| Umfang | Nur Tool-Ergebnisse | Gesamte Konversation |
Beide ergänzen einander – Pruning hält Tool-Ausgaben zwischen Compaction-Zyklen kompakt.
Weiterführende Informationen
- Compaction: kontextreduzierende Zusammenfassung
- Gateway-Konfiguration: alle Konfigurationsoptionen für das Pruning (
contextPruning.*)