---
url: /ru/guides/compaction.md
---
# Сжатие контекста

**Сжатие контекста** уменьшает «вес» промпта одной сессии разговора: старые ходы сворачиваются в сводку, и активный контекст остаётся меньше.

Эта страница — про **контекст сессии**, а не про хранилище долговременной памяти. Если вы хотите объединить или переписать сохранённые воспоминания в провайдере памяти, см. [Управление памятью Bot](./memory.md).

***

## Сжатие включено по умолчанию

Новые Bot поставляются с автоматическим сжатием контекста — **включённым и без настройки**. Вам не нужно выбирать порог, коэффициент или модель-суммаризатор: Memoh рассчитывает всё относительно `context_window` чат-модели:

* Когда сжимаемая история сессии переходит примерно **50%** контекстного окна модели, Memoh сжимает её в **фоне** после хода.
* Если сессия выросла дальше примерно **75%**, прежде чем фоновый проход успел отработать, Memoh сжимает **синхронно**, перед отправкой следующего хода.
* Оба пути стремятся вернуть «сырую» историю примерно к **40%** окна.

Единственное настоящее условие: чат-модель Bot должна объявлять `context_window` в настройках модели. Без него у автоматической политики нет бюджета, от которого можно отталкиваться, и она никогда не срабатывает. См. [Провайдеры и модели](../integrations/providers/llm.md).

Bot, созданные до смены этого умолчания, сохраняют свои настройки и ведут себя так, как настроены (см. режим legacy ниже).

***

## Настройка

Настройки сжатия у Bot по-прежнему есть — для подстройки и переопределений:

| Поле | Описание |
|-------|-------------|
| **Compaction Enabled** | Включено по умолчанию. Выключите, чтобы отключить автоматическое сжатие для этого Bot. |
| **Compaction Threshold** | Порог входных токенов. `0` (по умолчанию) означает автоматическую политику относительно модели, описанную выше. Значение **больше 0** переключает в legacy-режим с абсолютным порогом. |
| **Compaction Ratio** | Насколько агрессивно сокращать сессию. Используется только в legacy-режиме — пока порог равен `0`, поле скрыто. |
| **Compaction Model** | Необязательная выделенная модель-суммаризатор. По умолчанию — чат-модель; переопределение можно сбросить обратно в **Use chat model (default)**. |

### Выбор модели сжатия

Суммаризировать может любая включённая чат-модель, с одним ограничением: провайдер должен уважать лимиты выходных токенов. **Модели OpenAI Codex суммаризатором быть не могут** — выпадающий список моделей их отфильтровывает.

Это важно, когда основная чат-модель Bot — модель Codex: автоматическое сжатие тихо бездействует, потому что наследовать нечего. В этом случае назначьте явную **Compaction Model**.

***

## Немедленное сжатие

Запустить сжатие текущей сессии немедленно можно двумя способами:

### Из панели состояния сессии

1. Откройте активный разговор.
2. Откройте панель состояния сессии.
3. Нажмите **Compact Now**.

Панель состояния также показывает текущее использование контекста, долю попаданий в кэш и использованные навыки — это помогает решить, полезно ли сжатие прямо сейчас.

### Из слэш-команд

Выполните:

```text
/compact
```

или:

```text
/compact run
```

Ручное сжатие сжимает столько сессии, сколько возможно (а не останавливается на автоматической цели), и обходит короткую паузу, которую автоматическое сжатие выдерживает после неудачной попытки.

***

## Что сжатие сохраняет

Суммаризатор работает с типизированными записями разговора, что сохраняет верность сводки:

* Вызовы инструментов и их результаты никогда не разделяются — обмен с инструментом либо целиком остаётся в «сырой» истории, либо целиком суммаризируется.
* Медиа сводятся к меткам `[image]` / `[file]`, а не к «сырым» данным.
* Сводки, которые пришли пустыми, обрезанными или оказались не меньше оригинала, отклоняются, а не сохраняются.
* В сессиях, работающих на нескольких рабочих пространствах, сводка помнит, на каком рабочем пространстве происходила каждая часть разговора.

Сжатие применяется к обычным чат-сессиям, а также к разговорам типа **discuss** и конвейерным (pipeline) разговорам.

***

## Состояние и журналы

Вкладка **Compaction** на странице Bot даёт журнал прогонов сжатия контекста.

Типичные поля:

* **Status** — завершилось сжатие успешно или с ошибкой
* **Summary** — текст сводки или её предпросмотр
* **Message Count** — сколько сообщений было задействовано
* **Started / Completed Time** — когда прогон произошёл
* **Model / Usage** — метаданные о модели и расходе токенов, когда они доступны

Список записей полезен, когда нужно убедиться, что автоматическое сжатие действительно работает, или разобраться в сбое.

### Частые причины сбоев

Когда сжатие не может выполниться, Memoh сообщает `compaction.model_unavailable` с конкретной причиной: модель сжатия не настроена, не является чат-моделью, отключена, отключён её провайдер, провайдер не поддерживает лимиты вывода (Codex) или у модели нет известного контекстного окна. `/compact` сообщает те же состояния прямо в чате.

***

## Связь с `context_window`

Memoh отслеживает текущую сессию относительно `context_window` выбранной чат-модели.

Это видно:

* в панели состояния сессии в приложении
* в слэш-команде `/status`

Использование контекста — оценка (примерно четыре символа на токен), так что воспринимайте проценты как ориентир, а не точные числа.

***

## Сжатие контекста и сжатие памяти

Эти две функции звучат похоже, но решают разные задачи:

| Функция | Область | Триггер | Результат |
|---------|-------|---------|--------|
| **Сжатие контекста** | Одна активная сессия | Автоматически, панель сессии или `/compact` | Суммаризирует старую историю чата для будущих ходов |
| **Сжатие памяти** | Провайдер долговременной памяти | Вкладка **Memory** | Переписывает сохранённые записи памяти |

Используйте **сжатие контекста**, когда один разговор стал слишком большим.

Используйте **сжатие памяти**, когда зашумлёнными или избыточными стали сами сохранённые воспоминания Bot.

***

## Дальнейшие шаги

* Сведения о сессии во время выполнения — см. [Сессии](./sessions.md).
* Сжатие по слэш-команде — см. [Слэш-команды](./slash-commands.md).
* Управление долговременной памятью вместо контекста сессии — см. [Управление памятью Bot](./memory.md).
