Прореживание сеанса
Прореживание сеанса обрезает старые результаты инструментов из контекста в памяти непосредственно перед каждым вызовом LLM. Оно не переписывает историю сеанса на диске (*.jsonl).
Когда оно выполняется
- Когда
mode: "cache-ttl"включено и последний вызов Anthropic для сеанса старше, чемttl. - Влияет только на сообщения, отправляемые модели для данного запроса.
- Активно только для вызовов Anthropic API (и моделей Anthropic через OpenRouter).
- Для наилучших результатов сопоставляйте
ttlс вашимcacheControlTtlмодели. - После прореживания окно TTL сбрасывается, поэтому последующие запросы сохраняют кэш до повторного истечения
ttl.
Умные значения по умолчанию (Anthropic)
- Профили OAuth или setup-token: включить прореживание
cache-ttlи установить heartbeat на1h. - Профили API key: включить прореживание
cache-ttl, установить heartbeat на30mи значение по умолчаниюcacheControlTtlна1hдля моделей Anthropic. - Если вы явно задаёте любое из этих значений, OpenClaw не переопределяет их.
Что это улучшает (стоимость + поведение кэша)
- Зачем прореживать: кэширование промпта Anthropic применяется только в пределах TTL. Если сеанс простаивает дольше TTL, следующий запрос повторно кэширует полный промпт, если вы не обрежете его заранее.
- Что становится дешевле: прореживание уменьшает размер cacheWrite для первого запроса после истечения TTL.
- Почему важен сброс TTL: после выполнения прореживания окно кэша сбрасывается, поэтому последующие запросы могут повторно использовать свежекэшированный промпт вместо повторного кэширования всей истории.
- Чего это не делает: прореживание не добавляет токены и не «удваивает» стоимость; оно лишь изменяет то, что кэшируется в первом запросе после TTL.
Что может быть прорежено
- Только сообщения
toolResult. - Сообщения пользователя и ассистента никогда не изменяются.
- Последние
keepLastAssistantsсообщений ассистента защищены; результаты инструментов после этой границы не прореживаются. - Если сообщений ассистента недостаточно для определения границы, прореживание пропускается.
- Результаты инструментов, содержащие блоки изображений, пропускаются (никогда не обрезаются/не очищаются).
Оценка окна контекста
Прореживание использует оценочное окно контекста (символы ≈ токены × 4). Базовое окно определяется в следующем порядке:- Переопределение
models.providers.*.models[].contextWindow. - Определение модели
contextWindow(из реестра моделей). - Значение по умолчанию
200000токенов.
agents.defaults.contextTokens, оно рассматривается как ограничение (min) для вычисленного окна.
Режим
cache-ttl
- Прореживание выполняется только если последний вызов Anthropic старше, чем
ttl(по умолчанию5m). - При выполнении: то же поведение мягкой обрезки + жёсткой очистки, что и ранее.
Мягкое и жёсткое прореживание
- Мягкая обрезка: только для слишком больших результатов инструментов.
- Сохраняет начало и конец, вставляет
...и добавляет примечание с исходным размером. - Пропускает результаты с блоками изображений.
- Сохраняет начало и конец, вставляет
- Жёсткая очистка: заменяет весь результат инструмента на
hardClear.placeholder.
Выбор инструментов
tools.allow/tools.denyподдерживают подстановки*.- Отрицать победы.
- Сопоставление не чувствительно к регистру.
- Пустой список разрешений ⇒ разрешены все инструменты.
Взаимодействие с другими ограничениями
- Встроенные инструменты уже усекaют собственный вывод; прореживание сеанса — дополнительный слой, предотвращающий накопление чрезмерного объёма вывода инструментов в контексте модели при длительных чатах.
- Уплотнение — отдельно: уплотнение суммирует и сохраняет, прореживание — временно для каждого запроса. См. /concepts/compaction.
Значения по умолчанию (когда включено)
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Old tool result content cleared]" }