С появлением нейросетей реализовывать идеи в разработке стало гораздо проще. Идеи практически любого масштаба, надо сказать. Хочу рассказать о довольно крупномасштабной.
Дисклеймер: этот пост — про вайб-кодинг, поэтому в нём не будет приведено ни единой строки кода. Я просто показываю идею, не детали реализации.
История у идеи довольно долгая, и началось всё с… психотерапии. Да, вот так неожиданно: в рамках починки ментального состояния понадобилось мне вести дневник эмоций. После пары дней записывания в блокнот было решено, что не положено мне, разработчику всего и вся, не попытаться перенести это в цифровой вид — а поскольку формат существующих сервисов меня не устроил, я закатал рукава и вспомнил всё, что знаю о Kotlin.
Первая версия честно писалась вручную, без всякого использования нейросетей, да и могли они тогда существенно меньше. Выглядела она непритязательно, выполняла базовый минимум функций и хранила все данные в локальных файлах на устройстве, поскольку и денег, и сил на отдельный бэкенд было жаль; и около двух лет это решение работало и устраивало, пока не начало катастрофически тормозить из-за обилия ежедневных записей.
Назрела явная необходимость всё же выделить работу с данными в отдельный бэкенд. Знаний в мобильной разработке с тех пор не прибавилось, а вот нейросети сильно выросли в возможностях, появились и возмужали агентные среды разработки, и вот в один прекрасный вечер (на самом деле, несколько вечеров, конечно) была собрана новая версия — с наконец-то более-менее приятным дизайном (на который ушло больше всего токенов), а также с бэкендом. Поскольку ведение дневника происходит по вечерам, а я не большой любитель ночевать вне дома, сервер был поднят локально на рабочем ноутбуке, выпущен смотреть в локальную сеть, и стало совсем красиво.
Однако, на волне успеха с вайбкодингом руки чесались сделать что-то ещё этакое. Да и сервер на ноутбуке несколько ограничивал — всё же рабочий ПК это не сервер.
Спустя несколько минут вздохов о том, что вот бы было у меня железо, на котором можно домашний сервер поднять, и не забивать им рабочий компьютер, я внезапно осознал, что железо-то есть! Не совсем форматное, но есть. И железом оказался старый телефон с разбитым экраном. Несмотря на солидный возраст, он всё же был флагманом в свои бородатые года, и аппаратная начинка там до сих пор вполне способна крутить даже довольно сложные и нагруженные штуки. А разбитый экран — экран серверу, собственно, ни к чему.
Таким образом, изначальная конфигурация плана «воскрешение» сложилась. Решил даже вложиться: прикупил USB-хаб для подключения в локальную сеть по Ethernet — выбор остановился на TP-Link UH6120C. Добрался рутировать аппарат, поставил самый свежий ROM (умельцы не забросили разработку и доступен даже Android 14) и настроил контроль перезаряда — взрывов из-за вздувшейся батареи нам не нужно, и прожить без замены батареи хотелось бы подольше. Подключил хаб, пересобрал ядро с драйверами под его чип, и телефон встроился в локалку как влитой.
Но останавливаться на достигнутом было уже поздно — глаза у меня загорелись. Теперь в наличии есть устройство с процессором, оперативной памятью, микрофоном и динамиком, постоянно находящееся во включённом состоянии на одном и том же месте в доме; что это напоминает?
Правильно, умная колонка. С бюджетом в 3.5 тысячи на хаб, без которого в теории несложно было обойтись, и несколько вечеров времени на вайбкодинг собственно ИИ-ассистента и всего сопутствующего.
Структура вышла такая: центральный HTTP-сервер на Go, который обеспечивает интерфейс между всеми проектами, Android-приложение ассистента, Vosk для распознавания речи и SileroTTS для её синтеза. С последним пришлось повозиться, поскольку официально Android не поддерживается, но вместе с нейросетью и это было побеждено. Задержки ввода-вывода минимальные, измеряются миллисекундами, на сервер к API LLM ходит дольше.
Ну и, конечно, изначальный проект, с которого всё начиналось — сервер локальной апишки для «домашних» приложений, количество коих тоже разрослось пропорционально свободному времени.
Следующим этапом намереваюсь поднять там же OpenClaw либо самописный аналог и, вероятно, какой-то RAG для дома.
Мораль истории заключается в следующем: вайбкодинг — это не плохо. Даже каноничный вариант сгенерировал-запустил-получил ошибку-вставил ошибку в агента-перезапустил генерацию, от которого все плюются: небезопасно! Плохая архитектура! Невозможно поддерживать!
Да, да и да. И поэтому в продакшен я ничего из-под пера ИИ не потащу без пристального ревью никогда. Но есть сферы, где всё это не имеет значения, и сервисы для личного пользования — отличный пример. Этот код никогда не будет читать никто, кроме меня, у этих сервисов никогда не будет больше одного пользователя, и ничего из этого не будет доступно извне из интернета. И всем требованиям, которые предъявляются к этому коду, вполне соответствует тот, без сомнения, ужас, что мне понагенерировала нейросеть. Всему своё место, и на мой взгляд, место вайбкодинга — в подобных проектах.
Изначально запись была опубликована мной же в личном блоге — там не очень активно, но возможно, ещё будут апдейты по проекту.
ссылка на оригинал статьи https://habr.com/ru/articles/1027584/