# Агент ходит по кругу: как выйти из зацикливания и не попадать в него

Пять слайдов собираются сорок минут, а результат тот же. Разбираю четыре причины зацикливания агента, порядок выхода и критерий готовности как профилактику.

URL: https://posts.danashkin.ru/guides/agent-hodit-po-krugu
Обновлено: 2026-09-08

---

## Коротко

**Главное**

- Агент ходит по кругу не потому, что сломался, а потому, что не знает, когда остановиться. У задачи нет критерия завершения, и он честно продолжает улучшать.
- Второй частый источник кругов - схема из нескольких ролей без дирижёра: одна роль правит, вторая возвращает на доработку, и обе довольны процессом.
- Со стороны это выглядит как медленная работа: пять слайдов собираются сорок минут, а результат каждый раз почти тот же самый.
- Выход из круга делается не уточнением задачи в том же чате, а остановкой: новый чат, задача с критерием готовности, один проход.
- Профилактика - одна фраза в постановке: что считается готовым и сколько попыток допустимо.

## Как выглядит зацикливание со стороны?

**Главное**

Как долгая работа без прогресса. Агент занят, что-то делает, отчитывается о шагах, а результат раз за разом возвращается к предыдущему состоянию. Время растёт, лимит тратится, готовность стоит на месте.

Расскажу обезличенно. Человек собрал инструмент, который делал презентацию: одна часть писала текст, вторая проверяла, третья оформляла.

Дальше началось странное. Тестовая презентация на пять простых слайдов собиралась по сорок минут. Причина обнаружилась при разборе: одна из ролей зацикливалась и раз за разом делала одно и то же действие.

Признаки, по которым круг видно рано:

- **Действия повторяются.** В отчёте агента одни и те же шаги с небольшими вариациями.
- **Результат не меняется по существу.** Меняются формулировки, а не состояние.
- **Время растёт нелинейно.** Задача, которая должна занимать минуты, идёт десятки минут.
- **Появляются взаимные правки.** Одна часть исправляет то, что вторая только что сделала.

Отдельный симптом того же семейства - обрыв длинной операции на середине с сообщением о прерванном ответе. Формально это другая история, но причина часто общая: задача не имеет конца и упирается в лимиты.

## Четыре причины, по которым агент ходит по кругу

**Главное**

Нет критерия готовности; задача сформулирована как улучшение; схема из ролей без дирижёра; противоречивые требования внутри одной постановки. Каждая лечится по-своему, и путать их дорого.

| Причина | Как выглядит | Что делать |
|---|---|---|
| Нет критерия готовности | «сделай хорошо», «улучши» | назвать проверяемый признак завершения |
| Задача про улучшение | «сделай лучше, чем сейчас» | заменить на «доведи до вот такого состояния» |
| Роли без дирижёра | одна часть правит, вторая возвращает | назначить, кто принимает решение и останавливает |
| Противоречие в требованиях | «коротко и подробно», «строго и живо» | выбрать одно, второе вынести в отдельный проход |

Вторая строка встречается чаще всего у нетехнических людей, и это понятно: «сделай лучше» звучит как нормальная рабочая формулировка. Для человека она нормальная, потому что человек сам решает, когда достаточно. У [ИИ-агента](/concepts/ai-agent) такого стопора нет.

Третья строка - специфика многошаговых схем. Когда одну задачу делят между несколькими исполнителями, кто-то должен иметь право сказать «принято». Без этой роли получается вечный обмен правками.

Как вообще устроены схемы из нескольких агентов и когда они оправданы, разбирал в материале про [мультиагентные системы](/guides/multiagentnye-sistemy).

## Что делать прямо сейчас, чтобы выйти из круга?

**Главное**

Остановить работу, не уточнять задачу в том же чате. Круг живёт в накопленном контексте: там уже лежат все неудачные попытки, и следующая уточняющая фраза добавит к ним ещё одну.

Порядок выхода, который работает:

1. **Останови работу**

   Не жди, что следующий проход всё исправит. Каждая новая попытка добавляет к контексту ещё один неудачный вариант.

2. **Проверь, что на диске**

   Открой папку и посмотри, что реально получилось. Часто оказывается, что рабочий результат был два круга назад.

3. **Откатись к последнему нормальному состоянию**

   Если правки накопились, вернись к точке сохранения. Как это делается словами, разбирал в материале про откат изменений агента.

4. **Начни новый чат**

   Чистый контекст без истории неудачных гипотез. Это не формальность: половина кругов держится именно на накопленном мусоре.

5. **Поставь задачу с критерием готовности**

   Одним проходом, с явным признаком завершения и ограничением по числу попыток.

Почему длинный разговор сам по себе ухудшает работу, разбирал подробно в материале про [гигиену контекстного окна](/guides/gigiena-kontekstnogo-okna). Точки сохранения и возврат - в разборе про [откат изменений агента](/guides/kak-otkatit-izmeneniya-agenta).

## Критерий завершения: главная профилактика

**Главное**

Одна фраза в постановке задачи: что считается готовым. Проверяемый признак, который можно увидеть глазами, а не оценить на вкус. Она убирает большую часть кругов ещё до их появления.

Сравни две постановки на одной задаче.

**Без критерия:** «Собери сводку по этим данным и сделай её понятной».

**С критерием:** «Собери сводку: три раздела, в каждом таблица и один абзац вывода, объём до полутора страниц. Когда это есть - готово, дальше не улучшай».

Вторая формулировка отличается не подробностью, а наличием финиша.

Что годится в качестве критерия:

1. **Количество.** Три раздела, пять пунктов, одна страница.
2. **Наличие элемента.** Есть таблица, есть вывод, есть ссылка на источник.
3. **Прохождение проверки.** Открывается в браузере, не выдаёт ошибок, файл не пустой.
4. **Явный запрет продолжать.** «Когда это сделано - остановись и покажи мне».

Четвёртый пункт выглядит избыточным, а работает лучше остальных. Прямое разрешение остановиться снимает встроенное стремление улучшать бесконечно.

Про постановку задач в целом есть отдельный разбор - [канон промпта для агента](/guides/kanon-prompta-dlya-ai-agenta).

## Роли и дирижёр: где схема ломается

**Главное**

Схема из нескольких ролей ускоряет работу только там, где есть роль, принимающая решение. Без неё качество не растёт, а время и расход умножаются на количество участников.

Логика «разделю задачу на роли, будет как в настоящей команде» выглядит убедительно и часто даёт обратный эффект.

Что происходит на практике. Первая роль делает черновик. Вторая находит недостатки, потому что это её работа. Третья оформляет. Вторая снова находит недостатки в оформленном. Круг замкнулся, и каждый участник добросовестно выполняет свою функцию.

Чего не хватает: роли, которая говорит «достаточно, берём». В человеческой команде это делает руководитель, и его отсутствие в схеме - основная ошибка.

Что делать:

- **Назначь принимающего явно.** «Ты решаешь, когда результат достаточно хорош, и останавливаешь работу».
- **Ограничь число проходов.** «Не больше двух кругов правок, дальше отдаёшь как есть».
- **Не дроби мелкую задачу.** Пять слайдов не требуют трёх ролей. Одна роль сделает быстрее и дешевле.
- **Начинай без ролей вообще.** Схема с ролями - оптимизация для больших задач, а не стартовая конфигурация.

Честно скажу: сам я в повседневной работе схемы с ролями почти не использую. Для большинства задач непрограммиста они добавляют сложности больше, чем дают выигрыша.

## Сколько ждать, прежде чем вмешаться?

**Главное**

Ориентир простой: если задача идёт втрое дольше ожидаемого и результат не приблизился, вмешивайся. Ждать «ещё немного» дороже, чем остановить и переформулировать.

Люди терпят долго, и на то есть причина: непонятно, работа идёт или буксует.

Как отличить:

**Работа идёт,** если в отчётах агента появляются новые действия, состояние файлов меняется, а он сам сообщает о продвижении по этапам.

**Буксует,** если действия повторяются, файлы не меняются или меняются туда-обратно, а формулировки отчёта становятся всё более общими.

Практический ориентир по времени я даю такой: заранее прикинь, сколько задача должна занять. Умножь на три. Дошло до этой отметки - останавливай.

Отдельно про деньги. Круги тратят лимит быстро, потому что каждый проход тянет за собой весь накопленный контекст. Сорок минут кругов на одной задаче стоят как несколько нормальных задач. Про то, как устроены лимиты и расход, есть материал про [стоимость работы с агентом](/guides/skolko-stoit-claude-code-podpiska-vs-api).

## Когда задачу надо забрать у агента?

**Главное**

Когда решение имеет цену: репутационную, юридическую или денежную. Автономность агента уместна в производстве, а не в решениях. Круг часто и означает, что решение он принять не может.

Полезное правило, которое стоит держать в голове: агент останавливается и передаёт задачу человеку в четырёх случаях.

1. **Вышел за отведённое время.** Ориентир превышен, результата нет.
2. **Зациклился.** Действия повторяются без продвижения.
3. **Наткнулся на выдумку.** Данных не хватает, и он начинает их достраивать.
4. **Уперся в решение с ценой.** Что-то, за что отвечает человек: формулировка для клиента, цифра в отчёте, юридический вопрос.

Четвёртый случай самый интересный, потому что внешне выглядит как техническая пробуксовка. На деле агент ходит по кругу, потому что задача требует выбора, который он делать не должен.

Проверка простая: спроси у него прямо, чего не хватает, чтобы закончить. Ответ вида «нужно решить, что важнее» означает, что решение за тобой, и круг закончится ровно в тот момент, когда ты его примешь.

## Частые вопросы

**Главное**

Что спрашивают чаще всего: можно ли настроить ограничение попыток, нормально ли это для сложных задач, помогает ли смена модели и что делать с частичным результатом.

### Частые вопросы

**Можно ограничить число попыток настройкой?**

Проще словами в самой задаче: «не больше двух попыток, дальше покажи что есть». Это работает надёжнее любых настроек и не требует ничего изучать.

**Для сложных задач круги - это нормально?**

Несколько итераций нормально, круги - нет. Разница в том, движется ли результат. Итерации приближают к готовому, круги возвращают к началу.

**Поможет ли переключиться на другую модель?**

Иногда, но это лечение симптома. Если у задачи нет критерия готовности, на круги пойдёт любая модель.

**Получилось наполовину. Забирать или доводить?**

Забирать и доводить руками или отдельной короткой задачей. Половина хорошего результата ценнее ещё сорока минут кругов.

## Главный вывод

**Главное**

Круги возникают там, где у задачи нет финиша. Проверяемый критерий готовности, ограничение числа попыток и явное разрешение остановиться убирают большую часть таких случаев ещё в постановке.

Главное, что стоит запомнить: агент не умеет решать, что достаточно хорошо. Это твоя работа, и она делается один раз в начале, а не пятнадцать раз по ходу.

Практический минимум: называй признак готовности, ограничивай число проходов, прикидывай время заранее и останавливай на тройном превышении.

Посмотри на задачу, которая у тебя сейчас идёт дольше ожидаемого. Есть ли в её формулировке хоть один признак, по которому агент поймёт, что закончил?

### Источники

- [Infinite loop - обзорная статья о бесконечных циклах и их причинах, Википедия](https://en.wikipedia.org/wiki/Infinite_loop)
- [Claude Code - создание отдельных подагентов под задачи](https://code.claude.com/docs/en/sub-agents)
- [Claude Code - типовые рабочие сценарии в официальной документации](https://code.claude.com/docs/en/common-workflows)
- [Claude Code - раздел документации о диагностике проблем](https://code.claude.com/docs/en/troubleshooting)
- [Контекстное окно - документация Anthropic об объёме контекста и его стоимости](https://platform.claude.com/docs/en/build-with-claude/context-windows)
