AI написал весь проект за ночь. Почему утром его пришлось удалить?

mr. Cooper 13 часов назад Нейросети и AI
AI написал весь проект за ночь. Почему утром его пришлось удалить?

В 23:40 я сформулировал задачу в чат: «сделай сервис учёта задач с авторизацией, канбан-доской и уведомлениями».

Нажал Enter и лёг спать.

AI работал всю ночь. Без пауз. Генерировал модели, роуты, компоненты, миграции. К девяти утра в репозитории лежало 340 файлов. Приложение открывалось. Кнопки нажимались. Демо-сценарий - регистрация, создание задачи, перемещение по доске - проходил идеально.

Я попытался добавить вторую роль пользователя. И выяснил, что права доступа зашиты добавлены прямо в компоненты интерфейса. Тесты не запускались - их тупо не было. В одном месте статус задачи хранился строкой, в другом - числовым кодом. Две части проекта работали с одной сущностью по-разному.

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

Это не история про «AI плохо пишет код». Нет, модель справляется отлично - на коротких отрезках.

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

Вот что я понял, разбирая этот ночной кошмар.

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

Промпт был слишком широким. «Сделай приложение» - это как сказать стажёру «построй дом». Без чертежей, без материалов, без плана. Модель заполняет пробелы сама. И делает это так, как ей удобно, а не так, как нужно мне.

Не было промежуточных проверок. Если бы я проснулся в три часа ночи и глянул, что там насоздавалось, я бы остановил этот процесс. Но я спал. А ошибки накапливались лавинообразно - каждое следующее решение строилось поверх предыдущего, и к утру исправлять было уже нечего.

Тесты отсутствовали. Я не просил их писать. Мне нужен был результат, а не качество. И я его получил - фасад, за которым руины.

Сейчас я делаю иначе.

Я больше не прошу AI написать проект целиком. Я разбиваю задачу на куски, которые модель может переварить за один раз. И после каждого шага проверяю, что получилось.

Вот как теперь выглядит та же самая задача:

  • Шаг 1. Спроектируй схему базы данных для задач и пользователей с ролями. Только схема, без кода. Статус задачи - строка из фиксированного enum.

  • Шаг 2. Реализуй модели и миграции по этой схеме.

  • Шаг 3. Напиши REST API для работы с задачами. Покрой базовыми тестами.

  • Шаг 4. Добавь middleware проверки прав на уровне API, а не в интерфейсе.

  • Шаг 5. Реализуй канбан-доску поверх готового API.

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

Я заметил ещё одну вещь.

Когда формулируешь правила для AI, начинаешь лучше понимать собственный проект. Если не можешь чётко сказать, где должна лежать бизнес-логика или какой формат у статуса задачи - значит, в проекте уже есть проблемы. AI просто делает их видимыми.

Теперь у меня есть несколько железных правил.

Никаких запросов на весь проект целиком. Только модули.

Архитектура фиксируется до генерации - стек, структура папок, формат ключевых полей.

Тесты пишутся с первого модуля. Даже простые. Это единственный способ быстро увидеть, что сломалось.

Коммит после каждого стабильного шага. Без исключений.

Ревью кода, а не только результата в браузере. Работающий интерфейс ничего не гарантирует.

Если задача не помещается в контекст модели - дроблю дальше. Лучше десять маленьких итераций, чем одна большая ночь.

Недавно я попробовал ещё один эксперимент. Попросил модель объяснить сгенерированный код своими словами.

Знаете, что я услышал? Путаницу. Противоречия. Модель не могла связно описать, как её собственные модули взаимодействуют друг с другом. А если она сама не понимает, что написала - какой смысл доверять этому коду?

Я всё ещё использую AI для генерации. Каждый день. Но теперь я не оставляю его одного с большим проектом на всю ночь.

AI - отличный инструмент для отдельных модулей и итераций. Он может написать функцию, компонент, скрипт. Он может отрефакторить кусок кода по чёткому ТЗ. Он может предложить пять вариантов решения одной задачи, и я выберу лучший.

Но архитектуру он не спроектирует. И согласованность на всём проекте не удержит. За этим стоит следить мне.

Удалять утром приходится не код, написанный AI. Удалять приходится последствия моего собственного решения - одного слишком широкого запроса вечером.

Комментарии

Пока нет комментариев. Будьте первым, кто напишет.

Чтобы оставить комментарий, войдите в аккаунт.

Похожие статьи