Session pruning¶
Session beskæresakse trimmer gamle værktøj resultater fra in-memory context lige før hvert LLM opkald. Det gør ikke omskrive on-disk sessionshistorikken (*.jsonl).
Hvornår det kører¶
- Når
mode: "cache-ttl"er aktiveret, og det sidste Anthropic-kald for sessionen er ældre endttl. - Påvirker kun de beskeder, der sendes til modellen for den anmodning.
- Kun aktivt for Anthropic API-kald (og OpenRouter Anthropic-modeller).
- For bedste resultater skal du matche
ttltil din modelscacheControlTtl. - Efter en pruning nulstilles TTL-vinduet, så efterfølgende anmodninger beholder cache, indtil
ttludløber igen.
Smarte standarder (Anthropic)¶
- OAuth- eller setup-token-profiler: aktivér
cache-ttlpruning og sæt heartbeat til1h. - API-nøgle-profiler: aktivér
cache-ttlpruning, sæt heartbeat til30m, og sæt standardcacheControlTtltil1hpå Anthropic-modeller. - Hvis du sætter nogen af disse værdier eksplicit, tilsidesætter OpenClaw dem ikke.
Hvad dette forbedrer (omkostning + cache-adfærd)¶
- Hvorfor beskære: Antropisk prompt caching gælder kun inden for TTL. Hvis en session går i tomgang forbi TTL, den næste anmodning re-caches den fulde prompt, medmindre du trimme den først.
- Hvad bliver billigere: pruning reducerer størrelsen af cacheWrite for den første anmodning efter TTL udløber.
- Hvorfor TTL-nulstillingen betyder noget: når pruning kører, nulstilles cache-vinduet, så efterfølgende anmodninger kan genbruge den friskcachende prompt i stedet for at gen-cache hele historikken igen.
- Hvad det ikke gør: pruning tilføjer ikke tokens eller “fordobler” omkostninger; det ændrer kun, hvad der caches ved den første post‑TTL-anmodning.
Hvad kan prunes¶
- Kun
toolResult-beskeder. - Bruger- og assistentbeskeder modificeres aldrig.
- De sidste
keepLastAssistantsassistentbeskeder er beskyttet; værktøjsresultater efter den grænse prunes ikke. - Hvis der ikke er nok assistentbeskeder til at fastlægge grænsen, springes pruning over.
- Værktøjsresultater, der indeholder billedblokke, springes over (trimmes/ryddes aldrig).
Estimering af kontekstvindue¶
Beskæring bruger et anslået kontekstvindue (tegn ≈ tokens × 4). Grundvinduet er løst i denne rækkefølge:
models.providers.*.models[].contextWindow-override.- Modeldefinition
contextWindow(fra modelregistret). - Standard
200000tokens.
Hvis agents.defaults.contextTokens er sat, behandles den som et loft (min) på det fastlagte vindue.
Tilstand¶
cache-ttl¶
- Pruning kører kun, hvis det sidste Anthropic-kald er ældre end
ttl(standard5m). - Når det kører: samme soft-trim + hard-clear-adfærd som før.
Soft vs hard pruning¶
- Soft-trim: kun for overdimensionerede værktøjsresultater.
- Beholder head + tail, indsætter
...og tilføjer en note med den oprindelige størrelse. - Springer resultater med billedblokke over.
- Hard-clear: erstatter hele værktøjsresultatet med
hardClear.placeholder.
Værktøjsudvælgelse¶
tools.allow/tools.denyunderstøtter*-wildcards.- Afvisning vinder.
- Matchning er ikke versalfølsom.
- Tom tilladelsesliste => alle værktøjer er tilladt.
Samspil med andre grænser¶
- Indbyggede værktøjer afkorter allerede deres eget output; session pruning er et ekstra lag, der forhindrer, at langvarige chats akkumulerer for meget værktøjsoutput i modelkonteksten.
- Komprimering er separat: Komprimering opsummerer og fortsætter, beskæring er forbigående per anmodning. Se /concepts/compaction.
Standarder (når aktiveret)¶
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Old tool result content cleared]" }
Eksempler¶
Standard (fra):
{
agent: {
contextPruning: { mode: "off" },
},
}
Aktivér TTL-bevidst pruning:
{
agent: {
contextPruning: { mode: "cache-ttl", ttl: "5m" },
},
}
Begræns pruning til specifikke værktøjer:
{
agent: {
contextPruning: {
mode: "cache-ttl",
tools: { allow: ["exec", "read"], deny: ["*image*"] },
},
},
}
Se konfigurationsreference: Gateway Configuration