Компакт памяти агента: когда чистить контекст и не потерять
Смахни со стола хлам вовремя - и ничего нужного не улетит вместе с ним
Компакт памяти агента простыми словами: что сжимается и теряется, что выживает, и в какой момент чистить контекст безопасно, а в какой - выстрел себе в ногу.
Что такое компакт памяти простыми словами
Представь свой рабочий стол. На нём бумаги: задача, черновики, заметки, распечатки. Пока всё нужное под рукой - голова варит быстро. Но стол не резиновый. Завалил так, что чашку поставить некуда - и вот ты уже роешься в стопках и тупишь.
У агента ровно та же беда. Его «стол» - это контекст Контекст (контекстное окно) - весь текст, который модель видит прямо сейчас: твои сообщения, прочитанные файлы, результаты команд. Что не влезло - для модели не существует. . Переполнился? Агент делает компакт Компакт (compact) - сжатие истории разговора. Агент сворачивает старую переписку в короткую выжимку, чтобы освободить место. Детали при этом теряются. : сгребает старые бумаги в одну папку «разное» и подписывает её парой строк - «делали лендинг, обсуждали шрифт». Место освободилось. Но понадобилась конкретная бумажка из той папки? Её там больше нет. Осталась только подпись на обложке.
Зачем вайбкодеру понимать чистку контекста
Ты вайбкодер. Код руками не пишешь - но рулишь длинной сессией с агентом. И рано или поздно ловишь один из двух сюжетов:
- агент вдруг забыл, о чём вы говорили час назад, и переспрашивает очевидное;
- агент стал тупее и медленнее, начал повторяться и путать детали.
Оба - про память и компакт. Разберёшься в механике - и сразу три выигрыша:
- сам выбираешь момент уборки, а не ждёшь, пока агент устроит её в худшую секунду;
- не теряешь результат работы из-за случайной чистки;
- держишь агента быстрым и собранным, а не захлёбывающимся в простынях логов.
Разница между «агент внезапно всё забыл» и «агент стабильно держит задачу» - это чаще всего один навык: вовремя почистить стол и заранее сохранить важное в файл.
Что выживает при компакте, а что теряется
Самое важное в уроке. Компакт стирает не всё подряд - у него есть чёткое разделение. Запомни две колонки, и страх перед чисткой испарится.
- Файлы на диске - код, заметки, всё, что записано.
- Правила проекта и инструкции - например, файл с настройками агента.
- Список задач (todo), который агент ведёт по ходу дела.
- История git - коммиты и ветки. Они вообще не в памяти агента.
- Файлы памяти, если ты их завёл - заметки, которые агент дописывает на ходу.
- Куски файлов, которые агент читал, но никуда не записывал.
- Рассуждения и анализ по дороге к решению.
- Твои устные пожелания из чата: «шрифт помягче», «кнопку левее».
- Промежуточное состояние: какие переменные, какие пути обсуждали.
- Сама история разговора - кто, что и когда говорил.
Как понять, что пора делать компакт
Агент сам подаёт сигналы. Вот три самых верных.
Сессия стала слишком длинной
Общаетесь уже долго, в чате гора прочитанных файлов и логов? Стол наверняка близок к переполнению. Самое время оглядеться.
Задача сменилась
Закончил один кусок и берёшься за совсем другой? Старый контекст теперь только мешает - лежит мёртвым грузом и сбивает агента с толку.
Агент начал «плыть»
Ответы стали медленнее, агент повторяется, путает детали, переспрашивает то, что только что знал. Классика: стол забит, повару некуда положить нож.
Когда чистить память агенту, а когда нельзя
Вот шпаргалка по переходам между этапами работы. Зелёное - чисти смело. Красное - руки прочь.
- После исследования, перед работой: нагрёб кучу файлов, а нужны только вывод и план.
- Закончил фичу - почистил и начал новую с чистого стола.
- После тупиковой попытки: убери мёртвые рассуждения перед новым подходом.
- Перед сменой темы: переходишь к другой части проекта - старый контекст лишний.
- Посреди отладки сложного бага - сотрёшь именно те детали, ради которых старался.
- В середине большой правки - потеряешь, какие файлы и переменные в работе.
- Прямо перед важным решением - агент забудет, почему вообще его принимает.
- Слишком часто «на всякий случай» - каждая чистка = минус контекст.
Пример: как авто-компакт съел полчаса работы
Ты три часа делаешь с агентом интернет-магазин. Сначала долго выбирали, какие товары показывать, читали примеры, спорили о структуре. Потом сверстали витрину. Потом полчаса ловили баг с корзиной - агент читал десяток файлов, пробовал, ошибался, пробовал снова.
И вот баг почти пойман. Агент бодро рапортует: «кажется, проблема в подсчёте суммы, сейчас проверю». В этот самый миг стол переполняется и срабатывает авто-компакт. Агент возвращается - и невинно спрашивает: «а с чем у нас была проблема?» Все наработки по багу уехали в папку «разное». Полчаса - псу под хвост.
Где прокол? Чистка случилась в худший момент - в середине отладки. И случилась сама, потому что ты раньше не убрался на безопасной границе.
А вот как сделал бы понимающий вайбкодер:
Мы закончили большой блок исследования товаров и свёрстанную витрину. Прежде чем браться за корзину, сделай так:
- Запиши в файл DECISIONS.md ключевые решения: какие товары показываем, структуру витрины, договорённости по дизайну. Чтобы это пережило чистку.
- Туда же запиши, что мы сейчас начинаем чинить корзину и в чём суть проблемы.
- Теперь сделай компакт - освободи память, впереди отдельная задача про корзину.
- Дальше работай по корзине НЕ прерываясь на чистку, пока баг не пойман.
Ритуал из трёх шагов перед чисткой
Чтобы компакт никогда не кусался, перед каждой ручной чисткой пробеги три шага. Это буквально суть скилла strategic-compact.
- Я на границе? Дело доделано или я в середине? В середине - стоп, не чищу.
- Важное записано? Решения, договорённости, текущая задача лежат в файле? Если нет - сначала попроси записать.
- Дам ли я короткую подсказку? При ручном компакте добавь пару слов: «дальше делаем корзину». Агент стартует с чистого стола, но уже зная, куда идти.
Частые ошибки при компакте контекста
- Чистить посреди отладки. Самая болезненная: стираешь ровно те детали, ради которых старался. Дожми баг, потом чисти.
- Надеяться, что чат сам всё запомнит. Устные пожелания компакт не переживут. Важное - в файл, и только потом уборка.
- Ждать авто-компакта. Он сработает в случайный, обычно самый неудобный момент. Чисти сам, первым, на удобной границе.
- Чистить слишком часто «на всякий случай». Каждая чистка теряет контекст. Без нужды стол не трогай.
- Чистить, не дав подсказки. После голого компакта агент может не понять, что делать дальше. Добавь короткую фразу о следующей задаче.
- Путать чистку с поломкой. Агент «забыл»? Это не глюк, а сработавший компакт. Лечится повтором ключевого и записью в файл.
TL;DR - если коротко
- Компакт - агент сворачивает старую переписку в короткую выжимку и освобождает место на «столе».
- Теряются детали: куски файлов, рассуждения, твои устные пожелания. Выживают файлы на диске, todo-список и правила проекта.
- Чисти на границах задач: фича готова, исследование закончено, тупик пройден - вот безопасные окна.
- Не чисти посреди отладки и в разгар большой правки - сотрёшь ровно то, что искал.
- Сохрани важное в файл до компакта - и чистка перестанет кусаться.
- Авто-компакт бьёт в случайную секунду. Ручной - когда удобно тебе. Чисти сам и первым.