Session Pruning
Session pruning trims old tool results from the in-memory context right before each LLM call. It does not rewrite the on-disk session history (*.jsonl).
When it runs
- When
mode: "cache-ttl"is enabled and the last Anthropic call for the session is older thanttl. - Only affects the messages sent to the model for that request.
- Only active for Anthropic API calls (and OpenRouter Anthropic models).
- Asboblarni ruxsat berish/taqiqlash ro‘yxatlari — bu asboblar, ko‘nikmalar emas.
- After a prune, the TTL window resets so subsequent requests keep cache until
ttlexpires again.
Smart defaults (Anthropic)
- OAuth or setup-token profiles: enable
cache-ttlpruning and set heartbeat to1h. - API key profiles: enable
cache-ttlpruning, set heartbeat to30m, and defaultcacheControlTtlto1hon Anthropic models. - If you set any of these values explicitly, OpenClaw does not override them.
What this improves (cost + cache behavior)
- Why prune: Anthropic prompt caching only applies within the TTL. If a session goes idle past the TTL, the next request re-caches the full prompt unless you trim it first.
- What gets cheaper: pruning reduces the cacheWrite size for that first request after the TTL expires.
- Why the TTL reset matters: once pruning runs, the cache window resets, so follow‑up requests can reuse the freshly cached prompt instead of re-caching the full history again.
- What it does not do: pruning doesn’t add tokens or “double” costs; it only changes what gets cached on that first post‑TTL request.
What can be pruned
- Only
toolResultmessages. - User + assistant messages are never modified.
- The last
keepLastAssistantsassistant messages are protected; tool results after that cutoff are not pruned. - If there aren’t enough assistant messages to establish the cutoff, pruning is skipped.
- Tool results containing image blocks are skipped (never trimmed/cleared).
Context window estimation
Pruning uses an estimated context window (chars ≈ tokens × 4). The base window is resolved in this order:models.providers.*.models[].contextWindowoverride.- Model definition
contextWindow(from the model registry). - Default
200000tokens.
agents.defaults.contextTokens is set, it is treated as a cap (min) on the resolved window.
Mode
cache-ttl
- Pruning only runs if the last Anthropic call is older than
ttl(default5m). - Ishga tushganda: avvalgidek bir xil soft-trim + hard-clear xatti-harakati.
Soft va hard pruning
- Soft-trim: faqat haddan tashqari katta tool natijalari uchun.
- Bosh va oxirini saqlaydi,
...qo‘shadi va asl hajmi bilan eslatma ilova qiladi. - Rasm bloklari bo‘lgan natijalarni o‘tkazib yuboradi.
- Bosh va oxirini saqlaydi,
- Hard-clear: butun tool natijasini
hardClear.placeholderbilan almashtiradi.
Tool tanlash
tools.allow/tools.deny*wildcardlarni qo‘llab-quvvatlaydi.- Deny ustun keladi.
- Moslash katta-kichik harfga sezgir emas.
- Bo‘sh allow ro‘yxati => barcha tool’lar ruxsat etilgan.
Boshqa limitlar bilan o‘zaro ta’sir
- O‘rnatilgan tool’lar allaqachon o‘z chiqishini qisqartiradi; session pruning esa model kontekstida uzoq davom etadigan chatlarda juda ko‘p tool chiqishi to‘planib ketmasligi uchun qo‘shimcha qatlamdir.
- Compaction alohida: compaction xulosa qiladi va saqlab qoladi, pruning esa har bir so‘rov uchun vaqtinchalik. Eng yaxshi natijalar uchun
ttlni modelingizdagicacheControlTtlbilan moslang.
Standartlar (yoqilganda)
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Old tool result content cleared]" }