Перейти до основного вмісту

Compaction

Кожна модель має context window — максимальну кількість токенів, які вона може обробити. Коли розмова наближається до цього ліміту, OpenClaw ущільнює старіші повідомлення в підсумок, щоб чат міг продовжуватися.

Як це працює

  1. Старіші ходи розмови підсумовуються в compact entry.
  2. Підсумок зберігається в session transcript.
  3. Нещодавні повідомлення зберігаються без змін.
Коли OpenClaw розбиває історію на compaction chunks, він зберігає виклики інструментів assistant у парі з відповідними записами toolResult. Якщо точка розбиття потрапляє всередину блоку інструмента, OpenClaw зміщує межу так, щоб пара залишалася разом, а поточний непідсумований хвіст зберігався. Повна історія розмови залишається на диску. Compaction змінює лише те, що модель бачить на наступному ході.

Auto-compaction

Auto-compaction типово ввімкнено. Вона запускається, коли сесія наближається до ліміту контексту, або коли модель повертає помилку переповнення контексту (у такому разі OpenClaw виконує compaction і повторює спробу). Типові сигнатури переповнення включають request_too_large, context length exceeded, input exceeds the maximum number of tokens, input token count exceeds the maximum number of input tokens, input is too long for the model і ollama error: context length exceeded.
Перед compaction OpenClaw автоматично нагадує агенту зберегти важливі нотатки у файли memory. Це запобігає втраті контексту.

Ручне ущільнення

Введіть /compact у будь-якому чаті, щоб примусово виконати compaction. Додайте інструкції, щоб спрямувати підсумок:
/compact Focus on the API design decisions

Використання іншої моделі

Типово compaction використовує основну модель вашого агента. Ви можете використовувати потужнішу модель для кращих підсумків:
{
  agents: {
    defaults: {
      compaction: {
        model: "openrouter/anthropic/claude-sonnet-4-6",
      },
    },
  },
}

Сповіщення про початок compaction

Типово compaction виконується без повідомлень. Щоб показувати коротке сповіщення, коли compaction починається, увімкніть notifyUser:
{
  agents: {
    defaults: {
      compaction: {
        notifyUser: true,
      },
    },
  },
}
Коли цю опцію ввімкнено, користувач бачить коротке повідомлення (наприклад, “Compacting context…”) на початку кожного запуску compaction.

Compaction проти pruning

CompactionPruning
Що це робитьПідсумовує старішу розмовуОбрізає старі результати інструментів
Зберігається?Так (у session transcript)Ні (лише в пам’яті, для кожного запиту)
ОбсягУся розмоваЛише результати інструментів
Session pruning — це легше доповнення, яке обрізає вивід інструментів без підсумовування.

Усунення проблем

Compacting занадто часто? Можливо, context window моделі замале, або виводи інструментів завеликі. Спробуйте ввімкнути session pruning. Після compaction контекст здається застарілим? Використовуйте /compact Focus on <topic>, щоб спрямувати підсумок, або ввімкніть memory flush, щоб нотатки зберігалися. Потрібен чистий старт? /new починає нову сесію без compaction. Для розширеної конфігурації (reserve tokens, збереження ідентифікаторів, custom context engines, server-side compaction OpenAI) див. Session Management Deep Dive.

Пов’язане

  • Session — керування сесією та життєвий цикл
  • Session Pruning — обрізання результатів інструментів
  • Context — як будується контекст для ходів агента
  • Hooks — hooks життєвого циклу compaction (before_compaction, after_compaction)