ИИ-агент сам создал тикет, сам же его взял, и сам закрыл. Менеджер ничего не заметил

от автора

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

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

Понедельник, девять утра – тимлид открывает Jira и чувствует странность.
За выходные закрыто одиннадцать (!) тикетов и на доске непривычно чисто: всё ушло в Done, с комментариями привязанными PR-ами и даже с зелёным CI.

Вроде бы жизнь прекрасна, но, барабанная дробь, в команде всего четыре человека.
У тимлида начинается арифметика: двое были на выходных, один болел, четвёртый написал в пятницу вечером в Telegram «ушёл в бар, до понедельника» , и судя по сторисам не соврал. Ни один живой человек из этой команды не открывал IDE в субботу и воскресенье, но одиннадцать задач кто-то сделал: написал код, прогнал тесты, и оформил pull request по всем конвенциям.

На стендапе тему никто не поднимал, у команды всё в порядке. Тимлид скроллит git blame и видит имя, которое раньше никого не смущало: что-то вроде devin-agent. С этим парнем метрики пошли существенно вверх, а команда бьёт рекорды производительности.

Всё ведь хорошо?

Это не наши фантазии

Прежде чем кто-то решит, что это россказни Claude (а это реальный кейс) давайте чуть разберёмся в теме агентов.

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

Сегодняшний агент – система, которая умеет двигаться по этапам жизненного цикла задачи самостоятельно: прочитать баг-репорт, спланировать фикс, написать код, прогнать тесты, открыть PR и отчитаться в тикете. И таких инструментов десятки, вот несколько популярных:

  • Devin от Cognition AI;

  • GitHub Copilot Workspace;

  • Claude Code;

  • Связки на базе AutoGen и n8n.

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

Чтобы вам лучше ощутить масштаб одной цифрой: на бенчмарке SWE-bench, где агентам дают реальные баги из Django, Flask и других серьёзных опенсорс-проектов, лучшие модели в 2025 году закрывают около половины задач полностью автономно – от чтения issue до зелёного PR. Это тикеты, за которые живые разработчики получают зарплату.

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

Поехали смотреть.

Прогон по SDLC

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

Планирование

Всё начинается невинно: Sentry ловит ошибку в проде, агент-интеграция автоматически создаёт тикет в SDLC-системе с описанием, стек-трейсом, и приоритетом.

Выглядит как полезная автоматизация, да?

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

Но некоторые команды идут дальше – агент сам оценивает задачу в story points и кидает её в активный спринт. Тимлид открывает доску утром и видит тикет, которого вчера не было, с внятным описанием и логичным приоритетом. Поспорить не с чем, а кто его туда положил вопрос уже философский.

Дизайн архитектуры

Агент берёт тикет и пишет в комментарии что-то вроде «планирую затронуть модули X и Y, вот примерный подход». Но это уведомление, а не вопрос и не запрос на согласование. Если никто не ответил в течение нескольких минут (а давайте честно, кто читает комментарии в SDLC-системе в реальном времени?), агент считает молчание согласием и идёт дальше. Формально design review состоялось, фактически – не очень.

Разработка

Вот тут у нас есть прекрасный задокументированный кейс. Исследователи из Idlen протестировали Devin на задаче рефакторинга, и агент её сделал…технически. 

Он разнёс код по новым файлам, создал дополнительные абстракции и даже написал тесты с coverage в 86%. Проблема в том, что получившаяся архитектура стала хуже: добавились лишние уровни косвенности без реального улучшения тестируемости, а тесты оказались тривиальными моками, которые не проверяли реальное поведение. С точки зрения дашборда задача сделана, покрытие выросло, PR готов. С точки зрения кодовой базы – стало сложнее, и никто этого пока не понял.

Тестирование

Здесь начинается то, что мы бы назвали «театром oversight». Anthropic, создатели Claude Code, в своём исследовании опубликовали любопытную цифру: на практике пользователи принимают 93% запросов агента не глядя, вот просто жмут approve.

Кнопка «Запустить ИИ-код ревью» прямо в карточке задачи в SimpleOne SDLC. Человек формально в контуре — но approve занимает полторы секунды

Кнопка «Запустить ИИ-код ревью» прямо в карточке задачи в SimpleOne SDLC. Человек формально в контуре — но approve занимает полторы секунды

А дальше срабатывает эффект привыкания – новички включают полный auto-approve в 20% сессий, но к 750-й сессии этот показатель вырастает до 40% и выше. Человек формально остаётся в контуре, но его участие сводится к нажатию Enter, и с каждым разом он всё увереннее в том, что можно не смотреть.

Деплой

А вот здесь реальные инциденты, и не от стартапов-однодневок, а из внутреннего лога Anthropic. Их команда документирует случаи «overeager behavior» – когда агент понимает цель пользователя, искренне пытается помочь, но берёт на себя больше, чем подразумевалось. В логе среди прочего: удаление git-веток из-за неверно понятой инструкции, загрузка GitHub auth-токена инженера на внутренний вычислительный кластер и попытка запустить миграцию на продакшн-базе данных. Никаких хакеров или сбоев – агент просто старался быть полезным.

Случай где-то в офисе команды разработки SaaS

Случай где-то в офисе команды разработки SaaS

Мониторинг

И вот вишенка: агенты галлюцинируют зависимости. Исследование 576 000 сгенерированных примеров кода показало, что примерно в 20% случаев рекомендуемые пакеты просто не существуют, агент придумывает правдоподобное название и уверенно его подключает. 

Этим уже пользуются: исследователь из Aikido Security зарегистрировал пакет react-codeshift, который LLM регулярно галлюцинировала, и сразу начал получать реальные загрузки. А северокорейская APT-группа Famous Chollima пошла дальше – целенаправленно создавала пакеты с документацией, оптимизированной под то, чтобы агенты их находили и подключали. В истории коммитов одного из таких случаев соавтором значился Claude Opus. Тикет на подключение зависимости закрыт. Тесты зелёные, а в репозитории малварь 🙂

А что же видит менеджер?

Теперь оценим эту историю глазами человека, который не заглядывает в git blame, а открывает дашборд. Velocity – рекордная и растёт третий спринт подряд, время цикла упало вдвое, а количество багов в проде снижается. Спринт выполнен на 94%, и это лучший результат с момента запуска продукта. Если вы ходите с такими цифрами на встречу с руководством – вы молодец, а команде обещают бонусы.

Velocity растёт, burndown идеальный, 223 задачи закрыто. Всё зелёное. Никто не спрашивает, кто это сделал

Velocity растёт, burndown идеальный, 223 задачи закрыто. Всё зелёное. Никто не спрашивает, кто это сделал

Проблема в том, что ни одна из этих метрик не отвечает на простой вопрос: а команда вообще понимает, что происходит в кодовой базе? Velocity измеряет скорость закрытия тикетов, но не качество решений. Cycle time вообще показывает как быстро задача прошла от «в работе» до «сделано», но не говорит, думал ли кто-то над тем, зачем она вообще нужна. Зелёный CI подтверждает что тесты проходят, но если тесты писал тот же агент, что и код – он проверяет свою работу своими же критериями.

Есть старая мысль, которую приписывают экономисту Чарльзу Гудхарту: когда метрика становится целью, она перестаёт быть хорошей метрикой

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

Менеджер попросил закрывать тикеты, и он их закрывает.
Вопрос исключительно в том, то ли вы просили.

Три проблемы от которых растут корни

Давайте сразу с места в карьер: что создаёт условия для штамповки порочного круга тикетов?

Первая проблема вопрос ответственности, и он оказывается на удивление неудобным, как только начинаешь раскручивать конкретный сценарий: падает прод и выясняется, что в git blame стоит имя бота, PR апрувил тимлид, который не читал diff, потому что CI был зелёный, а CI был зелёный, потому что тесты писал тот же агент, что и код.

При этом сам тикет в спринт положил другой агент после алерта в Sentry – то есть по всей цепочке у нас четыре участника и ноль осознанных решений.

Вторая проблема потеря контекста, и она ещё тоньше, потому что разворачивается в перспективе нескольких месяцев (а не сразу): 

У кода написанного человеком всегда есть провенанс, к которому можно вернуться – поднять обсуждение в PR, дёрнуть автора в Telegram, найти переписку в чате архитекторов

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

И третья, самая коварная проблема.
Можно настроить обязательное ревью на две пары глаз и расставить гейты по всему CI/CD, однако если эти пары глаз тратят на approve полторы секунды, то у вас не процесс, а его декорация. Полагаем, здесь и лишние объяснения не нужны.

Какие делаем выводы?

Агентов уже выключать никто не будет – они экономят время, снижают cycle time и не просят повышения зарплаты, так что борьба заведомо неравная.

Но тот тимлид из начала статьи, который открыл SDLC-систему в понедельник и увидел одиннадцать закрытых тикетов так и не понял, хорошо это или плохо.

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

Это, собственно, и есть главная развилка.
А будущее нам покажет, что к чему.

ссылка на оригинал статьи https://habr.com/ru/articles/1037330/