ИИ может писать код, но умеет ли он делать красиво? Мой опыт с виджетом и аватарами

от автора

Это продолжение статьи «Вайбкодинг как управляемая разработка».

Неделя на маленькую штуку в углу сайта

Разработку я начал с самого виджета.

Мне было интересно, сможет ли ИИ сгенерировать виджет именно так, как я его вижу?
Не абстрактный чатик, а конкретное поведение, конкретный 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/