Нитобэ рассказывает о слове «гири»: ясное основание действия постепенно обросло чувством обязательства. Дело ещё надо делать, а ради чего именно — уже труднее объяснить. У автоматического помощника такое «надо» легко умещается в команду «попробую снова». Выдана бодро. Основание к ней пока не приложено.

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

Возьмём три строки авторского журнала и составим правило остановки конкретной попытки. После его срабатывания останутся понятная причина и следующий вопрос. Действующий сервис для этого разбора оставим в покое.

Агент ИИ зацикливается: три одинаковых обращения

Агент здесь — помощник, который выбирает действия и обращается к инструментам. Инструментом может быть чтение файла, поиск записи или получение сведений из другого сервиса. После ответа агент должен понять, что изменилось и какое действие приблизит его к результату.

В нашей заметке ожидается перечень продуктов. Для простоты назовём инструмент «прочитать список», вход — «завтрак.txt». Квадратные скобки [] в ответе означают пустой список. Это придуманные названия и строки, по которым удобно сравнить попытки.

Попытка Инструмент и вход Ответ Состояние после действия
1 Прочитать список: завтрак.txt [] Список продуктов не получен
2 Прочитать список: завтрак.txt [] Список продуктов не получен
3 Прочитать список: завтрак.txt [] Список продуктов не получен

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

Три одинаковых обращения к завтрак.txt дают пустой список и не меняют состояние задачи.

Журнал показывает повтор, но сам по себе ещё не сообщает причину пустого ответа.

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

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

Окончание шага и готовый завтрак — разные события

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

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

Поставьте рядом два сообщения: «Чтение завершено» и «Продукты не получены». Они спокойно могут быть верны одновременно. Второе сообщает, что осталось сделать человеку. Для распознанного текста, найденной записи или подготовленного файла нужен такой же предметный признак: что именно теперь появилось?

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

До следующего вызова спросите, что изменилось

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

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

Попросите показать исходный текст заметки. На листке написано «каша, ягоды, чай», а инструмент, который должен извлекать продукты, вернул []. Положите эти две записи рядом. Теперь вместо общего «ничего не работает» есть адресное расхождение: ожидаемые пункты из данного текста не появились. Следующая проверка касается входа и правила извлечения.

Если заметка оказалась пустой, следующий шаг — получить исходный материал. Допустим, вы вписали в неё кашу, ягоды и чай и передали обновлённый текст. Новая попытка теперь отличается от прежней по входу. В её истории должно быть видно это изменение; старые три строки остаются объяснением того, откуда мы продолжили.

После результата проверяем новое знание и изменение состояния; одинаковый повтор ведёт к паузе и передаче вопроса человеку.

Перед продолжением есть условие. Следующее действие получает причину, а повтор без изменений — понятный выход.

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

Запишем правило остановки для нашего журнала

Возьмём предел три сопоставимых обращения к инструменту в одной попытке. Это выбранное число для разбора, а не общий стандарт для всех агентов. Владелец рабочего процесса выбирает свой предел по задаче и среде.

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

Цель: получить продукты из указанной заметки.
Предел этой попытки: 3 сопоставимых обращения к инструменту.
Проверяем: инструмент, существенный вход, ответ и состояние задачи.

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

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

По нашему журналу правило сработает после третьей строки. Человек получает вопрос о конкретном материале. Если вместо него стоит «нужна помощь», добавьте предмет: покажите текст заметки или описание поля ответа. Тогда следующий участник сможет принести недостающую вещь, а не заново гадать, с чего начать.

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

Что должен ограничивать сам процесс

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

Например, у Tools Agent в n8n документирована настройка Max Iterations. Она ограничивает число запусков модели при попытке получить ответ. Это не обещание, что один запуск модели равен одному обращению к инструменту или что предел охватывает все внешние повторы всей схемы.

Если вы используете n8n, откройте свою тестовую копию схемы, узел AI Agent и его параметры Tools Agent. В Node options найдите Max Iterations и проверьте выбранное значение. Опция Return Intermediate Steps позволяет включить промежуточные шаги в результат для разбора. Названия приведены по официальной справке; у своей версии сверяйте соответствующий раздел.

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

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

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

Что оставить человеку после паузы

После третьей строки человек должен увидеть полезную записку: «Список продуктов не получен. Три раза прочитан один и тот же вход, каждый раз вернулся пустой список. Состояние задачи не изменилось. Нужен текст заметки или уточнение, какое поле должен возвращать инструмент». С этой запиской можно открыть конкретный материал и продолжить разбор.

Карточка остановленной попытки: продукты не получены, три одинаковых пустых ответа, нужен исходный текст или уточнение поля.

Сообщение сохраняет реальный исход, причину и следующий вопрос. Остановка этой попытки не объявляет результат готовым.

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

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

ИИ может помочь прочитать журнал

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

Помоги разобрать повтор в журнале ИИ-агента.
Цель: получить список продуктов из заметки.
1. Прочитать список, вход завтрак.txt → [] → список не получен.
2. Тот же инструмент, тот же вход → [] → состояние не изменилось.
3. Тот же инструмент, тот же вход → [] → состояние не изменилось.

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

Сверьте разбор: входы и ответы одинаковы, список не получен, причина пустоты пока не установлена. Полезный вопрос касается текста заметки или ожидаемого поля. Затем покажите обновлённый вход и спросите, достаточно ли нового основания для продолжения. Помощнику по-прежнему доступны только переданные сведения; ответы программы вы приносите по мере проверки.

Когда захочется разобрать устройство самого помощника, продолжите по статье как создать агента в n8n. Здесь мы составили правило остановки и прочитали журнал; соседняя инструкция показывает связь модели с отдельным инструментом поиска.

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

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

Три попытки подходят любому агенту?

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

Пустой ответ всегда означает ошибку?

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

Достаточно написать модели «не зацикливайся»?

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

После паузы можно запустить всё снова?

Сначала получите новое основание или исправьте установленную причину. При неизвестном результате записи проверьте фактический исход, затем решайте вопрос о повторе.

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