Sessions and memory
Compaction
У каждой модели есть окно контекста — максимальное количество токенов, которое она может обработать. Когда разговор приближается к этому пределу, OpenClaw сворачивает старые сообщения в сводку, чтобы общение могло продолжаться.
Как это работает
- Предыдущие реплики разговора сводятся в компактную запись.
- Сводка сохраняется в стенограмме сеанса.
- Недавние сообщения сохраняются без изменений.
При выборе точки разделения для свёртки OpenClaw сохраняет вызовы инструментов ассистента вместе с соответствующими им записями toolResult. Если точка оказывается внутри блока инструмента, OpenClaw сдвигает границу, чтобы пара осталась вместе, а текущая несвёрнутая конечная часть сохранилась.
Полная история разговора остаётся на диске. Свёртка изменяет только то, что модель видит на следующем ходе.
Автоматическая свёртка
Автоматическая свёртка включена по умолчанию. Она запускается, когда сеанс приближается к пределу контекста или когда модель возвращает ошибку переполнения контекста (в этом случае OpenClaw выполняет свёртку и повторяет попытку).
Вы увидите:
embedded run auto-compaction start/completeв обычных журналах Gateway.🧹 Auto-compaction completeв подробном режиме./statusс указанием🧹 Compactions: <count>.
Распознаваемые OpenClaw шаблоны ошибок переполнения
OpenClaw сопоставляет десятки зависящих от провайдера строк ошибок переполнения (Anthropic, OpenAI, Bedrock, Gemini, Ollama, OpenRouter и другие). Распространённые примеры:
request_too_largecontext length exceededinput exceeds the maximum number of tokensinput token count exceeds the maximum number of input tokens(Bedrock)input is too long for the modelollama error: context length exceeded
Ручная свёртка
Введите /compact в любом чате, чтобы принудительно запустить свёртку. Добавьте инструкции, определяющие содержание сводки:
/compact Сосредоточься на решениях по проектированию APIЕсли задано значение agents.defaults.compaction.keepRecentTokens (по умолчанию: 20,000), ручная свёртка учитывает эту точку отсечения и сохраняет недавнюю конечную часть в заново сформированном контексте. Без явно заданного объёма сохраняемого контекста ручная свёртка действует как жёсткая контрольная точка, после которой работа продолжается только с новой сводкой.
Конфигурация
Настройте свёртку в разделе agents.defaults.compaction файла openclaw.json. Наиболее распространённые параметры перечислены ниже; полное описание см. в разделе Подробное управление сеансами.
Использование другой модели
По умолчанию для свёртки используется основная модель агента. Задайте agents.defaults.compaction.model, чтобы поручить создание сводки более мощной или специализированной модели. Переопределение принимает строку provider/model-id или простой псевдоним, настроенный в agents.defaults.models:
{ "agents": { "defaults": { "compaction": { "model": "openrouter/anthropic/claude-sonnet-4-6" } } }}Перед началом свёртки простые настроенные псевдонимы преобразуются в канонические значения провайдера и модели. Если простое значение совпадает и с псевдонимом, и с настроенным буквальным идентификатором модели, приоритет имеет буквальный идентификатор модели. Несопоставленное простое значение остаётся идентификатором модели активного провайдера.
Это также работает с локальными моделями — например, со второй моделью Ollama, предназначенной для создания сводок:
{ "agents": { "defaults": { "compaction": { "model": "ollama/llama3.1:8b" } } }}Если параметр не задан, свёртка начинается с активной модели сеанса. Если создание сводки завершается ошибкой провайдера, допускающей переход на резервную модель, OpenClaw повторяет эту попытку свёртки с использованием существующей цепочки резервных моделей сеанса. Выбор резервной модели носит временный характер и не записывается обратно в состояние сеанса. Явное переопределение agents.defaults.compaction.model остаётся точным и не наследует цепочку резервных моделей сеанса.
Сохранение идентификаторов
При создании сводки свёртка по умолчанию сохраняет непрозрачные идентификаторы (identifierPolicy: "strict"). Чтобы отключить это поведение, переопределите его с помощью identifierPolicy: "off"; для собственных инструкций используйте identifierPolicy: "custom" вместе с identifierInstructions.
Ограничение по размеру активной стенограммы в байтах
Если задано значение agents.defaults.compaction.maxActiveTranscriptBytes, OpenClaw
запускает обычную локальную свёртку перед выполнением, когда история стенограммы достигает
этого размера. Это полезно для длительных сеансов, в которых управление контекстом
на стороне провайдера может поддерживать контекст модели в нормальном состоянии, в то время как сохранённая история стенограммы
продолжает расти. OpenClaw не разделяет необработанные байты, а запрашивает у обычного конвейера
свёртки создание семантической сводки.
Последующие стенограммы
Когда включён параметр agents.defaults.compaction.truncateAfterCompaction, OpenClaw не перезаписывает существующую стенограмму на месте. Он создаёт новую активную последующую стенограмму из сводки свёртки, сохранённого состояния и несвёрнутой конечной части, а затем записывает метаданные контрольной точки, направляющие операции ветвления и восстановления к этой свёрнутой последующей стенограмме.
Последующие стенограммы также отбрасывают полностью совпадающие длинные реплики пользователя, поступившие
в течение короткого интервала повторной попытки, поэтому лавины повторных попыток канала не переносятся
в следующую активную стенограмму после свёртки.
OpenClaw больше не записывает отдельные копии .checkpoint.*.jsonl для новых
свёрток. Существующие устаревшие файлы контрольных точек по-прежнему можно использовать, пока на них есть ссылки,
а обычная очистка сеансов удаляет их, когда они больше не нужны.
Уведомления о свёртке
По умолчанию свёртка выполняется без уведомлений. Задайте notifyUser, чтобы показывать краткие сообщения о состоянии при начале и завершении свёртки, а также уведомлять о работе в ухудшенном режиме, если сброс памяти перед свёрткой исчерпал доступные попытки, но ответ всё равно продолжается:
{ agents: { defaults: { compaction: { notifyUser: true, }, }, },}Сброс памяти
Перед свёрткой OpenClaw может выполнить беззвучный сброс памяти, чтобы сохранить долговременные заметки на диск. Задайте agents.defaults.compaction.memoryFlush.model, если для этой служебной операции следует использовать локальную модель вместо активной модели разговора:
{ "agents": { "defaults": { "compaction": { "memoryFlush": { "model": "ollama/qwen3:8b" } } } }}Переопределение модели для сброса памяти является точным и не наследует цепочку резервных моделей активного сеанса. Подробности и конфигурацию см. в разделе Память.
Подключаемые провайдеры свёртки
Плагины могут зарегистрировать собственного провайдера свёртки через registerCompactionProvider() в API плагина. Когда провайдер зарегистрирован и настроен, OpenClaw поручает создание сводки ему вместо встроенного конвейера LLM.
Чтобы использовать зарегистрированного провайдера, задайте его идентификатор в конфигурации:
{ "agents": { "defaults": { "compaction": { "provider": "my-provider" } } }}Задание provider автоматически принудительно устанавливает mode: "safeguard". Провайдеры получают те же инструкции по свёртке и правила сохранения идентификаторов, что и встроенный механизм, а OpenClaw по-прежнему сохраняет контекст суффикса недавних и разделённых реплик после получения результата от провайдера.
Свёртка и очистка
| Свёртка | Очистка | |
|---|---|---|
| Что делает | Создаёт сводку старой части разговора | Удаляет старые результаты инструментов |
| Сохраняется? | Да (в стенограмме сеанса) | Нет (только в памяти, отдельно для каждого запроса) |
| Область действия | Весь разговор | Только результаты инструментов |
Очистка сеанса — более лёгкий дополнительный механизм, который сокращает вывод инструментов без создания сводки.
Устранение неполадок
Свёртка выполняется слишком часто? Возможно, окно контекста модели мало или вывод инструментов слишком велик. Попробуйте включить очистку сеанса.
После свёртки контекст кажется устаревшим? Используйте /compact Focus on <topic>, чтобы задать требования к сводке, или включите сброс памяти, чтобы сохранить заметки.
Нужно начать с чистого листа? /new запускает новый сеанс без свёртки.
Расширенные параметры конфигурации (резерв токенов, сохранение идентификаторов, пользовательские механизмы контекста и серверная свёртка OpenAI) см. в разделе Подробное управление сеансами.
Связанные разделы
- Сеанс: управление сеансом и его жизненный цикл.
- Очистка сеанса: сокращение результатов инструментов.
- Контекст: формирование контекста для ходов агента.
- Хуки: хуки жизненного цикла свёртки (
before_compaction,after_compaction).