# Memory Compactor

> Автоматическое сжатие памяти при заполнении. Группировка, дедупликация, архивация в скиллы. Чтобы не упираться в лимит 2.2K и не терять важное.

- Skill: `zad111ak-ai/memory-compactor` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zad111ak-ai/memory-compactor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zad111ak-ai/memory-compactor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: zad111ak-ai (https://skillmd.com/u/zad111ak-ai)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/zad111ak-ai/memory-compactor

---


# 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 символов:
1. Удали всё не-essential
2. Оставь только: имя пользователя, основной провайдер, 1 ключевой проект
3. Остальное → в скиллы
4. Скажи пользователю что провёл сжатие (1 предложение)

---

## Чек-лист сжатия

1. [ ] Проверил % заполнения
2. [ ] Отфильтровал что можно удалить
3. [ ] Отфильтровал что можно сжать
4. [ ] Отфильтровал что можно перенести в скилл
5. [ ] Создал/дополнил скиллы
6. [ ] Сохранил сжатую память
7. [ ] Новая запись влезет? Если нет — повторить

