Sessions and memory
Скорочення сесії
Скорочення сеансу видаляє старі результати інструментів із контексту перед кожним викликом LLM. Воно зменшує роздування контексту накопиченими виводами інструментів (результатами виконання команд, читання файлів, пошуку), не переписуючи звичайний текст розмови.
Чому це важливо
Під час тривалих сеансів накопичується вивід інструментів, який збільшує контекстне вікно. Це підвищує витрати й може спричинити Compaction раніше, ніж потрібно.
Скорочення особливо корисне для кешування запитів Anthropic. Після завершення TTL кешу наступний запит повторно кешує весь запит. Скорочення зменшує обсяг запису до кешу, безпосередньо знижуючи витрати.
Як це працює
Скорочення працює в режимі cache-ttl і запускається лише після перевірки часу та розміру контексту:
- Дочекайтеся завершення TTL кешу (типово 5 хвилин, якщо значення задано вручну; автоматичне типове значення для Anthropic див. у розділі Розумні типові значення). До завершення TTL скорочення повністю пропускається, щоб зберегти повторне використання кешу запитів для близьких за часом реплік.
- Після завершення TTL оцініть загальний розмір контексту відносно контекстного вікна моделі. Якщо співвідношення нижче за
softTrimRatio(типово 0,3), пропустіть скорочення й не зупиняйте відлік TTL. - Виконайте м’яке скорочення завеликих результатів інструментів, що перевищують співвідношення: збережіть початок і кінець (типово по 1500 символів, але разом не більше 4000 символів), а між ними вставте
.... - Якщо співвідношення все ще дорівнює
hardClearRatioабо перевищує його (типово 0,5) і залишається щонайменшеminPrunableToolChars(типово 50 000) символів вмісту інструментів, придатного для скорочення, виконайте повне очищення цих результатів: замініть їхній вміст заповнювачем (типово[Вміст старого результату інструмента очищено]). - Скидайте відлік TTL лише тоді, коли скорочення справді змінило контекст, щоб наступні запити повторно використовували свіжий кеш.
Незалежно від порогових значень діють два правила безпеки: останні keepLastAssistants реплік асистента (типово 3) ніколи не скорочуються, а вміст до першого повідомлення користувача в сеансі ніколи не скорочується (це захищає початкові читання на кшталт SOUL.md/USER.md).
Скорочувати можна лише повідомлення toolResult; звичайний текст розмови залишається без змін. Використовуйте agents.defaults.contextPruning.tools.{allow,deny}, щоб визначити, результати яких інструментів можна скорочувати.
Очищення застарілих зображень
OpenClaw також створює окреме ідемпотентне подання для повторного відтворення сеансів, у яких в історії зберігаються необроблені блоки зображень або маркери медіа для наповнення запиту.
- Воно побайтово зберігає 3 останні завершені репліки, щоб префікси кешу запитів для нещодавніх наступних запитів залишалися стабільними. Ураховуються всі завершені репліки, а не лише ті, що містять зображення, тому текстові репліки також займають місця у цьому вікні.
- У поданні для повторного відтворення старі вже оброблені блоки зображень з історії
userабоtoolResultзамінюються на[дані зображення видалено — модель уже їх опрацювала]. - Старі текстові посилання на медіа, як-от
[медіа вкладено: ...],[Зображення: джерело: ...]іmedia://inbound/..., замінюються на[посилання на медіа видалено — модель уже його опрацювала]. Маркери вкладень поточної репліки залишаються без змін, щоб моделі з підтримкою зору могли й надалі завантажувати нові зображення. - Необроблена розшифровка сеансу не переписується, тому засоби перегляду історії можуть і надалі відображати початкові записи повідомлень та їхні зображення.
- Цей механізм відокремлений від звичайного скорочення за TTL кешу, описаного вище. Він запобігає порушенню кешів запитів у наступних репліках через повторювані дані зображень або застарілі посилання на медіа.
Розумні типові значення
Вбудований Plugin Anthropic автоматично налаштовує скорочення та інтервал Heartbeat під час першого визначення профілю автентифікації Anthropic (або Claude CLI), але лише для полів, які ви ще не задали явно:
| Режим автентифікації | contextPruning.mode |
contextPruning.ttl |
heartbeat.every |
|---|---|---|---|
| OAuth/токен (зокрема повторне використання Claude CLI) | cache-ttl |
1h |
1h |
| Ключ API | cache-ttl |
1h |
30m |
Якщо ви самостійно задасте agents.defaults.contextPruning.mode або agents.defaults.heartbeat.every, OpenClaw не перевизначатиме їх. Це автоматичне типове значення застосовується лише до автентифікації сімейства Anthropic; для інших постачальників скорочення має значення off, якщо ви його не налаштуєте.
Увімкнення або вимкнення
Для постачальників, відмінних від Anthropic, скорочення типово вимкнено. Щоб увімкнути його:
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", ttl: "5m" }, }, },}Щоб вимкнути: установіть mode: "off".
Скорочення та Compaction
| Скорочення | Compaction | |
|---|---|---|
| Що робить | Скорочує результати інструментів | Підсумовує розмову |
| Зберігається? | Ні (для кожного запиту) | Так (у розшифровці) |
| Область дії | Лише результати інструментів | Уся розмова |
Вони доповнюють одне одного — скорочення зменшує обсяг виводу інструментів між циклами Compaction.
Додаткові матеріали
- Compaction: зменшення контексту на основі підсумовування
- Конфігурація Gateway: усі параметри конфігурації скорочення (
contextPruning.*)