Надежность автономных агентов: уроки отладки бесконечных циклов в Julius
Инженерный разбор того, как AI-агенты попадают в бесконечные циклы выполнения задач и почему классические методы SRE критически важны для стабильности автономных систем.

Суть
В мире разработки автономных AI-агентов стабильность работы часто важнее, чем чистая «интеллектуальная» мощность модели. Недавний инженерный отчет команды Julius Agent проливает свет на одну из самых распространенных и коварных проблем в этой области — бесконечные циклы вызова инструментов (tool loops). Ситуация, когда агент застревает, пытаясь выполнить задачу, и расходует ресурсы впустую, требует не просто исправления кода, а изменения архитектурного подхода к управлению состояниями системы.
Контекст
Обычно мы воспринимаем AI-агентов как черные ящики, которые получают запрос и выдают результат. Однако внутри это сложные машины состояний. Инженеры по надежности систем (SRE) сталкиваются с тем, что агенты могут вести себя непредсказуемо: они могут быть слишком «амбициозными», пытаясь сделать все сразу, или застревать на простых ошибках шаблонизации. В данном случае триггером для расследования стали два сбоя, произошедшие с интервалом в несколько минут, оба завершившиеся ошибкой тайм-аута ровно через 600 секунд.
Детали
Расследование выявило два типа сценариев, приводящих к зацикливанию агента:
Ловушка фазы реализации. Агент завершал этап исследования ошибки и сразу же пытался внести изменения одновременно в три разных файла. Не имея четких границ между фазами «исследование» и «исправление», система входила в бесконечный цикл выполнения, пока не срабатывал жесткий лимит времени.
Спираль рендеринга шаблонов. Второй случай был связан с отсутствием проверки пустых значений переменных. Агент пытался заполнить шаблон запроса, терпел неудачу, но вместо остановки продолжал вызывать инструменты снова и снова, не имея необходимых данных для продвижения вперед.
Для решения этих проблем была внедрена четырехуровневая защита:



