Коротко
Как выглядит зацикливание со стороны?
Расскажу обезличенно. Человек собрал инструмент, который делал презентацию: одна часть писала текст, вторая проверяла, третья оформляла.
Дальше началось странное. Тестовая презентация на пять простых слайдов собиралась по сорок минут. Причина обнаружилась при разборе: одна из ролей зацикливалась и раз за разом делала одно и то же действие.
Признаки, по которым круг видно рано:
- Действия повторяются. В отчёте агента одни и те же шаги с небольшими вариациями.
- Результат не меняется по существу. Меняются формулировки, а не состояние.
- Время растёт нелинейно. Задача, которая должна занимать минуты, идёт десятки минут.
- Появляются взаимные правки. Одна часть исправляет то, что вторая только что сделала.
Отдельный симптом того же семейства - обрыв длинной операции на середине с сообщением о прерванном ответе. Формально это другая история, но причина часто общая: задача не имеет конца и упирается в лимиты.
Четыре причины, по которым агент ходит по кругу
| Причина | Как выглядит | Что делать |
|---|---|---|
| Нет критерия готовности | «сделай хорошо», «улучши» | назвать проверяемый признак завершения |
| Задача про улучшение | «сделай лучше, чем сейчас» | заменить на «доведи до вот такого состояния» |
| Роли без дирижёра | одна часть правит, вторая возвращает | назначить, кто принимает решение и останавливает |
| Противоречие в требованиях | «коротко и подробно», «строго и живо» | выбрать одно, второе вынести в отдельный проход |
Вторая строка встречается чаще всего у нетехнических людей, и это понятно: «сделай лучше» звучит как нормальная рабочая формулировка. Для человека она нормальная, потому что человек сам решает, когда достаточно. У ИИ-агента такого стопора нет.
Третья строка - специфика многошаговых схем. Когда одну задачу делят между несколькими исполнителями, кто-то должен иметь право сказать «принято». Без этой роли получается вечный обмен правками.
Как вообще устроены схемы из нескольких агентов и когда они оправданы, разбирал в материале про мультиагентные системы.
Что делать прямо сейчас, чтобы выйти из круга?
Порядок выхода, который работает:
Останови работу
Не жди, что следующий проход всё исправит. Каждая новая попытка добавляет к контексту ещё один неудачный вариант.
Проверь, что на диске
Открой папку и посмотри, что реально получилось. Часто оказывается, что рабочий результат был два круга назад.
Откатись к последнему нормальному состоянию
Если правки накопились, вернись к точке сохранения. Как это делается словами, разбирал в материале про откат изменений агента.
Начни новый чат
Чистый контекст без истории неудачных гипотез. Это не формальность: половина кругов держится именно на накопленном мусоре.
Поставь задачу с критерием готовности
Одним проходом, с явным признаком завершения и ограничением по числу попыток.
Почему длинный разговор сам по себе ухудшает работу, разбирал подробно в материале про гигиену контекстного окна. Точки сохранения и возврат - в разборе про откат изменений агента.
Критерий завершения: главная профилактика
Сравни две постановки на одной задаче.
Без критерия: «Собери сводку по этим данным и сделай её понятной».
С критерием: «Собери сводку: три раздела, в каждом таблица и один абзац вывода, объём до полутора страниц. Когда это есть - готово, дальше не улучшай».
Вторая формулировка отличается не подробностью, а наличием финиша.
Что годится в качестве критерия:
- Количество. Три раздела, пять пунктов, одна страница.
- Наличие элемента. Есть таблица, есть вывод, есть ссылка на источник.
- Прохождение проверки. Открывается в браузере, не выдаёт ошибок, файл не пустой.
- Явный запрет продолжать. «Когда это сделано - остановись и покажи мне».
Четвёртый пункт выглядит избыточным, а работает лучше остальных. Прямое разрешение остановиться снимает встроенное стремление улучшать бесконечно.
Про постановку задач в целом есть отдельный разбор - канон промпта для агента.
Роли и дирижёр: где схема ломается
Логика «разделю задачу на роли, будет как в настоящей команде» выглядит убедительно и часто даёт обратный эффект.
Что происходит на практике. Первая роль делает черновик. Вторая находит недостатки, потому что это её работа. Третья оформляет. Вторая снова находит недостатки в оформленном. Круг замкнулся, и каждый участник добросовестно выполняет свою функцию.
Чего не хватает: роли, которая говорит «достаточно, берём». В человеческой команде это делает руководитель, и его отсутствие в схеме - основная ошибка.
Что делать:
- Назначь принимающего явно. «Ты решаешь, когда результат достаточно хорош, и останавливаешь работу».
- Ограничь число проходов. «Не больше двух кругов правок, дальше отдаёшь как есть».
- Не дроби мелкую задачу. Пять слайдов не требуют трёх ролей. Одна роль сделает быстрее и дешевле.
- Начинай без ролей вообще. Схема с ролями - оптимизация для больших задач, а не стартовая конфигурация.
Честно скажу: сам я в повседневной работе схемы с ролями почти не использую. Для большинства задач непрограммиста они добавляют сложности больше, чем дают выигрыша.
Сколько ждать, прежде чем вмешаться?
Люди терпят долго, и на то есть причина: непонятно, работа идёт или буксует.
Как отличить:
Работа идёт, если в отчётах агента появляются новые действия, состояние файлов меняется, а он сам сообщает о продвижении по этапам.
Буксует, если действия повторяются, файлы не меняются или меняются туда-обратно, а формулировки отчёта становятся всё более общими.
Практический ориентир по времени я даю такой: заранее прикинь, сколько задача должна занять. Умножь на три. Дошло до этой отметки - останавливай.
Отдельно про деньги. Круги тратят лимит быстро, потому что каждый проход тянет за собой весь накопленный контекст. Сорок минут кругов на одной задаче стоят как несколько нормальных задач. Про то, как устроены лимиты и расход, есть материал про стоимость работы с агентом.
Когда задачу надо забрать у агента?
Полезное правило, которое стоит держать в голове: агент останавливается и передаёт задачу человеку в четырёх случаях.
- Вышел за отведённое время. Ориентир превышен, результата нет.
- Зациклился. Действия повторяются без продвижения.
- Наткнулся на выдумку. Данных не хватает, и он начинает их достраивать.
- Уперся в решение с ценой. Что-то, за что отвечает человек: формулировка для клиента, цифра в отчёте, юридический вопрос.
Четвёртый случай самый интересный, потому что внешне выглядит как техническая пробуксовка. На деле агент ходит по кругу, потому что задача требует выбора, который он делать не должен.
Проверка простая: спроси у него прямо, чего не хватает, чтобы закончить. Ответ вида «нужно решить, что важнее» означает, что решение за тобой, и круг закончится ровно в тот момент, когда ты его примешь.
Частые вопросы
Частые вопросы
Главный вывод
Главное, что стоит запомнить: агент не умеет решать, что достаточно хорошо. Это твоя работа, и она делается один раз в начале, а не пятнадцать раз по ходу.
Практический минимум: называй признак готовности, ограничивай число проходов, прикидывай время заранее и останавливай на тройном превышении.
Посмотри на задачу, которая у тебя сейчас идёт дольше ожидаемого. Есть ли в её формулировке хоть один признак, по которому агент поймёт, что закончил?
Источники
- Infinite loop - обзорная статья о бесконечных циклах и их причинах, Википедия
- Claude Code - создание отдельных подагентов под задачи
- Claude Code - типовые рабочие сценарии в официальной документации
- Claude Code - раздел документации о диагностике проблем
- Контекстное окно - документация Anthropic об объёме контекста и его стоимости
