Как это работает
- Более старые ходы разговора суммируются в компактную запись.
- Сводка сохраняется в транскрипте сеанса.
- Недавние сообщения остаются без изменений.
toolResult. Если точка разделения попадает внутрь блока инструмента, OpenClaw сдвигает границу, чтобы пара оставалась вместе, а текущий несуммированный хвост был сохранен.
Полная история разговора остается на диске. Compaction меняет только то, что модель видит на следующем ходе.
Авто-Compaction
Авто-Compaction включен по умолчанию. Он запускается, когда сеанс приближается к пределу контекста или когда модель возвращает ошибку переполнения контекста (в этом случае OpenClaw выполняет Compaction и повторяет попытку). Вы увидите:embedded run auto-compaction start/completeв обычных журналах Gateway.🧹 Auto-compaction completeв подробном режиме./status, показывающий🧹 Compactions: <count>.
Перед выполнением Compaction OpenClaw автоматически напоминает агенту сохранить важные заметки в файлы памяти. Это предотвращает потерю контекста.
Распознаваемые признаки переполнения
Распознаваемые признаки переполнения
Ручной Compaction
Введите/compact в любом чате, чтобы принудительно выполнить Compaction. Добавьте инструкции, чтобы направить сводку:
agents.defaults.compaction.keepRecentTokens, ручной Compaction учитывает эту точку отсечения OpenClaw и сохраняет недавний хвост в перестроенном контексте. Без явного бюджета сохранения ручной Compaction работает как жесткая контрольная точка и продолжает только с новой сводки.
Конфигурация
Настройте Compaction вagents.defaults.compaction в вашем openclaw.json. Самые распространенные параметры перечислены ниже; полный справочник см. в разделе Подробное руководство по управлению сеансами.
Использование другой модели
По умолчанию Compaction использует основную модель агента. Задайтеagents.defaults.compaction.model, чтобы делегировать суммирование более мощной или специализированной модели. Переопределение принимает строку provider/model-id или простой псевдоним, настроенный в agents.defaults.models:
agents.defaults.compaction.model остается точным и не наследует цепочку резервных моделей сеанса.
Сохранение идентификаторов
Суммирование Compaction по умолчанию сохраняет непрозрачные идентификаторы (identifierPolicy: "strict"). Переопределите на identifierPolicy: "off", чтобы отключить это, или используйте identifierPolicy: "custom" вместе с identifierInstructions для пользовательских указаний.
Ограничитель байтов активного транскрипта
Когда заданоagents.defaults.compaction.maxActiveTranscriptBytes, OpenClaw запускает обычный локальный Compaction перед запуском, если активный JSONL достигает этого размера. Это полезно для длительных сеансов, где управление контекстом на стороне провайдера может поддерживать контекст модели в нормальном состоянии, а локальный транскрипт продолжает расти. Это не разделяет сырые байты JSONL; он просит обычный конвейер Compaction создать семантическую сводку.
Последующие транскрипты
Когда включеноagents.defaults.compaction.truncateAfterCompaction, OpenClaw не переписывает существующий транскрипт на месте. Он создает новый активный последующий транскрипт из сводки Compaction, сохраненного состояния и несуммированного хвоста, а затем записывает метаданные контрольной точки, которые направляют потоки ветвления и восстановления к этому сжатому последующему транскрипту.
Последующие транскрипты также удаляют точные дубликаты длинных пользовательских ходов, которые поступают
внутри короткого окна повторной попытки, чтобы всплески повторов канала не переносились в
следующий активный транскрипт после Compaction.
OpenClaw больше не записывает отдельные копии .checkpoint.*.jsonl для новых
Compaction. Существующие устаревшие файлы контрольных точек по-прежнему можно использовать, пока на них есть ссылки,
и они удаляются обычной очисткой сеанса.
Уведомления Compaction
По умолчанию Compaction выполняется бесшумно. ЗадайтеnotifyUser, чтобы показывать краткие сообщения о состоянии при запуске и завершении Compaction:
Сброс памяти
Перед Compaction OpenClaw может выполнить тихий сброс памяти как ход, чтобы сохранить долговечные заметки на диск. Задайтеagents.defaults.compaction.memoryFlush.model, когда этот служебный ход должен использовать локальную модель вместо активной модели разговора:
Подключаемые провайдеры Compaction
Plugins могут зарегистрировать пользовательского провайдера Compaction черезregisterCompactionProvider() в API Plugin. Когда провайдер зарегистрирован и настроен, OpenClaw делегирует суммирование ему вместо встроенного конвейера LLM.
Чтобы использовать зарегистрированного провайдера, задайте его идентификатор в вашей конфигурации:
provider автоматически принудительно включает mode: "safeguard". Провайдеры получают те же инструкции Compaction и политику сохранения идентификаторов, что и встроенный путь, а OpenClaw по-прежнему сохраняет контекст суффикса недавних ходов и разделенных ходов после вывода провайдера.
Если провайдер завершается с ошибкой или возвращает пустой результат, OpenClaw откатывается к встроенному суммированию LLM.
Compaction и обрезка
| Compaction | Обрезка | |
|---|---|---|
| Что делает | Суммирует старый разговор | Обрезает старые результаты инструментов |
| Сохраняется? | Да (в транскрипте сеанса) | Нет (только в памяти, для каждого запроса) |
| Область | Весь разговор | Только результаты инструментов |
Устранение неполадок
Compaction выполняется слишком часто? Контекстное окно модели может быть маленьким, или вывод инструментов может быть большим. Попробуйте включить обрезку сеанса. После Compaction контекст кажется устаревшим? Используйте/compact Focus on <topic>, чтобы направить сводку, или включите сброс памяти, чтобы заметки сохранялись.
Нужен чистый лист? /new запускает новый сеанс без Compaction.
Для расширенной конфигурации (резервные токены, сохранение идентификаторов, пользовательские движки контекста, серверный Compaction OpenAI) см. Подробное руководство по управлению сеансами.
Связанные разделы
- Сеанс: управление сеансом и жизненный цикл.
- Обрезка сеанса: обрезка результатов инструментов.
- Контекст: как строится контекст для ходов агента.
- Hooks: хуки жизненного цикла Compaction (
before_compaction,after_compaction).