Skip to content
PПромтбук
RUEN
03Отладка агентов

Зацикливание агента

Почему агент крутится в цикле tool calls и как остановить.

Агент зациклился. Разбери.

Симптомы

  • Делает одну и ту же серию tool-calls
  • Не двигается к финальному ответу
  • Перепроверяет то что уже проверил
  • Возвращается к началу после каждой итерации

Шаг 1: Найди паттерн

Прочитай лог tool-calls. Что повторяется?

ПаттернЧто значит
A → B → A → B → ...Ping-pong: два инструмента противоречат друг другу
A → A → A → ..."Один шаг назад" — агент не доверяет результату
Чтение одного файла 5+ разИщет что-то, не находит, надеется на удачу
Tool-call → ответ → тот же tool-callНе использует кеш / память

Шаг 2: Определи причину

Причина А: Цель размыта

Агент не знает когда он "закончил". Признаки:

  • В системном промте нет критерия успеха
  • "Сделай хорошо" вместо "верни список из N элементов"

Фикс: добавь чёткое условие выхода.

Причина Б: Контекст не сохраняется

Каждый tool-call агент забывает что узнал раньше.

Фикс: попроси агента вести "лог наблюдений" между шагами:

После каждого инструмента запиши:
- Что узнал
- Что осталось проверить
- Текущая гипотеза

Причина В: Конфликтующие инструкции

Где-то промт говорит "проверь N раз" а где-то "будь быстрым". Агент пытается удовлетворить оба.

Фикс: упрости. Одна цель.

Причина Г: Tool возвращает противоречивое

Tool A говорит X, Tool B говорит ¬X. Агент мечется.

Фикс: проверь сами инструменты. Возможно, у одного из них баг.

Причина Д: Plan thrashing

Агент пересоставляет план каждый шаг.

Фикс: добавь "Раз составленный план — не меняй без явной причины. Если нужно — назови причину явно."

Шаг 3: Поставь лимиты

В любом случае:

  • Лимит на число tool-calls (например, max 15)
  • Лимит на длительность (max 60 секунд)
  • При превышении — попроси агента остановиться и выдать что есть

Шаг 4: Регрессия

Добавь тест на этот конкретный случай:

  • Input что вызвал луп
  • Expected: завершается за N шагов

Шаг 5: Профилактика

Системный промт должен иметь:

# Когда остановиться

- Ты выполнил [конкретное условие] → дай финальный ответ
- Ты сделал N tool-calls подряд без прогресса → остановись, объясни что не получается
- Ты не уверен в направлении → задай уточняющий вопрос вместо угадывания

Принципы

  • Лучше остановиться рано с "не знаю" чем долго крутиться
  • Лимиты должны быть встроены, не надеяться на агента
  • Каждый луп → один тест в регрессии
К подразделу «Отладка агентов»
Похожие промты