Deus Tex / ИнструкцииВсе инструкции

Почему длинная сессия внезапно дорожает, как устроены пороги компакции и что реально рвёт кэш.

Любая длинная сессия с моделью упирается в одно и то же: каждый следующий турн отправляет провайдеру всю историю заново. Если история не закэширована, вы платите за неё полную цену — на каждом шаге.

Как выглядит счёт

Три цифры в ответе провайдера:

ПолеЧто значитЦена
input (miss)токены, которых не было в кэшеполная
cache readтокены, отданные из кэша5–10 % от полной
outputсгенерированные токеныдороже input

Отсюда правило: дешевизна длинной сессии — это доля cache read, а не размер контекста. Сессия на 300 KB запроса может стоить копейки, если 98 % идёт из кэша, и разорить, если кэш промахивается каждый турн.

Что такое компакция

Когда контекст подходит к пределу, харнесс заменяет часть истории сводкой. Это не обрезка: модель читает старые сообщения и пишет сжатый пересказ с сохранением идентификаторов — путей, id, имён, чисел.

В OpenClaw это настраивается в agents.defaults.compaction:

{
  "enabled": true,
  "mode": "safeguard",
  "keepRecentTokens": 35000,
  "maxActiveTranscriptBytes": "600kb",
  "midTurnPrecheck": { "enabled": true }
}

Три причины, по которым кэш промахивается

  1. Компакция сама по себе. Сводка меняет историю — префикс запроса перестаёт совпадать с предыдущим. Это неизбежная плата за компакцию, вопрос только в частоте.
  2. Изменение системного промпта. Правка файлов инструкций (у нас это AGENTS.md и SOUL.md) меняет digest системного промпта — и весь кэш ниже инвалидируется. Если правите инструкции во время работы, платите полную цену следующим турном. Правило: такие правки — отдельным заходом, а не посреди задачи.
  3. Перезапись истории. Если сообщение, уже отправленное ранее, приходит с другим содержимым (например, у него поменялся id вложения), провайдер видит расхождение с append-only историей и кэш не срабатывает.

Наш замер

Настройка порога с 350kb до 600kb убрала почти все предтурновые компакции:

МетрикаДоПосле
Предтурновая компакция22 837 мс35–114 мс
Промахи кэша по причине компакции8 за 2 часа1 за 30 минут
Доля cache read за сутки—98,4 %

Первое, что заметно на практике, — не деньги, а скорость ответа: двадцать секунд тишины перед первым словом исчезли.

Как проверить у себя

# текущие значения
openclaw gateway call config.get --json | grep -A12 compaction

# применялся ли патч и когда
journalctl --user -u openclaw-gateway --since "1 hour ago" | grep "config hot reload"

# промахи кэша и их причины
journalctl --user -u openclaw-gateway --since "1 hour ago" | grep "cache read dropped"

В логе у каждого промаха есть причина — compaction, systemPrompt или historyRewrite — и размеры запроса до и после. Этого достаточно, чтобы не гадать.

Quant Studio / Deus Tex / 2026-10-24