---
read_when:
    - Ви хочете зрозуміти автоматичну Compaction і /compact
    - Ви налагоджуєте тривалі сеанси, які досягають обмежень контексту
summary: Як OpenClaw підсумовує довгі розмови, щоб залишатися в межах обмежень моделі
title: Compaction
x-i18n:
    generated_at: "2026-04-28T11:08:34Z"
    model: gpt-5.5
    provider: openai
    source_hash: 9beac513a8226a7dd107cdc3a7bfd7550d87e98648004c80487db968c57742d4
    source_path: concepts/compaction.md
    workflow: 16
---

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

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

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

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

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

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

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

Ви побачите:

- `🧹 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 дотримується цієї точки відсікання Pi й зберігає нещодавній хвіст у перебудованому контексті. Без явного бюджету збереження ручний Compaction поводиться як жорстка контрольна точка й продовжує лише з нового підсумку.

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

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

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

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

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

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

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

Якщо не задано, Compaction використовує основну модель агента.

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

Узагальнення 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, збереженого стану й неузагальненого хвоста, а попередній JSONL залишає як архівне джерело контрольної точки.
Наступні транскрипти також відкидають точні дублікати довгих користувацьких кроків, що надходять
усередині короткого вікна повторної спроби, щоб шквали повторних спроб каналу не переносилися в
наступний активний транскрипт після Compaction.

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

### Сповіщення 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.

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

```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): як контекст будується для кроків агента.
- [Hooks](/uk/automation/hooks): hooks життєвого циклу Compaction (`before_compaction`, `after_compaction`).
