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

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

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

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 автоматически напоминает агенту сохранить важные заметки в файлы [памяти](/ru/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`. Самые распространенные параметры перечислены ниже; полный справочник см. в разделе [Подробное руководство по управлению сеансами](/ru/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. Если простое значение совпадает и с псевдонимом, и с настроенным буквальным идентификатором модели, побеждает буквальный идентификатор модели. Несовпавшее простое значение остается идентификатором модели у активного провайдера.

Это работает и с локальными моделями, например со второй моделью 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"
        }
      }
    }
  }
}
```

Переопределение модели сброса памяти является точным и не наследует цепочку резервных моделей активного сеанса. Подробности и конфигурацию см. в разделе [Память](/ru/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                     | Обрезка                               |
| ---------------- | ------------------------------ | ------------------------------------- |
| **Что делает**   | Суммирует старый разговор      | Обрезает старые результаты инструментов |
| **Сохраняется?** | Да (в транскрипте сеанса)      | Нет (только в памяти, для каждого запроса) |
| **Область**      | Весь разговор                  | Только результаты инструментов        |

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

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

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

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

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

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

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

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