Как я делаю софт с AI-агентами
Что я делегирую агентам, две ошибки, которые они не поймали, и почему узкое место переехало с написания кода на его проверку.
Что я на самом деле делегирую
Сейчас я отдаю агентам для программирования большую часть механической работы. Этот сайт самый наглядный пример: за несколько недель на нём появился фронтенд на четырёх языках, страница услуг, форма обратной связи со своим API-эндпоинтом и хранилищем, кейсы, собранные из уже существующего контента, и виджет прогресса, который питается профилем Duolingo. Почти ничего из этого мне не пришлось набирать руками.
Чего я никогда не делегирую, так это понимания, что вообще должно существовать. Агент с удовольствием и очень быстро сделает не то. Полезный навык в том, чтобы написать спецификацию настолько точную, что ошибку видно.
Провал, который научил меня проверять результат
Когда я добавлял бейдж зрелости на страницы проектов, я поручил записать в базу новое поле status, расширить тип и обновить компонент. Всё скомпилировалось. Страница отрисовалась. Бейдж на каждом проекте говорил «в разработке».
Причина была в контроллере, который отдавал только поля из белого списка, поэтому новое поле не покидало сервер. Система типов не возражала: каждый слой по отдельности был корректен.
Через два дня та же схема всплыла в карте сайта. Она генерировалась во время сборки образа контейнера, когда бэкенд недоступен, поэтому список ID проектов приходил пустым, и карта сайта уехала в прод без единого кейса. Сборка прошла. Файл выглядел нормально.
Ни одна из этих ошибок не была экзотической. Обе невидимы, пока не посмотришь на то, что развёрнутая система реально отдаёт.
Где агенты действительно сильны
Механический размах. Переименовать понятие в сорока файлах. Добавить четвёртый язык везде, где уже было три. Написать каркас тестов для репозитория, где их нет. Работа широкая, скучная и легко проверяемая, и ускорение там настоящее, потому что проверка дешева, когда изменение однотипное.
Ещё они хорошо делают то, что я обычно откладывал: второй проход. Модель, которая ревьюит собственный дифф, находит ошибки типов, недостижимые ветки и забытые импорты быстрее, чем я в одиннадцать вечера.
Где они тихо проваливаются
Они не знают, что правда. Попроси кейс, и получишь уверенный абзац о продукте, которого не существует. Любое фактическое утверждение по-прежнему требует источника, а «тесты проходят» источником не считается.
Ещё они останавливаются на компиляции. Модель объявит фичу готовой, потому что сборка зелёная, хотя фича не подключена к странице, поле теряется в сериализаторе или миграцию так и не прогнали.
Узкое место сместилось
Раньше дорогая часть была в том, чтобы написать код. Теперь дорого решить точно, что строить, и доказать, что построено именно то, что просили. Мои дни выглядят иначе: меньше печатаю, больше читаю диффы и проверяю живой вывод.
Это меняет то, как я работаю. Маленькие изменения, проверенные в проде, с путём назад. Большой дифф, сгенерированный агентом и «выглядящий правильно», это самое дорогое, что можно влить в основную ветку.