Як це працює
- Старіші репліки розмови підсумовуються в компактний запис.
- Підсумок зберігається в транскрипті сеансу.
- Останні повідомлення залишаються без змін.
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-конвеєра.
Щоб використати зареєстрованого провайдера, задайте його id у вашій конфігурації:
provider автоматично примусово вмикає mode: "safeguard". Провайдери отримують ті самі інструкції Compaction і політику збереження ідентифікаторів, що й вбудований шлях, а OpenClaw усе ще зберігає контекст суфікса останніх реплік і розділених реплік після виводу провайдера.
Якщо провайдер завершується помилкою або повертає порожній результат, OpenClaw повертається до вбудованого LLM-підсумовування.
Compaction і відсікання
| Compaction | Відсікання | |
|---|---|---|
| Що робить | Підсумовує старішу розмову | Обрізає старі результати інструментів |
| Збережено? | Так (у транскрипті сеансу) | Ні (лише в пам’яті, для кожного запиту) |
| Область | Уся розмова | Лише результати інструментів |
Усунення несправностей
Compaction відбувається надто часто? Контекстне вікно моделі може бути малим, або виводи інструментів можуть бути великими. Спробуйте ввімкнути відсікання сеансу. Після Compaction контекст здається застарілим? Використайте/compact Focus on <topic>, щоб спрямувати підсумок, або ввімкніть скидання пам’яті, щоб нотатки зберігалися.
Потрібен чистий старт? /new починає новий сеанс без Compaction.
Для розширеної конфігурації (резерв токенів, збереження ідентифікаторів, власні контекстні рушії, серверна Compaction OpenAI) див. Поглиблений огляд керування сеансами.
Пов’язане
- Сеанс: керування сеансом і життєвий цикл.
- Відсікання сеансу: обрізання результатів інструментів.
- Контекст: як контекст будується для ходів агента.
- Хуки: хуки життєвого циклу Compaction (
before_compaction,after_compaction).