Сжатие контекста
Сжатие контекста уменьшает «вес» промпта одной сессии разговора: старые ходы сворачиваются в сводку, и активный контекст остаётся меньше.
Эта страница — про контекст сессии, а не про хранилище долговременной памяти. Если вы хотите объединить или переписать сохранённые воспоминания в провайдере памяти, см. Управление памятью Bot.
Сжатие включено по умолчанию
Новые Bot поставляются с автоматическим сжатием контекста — включённым и без настройки. Вам не нужно выбирать порог, коэффициент или модель-суммаризатор: Memoh рассчитывает всё относительно context_window чат-модели:
- Когда сжимаемая история сессии переходит примерно 50% контекстного окна модели, Memoh сжимает её в фоне после хода.
- Если сессия выросла дальше примерно 75%, прежде чем фоновый проход успел отработать, Memoh сжимает синхронно, перед отправкой следующего хода.
- Оба пути стремятся вернуть «сырую» историю примерно к 40% окна.
Единственное настоящее условие: чат-модель Bot должна объявлять context_window в настройках модели. Без него у автоматической политики нет бюджета, от которого можно отталкиваться, и она никогда не срабатывает. См. Провайдеры и модели.
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.
Немедленное сжатие
Запустить сжатие текущей сессии немедленно можно двумя способами:
Из панели состояния сессии
- Откройте активный разговор.
- Откройте панель состояния сессии.
- Нажмите Compact Now.
Панель состояния также показывает текущее использование контекста, долю попаданий в кэш и использованные навыки — это помогает решить, полезно ли сжатие прямо сейчас.
Из слэш-команд
Выполните:
/compactили:
/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.
Дальнейшие шаги
- Сведения о сессии во время выполнения — см. Сессии.
- Сжатие по слэш-команде — см. Слэш-команды.
- Управление долговременной памятью вместо контекста сессии — см. Управление памятью Bot.