Код, написанный с ИИ: что проверить перед запуском

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

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

Маленькие изменения

Главное правило: просить у ассистента небольшие изменения и читать каждое. Когда модель за один раз переписывает десять файлов, никто не прочитает это внимательно, и ошибка уйдёт вместе с остальным. Одна задача, один понятный дифф, одна проверка.

Если изменение нельзя объяснить своими словами, его рано принимать. «Ассистент так написал» не объяснение, которое поможет через полгода, когда что-то сломается.

Ключи и пароли

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

Если ключ всё же попал в репозиторий, удалить его из файла недостаточно, он остаётся в истории. Такой ключ нужно перевыпустить у сервиса, который его выдал.

Зависимости

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

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

Формы и всё, что вводит пользователь

  • Данные из формы проверяются на сервере, а не только в браузере
  • Запросы к базе идут с параметрами, текст пользователя не склеивается с SQL
  • Вывод экранируется, чтобы чужой HTML не исполнился на странице
  • У формы есть защита от спама и ограничение частоты отправки
  • Загрузка файлов ограничена по типу и размеру

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

Когда что-то идёт не так

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

Проверка руками

Сборка без ошибок ещё не значит, что всё работает. Откройте сайт с телефона, отправьте форму, пройдите сценарий бота от старта до конца. Для того, что ломать нельзя, например приёма заказа, напишите автотест. Набросок теста ассистент сделает быстро, но проверять он должен то, что важно вам, а не то, что легко проверить.

Где ИИ действительно помогает

  • Заготовки страниц и компонентов по понятному образцу
  • Переписывание старого кода на новый синтаксис
  • Объяснение незнакомого куска кода перед правкой
  • Черновики тестов и сообщений об ошибках
  • Поиск причины ошибки по логу

Во всех этих случаях результат легко проверить. Хуже ассистент справляется там, где ошибка не видна сразу: безопасность, деньги, данные клиентов. Там его ответ стоит считать черновиком.

Что спросить у подрядчика

  • Кто читает код перед тем, как он попадает на сервер
  • Где хранится репозиторий и есть ли у вас к нему доступ
  • Где лежат ключи и токены, и кто их видит
  • Как проверяются форма, оплата и сценарий бота перед запуском

Пользуется подрядчик ИИ или нет, вопрос второстепенный. Важно, чтобы на каждый из этих пунктов был спокойный и конкретный ответ.

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