name memory-compactor description Автоматическое сжатие памяти при заполнении. Группировка, дедупликация, архивация в скиллы. Чтобы не упираться в лимит 2.2K и не терять важное. tags ["memory","compression","meta","maintenance"]
Memory Compactor — Автоматическое сжатие памяти
Зачем
Память ограничена ~2,200 символами. Когда заполняется:
Новые факты не помещаются
Старые факты вытесняются
Теряются предпочтения пользователя и lessons learned
Триггер
Запускать автоматически когда memory >70% заполнения (проверять в usage в memory tool result).
Также запускать:
После 10+ session_search запросов
Когда user correction не влез в память
По просьбе пользователя
Протокол сжатия
Шаг 1: Прочитать всю память
Использовать memory(action='add') нельзя читать. Читать из persona (memory секция в system prompt).
Собрать в голове что есть:
Факты об окружении (WSL, провайдеры, пути)
Предпочтения пользователя
Технические решения (что работает, что нет)
Исторические решения (почему выбрали X, отказались от Y)
Шаг 2: Классификация
Тип Куда Личные данные пользователя (имя, язык, стиль общения, контакты)Оставить в памяти Настройки провайдера (endpoint, модель, цены)Оставить в памяти или provider-polza Рабочие решения (как парсить WB, обход блокировок)➡️ В скилл (создать или дополнить существующий) Cronjob настройки (расписание, скрипты)🗑️ Удалить — лежат в cronjob конфиге Инструменты (как что работает)➡️ В скилл Устаревшие решения (не используем больше, не работает)🗑️ Удалить Выводы о качестве моделей ➡️ В cost-aware-orchestrator или provider-polza Ошибки пользователя ("не делай X")🗑️ Удалить — уже сохранено в rules-and-bounds
Шаг 3: Сжатие
Правила сжатия:
ДО: "DeepSeek V4 Flash через polza.ai. Цена 26.88₽ input / 53.76₽ output. Кэш запросов есть. Provider — custom."
ПОСЛЕ: "Polza(DeepSeek V4): 26.88/53.76₽. Кэш есть."
ДО: "Dima использует polza.ai для основного чата, AITunnel для делегации, не использует OpenRouter, предпочитает дешёвые модели, ценит скорость."
ПОСЛЕ: "Dima: Polza↔чат, AITunnel↔delegate. Цена > скорость."
Шаг 4: Архивировать детали в скиллы
То что вытащил из памяти — сохрани в соответствующий скилл или создай новый.
Примеры:
Детали по WSL → environment-wsl
Настройки Polza → provider-polza
Правила → rules-and-bounds
Воркфлоу → соответствующий скилл
Шаг 5: Записать сжатую версию
memory(action='add', target='memory', content='сжатая версия') — заменит старую.
memory(action='add', target='user', content='сжатая версия') — заменит старую.
Важно: Не нужно удалять старые записи по одной. Новая запись добавится сверху, гигиена сделает своё дело.
Аварийное сжатие (когда <10% места)
Если памяти осталось <200 символов:
Удали всё не-essential
Оставь только: имя пользователя, основной провайдер, 1 ключевой проект
Остальное → в скиллы
Скажи пользователю что провёл сжатие (1 предложение)
Чек-лист сжатия
Проверил % заполнения
Отфильтровал что можно удалить
Отфильтровал что можно сжать
Отфильтровал что можно перенести в скилл
Создал/дополнил скиллы
Сохранил сжатую память
Новая запись влезет? Если нет — повторить