AI-ассистенты в кодинге: как не дать им застрять
Когда ИИ-агент по кодированию застревает: как правильно формулировать задачи и строить архитектуру
В какой-то момент работа с ИИ-помощником перестаёт быть волшебством. Вместо быстрых правок и готовых решений вы получаете длинные, расплывчатые ответы и огромный расход токенов. Агент, который раньше ловко справлялся с багами и новыми фичами, вдруг начинает топтаться на месте.
Причина простая: вы задали ему не ту задачу.
От быстрого старта к тупику
Инструменты вроде Claude и GPT-4 отлично справляются с точечными правками. Они изучают стиль вашего кода, учитывают тесты и вносят аккуратные изменения. Пока вы просите добавить небольшую функцию или поправить баг в уже работающей системе, всё идёт гладко.
Но стоит перейти к крупным изменениям — например, переписать весь слой аутентификации — и ситуация меняется. Агент начинает цепляться за существующие тесты и структуру кода. Он старается сохранить как можно больше из того, что уже есть. Это полезно при поддержке проекта, но становится помехой, когда нужно радикально изменить архитектуру.
Так появляется test hell — ситуация, когда тесты вместо помощи превращаются в жёсткие ограничения, мешающие серьёзным изменениям.
Почему растёт расход токенов
Когда вы просите агента рефакторить модуль, он пытается сохранить все существующие тесты. Но новая архитектура с ними несовместима. Агент делает минимальные правки, чтобы не нарушить текущую структуру. Вы повторяете запрос, уже более чётко. Вместо ответа приходят длинные, запутанные сообщения, а потребление токенов растёт.
Это не ошибка агента. Просто он одновременно пытается выполнить несколько противоречивых команд: изменить систему и при этом сохранить её прежний состояние.
Виновата не только агенты, а и архитектура
ИИ-агенты обучены на реальных pull request'ах. Они привыкли делать небольшие, безопасные изменения на стабильной основе. Это делает их надёжными для ежедневной работы — но не помогает, когда проект требует масштабной реструктуризации.
В таких случаях старые тесты и временные решения не являются вечными правилами. Они были полезны в прошлом, но теперь мешают прогрессу. Агент просто продолжает их защилять, потому что это соответствует его обучению.
Как работать с ИИ-агентами эффективно
Вот несколько подходов, которые помогают избежать указанных проблем:
1. Чётко определяйте границы и цели
Текущая формулировка: «Рефакторить модуль, чтобы все тесты остались зелёными».
Better: «Мы проводим архитектурный рефакторинг. Эти тесты будут убраны. Новый модуль должен по new spec. New acceptance tests represent new contract.»
2. Отделяйте исследование от реализации
Используйте агенты для создания прототипов в экспериментальных ветках. Разработайте новые структуры и получен