Skip to content

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

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

Эта страница — про контекст сессии, а не про хранилище долговременной памяти. Если вы хотите объединить или переписать сохранённые воспоминания в провайдере памяти, см. Управление памятью 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.


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

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

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

  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.


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

Published under AGPLv3