Session-Pruning
Session-Pruning kuerzt alte Tool-Ergebnisse im In-Memory-Kontext direkt vor jedem LLM-Aufruf. Die On-Disk-Sitzungshistorie (*.jsonl) wird dabei nicht veraendert.
Wann es laeuft
- Wenn
mode: "cache-ttl"aktiviert ist und der letzte Anthropic-Aufruf fuer die Session aelter alsttlist. - Betrifft nur die Nachrichten, die dem Modell fuer diesen Request gesendet werden.
- Nur aktiv bei Anthropic-API-Aufrufen (und OpenRouter-Anthropic-Modellen).
- Fuer beste Ergebnisse sollte
ttlauf diecacheRetention-Richtlinie deines Modells abgestimmt sein (short= 5min,long= 1h). - Nach einem Pruning-Lauf wird das TTL-Fenster zurueckgesetzt, sodass nachfolgende Requests den Cache behalten, bis
ttlerneut ablaeuft.
Smarte Standardwerte (Anthropic)
- OAuth oder Setup-Token-Profile:
cache-ttl-Pruning aktivieren und Heartbeat auf1hsetzen. - API-Key-Profile:
cache-ttl-Pruning aktivieren, Heartbeat auf30msetzen undcacheRetention: "short"als Standard fuer Anthropic-Modelle. - Wenn du einen dieser Werte explizit setzt, ueberschreibt OpenClaw ihn nicht.
Was das verbessert (Kosten + Cache-Verhalten)
- Warum prunen: Anthropics Prompt-Caching greift nur innerhalb des TTL. Wenn eine Session ueber das TTL hinaus idle ist, wird beim naechsten Request der volle Prompt neu gecacht — es sei denn, du trimmst ihn vorher.
- Was guenstiger wird: Pruning reduziert die cacheWrite-Groesse fuer den ersten Request nach Ablauf des TTL.
- Warum der TTL-Reset wichtig ist: Nach dem Pruning wird das Cache-Fenster zurueckgesetzt, sodass Folgeanfragen den frisch gecachten Prompt wiederverwenden koennen, statt die volle Historie erneut zu cachen.
- Was es nicht tut: Pruning fuegt keine Tokens hinzu und “verdoppelt” keine Kosten; es aendert nur, was beim ersten Post-TTL-Request gecacht wird.
Was gepruned werden kann
- Nur
toolResult-Nachrichten. - User- und Assistant-Nachrichten werden nie veraendert.
- Die letzten
keepLastAssistantsAssistant-Nachrichten sind geschuetzt; Tool-Ergebnisse nach diesem Cutoff werden nicht gepruned. - Wenn nicht genuegend Assistant-Nachrichten vorhanden sind, um den Cutoff zu bestimmen, wird das Pruning uebersprungen.
- Tool-Ergebnisse mit Image-Blocks werden uebersprungen (nie getrimmt/geloescht).
Kontextfenster-Schaetzung
Pruning nutzt eine geschaetzte Kontextfenstergroesse (Zeichen ≈ Tokens x 4). Das Basis-Fenster wird in dieser Reihenfolge aufgeloest:
models.providers.*.models[].contextWindow-Override.contextWindowaus der Modelldefinition (aus der Model-Registry).- Standard:
200000Tokens.
Wenn agents.defaults.contextTokens gesetzt ist, wird es als Cap (Minimum) auf das aufgeloeste Fenster angewendet.
Modus
cache-ttl
- Pruning laeuft nur, wenn der letzte Anthropic-Aufruf aelter als
ttlist (Standard5m). - Wenn es laeuft: gleiches Soft-Trim + Hard-Clear-Verhalten wie bisher.
Soft- vs. Hard-Pruning
- Soft-Trim: nur fuer uebergrosse Tool-Ergebnisse.
- Behaelt Anfang + Ende, fuegt
...ein und haengt eine Notiz mit der Originalgroesse an. - Ueberspringt Ergebnisse mit Image-Blocks.
- Behaelt Anfang + Ende, fuegt
- Hard-Clear: ersetzt das gesamte Tool-Ergebnis durch
hardClear.placeholder.
Tool-Auswahl
tools.allow/tools.denyunterstuetzen*-Wildcards.- Deny gewinnt.
- Matching ist case-insensitive.
- Leere Allow-Liste => alle Tools erlaubt.
Zusammenspiel mit anderen Limits
- Eingebaute Tools kuerzen ihren eigenen Output bereits; Session-Pruning ist eine zusaetzliche Ebene, die verhindert, dass langlebige Chats zu viel Tool-Output im Modellkontext ansammeln.
- Kompaktierung ist separat: Kompaktierung fasst zusammen und persistiert, Pruning ist transient pro Request. Siehe /concepts/compaction.
Standardwerte (wenn aktiviert)
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Old tool result content cleared]" }
Beispiele
Standard (aus):
{
agents: { defaults: { contextPruning: { mode: "off" } } },
}
TTL-bewusstes Pruning aktivieren:
{
agents: { defaults: { contextPruning: { mode: "cache-ttl", ttl: "5m" } } },
}
Pruning auf bestimmte Tools beschraenken:
{
agents: {
defaults: {
contextPruning: {
mode: "cache-ttl",
tools: { allow: ["exec", "read"], deny: ["*image*"] },
},
},
},
}
Siehe Config-Referenz: Gateway Configuration