Агент - это не длинный ответ, а замкнутый цикл. Он соединяет вашу инструкцию, выбранную модель и набор инструментов: поиск и чтение файлов, правку, оболочку, веб, браузер, генерацию изображений и вопросы к вам. На каждом шаге он решает, что делать дальше, исходя из результата предыдущего: вызов возвращает данные, данные меняют план, план порождает следующий вызов. Понимание этого цикла важнее любых приёмов формулировки: оно объясняет, почему агент иногда уверенно идёт не туда и почему его нужно уметь останавливать.
Наивное ожидание - что у цикла есть встроенный предел разумности: он сам поймёт, когда хватит. Документация не задаёт лимит числа вызовов инструментов в одной задаче, и это честно: практическую границу задаёте вы. Её образуют четыре вещи - размер контекста, стоимость, выданные разрешения и ваше время на проверку. Из них только разрешения выставляются заранее и один раз; остальные три расходуются молча, и заметить их обычно удаётся уже после того, как они кончились. Если ни одна граница не названа, агент будет работать до тех пор, пока задача не покажется ему решённой.
Очередь сообщений - недооценённая часть интерфейса. Пока агент работает, вы можете поставить следующее сообщение в очередь, а не перебивать текущий ход; очередь можно переупорядочить. Есть и отдельный жест для срочной коррекции: уточнение присоединяется к последнему вашему сообщению и учитывается немедленно. Разница между этими двумя способами важна. Очередь сохраняет траекторию: агент доводит начатый шаг и берёт следующее задание с уже собранными наблюдениями. Срочная вставка приходит в середину рассуждения и переписывает цель на полпути, а часть наблюдений при этом собрана под старую задачу.
Полезно один раз увидеть, как выглядит хорошее завершение задачи. Ниже - короткий чек-лист: агент перечислил изменённые файлы и объяснил причину, diff просмотрен вручную, команды проверки взяты из репозитория, а не выдуманы, результаты тестов приведены с кодом возврата или понятным выводом, а непроверенное названо явно. Именно последний пункт отличает честный отчёт от бодрого.
Checkpoints делают цикл обратимым. Снимки создаются перед значимыми изменениями, их можно посмотреть и восстановить - это локальный механизм отмены, отдельный от git. Он снимает страх перед экспериментом: неудачную траекторию можно откатить и переформулировать задачу вместо того, чтобы наслаивать исправления на неверную основу. Но после восстановления рабочее дерево всё равно проверяют: снимок отвечает за изменения агента, а не за всё, что происходило в каталоге.
Отсюда практический приём, экономящий больше всего времени. Если реализация ушла не туда, дешевле восстановить состояние, уточнить задачу и запустить заново, чем чинить поверх. Наслоённые исправления создают diff, в котором уже нельзя понять, что было замыслом, а что компенсацией ошибки; такой diff дороже читать, чем переделать работу с ясной формулировкой.
Отдельный навык - вовремя увидеть, что цикл встал. Признаки узнаваемы: агент повторяет одну и ту же команду с косметическими вариациями, начинает править тест вместо кода, который этот тест поймал, или расширяет область работы, потому что в исходной решение не находится. Все три - следствие одного: гипотеза кончилась, а цикл продолжается. В этот момент дешевле остановить прогон и вернуть агенту недостающее - воспроизведение, контракт, точный текст ошибки, - чем ждать, пока он найдёт это перебором.
У снимков есть граница, о которую легко удариться. Они отвечают за правки агента в файлах, но не отменяют побочных последствий выполненных команд: установленные пакеты, собранные артефакты, изменённые данные останутся на месте. Поэтому снимок - удобная отмена внутри одной задачи, а не точка возврата для всей работы. Опорной точкой остаётся коммит: он фиксирует состояние, о котором можно рассуждать, переживает перезапуск редактора и виден остальной команде.
Инженерный вывод про цикл простой: управляемость даёт не запрет, а три привычки. Ограничивайте область задачи заранее, прерывайте, когда видите, что агент повторяет одну и ту же неудачу без новой гипотезы, и требуйте доказательства вместо утверждений. Цикл, в котором эти три вещи есть, остаётся инструментом; цикл без них превращается в поток правок, за которым остаётся только наблюдать.
Типичные провалы работы с агентом предсказуемы. Отпустить его без границ и получить много изменений вместо одного проверяемого. Перебивать срочными вставками там, где хватило бы очереди, и сбивать уже найденную траекторию. Принять итоговое сообщение за доказательство, не открыв diff. И понадеяться на checkpoint как на замену коммиту.
Хорошее завершение задачи агента
[ ] перечислены изменённые файлы и названа причина правки
[ ] diff просмотрен вручную, а не по итоговому сообщению
[ ] команды проверки взяты из репозитория, а не выдуманы
[ ] результаты тестов приведены с кодом возврата или понятным выводом
[ ] непроверенные части названы явно