---
read_when:
    - Ви хочете зрозуміти автоматичне стиснення та /compact
    - Ви налагоджуєте довгі сеанси, що досягають лімітів контексту
summary: Як OpenClaw підсумовує довгі розмови, щоб залишатися в межах обмежень моделі
title: Compaction
x-i18n:
    generated_at: "2026-06-27T17:24:42Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 71c1665055574622926a4f13ee82b97f1c45e679a895db78da983919c0a5458f
    source_path: concepts/compaction.md
    workflow: 16
---

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

## Як це працює

1. Старіші репліки розмови підсумовуються в компактний запис.
2. Підсумок зберігається в транскрипті сеансу.
3. Останні повідомлення залишаються без змін.

Коли OpenClaw розділяє історію на фрагменти Compaction, він зберігає виклики інструментів асистента в парі з відповідними записами `toolResult`. Якщо точка розділення потрапляє всередину блоку інструмента, OpenClaw зміщує межу, щоб пара залишилася разом, а поточний непідсумований хвіст зберігся.

Повна історія розмови залишається на диску. Compaction змінює лише те, що модель бачить на наступному кроці.

## Автоматична Compaction

Автоматична Compaction увімкнена за замовчуванням. Вона запускається, коли сеанс наближається до ліміту контексту або коли модель повертає помилку переповнення контексту (у такому разі OpenClaw виконує Compaction і повторює спробу).

Ви побачите:

- `embedded run auto-compaction start` / `complete` у звичайних журналах Gateway.
- `🧹 Auto-compaction complete` у докладному режимі.
- `/status` із `🧹 Compactions: <count>`.

<Info>
Перед Compaction OpenClaw автоматично нагадує агенту зберегти важливі нотатки у файли [пам’яті](/uk/concepts/memory). Це запобігає втраті контексту.
</Info>

<AccordionGroup>
  <Accordion title="Розпізнавані сигнатури переповнення">
    OpenClaw виявляє переповнення контексту за такими шаблонами помилок провайдерів:

    - `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`

  </Accordion>
</AccordionGroup>

## Ручна Compaction

Введіть `/compact` у будь-якому чаті, щоб примусово запустити Compaction. Додайте інструкції, щоб спрямувати підсумок:

```
/compact Focus on the API design decisions
```

Коли задано `agents.defaults.compaction.keepRecentTokens`, ручна Compaction враховує цю точку відсікання OpenClaw і зберігає останній хвіст у перебудованому контексті. Без явного бюджету збереження ручна Compaction працює як жорстка контрольна точка й продовжує лише з нового підсумку.

## Конфігурація

Налаштовуйте Compaction у `agents.defaults.compaction` у вашому `openclaw.json`. Найпоширеніші параметри наведено нижче; повний довідник див. у [Поглибленому огляді керування сеансами](/uk/reference/session-management-compaction).

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

За замовчуванням Compaction використовує основну модель агента. Установіть `agents.defaults.compaction.model`, щоб делегувати підсумовування потужнішій або спеціалізованій моделі. Перевизначення приймає рядок `provider/model-id` або простий псевдонім, налаштований у `agents.defaults.models`:

```json
{
  "agents": {
    "defaults": {
      "compaction": {
        "model": "openrouter/anthropic/claude-sonnet-4-6"
      }
    }
  }
}
```

Прості налаштовані псевдоніми перед запуском Compaction розв’язуються до канонічного провайдера й моделі. Якщо просте значення збігається і з псевдонімом, і з налаштованим буквальним ID моделі, перемагає буквальний ID моделі. Просте значення без збігу залишається ID моделі в активного провайдера.

Це також працює з локальними моделями, наприклад із другою моделлю Ollama, призначеною для підсумовування:

```json
{
  "agents": {
    "defaults": {
      "compaction": {
        "model": "ollama/llama3.1:8b"
      }
    }
  }
}
```

Якщо параметр не задано, Compaction починається з активної моделі сеансу. Якщо підсумовування завершується помилкою провайдера, придатною для резервної моделі, OpenClaw повторює цю спробу Compaction через наявний ланцюжок резервних моделей сеансу. Вибір резервної моделі тимчасовий і не записується назад у стан сеансу. Явне перевизначення `agents.defaults.compaction.model` залишається точним і не успадковує ланцюжок резервних моделей сеансу.

### Збереження ідентифікаторів

Підсумовування Compaction за замовчуванням зберігає непрозорі ідентифікатори (`identifierPolicy: "strict"`). Перевизначте на `identifierPolicy: "off"`, щоб вимкнути це, або використайте `identifierPolicy: "custom"` разом із `identifierInstructions` для власних вказівок.

### Захист за байтами активного транскрипта

Коли задано `agents.defaults.compaction.maxActiveTranscriptBytes`, OpenClaw запускає звичайну локальну Compaction перед виконанням, якщо активний JSONL досягає цього розміру. Це корисно для довготривалих сеансів, де керування контекстом на боці провайдера може підтримувати контекст моделі в нормальному стані, тоді як локальний транскрипт продовжує зростати. Він не розділяє сирі байти JSONL; він просить звичайний конвеєр Compaction створити семантичний підсумок.

<Warning>
Захист за байтами потребує `truncateAfterCompaction: true`. Без ротації транскрипта активний файл не зменшився б, і захист залишався б неактивним.
</Warning>

### Наступні транскрипти

Коли `agents.defaults.compaction.truncateAfterCompaction` увімкнено, OpenClaw не перезаписує наявний транскрипт на місці. Він створює новий активний наступний транскрипт із підсумку Compaction, збереженого стану та непідсумованого хвоста, а потім записує метадані контрольної точки, які спрямовують потоки гілкування/відновлення на цей стиснений наступний транскрипт.
Наступні транскрипти також відкидають точні дублікати довгих реплік користувача, що надходять
усередині короткого вікна повторної спроби, щоб шквали повторів каналу не переносилися в
наступний активний транскрипт після Compaction.

OpenClaw більше не записує окремі копії `.checkpoint.*.jsonl` для нових
Compaction. Наявні застарілі файли контрольних точок усе ще можна використовувати, доки на них є посилання,
і вони очищаються звичайним прибиранням сеансу.

### Сповіщення Compaction

За замовчуванням Compaction виконується без повідомлень. Установіть `notifyUser`, щоб показувати короткі статусні повідомлення, коли Compaction починається й завершується:

```json5
{
  agents: {
    defaults: {
      compaction: {
        notifyUser: true,
      },
    },
  },
}
```

### Скидання пам’яті

Перед Compaction OpenClaw може виконати **тихий скид пам’яті**, щоб зберегти довговічні нотатки на диск. Установіть `agents.defaults.compaction.memoryFlush.model`, коли цей службовий хід має використовувати локальну модель замість активної моделі розмови:

```json
{
  "agents": {
    "defaults": {
      "compaction": {
        "memoryFlush": {
          "model": "ollama/qwen3:8b"
        }
      }
    }
  }
}
```

Перевизначення моделі скидання пам’яті є точним і не успадковує ланцюжок резервних моделей активного сеансу. Докладніше про це та конфігурацію див. у [Пам’яті](/uk/concepts/memory).

## Підключувані провайдери Compaction

Plugins можуть зареєструвати власного провайдера Compaction через `registerCompactionProvider()` в API Plugin. Коли провайдера зареєстровано й налаштовано, OpenClaw делегує підсумовування йому замість вбудованого LLM-конвеєра.

Щоб використати зареєстрованого провайдера, задайте його id у вашій конфігурації:

```json
{
  "agents": {
    "defaults": {
      "compaction": {
        "provider": "my-provider"
      }
    }
  }
}
```

Установлення `provider` автоматично примусово вмикає `mode: "safeguard"`. Провайдери отримують ті самі інструкції Compaction і політику збереження ідентифікаторів, що й вбудований шлях, а OpenClaw усе ще зберігає контекст суфікса останніх реплік і розділених реплік після виводу провайдера.

<Note>
Якщо провайдер завершується помилкою або повертає порожній результат, OpenClaw повертається до вбудованого LLM-підсумовування.
</Note>

## Compaction і відсікання

|                  | Compaction                    | Відсікання                       |
| ---------------- | ----------------------------- | -------------------------------- |
| **Що робить**    | Підсумовує старішу розмову    | Обрізає старі результати інструментів |
| **Збережено?**   | Так (у транскрипті сеансу)    | Ні (лише в пам’яті, для кожного запиту) |
| **Область**      | Уся розмова                   | Лише результати інструментів     |

[Відсікання сеансу](/uk/concepts/session-pruning) — це легше доповнення, яке обрізає вивід інструментів без підсумовування.

## Усунення несправностей

**Compaction відбувається надто часто?** Контекстне вікно моделі може бути малим, або виводи інструментів можуть бути великими. Спробуйте ввімкнути [відсікання сеансу](/uk/concepts/session-pruning).

**Після Compaction контекст здається застарілим?** Використайте `/compact Focus on <topic>`, щоб спрямувати підсумок, або ввімкніть [скидання пам’яті](/uk/concepts/memory), щоб нотатки зберігалися.

**Потрібен чистий старт?** `/new` починає новий сеанс без Compaction.

Для розширеної конфігурації (резерв токенів, збереження ідентифікаторів, власні контекстні рушії, серверна Compaction OpenAI) див. [Поглиблений огляд керування сеансами](/uk/reference/session-management-compaction).

## Пов’язане

- [Сеанс](/uk/concepts/session): керування сеансом і життєвий цикл.
- [Відсікання сеансу](/uk/concepts/session-pruning): обрізання результатів інструментів.
- [Контекст](/uk/concepts/context): як контекст будується для ходів агента.
- [Хуки](/uk/automation/hooks): хуки життєвого циклу Compaction (`before_compaction`, `after_compaction`).
