Эксперимент с генерацией кода с помощью ИИ

Сегодня меня опять потянуло в направлении Web-программирования. Интерес к информационной безопасности поутих, зато снова крутится в голове идея сделать движок для сообщества, аналогичный Pikabu или DTF, в идеале — с поддержкой PWA (и оффлайн-режима), протоколов IndieWeb и ActivityPub. Ну или для начала прикрутить PWA хотя бы к IntB.
Смотрел разные инструменты и технологии, и в итоге наткнулся на Bolt.new — генерацию приложений с помощью ИИ. К подобному я отношусь довольно скептично, но всё же решил попробовать. Запросил у него приложение, похоже на стену в социальных сетях. Увы, оказалось, что Bolt не поддерживает PHP (эх, вот теперь реально начинаю верить, что PHP может отмереть). Пришлось соглашаться на то, что дают — Node+Express и better-sqlite3 вместо просто sqlite. Всякие frameworks типа React или даже Svelte я использовать не стал, указал, что проект должен быть на чистом Javascript. Код сгенерировался, но на самом сервере запускаться отказался — какая-то ошибка с bindings для better-sqlite. Но я просто так не сдался, скачал проект к себе на компьютер и запустил там. К моему удивлению, заработало!
Правда, изначально в проекте не было почти ничего: ни разбиения на страницы (хоть какого-нибудь), ни нормальной регистрации пользователя, ни даже отправки сообщения через AJAX, без перезагрузки страницы. Можно было только ввести имя пользователя, после чего появлялось поле для отправки самого сообщения и кнопка рядом с ним. Ну и выделялись хештеги как ссылки (я сразу написал, что должна быть их поддержка), но при этом выборки постов по хештегам тоже не было.
Я стал экспериментировать дальше. Сначала запросил добавку разбиения на страницы (кстати, не знаю почему, но терпеть не могу его делать, и мои собственные проекты часто именно на этом этапе и застревают). Сработало как-то криво: кнопка появилась, но выводиться стало по 4 сообщения, а не по 10, как я запрашивал. Но вот при нажатии кнопки более старые соощения не подгружались. Потом запросил отправку сообщения через AJAX, без перезагрузки страницы — тут всё прошло хорошо. Дальше попросил бота добавить блок входа пользователя и страницу восстановления пароля, но, кажется, это оказалось за пределами его возможностей. Точнее, он написал код, который генерирует/проверяет JWT, сделал форму входа и ссылки для регистрации и восстановления пароля, но при попытке ими воспользоваться ничего не происходит. Да ещё сначала выдалась какая-то ошибка. Я так и не понял, в чём дело: то ли токены для генерации закончились, то ли задача оказалась слишком сложной для ИИ на данном этапе. Была ещё мысль дать команду на рефакторинг кода — вынести код для пользователей и код для постов в отдельные модули из server.js, но из-за того, что токены кончились, не стал экспериментировать.
В общем, пришёл к выводу, что пока что писать серьёзный код ИИ не готов. Даже для таких достаточно простых приложений. Максимум — подойдёт для быстрого прототипирования или обучения. Интересно, а есть ли self-hosted решения для таких задач? UPD: Как выяснилось, есть как минимум Tabby, FauxPilot и FireCode. Возможно, потом попробую…
Зато этот эксперимент поменял моё отношение к NodeJS. Прежде у меня было мнение, что NodeJS очень прожорлив в плане потребления памяти и поэтому не подходит для low load проектов на слабых VDS. Но запустив сгенерированное приложение у себя на компьютере, обнаружил, что RSS его процесса составляет всего 60 Мб. Для сравнения, суммарный RSS всех процессов php-fpm на VDS, где стоит этот сайт — 90 Мб.