Сжатие контекста
Сжатие освобождает место в долгой сессии: старая переписка заменяется резюме, и сессия продолжается за пределами контекстного окна модели.
Как это работает
Заголовок раздела «Как это работает»Когда сессия приближается к лимиту контекста, ZubrCode резюмирует весь текущий разговор и сохраняет самую свежую часть — около 15 000 токенов по умолчанию, — чтобы точные недавние детали оставались доступными.
до [ системный промпт ][ старая переписка ....... ][ свежие 15k ][ работа ]запрос [ системный промпт ][ старая переписка ....... ][ свежие 15k ][ инструкции резюме ]после [ системный промпт ][ резюме старого + свежее ][ свежие 15k ][ работа ]Полная переписка отправляется и в запрос сжатия — так он переиспользует кеш промпта, если провайдер его поддерживает. Следующие сжатия обновляют существующее резюме по разговору после этой точки.
Автоматическое сжатие
Заголовок раздела «Автоматическое сжатие»Включено по умолчанию и срабатывает около лимита контекста; оно же один раз
восстанавливает работу, когда провайдер отклоняет запрос как слишком
длинный. Сжатие с потерями: увеличьте keep.tokens, если важны точные
недавние детали, или запросите сжатие сами до автоматического.
Вручную
Заголовок раздела «Вручную»Сжать сессию можно в любой момент — команда /compact в TUI:
/compactЧерез API:
zubrcode api post /api/session/ses_example/compact --data '{}'Ответ подтверждает приём запроса, но не ждёт резюме: о завершении сообщают
события session.compaction.*. Запрос выполняется в ближайшую безопасную
точку; повторные запросы сливаются с ожидающим. Ручное сжатие работает и при
compaction.auto: false.
Настройки
Заголовок раздела «Настройки»{ "compaction": { "auto": true, "keep": { "tokens": 15000 }, "buffer": 20000 }}| Поле | По умолчанию | Поведение |
|---|---|---|
auto |
true |
сжимать около лимита контекста и один раз восстанавливаться после отказа «слишком длинный» |
keep.tokens |
15000 |
сколько свежей переписки хранить рядом с резюме: больше — детальнее, но меньше места новой работе |
buffer |
15% лимита, не меньше 16k | сколько токенов держать свободными ниже лимита модели: больше — сжатие начинается раньше |
keep.tokens и buffer — неотрицательные целые числа.
Сжатие на стороне провайдера
Заголовок раздела «Сжатие на стороне провайдера»По умолчанию резюме пишет ZubrCode моделью сессии. Некоторые провайдеры умеют
сжимать переписку у себя — включается настройкой settings.compaction
провайдера или модели ("native" — силами провайдера, "summary" — своё
резюме). Провайдер отдаёт непрозрачную зашифрованную точку, а свежие
сообщения и вложения до keep.tokens остаются рядом с ней. Такая точка
работает только с тем же провайдером и моделью: при смене модели сессия
продолжится с исходной переписки.
Что в резюме
Заголовок раздела «Что в резюме»Резюме структурировано так, чтобы по нему можно было продолжить работу: цель и требования, решения, сделанное и текущее, препятствия и следующие шаги, относящиеся файлы. В свежей переписке рядом длинный вывод инструментов сокращается, а данные вложений заменяются кратким описанием. После сжатия текущие версии файлов инструкций становятся базой сессии (Инструкции).
Ограничения
Заголовок раздела «Ограничения»| Ограничение | Результат |
|---|---|
| Модель | сжатие использует модель сессии — отдельной модели для него нет |
| История | сжимать нечего, если запрос состоит в основном из фиксированных инструкций и схем инструментов |
| Размер | слишком длинная переписка сжимается урезанной текстовой версией, старые обмены могут выпасть |
| Восстановление | запрос, отклонённый как слишком длинный, сжимается и повторяется один раз; второй отказ возвращается ошибкой |
| Хранение | старые сообщения остаются в сессии, даже когда больше не отправляются модели |