---
read_when:
    - Вы хотите разобраться в автоматической Compaction и команде /compact
    - Вы отлаживаете длительные сеансы, достигающие пределов контекста
summary: Как OpenClaw суммирует длинные разговоры, чтобы не превышать ограничения модели
title: Compaction
x-i18n:
    generated_at: "2026-07-13T19:41:38Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: f00fb0cf59184ef450f1fc4d39a21a40ee4e8327d872766bca7f3642c0145514
    source_path: concepts/compaction.md
    workflow: 16
---

У каждой модели есть окно контекста — максимальное количество токенов, которое она может обработать. Когда разговор приближается к этому пределу, OpenClaw **сворачивает** старые сообщения в сводку, чтобы общение могло продолжаться.

## Как это работает

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

При выборе точки разделения для свёртки OpenClaw сохраняет вызовы инструментов ассистента вместе с соответствующими им записями `toolResult`. Если точка оказывается внутри блока инструмента, OpenClaw сдвигает границу, чтобы пара осталась вместе, а текущая несвёрнутая конечная часть сохранилась.

Полная история разговора остаётся на диске. Свёртка изменяет только то, что модель видит на следующем ходе.

<Note>
В новых конфигурациях для `agents.defaults.compaction.mode` по умолчанию задано значение `"safeguard"` (более строгие ограничения и проверки качества сводки). Чтобы отказаться от этого поведения, явно задайте `mode: "default"`.
</Note>

## Автоматическая свёртка

Автоматическая свёртка включена по умолчанию. Она запускается, когда сеанс приближается к пределу контекста или когда модель возвращает ошибку переполнения контекста (в этом случае OpenClaw выполняет свёртку и повторяет попытку).

Вы увидите:

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

<Info>
Перед свёрткой OpenClaw автоматически напоминает агенту сохранить важные заметки в файлах [памяти](/ru/concepts/memory). Это предотвращает потерю контекста.
</Info>

<AccordionGroup>
  <Accordion title="Распознаваемые OpenClaw шаблоны ошибок переполнения">
    OpenClaw сопоставляет десятки зависящих от провайдера строк ошибок переполнения (Anthropic, OpenAI, Bedrock, Gemini, Ollama, OpenRouter и другие). Распространённые примеры:

    - `request_too_large`
    - `context length exceeded`
    - `input exceeds the maximum number of tokens`
    - `input token count exceeds the maximum number of input tokens` (Bedrock)
    - `input is too long for the model`
    - `ollama error: context length exceeded`

  </Accordion>
</AccordionGroup>

## Ручная свёртка

Введите `/compact` в любом чате, чтобы принудительно запустить свёртку. Добавьте инструкции, определяющие содержание сводки:

```text
/compact Сосредоточься на решениях по проектированию API
```

Если задано значение `agents.defaults.compaction.keepRecentTokens` (по умолчанию: 20,000), ручная свёртка учитывает эту точку отсечения и сохраняет недавнюю конечную часть в заново сформированном контексте. Без явно заданного объёма сохраняемого контекста ручная свёртка действует как жёсткая контрольная точка, после которой работа продолжается только с новой сводкой.

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

Настройте свёртку в разделе `agents.defaults.compaction` файла `openclaw.json`. Наиболее распространённые параметры перечислены ниже; полное описание см. в разделе [Подробное управление сеансами](/ru/reference/session-management-compaction).

### Использование другой модели

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

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

Перед началом свёртки простые настроенные псевдонимы преобразуются в канонические значения провайдера и модели. Если простое значение совпадает и с псевдонимом, и с настроенным буквальным идентификатором модели, приоритет имеет буквальный идентификатор модели. Несопоставленное простое значение остаётся идентификатором модели активного провайдера.

Это также работает с локальными моделями — например, со второй моделью Ollama, предназначенной для создания сводок:

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

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

### Сохранение идентификаторов

При создании сводки свёртка по умолчанию сохраняет непрозрачные идентификаторы (`identifierPolicy: "strict"`). Чтобы отключить это поведение, переопределите его с помощью `identifierPolicy: "off"`; для собственных инструкций используйте `identifierPolicy: "custom"` вместе с `identifierInstructions`.

### Ограничение по размеру активной стенограммы в байтах

Если задано значение `agents.defaults.compaction.maxActiveTranscriptBytes`, OpenClaw
запускает обычную локальную свёртку перед выполнением, когда история стенограммы достигает
этого размера. Это полезно для длительных сеансов, в которых управление контекстом
на стороне провайдера может поддерживать контекст модели в нормальном состоянии, в то время как сохранённая история стенограммы
продолжает расти. OpenClaw не разделяет необработанные байты, а запрашивает у обычного конвейера
свёртки создание семантической сводки.

<Warning>
Ограничение по байтам применяется к активной истории стенограммы в SQLite. Устаревшие артефакты
контрольных точек JSONL не являются активной целью свёртки.
</Warning>

### Последующие стенограммы

Когда включён параметр `agents.defaults.compaction.truncateAfterCompaction`, OpenClaw не перезаписывает существующую стенограмму на месте. Он создаёт новую активную последующую стенограмму из сводки свёртки, сохранённого состояния и несвёрнутой конечной части, а затем записывает метаданные контрольной точки, направляющие операции ветвления и восстановления к этой свёрнутой последующей стенограмме.
Последующие стенограммы также отбрасывают полностью совпадающие длинные реплики пользователя, поступившие
в течение короткого интервала повторной попытки, поэтому лавины повторных попыток канала не переносятся
в следующую активную стенограмму после свёртки.

OpenClaw больше не записывает отдельные копии `.checkpoint.*.jsonl` для новых
свёрток. Существующие устаревшие файлы контрольных точек по-прежнему можно использовать, пока на них есть ссылки,
а обычная очистка сеансов удаляет их, когда они больше не нужны.

### Уведомления о свёртке

По умолчанию свёртка выполняется без уведомлений. Задайте `notifyUser`, чтобы показывать краткие сообщения о состоянии при начале и завершении свёртки, а также уведомлять о работе в ухудшенном режиме, если сброс памяти перед свёрткой исчерпал доступные попытки, но ответ всё равно продолжается:

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

### Сброс памяти

Перед свёрткой OpenClaw может выполнить **беззвучный сброс памяти**, чтобы сохранить долговременные заметки на диск. Задайте `agents.defaults.compaction.memoryFlush.model`, если для этой служебной операции следует использовать локальную модель вместо активной модели разговора:

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

Переопределение модели для сброса памяти является точным и не наследует цепочку резервных моделей активного сеанса. Подробности и конфигурацию см. в разделе [Память](/ru/concepts/memory).

## Подключаемые провайдеры свёртки

Плагины могут зарегистрировать собственного провайдера свёртки через `registerCompactionProvider()` в API плагина. Когда провайдер зарегистрирован и настроен, OpenClaw поручает создание сводки ему вместо встроенного конвейера LLM.

Чтобы использовать зарегистрированного провайдера, задайте его идентификатор в конфигурации:

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

Задание `provider` автоматически принудительно устанавливает `mode: "safeguard"`. Провайдеры получают те же инструкции по свёртке и правила сохранения идентификаторов, что и встроенный механизм, а OpenClaw по-прежнему сохраняет контекст суффикса недавних и разделённых реплик после получения результата от провайдера.

<Note>
Если провайдер завершается ошибкой или возвращает пустой результат, OpenClaw переходит к встроенному созданию сводки с помощью LLM.
</Note>

## Свёртка и очистка

|                  | Свёртка                       | Очистка                          |
| ---------------- | ----------------------------- | -------------------------------- |
| **Что делает**   | Создаёт сводку старой части разговора | Удаляет старые результаты инструментов |
| **Сохраняется?** | Да (в стенограмме сеанса)     | Нет (только в памяти, отдельно для каждого запроса) |
| **Область действия** | Весь разговор             | Только результаты инструментов   |

[Очистка сеанса](/ru/concepts/session-pruning) — более лёгкий дополнительный механизм, который сокращает вывод инструментов без создания сводки.

## Устранение неполадок

**Свёртка выполняется слишком часто?** Возможно, окно контекста модели мало или вывод инструментов слишком велик. Попробуйте включить [очистку сеанса](/ru/concepts/session-pruning).

**После свёртки контекст кажется устаревшим?** Используйте `/compact Focus on <topic>`, чтобы задать требования к сводке, или включите [сброс памяти](/ru/concepts/memory), чтобы сохранить заметки.

**Нужно начать с чистого листа?** `/new` запускает новый сеанс без свёртки.

Расширенные параметры конфигурации (резерв токенов, сохранение идентификаторов, пользовательские механизмы контекста и серверная свёртка OpenAI) см. в разделе [Подробное управление сеансами](/ru/reference/session-management-compaction).

## Связанные разделы

- [Сеанс](/ru/concepts/session): управление сеансом и его жизненный цикл.
- [Очистка сеанса](/ru/concepts/session-pruning): сокращение результатов инструментов.
- [Контекст](/ru/concepts/context): формирование контекста для ходов агента.
- [Хуки](/ru/automation/hooks): хуки жизненного цикла свёртки (`before_compaction`, `after_compaction`).
