Это продолжение статьи «Вайбкодинг как управляемая разработка».
Неделя на маленькую штуку в углу сайта
Разработку я начал с самого виджета.
Мне было интересно, сможет ли ИИ сгенерировать виджет именно так, как я его вижу?
Не абстрактный чатик, а конкретное поведение, конкретный UI, сценарии, состояния, открытие, закрытие, мобильная версия, десктопная версия, аватары.
Я подробно описывал поведение, прикладывал скриншоты, объяснял use cases. В итоге удалось добиться приемлемого результата. Виджет заработал примерно так, как я хотел. Но отдельно я упёрся в аватары.
Мне не хотелось скучных статичных картинок. Хотелось, чтобы оператор выглядел живым, т.е. немного двигался, кивал, печатал, создавал ощущение присутствия.
Для этого я снова использовал ИИ. В ChatGPT генерировал фотографии менеджеров высокого качества, а в Kling AI анимировал их, превращая в короткие движущиеся ролики.
Получилось очень классно. Но была проблема. Ведь ролики оказались большими и слишком качественными для маленькой аватарки в виджете.
Мне нужны были маленькие, лёгкие, оптимизированные Webm-файлы с видео оператора. Через сторонние сервисы и локальные программы результат получался ужасный. Совсем ужасный.
После долгих манипуляций мы с ChatGPT собрали целую папку Python-скриптов и библиотек. На вход подавалось видео высокого качества, на выходе получался компактный WebM нужного размера.
Фактически с виджетом и картинками я провозился целую неделю. Именно чтобы добиться качественного UI. Потому что без виджета и нормальных аватаров всё остальное теряло смысл.
Дизайн от ИИ
Я работаю в банке, поэтому заниматься вайбкодингом мог в основном вечерами и по выходным. Но тут ещё удачно пришлись майские праздники, и я смог уделить проекту много времени.
Очень сильно увлёкся вайб-кодингом, сидел допоздна. Это тот редкий случай, когда после основной работы ты вроде бы должен отдыхать, но вместо этого снова открываешь ноутбук, потому что интересно: «А что ещё можно успеть сегодня?»
Как ни описывай словами, ИИ всё равно часто выдаёт что-то в духе дефолтного Laravel из коробки. Формально работает, но визуально… ну нет. Не то.
После многочисленных попыток я нашёл подход, как добиваться более качественного дизайна. Это отдельная тема, и я, наверное, напишу про неё отдельную статью.
Но общий принцип такой. Нельзя просто сказать «сделай красиво». Надо показывать примеры, прикладывать скриншоты, давать HTML-фрагменты из чужих интерфейсов, уточнять, что именно нравится: отступы, карточки, табы, поведение, плотность, акценты.
Иногда я открывал в браузере консоль, выбирал фрагмент чужого сайта, копировал HTML и отдавал Claude Code вместе со скриншотом. Не для копирования один в один, а как визуальный ориентир.
Так постепенно удалось добиться внешнего вида, который мне понравился.
Кстати, в какой-то момент я понял, что во всём кабинете клиента после рефакторинга исчезла страница, где можно взять код виджета для вставки на сайт. Я просто говорю: «сделай вкладку «Код», где будет инструкция и сам код установки».
Через несколько минут вкладка появляется. В ней нормальный текст, код в блоке, который можно выделить, но нельзя случайно отредактировать, кнопка «Скопировать» в буфер обмена, всё адаптивно под мобильную версию.
И вот на таких нюансах начинаешь особенно ценить ИИ.
Потому что руками это несложно. Но таких мелочей сотни. И когда они появляются за минуты, это меняет ощущение от разработки.
CORS — реальность пришла и сказала «нет»
Как и ожидалось, больше всего проблем доставил раздел управления виджетом. Там есть превью, и архитектура непростая.
Оказалось, проблема в CORS (Cross-Origin Resource Sharing).
CORS не позволял виджету полноценно запускаться и общаться с нужными сервисами на реальном сайте.
Я попросил ИИ предложить варианты решения: «как это обычно делают современные сервисы вроде Яндекс.Метрики или Google Analytics, какие есть подходы, плюсы и минусы».
ИИ предложил несколько вариантов. Я выбрал один, который показался мне архитектурно правильным.
После этого начался большой рефакторинг часа на два. Были переработаны JavaScript виджета и Go-скрипт gateway.
И после этого виджет сразу заработал в боевой версии.
Вот это важный момент. ИИ может быстро писать код, но реальность всё равно будет приходить через нюансы (CORS, TLS, домены, окружения, заголовки, кэши и прочие радости продакшна). И здесь технический опыт очень помогает понять, что происходит и куда копать.
Продолжение в статье «Документация как топливо для ИИ»
В ней рассказываю, как документация становится важным инструментом для ИИ, а я остаюсь тем самым человеком, который спрашивает: «почему ты решил хранить это именно так?»
Если тема вайбкодинга, архитектуры ИИ‑продуктов и реального опыта вам интересна, подписывайтесь на мой Telegram‑канал «Системный архитектор».
Показываю детали, ссылки на продукты, промежуточные решения и те самые вещи, которые обычно не влезают в статью.
Коллеги‑вайбкодеры, разработчики, аналитики, архитекторы и все, кто уже пробует делать продукты с ИИ, приглашаю задавать вопросы в комментариях. Мне правда интересно сравнить практики, у кого что получается, где ломается, какие подходы работают, а какие лучше больше не повторять.
ссылка на оригинал статьи https://habr.com/ru/articles/1033932/