Sessiesnoeien¶
Sessiesnoeien trimt oude toolresultaten uit de in‑memory context vlak vóór elke LLM‑aanroep. Het herschrijft niet de on‑disk sessiegeschiedenis (*.jsonl).
Wanneer het wordt uitgevoerd¶
- Wanneer
mode: "cache-ttl"is ingeschakeld en de laatste Anthropic‑aanroep voor de sessie ouder is danttl. - Heeft alleen effect op de berichten die voor dat verzoek naar het model worden gestuurd.
- Alleen actief voor Anthropic API‑aanroepen (en OpenRouter Anthropic‑modellen).
- Voor het beste resultaat laat je
ttlaansluiten op decacheControlTtlvan je model. - Na een snoei wordt het TTL‑venster gereset, zodat volgende verzoeken de cache behouden totdat
ttlopnieuw verloopt.
Slimme standaardinstellingen (Anthropic)¶
- OAuth‑ of setup-token‑profielen: schakel
cache-ttl‑snoeien in en stel de heartbeat in op1h. - API‑sleutel‑profielen: schakel
cache-ttl‑snoeien in, stel de heartbeat in op30m, en zet standaardcacheControlTtlop1hvoor Anthropic‑modellen. - Als je een van deze waarden expliciet instelt, overschrijft OpenClaw ze niet.
Wat dit verbetert (kosten + cachegedrag)¶
- Waarom snoeien: Anthropic promptcaching geldt alleen binnen de TTL. Als een sessie langer dan de TTL inactief is, cachet het volgende verzoek de volledige prompt opnieuw, tenzij je die eerst inkort.
- Wat goedkoper wordt: snoeien verkleint de cacheWrite‑grootte voor dat eerste verzoek nadat de TTL is verlopen.
- Waarom de TTL‑reset telt: zodra snoeien is uitgevoerd, reset het cachevenster, zodat vervolgverzoeken de vers gecachte prompt kunnen hergebruiken in plaats van de volledige geschiedenis opnieuw te cachen.
- Wat het niet doet: snoeien voegt geen tokens toe en “verdubbelt” geen kosten; het verandert alleen wat er wordt gecachet bij dat eerste post‑TTL‑verzoek.
Wat kan worden gesnoeid¶
- Alleen
toolResult‑berichten. - Gebruikers‑ en assistentberichten worden nooit aangepast.
- De laatste
keepLastAssistantsassistentberichten zijn beschermd; toolresultaten na die afkap worden niet gesnoeid. - Als er onvoldoende assistentberichten zijn om de afkap te bepalen, wordt snoeien overgeslagen.
- Toolresultaten met image blocks worden overgeslagen (nooit ingekort/gewist).
Schatting van het contextvenster¶
Snoeien gebruikt een geschatte contextgrootte (tekens ≈ tokens × 4). Het basisvenster wordt in deze volgorde bepaald:
models.providers.*.models[].contextWindow‑override.- Modeldefinitie
contextWindow(uit het modelregister). - Standaard
200000tokens.
Als agents.defaults.contextTokens is ingesteld, wordt dit behandeld als een bovengrens (min) op het bepaalde venster.
Modus¶
cache-ttl¶
- Snoeien wordt alleen uitgevoerd als de laatste Anthropic‑aanroep ouder is dan
ttl(standaard5m). - Wanneer het wordt uitgevoerd: hetzelfde soft‑trim + hard‑clear‑gedrag als voorheen.
Soft vs hard snoeien¶
- Soft‑trim: alleen voor te grote toolresultaten.
- Behoudt kop + staart, voegt
...in en voegt een notitie toe met de oorspronkelijke grootte. - Slaat resultaten met image blocks over.
- Hard‑clear: vervangt het volledige toolresultaat door
hardClear.placeholder.
Toolselectie¶
tools.allow/tools.denyondersteunen*‑wildcards.- Weigeren wint.
- Overeenkomen is hoofdletterongevoelig.
- Lege toegestane lijst => alle tools toegestaan.
Interactie met andere limieten¶
- Ingebouwde tools korten hun eigen uitvoer al in; sessiesnoeien is een extra laag die voorkomt dat langdurige chats te veel tooluitvoer in de modelcontext ophopen.
- Compactie staat los hiervan: compactie vat samen en wordt persistent opgeslagen; snoeien is tijdelijk per verzoek. Zie /concepts/compaction.
Standaardwaarden (wanneer ingeschakeld)¶
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Old tool result content cleared]" }
Voorbeelden¶
Standaard (uit):
{
agent: {
contextPruning: { mode: "off" },
},
}
TTL‑bewust snoeien inschakelen:
{
agent: {
contextPruning: { mode: "cache-ttl", ttl: "5m" },
},
}
Snoeien beperken tot specifieke tools:
{
agent: {
contextPruning: {
mode: "cache-ttl",
tools: { allow: ["exec", "read"], deny: ["*image*"] },
},
},
}
Zie configreferentie: Gateway Configuration