Élagage de session
L’élagage de session rogne les anciens résultats d’outils du contexte en mémoire juste avant chaque appel LLM. Il ne réécrit pas l’historique de session sur disque (*.jsonl).
Quand il s’exécute
- Lorsque
mode: "cache-ttl"est activé et que le dernier appel Anthropic de la session est plus ancien quettl. - N’affecte que les messages envoyés au modèle pour cette requête.
- Actif uniquement pour les appels à l’API Anthropic (et les modèles Anthropic via OpenRouter).
- Pour de meilleurs résultats, faites correspondre
ttlà votrecacheControlTtldu modèle. - Après un élagage, la fenêtre TTL est réinitialisée afin que les requêtes suivantes conservent le cache jusqu’à l’expiration de
ttlà nouveau.
Valeurs par défaut intelligentes (Anthropic)
- Profils OAuth ou setup-token : activer l’élagage
cache-ttlet définir le heartbeat sur1h. - Profils clé API : activer l’élagage
cache-ttl, définir le heartbeat sur30m, et définir par défautcacheControlTtlà1hsur les modèles Anthropic. - Si vous définissez explicitement l’une de ces valeurs, OpenClaw ne les remplace pas.
Ce que cela améliore (coût + comportement du cache)
- Pourquoi élaguer : la mise en cache des prompts Anthropic ne s’applique qu’à l’intérieur du TTL. Si une session reste inactive au-delà du TTL, la requête suivante remet en cache l’intégralité du prompt, sauf si vous le rognez d’abord.
- Ce qui devient moins cher : l’élagage réduit la taille cacheWrite pour cette première requête après l’expiration du TTL.
- Pourquoi la réinitialisation du TTL est importante : une fois l’élagage exécuté, la fenêtre de cache est réinitialisée ; les requêtes suivantes peuvent donc réutiliser le prompt fraîchement mis en cache au lieu de remettre en cache tout l’historique.
- Ce que cela ne fait pas : l’élagage n’ajoute pas de tokens ni ne « double » les coûts ; il modifie uniquement ce qui est mis en cache lors de cette première requête post‑TTL.
Ce qui peut être élagué
- Uniquement les messages
toolResult. - Les messages utilisateur + assistant ne sont jamais modifiés.
- Les
keepLastAssistantsderniers messages de l’assistant sont protégés ; les résultats d’outils au‑delà de ce seuil ne sont pas élagués. - S’il n’y a pas suffisamment de messages de l’assistant pour établir le seuil, l’élagage est ignoré.
- Les résultats d’outils contenant des blocs d’images sont ignorés (jamais rognés/vidés).
Estimation de la fenêtre de contexte
L’élagage utilise une estimation de la fenêtre de contexte (caractères ≈ tokens × 4). La fenêtre de base est résolue dans cet ordre :- Remplacement
models.providers.*.models[].contextWindow. - Définition du modèle
contextWindow(depuis le registre des modèles). - Valeur par défaut de
200000tokens.
agents.defaults.contextTokens est défini, il est traité comme un plafond (min) de la fenêtre résolue.
Mode
cache-ttl
- L’élagage ne s’exécute que si le dernier appel Anthropic est plus ancien que
ttl(par défaut5m). - Lorsqu’il s’exécute : même comportement de rognage léger (soft‑trim) + effacement dur (hard‑clear) qu’auparavant.
Rognage léger vs effacement dur
- Rognage léger (soft‑trim) : uniquement pour les résultats d’outils surdimensionnés.
- Conserve le début + la fin, insère
..., et ajoute une note avec la taille d’origine. - Ignore les résultats avec des blocs d’images.
- Conserve le début + la fin, insère
- Effacement dur (hard‑clear) : remplace l’intégralité du résultat d’outil par
hardClear.placeholder.
Sélection des outils
tools.allow/tools.denyprennent en charge les jokers*.- Refuser la victoire.
- La correspondance est insensible à la casse.
- Liste d’autorisation vide => tous les outils sont autorisés.
Interaction avec d’autres limites
- Les outils intégrés tronquent déjà leur propre sortie ; l’élagage de session est une couche supplémentaire qui empêche les discussions longues d’accumuler trop de sorties d’outils dans le contexte du modèle.
- La compaction est distincte : la compaction résume et persiste, l’élagage est transitoire par requête. Voir /concepts/compaction.
Valeurs par défaut (lorsqu’activé)
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Old tool result content cleared]" }