Як це працює
- Старіші репліки розмови узагальнюються в компактний запис.
- Підсумок зберігається в стенограмі сеансу.
- Недавні повідомлення зберігаються без змін.
toolResult. Якщо точка потрапляє всередину блоку інструмента, OpenClaw зміщує межу, щоб пара залишилася разом, а поточний неузагальнений хвіст зберігся.
Повна історія розмови залишається на диску. Стискання змінює лише те, що модель бачить під час наступної репліки.
У нових конфігураціях
agents.defaults.compaction.mode за замовчуванням має значення "safeguard" (суворіші запобіжні обмеження, перевірки якості підсумків). Щоб відмовитися від цього, явно задайте mode: "default".Автоматичне стискання
Автоматичне стискання ввімкнено за замовчуванням. Воно запускається, коли сеанс наближається до межі контексту або коли модель повертає помилку переповнення контексту (у такому разі OpenClaw стискає контекст і повторює спробу). Ви побачите:embedded run auto-compaction start/completeу звичайних журналах Gateway.🧹 Auto-compaction completeу докладному режимі./status, що показує🧹 Compactions: <count>.
Перед стисканням OpenClaw автоматично нагадує агенту зберегти важливі нотатки у файлах пам’яті. Це запобігає втраті контексту.
Шаблони помилок переповнення, які розпізнає OpenClaw
Шаблони помилок переповнення, які розпізнає 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 у будь-якому чаті, щоб примусово виконати стискання. Додайте вказівки, щоб спрямувати формування підсумку:
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 залишається точним і не успадковує ланцюжок резервних моделей сеансу.
Збереження ідентифікаторів
Узагальнення під час стискання за замовчуванням зберігає непрозорі ідентифікатори (identifierPolicy: "strict"). Щоб вимкнути це, перевизначте значення за допомогою identifierPolicy: "off"; для власних настанов використовуйте identifierPolicy: "custom" разом із identifierInstructions.
Обмеження розміру активної стенограми в байтах
Якщо заданоagents.defaults.compaction.maxActiveTranscriptBytes, OpenClaw
запускає звичайне локальне стискання перед виконанням, якщо історія стенограми досягає
цього розміру. Це корисно для тривалих сеансів, у яких керування контекстом
на боці постачальника може підтримувати контекст моделі в належному стані, тоді як збережена історія стенограми
продовжує зростати. Необроблені байти не розділяються; натомість звичайний конвеєр
стискання отримує запит на створення семантичного підсумку.
Наступні стенограми
Коли ввімкненоagents.defaults.compaction.truncateAfterCompaction, OpenClaw не перезаписує наявну стенограму на місці. Він створює нову активну наступну стенограму з підсумку стискання, збереженого стану та неузагальненого хвоста, а потім записує метадані контрольної точки, які спрямовують потоки розгалуження й відновлення до цієї стисненої наступної стенограми.
Наступні стенограми також вилучають точні дублікати довгих реплік користувача, що надходять
протягом короткого вікна повторної спроби, щоб лавини повторних спроб каналу не переносилися до
наступної активної стенограми після стискання.
OpenClaw більше не записує окремі копії .checkpoint.*.jsonl для нових
стискань. Наявні застарілі файли контрольних точок можна й надалі використовувати, поки на них є посилання,
а звичайне очищення сеансів їх видаляє.
Сповіщення про стискання
За замовчуванням стискання виконується без повідомлень. ЗадайтеnotifyUser, щоб показувати короткі повідомлення про стан на початку й після завершення стискання, а також повідомлення про погіршений режим, коли спроби скидання пам’яті перед стисканням вичерпано, але відповідь усе одно продовжується:
Скидання пам’яті
Перед стисканням OpenClaw може виконати тиху репліку скидання пам’яті, щоб зберегти довготривалі нотатки на диск. Задайтеagents.defaults.compaction.memoryFlush.model, якщо для цієї службової репліки слід використовувати локальну модель замість активної моделі розмови:
Підключувані постачальники стискання
Плагіни можуть зареєструвати власного постачальника стискання черезregisterCompactionProvider() в API плагіна. Коли постачальника зареєстровано й налаштовано, OpenClaw делегує йому узагальнення замість вбудованого конвеєра LLM.
Щоб використовувати зареєстрованого постачальника, задайте його ідентифікатор у конфігурації:
provider автоматично примусово вмикає mode: "safeguard". Постачальники отримують ті самі вказівки щодо стискання та політику збереження ідентифікаторів, що й вбудований шлях, а OpenClaw після виводу постачальника все одно зберігає суфіксний контекст недавніх і розділених реплік.
Якщо постачальник завершує роботу з помилкою або повертає порожній результат, OpenClaw повертається до вбудованого узагальнення за допомогою LLM.
Стискання та обрізання
Обрізання сеансу — це легше доповнення, яке обрізає вивід інструментів без узагальнення.
Усунення несправностей
Стискання відбувається надто часто? Можливо, контекстне вікно моделі мале або вивід інструментів завеликий. Спробуйте ввімкнути обрізання сеансу. Після стискання контекст здається застарілим? Використайте/compact Focus on <topic>, щоб спрямувати формування підсумку, або ввімкніть скидання пам’яті, щоб нотатки збереглися.
Потрібно почати з чистого аркуша? /new запускає новий сеанс без стискання.
Розширену конфігурацію (резервування токенів, збереження ідентифікаторів, власні рушії контексту, серверне стискання OpenAI) див. у розділі Докладно про керування сеансами.
Пов’язані матеріали
- Сеанс: керування сеансом і його життєвим циклом.
- Обрізання сеансу: обрізання результатів інструментів.
- Контекст: як формується контекст для реплік агента.
- Перехоплювачі: перехоплювачі життєвого циклу стискання (
before_compaction,after_compaction).