Автономные циклы агента: как ИИ работает сам
Один раз нажал кнопку - дальше агент крутится сам, пока ты спишь
Автономные циклы ИИ-агента простыми словами: конвейер из шагов, файл-мостик для памяти, стоп-кран от лишних трат и шаг-уборка. Запусти агента на ночь без сюрпризов.
Что такое автономный цикл агента простыми словами
Представь робот-пылесос. Ты же не водишь его за ручку по комнате? Нажал кнопку - и он сам нарезает круги: едет, наткнулся на стену, развернулся, поехал дальше. И так, пока не уберёт всё или не сядет батарейка.
Вот это и есть автономный цикл Автономный цикл - это когда агент сам, без твоего участия, повторяет один и тот же набор шагов снова и снова, пока не выполнит задачу или не упрётся в лимит. для агента. Ты не сидишь над ним и не диктуешь «теперь сделай тесты», «теперь почини», «теперь закоммить» по сто раз. Один раз описал круг, который надо нарезать, нажал кнопку - и всё. Дальше агент крутится сам.
Зачем вайбкодеру агент, который работает сам
Ты вайбкодер. Тебе-то зачем агент, который пашет без присмотра? Четыре причины.
- Время. Скучную рутину - тесты, чистку, мелкие фиксы - агент делает ночью. А ты утром смотришь результат за кофе.
- Объём. Одной задачей «добавь тесты ко всем функциям» накрываешь весь проект сразу. Не надо дёргать агента по одной функции вручную.
- Деньги под контролем. У здорового цикла стоит лимит по бюджету. Он сам тормознёт, а не накрутит за ночь счёт на круглую сумму.
- Качество. В цикл встраивают проверки: агент сам прогнал тесты, сам поправил, и только потом сохранил.
Обратная сторона тоже есть. Агент без присмотра умеет крутиться вхолостую, чинить одно и то же по кругу или спокойно сжечь весь бюджет. Поэтому надо понимать, как цикл устроен внутри. Иначе это не помощник, а заклинивший пылесос, который всю ночь полирует один и тот же угол.
Виды автономных циклов: от простого конвейера к сложному
Циклы бывают разной «мощности». Сразу строить космолёт не надо - почти всё закрывается самым простым видом.
Конвейер: цепочка отдельных запусков агента
Самый простой и самый рабочий вид. Берёшь большую задачу, режешь на шаги и запускаешь агента отдельно на каждый шаг. Классическая цепочка под одну фичу:
- Сделай - напиши код по описанию.
- Прибери - убери лишнее: мусорные проверки, отладочный хлам.
- Проверь - прогони сборку, линтер, тесты, почини что упало.
- Сохрани - сделай коммит с понятным сообщением.
Многоагентные циклы: когда задач много и они связаны
Фича большая и распадается на куски, которые цепляются один за другой? Тогда есть циклы посерьёзнее. Там агент сам делит задачу на части, запускает несколько «работников» параллельно, а потом аккуратно сливает результаты вместе и разруливает конфликты.
Звучит мощно. Но новичку это почти никогда не нужно. Просто держи в голове: такое существует. Берись за него, когда упрёшься в потолок простого конвейера, и ни секундой раньше.
- Задача - это одна понятная вещь: одна фича, один файл, один прогон тестов.
- Шаги идут строго по порядку: сделал - проверил - сохранил.
- Ты хочешь быстро и без головной боли - это 90% случаев.
- Кусков много, и они зависят друг от друга.
- Нужно гнать несколько частей параллельно, чтобы было быстрее.
- Уже есть написанное ТЗ, которое легко разбить на отдельные задачи.
Файл-мостик: как агент помнит прогресс между кругами
А вот и главная ловушка. В конвейере каждый запуск - новая сессия с чистым столом. Агент на шаге «почини» не помнит, что он сам же написал на шаге «сделай». Для него это будто первый день на работе.
Решение простое до гениальности: файл-мостик. В конце каждого шага агент записывает в обычный файл (часто его зовут SHARED_TASK_NOTES.md), что сделано и что осталось. А в начале следующего круга - первым делом его читает. Всё.
Выглядит блокнот примерно так - просто текст в файле:
- Сделано: добавил тесты для модуля авторизации.
- Сделано: починил баг с обновлением токена.
- Осталось: тесты на лимиты запросов, тесты на ошибки.
- Заметка: мок из tests/helpers можно переиспользовать.
Стоп-кран: как не сжечь бюджет автономным агентом
Цикл по определению крутится сам. Значит, кто-то должен сказать ему «хватит». И пусть этим кем-то будешь ты сейчас, а не твой кошелёк в три часа ночи. У любого автономного цикла обязан быть лимит. Видов четыре, и ставить можно сразу несколько:
- По количеству - «сделай максимум 10 кругов и стоп».
- По деньгам - «остановись, когда потратишь 5 долларов».
- По времени - «работай не дольше 8 часов».
- Сигнал «я закончил» - агент сам произносит кодовую фразу, когда работа сделана, и цикл выключается.
Плюсы и минусы автономного цикла
- Есть стоп-кран: лимит по кругам, деньгам, времени или сигнал завершения.
- Между кругами есть файл-мостик с прогрессом.
- Если шаг упал - текст ошибки летит дальше, а не теряется.
- Грязную работу делает отдельный шаг-уборка, а не запреты в промпте.
- Бесконечный цикл без лимитов - привет, ночной счёт.
- Нет мостика - агент забывает прогресс и ходит по кругу.
- Цикл тупо повторяет один и тот же провал, не разбираясь в причине.
- Все шаги в одном контексте - стол забивается, агент плывёт.
Не запрещай агенту - добавь отдельный шаг-уборку
Частая ошибка новичка: впихнуть в промпт гору «не делай так», «не пиши лишнего», «не трогай это». От стопки запретов агент становится боязливым и начинает халтурить везде - даже там, где надо было постараться.
Рабочий приём другой. На шаге «сделай» пусть агент работает от души и тщательно. А весь мусор за ним подберёт отдельный шаг-уборка со свежим столом. Два сфокусированных агента - один делает, другой убирает - обходят одного, загнанного в рамки запретов.
Пример: как покрыть проект тестами за ночь
Допустим, ты хочешь, чтобы агент за ночь покрыл тестами весь проект. Напишешь просто «добавь тесты везде» и уйдёшь спать? Утром рискуешь увидеть либо кашу, либо счёт на половину бюджета. Понимающий вайбкодер опишет цикл с мостиком и стоп-краном. Вот так:
Поработай в режиме автономного цикла: добавляй тесты к проекту, пока не покроешь все функции без тестов.
Правила цикла:
- В начале каждого круга прочитай файл SHARED_TASK_NOTES.md. Если его нет - создай. Бери из него список того, что уже сделано и что осталось.
- За один круг бери ОДИН модуль. Напиши тесты тщательно.
- Отдельным действием прибери лишнее: мусорные проверки, отладочные печати. Прогони тесты и почини, если что-то упало.
- В конце круга запиши в SHARED_TASK_NOTES.md, что сделал и что осталось.
- Стоп-кран: сделай максимум 8 кругов. Если все модули покрыты раньше - напиши строку РАБОТА ЗАВЕРШЕНА и остановись.
- Если один и тот же тест падает два круга подряд - не повторяй вслепую, опиши причину в заметках и переходи к следующему модулю.
Цикл закрутился не туда: чек-лист отладки
Оставил агента в цикле, а вернулся к мусору? Спокойно. Пробегись по чек-листу:
- Был ли стоп-кран? Нет лимитов - первым делом поставь их.
- Есть ли мостик? Без файла прогресса агент забывает сделанное и переделывает по новой.
- Не повторял ли провал? Один и тот же шаг падает кругами - значит, дальше надо передавать текст ошибки, а не голое «попробуй ещё раз».
- Не свалил ли всё в один стол? Длинные шаги лучше дробить на отдельные запуски со свежим контекстом.
- Не было ли запретов вместо уборки? Замени «не делай Х» на отдельный шаг-уборку.
Частые ошибки новичка в автономных циклах
- Цикл без стоп-крана. Самое страшное. Всегда ставь лимит по кругам, деньгам или времени.
- Нет файла-мостика. Агент забывает прогресс между кругами и буквально ходит по кругу.
- Слепое повторение провала. Шаг упал - передай дальше текст ошибки, а не просто «давай заново».
- Гигантская задача в один круг. Режь на мелкие шаги по одному модулю или файлу.
- Запреты вместо уборки. «Не делай Х» ломает агента - добавь отдельный шаг-уборку.
- Всё в одном контексте. Для серьёзных циклов разноси шаги по отдельным запускам со свежим столом.
TL;DR - если коротко
- Автономный цикл - агент сам гоняет «сделай → проверь → почини → закоммить», а ты не жмёшь «дальше» по сто раз.
- Рабочая лошадка - конвейер: цепочка отдельных запусков, у каждого свежий стол и одна узкая задача.
- Контекст между запусками обнуляется. Спасает файл-мостик типа SHARED_TASK_NOTES.md - агент пишет туда, на чём встал.
- Стоп-кран обязателен: лимит по кругам, по деньгам, по времени или сигнал «я закончил».
- Не пиши «не делай Х». Лучше отдельный шаг-уборка, который подметёт за агентом.
- Вернулся к каше после ночи? Пробегись по чек-листу: стоп-кран, мостик, ошибки, контекст.