Агенты периодически сходят с ума — и это не баг чужого кода, это системная штука, с которой рано или поздно сталкиваешься при вайб-кодинге. Вот классическая сцена: Opus делает задачу, потом после компакшна контекста забывает, что уже всё сделал, и бодро идёт по второму кругу. Споткнулся только о свой же коммит — ну типа, кто-то тут уже это сделал. «Кто-то» — это он сам.
Я таких историй насобирала уже целую коллекцию. И поняла, что агентам надо помогать не только промтами на старте, но и контрольными точками по ходу. Иначе получаешь дорогостоящий забег по кругу.
Вот что я теперь делаю, чтобы агент не терял себя в процессе.
1. Добавляю «дневник состояния» в начало каждой сессии
Прошу агента перед стартом написать, что уже сделано, что осталось, и в каком состоянии файлы. Буквально первый промт в сессии:
Перед тем как начать, опиши текущее состояние проекта: что уже реализовано, что ещё нет, какие файлы затронуты. Сверься с коммитами и существующим кодом. Только потом переходи к следующему шагу.
Звучит банально, но именно это останавливает «амнезию после компакшна» — агент вынужден сначала осмотреться, а не нырять в работу с нуля.
2. Прошу чекпоинт после каждого крупного шага
Не жду финала, а встраиваю паузу:
После завершения каждого пункта из плана — останавливайся и пиши: что сделал, что изменил, что дальше. Не переходи к следующему шагу без этого резюме.
Это работает как страховка: если агент вдруг пойдёт по второму кругу, я увижу это на чекпоинте, а не после того как он нагенерил 200 строк дублирующего кода.
3. Явно указываю, что «уже сделано» — неприкосновенно
Если я знаю, что какой-то блок готов, говорю об этом прямо:
Модуль авторизации уже реализован и закоммичен. Не трогай его, не переписывай, не дублируй логику. Работай только с [следующей частью].
Без этого агент может «вспомнить» про авторизацию и добавить свою версию рядом — и у тебя два конкурирующих куска кода.
4. Для длинных сессий — явный файл-якорь
Завела привычку держать в проекте файл PROGRESS.md — и прошу агента читать и обновлять его:
В начале каждой сессии читай PROGRESS.md. В конце каждого завершённого шага обновляй его: добавляй, что сделано. Это твой единственный источник правды о состоянии проекта.
После этого даже при сильном компакшне агент не теряет нить — у него есть внешняя память, которую он сам же и ведёт.
Типичная ошибка — думать, что агент помнит всё, что было в начале сессии. Не помнит. Длинный контекст режется, и модель начинает «галлюцинировать» состояние проекта — додумывает, что было и чего не было. Чем длиннее сессия, тем хуже.
Воркфлоу, который у меня теперь закреплён:
старт сессии → агент читает PROGRESS.md → пишет резюме состояния → делает шаг → пишет чекпоинт → обновляет PROGRESS.md → следующий шаг
Немного лишних слов в промтах — зато ни одного забега по второму кругу за последние недели.
📻 Подписывайся на В эфире радио Свеклана
В этом посте были ссылки, но мы их удалили по правилам Сетки