> ## Documentation Index
> Fetch the complete documentation index at: https://docs.velesagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Сжатие контекста

> Как Велес удерживает длинные беседы в пределах окна модели с помощью структурированного резюме вместо простого обрезания истории.

# Сжатие контекста

В длинных беседах история сообщений рано или поздно перерастает контекстное
окно модели. Велес решает это не обрезанием старых сообщений, а **сжатием
контекста**: старые ходы заменяются одним структурированным резюме, а системный
промпт и свежие сообщения сохраняются дословно. Так беседа остаётся связной
даже спустя многие часы работы.

Cжатие **никогда не переписывает стенограмму**.
Вместо этого Велес сдвигает границу уже обработанной истории и хранит
накопительное резюме в метаданных сессии.

***

## Когда срабатывает

Перед каждым ответом Велес оценивает размер промпта. Как только оценка
превышает долю окна, заданную полем `threshold` (по умолчанию 50 %), запускается
сжатие. Порог считается от **контекстного окна модели**, а не от окна модели,
которая пишет резюме.

Сжатие срабатывает заранее, до переполнения окна, поэтому у модели всегда
остаётся запас на ответ.

***

## Что происходит при сжатии

1. **Выбор границы.** Велес выбирает точку разреза так, чтобы:
   * защитить «хвост» из свежих сообщений по бюджету токенов (`targetRatio`) и
     не меньше, чем `protectLastN` последних сообщений;
   * разрез всегда попадал на сообщение пользователя и никогда не разрывал пару
     «вызов инструмента / результат инструмента».
2. **Генерация резюме.** Ходы до границы отправляются вспомогательной модели,
   которая заполняет структурированный шаблон: активная задача, цель,
   ограничения, выполненные действия, текущее состояние, решения, отвеченные и
   открытые вопросы, затронутые файлы, оставшаяся работа, критический контекст.
   Резюме пишется на языке беседы, а секреты заменяются на `[REDACTED]`.
3. **Накопительное обновление.** Если резюме уже существует, модель **обновляет**
   его, а не пишет заново: выполненные пункты переносятся в «сделано»,
   отвеченные вопросы — в «решённые». Так преемственность сохраняется через
   множество циклов сжатия.
4. **Сохранение.** Резюме кладётся в метаданные сессии и при следующих запросах
   подставляется в системный промпт с пометкой «только для справки». Сжатый
   участок дополнительно выгружается в долговременную память (файлы `memory/`),
   поэтому его можно найти инструментом `memory_search`.

Свёрнутая история подаётся модели как **справочный материал**, а не как активные
инструкции. Благодаря этому модель отвечает на последнее сообщение пользователя
и не пытается «доделать» уже завершённую или отменённую работу.

***

## Защита от сбоев

* **Запасное резюме.** Если вспомогательная модель недоступна или вернула пустой
  ответ, Велес формирует детерминированное запасное резюме (последние сообщения
  пользователя и упомянутые файлы) и **дописывает** его к прежнему резюме, не
  теряя ранее накопленную преемственность.
* **Пауза после ошибки.** После сбоя генерации резюме включается пауза, чтобы
  Велес не тратил вызовы модели на повторные неудачные попытки каждый ход.
* **Защита от «пробуксовки».** Если очередной цикл почти не уменьшил размер
  промпта, сжатие останавливается и предлагает начать новую беседу командой
  `/new`.

***

## Настройка

Все параметры находятся в блоке `agents.defaults.compression` — см.
[Конфигурация](/configuration_ru).

| Поле               | По умолчанию | Назначение                                                                    |
| ------------------ | ------------ | ----------------------------------------------------------------------------- |
| `enabled`          | `true`       | Включает сжатие. При `false` действует прежняя посегментная выгрузка в память |
| `threshold`        | `0.5`        | Доля окна, при превышении которой запускается сжатие (0.2–0.95)               |
| `targetRatio`      | `0.2`        | Бюджет защищённого хвоста как доля порога (0.05–0.8)                          |
| `protectLastN`     | `20`         | Минимум последних сообщений, сохраняемых дословно                             |
| `maxSummaryTokens` | `3000`       | Верхний предел размера резюме                                                 |
| `summaryModel`     | `""`         | Модель для резюме; пусто — модель сессии                                      |

***

## Связь с памятью

Сжатие контекста и [долговременная память](/dive-deeper/long_term_memory_ru)
дополняют друг друга. Сжатие управляет **активным окном** беседы, а память
хранит устойчивые факты и полные стенограммы. При каждом сжатии свёрнутый
участок выгружается в память, поэтому детали не пропадают: резюме удерживает
связность прямо в промпте, а память позволяет поднять точные записи по запросу.

Команда `/new` завершает беседу и очищает накопленное резюме вместе с рабочим
окном.
