Compaction
Кожна модель має вікно контексту — максимальну кількість токенів, яку вона може обробити. Коли розмова наближається до цього ліміту, OpenClaw ущільнює старіші повідомлення у зведення, щоб чат міг продовжуватися.Як це працює
- Старіші ходи розмови підсумовуються в компактний запис.
- Зведення зберігається в транскрипті сесії.
- Нещодавні повідомлення зберігаються без змін.
toolResult. Якщо точка
розбиття потрапляє всередину блоку інструменту, OpenClaw зсуває межу, щоб пара
залишалася разом, а поточний непідсумований хвіст зберігався.
Повна історія розмови залишається на диску. Compaction змінює лише те, що
модель бачить на наступному ході.
Автоматичний Compaction
Автоматичний 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. Це запобігає втраті контексту.
agents.defaults.compaction у вашому openclaw.json, щоб налаштувати поведінку Compaction (режим, цільову кількість токенів тощо).
Підсумовування Compaction за замовчуванням зберігає непрозорі ідентифікатори (identifierPolicy: "strict"). Ви можете змінити це за допомогою identifierPolicy: "off" або надати власний текст через identifierPolicy: "custom" і identifierInstructions.
Ви також можете за бажанням вказати іншу модель для підсумовування Compaction через agents.defaults.compaction.model. Це корисно, коли ваша основна модель є локальною або малою моделлю, а ви хочете, щоб зведення Compaction створювалися більш потужною моделлю. Перевизначення приймає будь-який рядок provider/model-id:
Підключувані провайдери Compaction
Плагіни можуть реєструвати власний провайдер Compaction черезregisterCompactionProvider() в API плагіна. Коли провайдер зареєстровано та налаштовано, OpenClaw делегує йому підсумовування замість вбудованого LLM-конвеєра.
Щоб використовувати зареєстрований провайдер, задайте ідентифікатор провайдера у своїй конфігурації:
provider автоматично примусово вмикає mode: "safeguard". Провайдери отримують ті самі інструкції Compaction і політику збереження ідентифікаторів, що й у вбудованому шляху, а OpenClaw, як і раніше, зберігає контекст суфікса нещодавніх ходів і розділених ходів після вихідних даних провайдера. Якщо провайдер завершується з помилкою або повертає порожній результат, OpenClaw повертається до вбудованого LLM-підсумовування.
Автоматичний Compaction (увімкнено за замовчуванням)
Коли сесія наближається до вікна контексту моделі або перевищує його, OpenClaw запускає автоматичний Compaction і може повторити початковий запит, використовуючи ущільнений контекст. Ви побачите:🧹 Auto-compaction completeу докладному режимі/status, де показано🧹 Compactions: <count>
Ручний Compaction
Введіть/compact у будь-якому чаті, щоб примусово виконати Compaction. Додайте інструкції, щоб спрямувати
зведення:
Використання іншої моделі
За замовчуванням Compaction використовує основну модель вашого агента. Ви можете використовувати більш потужну модель для кращих зведень:Сповіщення Compaction
За замовчуванням Compaction виконується без повідомлень. Щоб показувати короткі сповіщення, коли Compaction починається і коли він завершується, увімкнітьnotifyUser:
Compaction vs pruning
| Compaction | Pruning | |
|---|---|---|
| Що це робить | Підсумовує старішу розмову | Обрізає старі результати інструментів |
| Зберігається? | Так (у транскрипті сесії) | Ні (лише в пам’яті, для запиту) |
| Обсяг | Уся розмова | Лише результати інструментів |
Усунення проблем
Compaction відбувається надто часто? Вікно контексту моделі може бути малим, або виводи інструментів можуть бути великими. Спробуйте увімкнути session pruning. Після Compaction контекст здається застарілим? Використайте/compact Focus on <topic>, щоб
спрямувати зведення, або ввімкніть memory flush, щоб нотатки
зберігалися.
Потрібно почати з чистого аркуша? /new запускає нову сесію без Compaction.
Для розширеної конфігурації (резерв токенів, збереження ідентифікаторів, спеціальні
рушії контексту, серверний Compaction OpenAI) дивіться
Поглиблений розбір керування сесіями.
Пов’язане
- Session — керування сесією та її життєвий цикл
- Session Pruning — обрізання результатів інструментів
- Context — як будується контекст для ходів агента
- Hooks — хуки життєвого циклу Compaction (
before_compaction,after_compaction)