📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Вайб-кодинг в Cursor AI: полный гайд + реальный пример проекта (подходы, техники, трюки)

Олег Стефанов28:10

Transcription

Вайбкодинг - это новый способ создания программ, в котором ты забываешь, что код вообще существует. Ты просто описываешь, что хочешь на обычном языке, а нейронка пишет весь код за тебя. Сегодня я реализую проект для автоматической нарезки видео под текст сценария и сделаю это с абсолютно вайбкодинг подходом, вообще не заглядывая в файлы программы. Покажу весь процесс создания проекта с нуля до готового приложения. Поделюсь принципами и подходами, которые использую для максимальной эффективности. И плюс опишу логику, по которой действую во всех своих вайбкодинг проектах. Погнали!

Привет! Меня зовут Олег. Днем я разработчик, а по вечерам на этом канале вайбкодер. Пилю свои небольшие проекты, тестирую нейронки и AI-инструменты. Смотрю, что работает, а что не очень.

Что такое вайбкодинг? Этот термин придумал Андрей Карпатый, сооснователь OpenAI и бывший глава AI в Tesla. В феврале 2025 он написал: это новый вид программирования, где ты полностью отдаешься вайбу, забываешь, что код вообще существует. Это стало возможным, потому что LLM-ки стали слишком хороши. Я прошу сделать максимально тупые вещи, вроде уменьши падинк у сайдбара вдвое, потому что мне лень самому это искать. Я всегда жму accept all, и изменения кода больше не читаю. Когда появляются ошибки, я просто их копипастую без комментариев. Обычно это их чинит. Код разрастается настолько, что я уже не понимаю его, как раньше. Чтобы разобраться, пришлось бы реально посидеть и почитать его какое-то время.

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

Однако даже такой легкий, на первый взгляд, подход на самом деле не так прост. Да, ты можешь не смотреть в код, но это не значит, что твой проект создастся сам по себе в лучшем виде, каким-то магическим образом. Тебе все еще нужно четко описывать требования, контролировать результат и проектировать архитектуру. Часто это совсем неочевидно и не так уж просто. Поэтому сегодня на примере одной программы покажу основные нюансы вайбкодинга. Плюс поделюсь принципами и фишками, которые использую при такой разработке с AI.

Кстати, если вы кодите что-то серьезное, поднимаете open source нейронки, обучаете модели или рендерите видео, то узким горлышком вашего проекта практически гарантированно станет железо. И в таких случаях на помощь приходит Immerse Cloud. Это специализированное GPU облако с самым большим ассортиментом видеокарт Tesla и RTX в России. У ребят доступно тринадцать моделей, включая RTX 5090, H200 и H100. А для особо тяжелых задач есть технология NVLink, позволяющая объединять видеокарты в единый мощный кластер. Отдельное удовольствие это посекундная тарификация ресурсов. Ты платишь только за фактическое время использования. Запустил сервер на десять минут и заплатил, соответственно, только за десять минут. Остановил виртуальную машину и списание прекратилось. Никаких переплат за простой. Для тех, кому нужен сервер на постоянку, есть скидки на долгосрочную аренду до пятидесяти процентов в зависимости от конфигурации. Еще крутая штука это библиотека готовых предустановленных образов для работы с AI. То есть разворачиваешь виртуалку, а там уже все готово: драйвера, CUDA и нужны библиотеки. Можно сразу начать работать, не тратя время на конфигурацию. По ссылке на Immersed Cloud в описании вы получите плюс двадцать процентов к первому пополнению. Регистрируйтесь, чтобы использовать современные технологии по максимуму.

А теперь продолжаем. Окей. Прежде чем приступить к написанию кода, нам нужно понять, какую проблему мы хотим решить. Боль у меня вот такая. Во время производства видео на YouTube я или монтажер тратим десятки часов на отслушивание исходного материала и нарезку лучших дублей для получения драфта видео, в котором я говорю без запинок нужный текст сценария. Я задолбался это делать и поэтому хочу автоматизировать. Идея следующая. По моим наблюдениям, самый удачный дубль любой фразы это почти всегда самый последний записанный дубль. Это значит, что можно запилить некий алгоритм, который транскрибирует полное видео со всеми сказанными дублями. Затем мы вместе с LLM просто сопоставим транскрипцию и текст сценария. И в итоге мы сможем получить тайминги последних дублей всех предложений. Затем останется просто автоматически нарезать исходное видео по найденным таймингам. Вроде нормальный подход. Попробуем сделать.

Но перед началом реализации программы нам нужно определиться со стеком. Стеком здесь я называю используемые языки программирования, API, базы данных и другие интеграции. К сожалению, нельзя просто начать писать программу без определения конкретного стека. Стек здесь, по сути, определяет архитектуру проекта, и пока что его выбор лучше не доверять нейросетям, так как, во-первых, это очень критичный этап, от которого сильно зависит сложность, масштабируемость и надежность проекта. Нейронки часто предлагают переусложненные варианты архитектуры даже для маленьких приложений. А во-вторых, нейронкам по умолчанию недоступна актуальная информация о новейших сервисах, API и моделях. И поэтому собирать какие-то навороченные AI SAAS решения на передовых технологиях не выйдет.

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

Первое. Frontend - это часть приложения, которая запускается в браузере пользователя. Тут находится интерфейс, с которым взаимодействует юзер. Простейший фронт можно писать на чистой связке HTML, CSS и JavaScript, но по факту стандарт для современных сайтов сейчас это NextJS плюс TypeScript. TypeScript - это типизированная версия JavaScript. В ней потенциальные ошибки отлавливаются еще во время сборки проекта.

Второе. Backend. Это все, что выполняется на вашем удаленном сервере: создание пользователей, обработка информации, управление хранением данных и взаимодействие с внешними API. Вот самые популярные Backend стеки. Самые подходящие для соло проектов это NodeJS или Python. Go хорош для высоконагруженных серверов, а Java Kotlin - это уже enterprise уровень, для маленьких проектов это перебор. Если нужно мобильное приложение, то под Android стандартно это Kotlin плюс Jetpack Compose, а под iOS - Swift плюс SwiftUI. Либо универсальные React Native на TypeScript и Flutter на Dart. Они компиляция на обе платформы из единого исходного кода. Хороши для соло проектов, чтобы не выполнять два раза одну и ту же работу.

Также важная часть бэкэнда - это базы данных. Их существует множество типов, но главные два - это SQL и NoSQL базы данных. NoSQL нужны для высокой скорости и гибкости, а SQL - для простоты и максимальной структурированности. В девяносто процентов проектов будет достаточно SQL базы. Самая популярная версия такой БД - это PostgreSQL. Я использую ее практически везде. Если же проект чисто локальный или супер маленький, то беру ультралегкую альтернативу SQLite. Она хранит все данные в одном файлике.

Для ИИ-проектов практически всегда нужна интеграция с LLM. И тут выгоднее всего подключаться к агрегатору API типа OpenRouter. Такой подход легко позволит менять модели, не переписывая код под каждого провайдера. Если проект взаимодействует с речью, то, как правило, можно законнектить ElevenLabs, OpenAI или Minimax. Конкретный выбор зависит от задачи. А на случай генерации видео или картинок я всегда юзаю Fal.AI. Там самый широкий выбор генеративных моделей по API.

Эти компоненты в различных комбинациях покрывают девяносто процентов проектов. Если же ваша задача реально специфичная, то лучше делать отдельный ресерч конкретно под нее. Пример стека под необычную задачу можете глянуть в моем предыдущем видео про SAS Generator Reels. Там я заюзал немного более нестандартный для меня стек, так как делал сложную задачу с генерацией AI-аватаров.

Под текущий проект автонарезки видео возьму базовый Python без фреймворков, так как для начала мне будет достаточно просто иметь локальный скрипт на моем компьютере, который решает задачу. Также здесь точно понадобится API для распознавания голоса. Возьму OpenAI, так как не хочу пока закупать подписку от ElevenLabs и тратить время на изучение других моделей распознавания речи. И сто процентов для проекта понадобится LLM. Подрублю OpenRouter. Вроде все.

По инструментам для работы с кодом возьму Cursor. Недавно вышло много крутых моделей, хочется их потестить в бою. Однако в качестве альтернатив можно спокойно брать Claude Code, Gemini CLI, Codex CLI. Они отлично годятся для вайб-кодинга, внутри имеют достаточный функционал и хорошие модели.

И еще один важный момент: прежде чем писать первый промпт, нужно понять, как конкретно будет работать алгоритм нашей программы. Вот что я придумал. Скрипт должен принимать на вход видеофайл 4K 25 FPS. На выходе я хочу видеть файл FCPXML-формата. Этот формат хранит в себе информацию о монтажном проекте, и его можно открыть в любой популярной программе для монтажа. Затем импортировать исходное видео, и программа автоматически нарежет исходный видос в соответствии с таймингами из FCPXML-файла.

Как будет формироваться такой файлик? Вот пошаговый алгоритм. Первое - из исходного видео будет доставаться аудиодорожка. Затем она будет отправлена на транскрибацию, и на выходе этого этапа мы получим тайминги каждого сказанного слова. Далее программа будет брать распознанные слова пачками по несколько штук вместе с парой предложений из текста сценария видео. Эта информация будет отправляться в LLM, которая будет решать, в этой пачке звучит только текущее предложение или уже следующее. Если только текущее, то возьмем следующую пачку слов, а предложения сценария оставим теми же. Будем повторять так, пока не дойдем до слов транскрипции, принадлежащих следующему предложению в сценарии. Это будет значить, что все дубли предложений уже найдены, и нам остается просто найти тайминги слов последней попытки. Эти тайминги сохраним как успешный фрагмент, который должен попасть в финальный видос. И теперь сдвинем выбранные предложения из сценария на один, взяв следующие как текущие. Будем повторять этот алгоритм, пока не дойдем до конца транскрипции и сценария. Затем останется лишь сконвертировать сохраненные тайминги успешных последних дублей в FCPXML-файл. В теории должно работать.

Вот теперь погнали, реализуем. Откроем Cursor, выберем новую папку, туда закину сразу source-видео и текстовый сценарий для проверки скрипта. View оставлю Agents, так как это как раз идеальный для нас расклад. С такой настройкой мы сосредотачиваемся на работе агента и не особо смотрим в код. В правилах проекта задам наш стек и ограничения, чтобы не думать об этом в будущем. Нажимаю Cursor, Settings, Cursor Settings, Rules and Commands, Project Rules, Add Rules. Название введу Python. В настройках расставлю Always Apply, чтобы правило работало всегда. В содержимом пропишу инструкции для безопасной работы с типами, плюс описание работы с зависимостями, чтобы агент не запутался в библиотеках. Полный текст правила можете глянуть в описании видео. Тут важно понимать, каким языком, фреймворком и зависимостями вы работаете. Правила будут сильно зависеть от стека. Например, в моем случае язык Python по умолчанию не типизированный и может выплевывать неожиданные ошибки во время работы программы. Соответственно, чтобы этого избежать, я прошу грамотно работать с типами и запускать проверки после каждого изменения кода. Конкретные особенности технологии вы можете постичь по мере накопления опыта. Или, как вариант, можно поговорить с GPT на предмет подводных камней и нюансов выбранного стека.

Окей, далее попросим агента установить git репозиторий и .gitignore для него, чтобы наши изменения в будущем надежно сохранялись и не портились неудачными попытками агента реализовать новую фичу. Git - это важнейший инструмент хранения версий кода. Используйте его во всех проектах, где код вам дорог и вы не хотите его потерять. Git - это, по сути, просто цепочка наборов изменений текстовых файлов, которые более менее надежно хранятся в папке. Плюс удобно пушиться в репозиторий типа GitHub.com.

Модель агентов в Cursor оставлю Opus 4.5, он достаточно крутой сейчас. Вообще рекомендую брать самые умные нейронки, на которые вам хватает бюджета. Интеллект LLM-ки очень сильно влияет на сложность работы. Со слабыми моделями будет вайбкоде очень больно. Они просто не будут следовать вашим инструкциям. Лучшие модели можно смотреть на лидербордах. Например, один из самых популярных это сайт lmarena.ai, в разделе Text Coding, там как раз сейчас топ один - это Opus 4.5.

Далее в .gitignore попрошу добавить наш скрипт точка txt, так как это не код и его не нужно сохранять в репозитории. Плюс попрошу создать первый коммит в git. Коммиты в git - это что-то типа чекпоинтов. Изменения, попавшие в коммит, надежно сохранены. К ним можно будет вернуться в будущем, если что-то пойдет не так. И историю коммитов можно посмотреть справа на вкладке Git.

Этот шаг я пропущу. Теперь давайте реализуем первый этап - извлечение аудио из исходного видео. Я буду специально имплементировать наш алгоритм пошагово, чтобы в случае проблем сразу их замечать и фиксить. Плюс тогда задачи для ЛЛМ будут не супер тяжелые. Вероятность сделать при таком подходе что-то рабочее сильно возрастает. Мы будем идти от простого к сложному, наполняя нашу программу фичами и усложняя основной процесс. Если же попытаемся сгенерировать весь проект в один промпт, то вероятность багов будет слишком высокой, и разгребать их будет слишком сложно. Трудно будет понять, что вообще работает, а что нет. Все будет запутано. Поэтому создам нового агента и введу промпт: "Создать Python скрипт, который принимает видео в качестве параметра, конвертирует его в сжатый mp3 аудиофайл и сохраняет в папку Output слэш Timestamp". Запроблю все изменения и вызовы.

Отлично! Аудиофайл создается, и звук в нем корректный. Следующим этапом добавим транскрибацию аудио. Так как тут понадобится использовать OpenAI зависимости, то докинем MCP Context 7, чтобы программа лучше ориентировалась в том, как работать с библиотеками. Если вы не знаете, что такое MCP и как их подключать, то можете глянуть вот этот мой ролик, там я все объясняю. Добавим новое правило проекта, чтобы агент использовал Context 7 всегда, когда ему нужно работать с библиотеками. И да, попросим закоммитить текущие файлы. Вообще, люблю коммитить вручную, так как будто надежнее. Но можно и попросить это сделать агента. Тут в целом без разницы. Разве что описание коммита от агента будет, как правило, более развернутым.

Теперь можем открыть новый диалог и попросить реализовать транскрибацию. Вот добавь к скрипту, который генерирует аудио из видео, следующий шаг - транскрибация с помощью OpenAI GPT-4O Transcribe, аналог Whisper. Я хочу получить тайминги каждого слова в той же папке Output слэш Timestamp в json файле. Запускаем.

Теперь программа требует наш OpenAI API ключ. Сгенерируем его на platform.openai.com, перейдя в Настройки, API Keys, Create New Secret Key. Сохраним его в файлик .env, чтобы не потерять, и добавим в игнор кита, чтобы он не попал в наш репозитории с кодом, так как это секрет. Вообще, .env файл с параметрами программы - это фундаментальный элемент, который должен присутствовать в девяноста девяти процентах проектов. В него я рекомендую выносить все глобальные настройки, которые, возможно, придется менять после релиза. И плюс параметры, которые отличаются на тестовой и продакшн средах. В общем, если не знаете, что такое переменные среды, то копните этот момент поглубже.

Запустим, транскрибируется. Ага! Получаем какую-то ошибку. Скамлю ее в чат. Агент говорит, что формат таймингов слов возможен только с моделью Whisper 1. Текущая модель GPT-4O Transcribe типа не может это сделать. Хм, окей. Закину ему документацию API по транскрибации и скажу, что все равно хочу GPT-4O. Изучив док, он все равно считает, что нельзя это реализовать с помощью GPT-4O. Чекну сам документацию. Действительно, окей. Придется перейти на Whisper 1. Запускаем.

Через восемнадцать минут распознавания получаю результат в json файлике, как и хотел. Заигнорю всю папку Output в Git, чтобы эти файлики не подсвечивались синим как изменения, и закоммичу текущий прогресс. Давайте попросим также почистить беспорядок, переместив полезные файлы кода в SRC, удалив мусор и переименовав файлы в более соответствующие имена.

Так как транскрибация аудио работает слишком долго, предлагаю переиспользовать результаты предыдущих распознаваний. Если при запуске скрипта указана существующая Output папка и если в этой папке уже есть json с транскрипцией, то будем пропускать шаг распознавания текста. Отлично! Теперь шаг пропускается, если json файл уже есть. Закоммитим.

А теперь попробуем реализовать самую сложную часть скрипта - проход по транскрипции и сценарий для нахождения таймингов последних дублей. Вот такой вот промпт получился. Запустим. Готово. Теперь поставим нужные переменные в env и протестим программу. Запускаем. Мгм! В результате получилась какая-то дичь. Слова начала и конца попыток какие-то странные. Плюс тайминги неправильные. Попрошу агента исправить.

Спустя несколько минут Опус решает, что все исправлено. Окей, пробуем протестить. Ага! Тут есть проблемы, которые возникают, если некоторые предложения не прозвучали в транскрипции. Попрошу исправить. Ага! Проблемы все еще остаются, и корень их в том, что Whisper очень неточно транскрибирует голос. Он почему-то игнорирует фразу "Привет, меня зовут Олег" и еще пару предложений. Они полностью отсутствуют в транскрипции.

Чтобы исправить ситуацию, переключусь на более надежный API для транскрибации. Возьму ElevenLabs Scribe модель. Думаю, агент без проблем разберется, как это реализовать с помощью Context 7. Поэтому просто скажу ему переделать Whisper на ElevenLabs транскрипцию. Для запуска нужно сгенерировать ElevenLabs API ключ. Захожу на сайт, затем в раздел Developers, API Keys, Create Key, подставлю наш файлик .env. Готово. Можно запускать. Мгм! При запуске опять возникают какие-то проблемы с поиском предложения с приветствием. Однако слова успешно распознались. Они находятся в транскрипции. Поэтому закоммитимся и попробуем зафиксить наш алгоритм. Ага! Update внутри алгоритма выдает какую-то фигню как результат. Найденные попытки не являются последними. Он выбрал какие-то неудачные обрубки. Попробую поправить.

Через несколько итераций фиксов получаю тайминги попыток, более или менее похожих на то, что нужно. Закоммичу и попробую добавить шаг рендера, чтобы посмотреть, какой результат получается, если нарезать по таймингам. Реализовать рендер проще, чем делать сразу файлик для импорта в монтажную программу. Чтобы рендер шел быстрее, прошу генерить файл в 360р. И вот что получилось.

Я сделал веб-сервис, который генерирует видео с вашим аватаром, а также автоматически монтирует reels со вставками, перебивками и уместными сгенерированными картинками и видео на заднем фоне. Вот такое видео я смог создать за пару минут на моей системе, подав на вход промпт сценария и монтажный промпт. С помощью такого контент-завода можно легко создавать вертикальные ролики на автомате без использования камеры, микрофона и Premier Pro.

Расскажу, как это все работает, какие нейронки находятся под капотом, как создавал такую систему, какие проблемы встретил и как их... Создавал такую хитрую систему, как создавал такую хитрую систему, какие проблемы встретил и как их решал.

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

После множества фиксов алгоритм стал запутанным черным ящиком. Поэтому, чтобы понять, как это работает, попрошу Нейронку рассказать мне устройство текущей программы. Ага! И еще попрошу показать промты, которые она использует при вызове LLM.

Вижу как минимум две проблемы. Первая. Судя по алгоритму, мы можем задетектить любую не последнюю попытку и сказать, что она последняя, так как мы прощаем, если не нашли следующее предложение. Надо жестко требовать наличие следующего предложения, чтобы быть уверенным в том, что все попытки озвучки текущего предложения уже прозвучали. И вторая проблема это немного неочевидный промт для LLM. В нем не описывается, что конкретно должно быть в полях, которые мы ожидаем от модели. Попрошу это исправить.

Отлично! Прогоню обновленный алгоритм детекта попыток. Ага! Теперь все предложения скипаются. Нужно пофиксить. После фикса получается вот такой вот результат нарезки.

Привет! Меня зовут Олег. Днем я разработчик, а по вечерам на этом канале вайб-кодер. Пилю свои небольшие проекты, тестирую нейронки и AI-инструменты. Смотрю, что работает, а что не очень. Несколько видео назад я показывал, как делал небольшой контент завод на основе HIGEN, ElevenLabs, GPT и N-Нейтен Уже лучше. Но все равно почему-то некоторые предложения выглядят как две склеенные вместе попытки. Надо исправить.

Судя по логам LLM запросов, именно LLM ответственна за такую кривую нарезку. Она сама дает такие индексы слов для выбора попытки. Попробую изменить модель, например, на Gemini 3 Pro. Отлично! Проблемное место прошло успешно. Однако алгоритм теперь работает слишком дорого и медленно. Для оптимизации подрублю модель Sonnet 4,5. Плюс поставлю количество слов в одной пачке равным ста. Это позволит находить попытки в два раза быстрее. И вот такой вот результат теперь вышел. Уже отлично.

Привет! Меня зовут Олег. Днем я разработчик, а по вечерам на этом канале вайб-кодер. Пилю свои небольшие проекты, тестирую нейронки и AI-инструменты. Смотрю, что работает, а что не очень. Несколько видео назад я показывал, как делал небольшой контент-завод на основе HIGEN, ElevenLabs, GPT и N-Нейтен. Попытки нарезаны корректно. Осталось решить пару побочных моментов. Во-первых, чтобы перед началом каждого нарезанного сегмента была хотя бы одна десятая секунда паузы, чтобы нарезка не выглядела такой жесткой. И, во-вторых, чтобы концовка сегмента заканчивалась в конце слова, а не в начале следующего за ним. Сейчас там все еще большие паузы.

Попробуем поресерчить проблему с окончанием фрагментов. Судя по транскрипции, проблема удлиненных концовок некоторых слов в том, что ElevenLabs возвращает неправильные тайминги. Например, слово "фоне" вряд ли реально длится три секунды. Чтобы это исправить, думаю, можно измерять громкость последнего слова попытки и обрезать его, как только оно затихнет близко к нулю громкости. Отлично! Теперь наш алгоритм умеет круто распознавать и нарезать видео в соответствии с предоставленным сценарием. И чтобы все это было гибким и редактируемым, заменим шаг рендера на генерацию FCP XML файла. Он будет открывать нашу нарезку как проект в монтажной программе. Let's go!

Спустя несколько минут доработка готова, и агент даже запустил код, сгенерировав FCP XML для нашего теста. Попробуем импортировать файл в Davinci Resolve. Ага! Выпадает какая-то ошибка. Закину в агента и попрошу, чтобы поправил. Кажется, проблема в таймингах исходного видео. Окей! Опус поправил код. Импортируем файл еще раз и вуаля! Все отлично работает. И теперь можно редактировать нарезку в любой удобной монтажной программе. Если что-то задетектилось неверно или если хочется нарезать как то по другому.

Единственный момент, который мне не нравится, это какие-то проскакивающие черные кадры. Попробую это исправить. Ага! Агент говорит, что проблема в округлении таймингов кадров. Окей! Импортируем обновленный файл. Отлично! Он работает шикарно. И остался еще один небольшой неприятный момент. В одном дубле есть щелчок пальцами после сказанной фразы. Соответственно, он распознается скриптом, обрезающим концовки, как громкая часть, и поэтому остается в дубле, а не обрезается, так как текущий алгоритм ищет последнее громкое место с конца слова. Чтобы это исправить, попробуем изменить алгоритм на поиск тишины с начала слова. Это должно решить проблему. Окей! После попытки исправить это кадры начали образовываться слишком рано. Агент подумал, что нужно искать тишину с начала всего сегмента, а не только с начала последнего слова. Второе исправление уже получилось верным, но для его проверки придется перезапустить детект последних дублей, либо реализовать обратную совместимость с предыдущими файлами распознанных попыток. Лучше перезапущу заново. Вообще не рекомендую соглашаться на реализацию обратной совместимости во время вайб-кодинга любых алгоритмов, так как это почти всегда мусорный код. Такие маневры усложняют работу программы без реальной нужды. Рекомендую делать обратную совместимость, только если ваш проект уже работает в проде с реальными юзерами, и вы на сто процентов понимаете, что вы делаете.

После перезапуска алгоритма проблема решена, и концовки попыток корректно обрезаются. Ура!

Привет! Меня зовут Олег. Днем я разработчик, а по вечерам на этом канале вайб-кодер. Пилю свои небольшие проекты, тестирую нейронки и AI-инструменты, смотрю, что работает, а что не очень. И давайте докинем еще одну десятую секунду в конец каждого нарезанного клипа. Отлично! Теперь последние слова не обрезаются.

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

Однако после апгрейда кода программа стала работать абсолютно неправильно, и никакие фиксы не помогали. Агент как будто запутался в том, что он вообще делает. Возможная проблема в том, что весь наш код находится в одном и том же файле, и файл разросся уже до двух тысяч строк. Это уже немного перебор. Обычно я стараюсь удерживать размер файлов до тысячи строк. Такой размер файла позволяет адекватно работать с кодом без перегрузки контекста моделей лишним мусором. Чтобы исправить проблему, откачу изменения и разобью код на файлы по функциям, разделяя их ответственность. Отлично! Он разбил один большой файл на несколько понятных коротких файлов до двухсот строк, и каждый из них достаточно очевидно называется. Теперь можно будет прикреплять только нужную часть кода в контекст агента. По названиям файлов легко понять, что они примерно делают.

После каждого такого рефакторинга нужно обязательно проверять работу кода. Запустим и проверим, что все работает как раньше. Ага! Обнаружился новый глитч. При нарезке близких друг к другу фрагментов мы можем случайно включить один и тот же кусочек видео в два последовательных -кадра. -Нейронки и AI инструменты. Смотрю, что -работает, а что не очень. -Надо это поправить. Перезапустим генерацию нарезки. Ага, отлично. Проблема исправлена.

Теперь можем вернуться к нашей задаче с мультикамерой. Запущу тот же самый промт, но с другим контекстом файлов, плюс доработаю его в тех местах, где в прошлый раз LLM не поняла меня. Ага! С первого раза результат ужасный. Попробую исправить. Спустя несколько исправлений получил что-то, выглядящее как правильный результат. Но из двух входящих видео корректно нарезано только одно. Проблема с синхронизацией или сдвигом таймингов между видео? Закоммичу промежуточный результат и попробую пофиксить. Коммит таких частичных доработок тоже важен, даже если программа не работает полностью правильно. Лучше коммитить все, что страшно потерять. А сейчас я не хочу потерять эту полу рабочую сборку. И после финального фикса получаю вот такой вот результат.

В этом видео расскажу, как это все работает, какие нейронки находятся под капотом, как создавал такую хитрую систему, какие проблемы встретил, и как их решал. Привет! Меня зовут Олег. Днем я разработчик, а по -вечерам на этом канале -Вайб кодер. Пилю свои небольшие проекты, -тестирую нейронки и AI инструменты. -И давайте запилим удобный интерфейс для нашей проги, чтобы выбирать файлы для обработки и отслеживать прогресс. Готово. Получился красивый UI с кнопочками и селекторами файлов. Крутяк! Теперь можно нормально пользоваться нашей программой.

Сегодня я запилил программу, которая экономит десятки часов, автоматизируя нарезку видео. И самое главное, что получилось реализовать этот проект, вообще не заглядывая в код. Но во время разработки мне все равно приходилось много думать, анализировать и принимать решения, то есть выполнять те же задачи, что делает базовый программист. Получается, вайбкодинг - это тоже программирование, с теми же принципами, подходами и логикой. Разница есть лишь в уровне абстракции. Классическая разработка тесно связана с классами, методами, функциями и другими объектами на уровне кода. А вайбкодинг, скорее, заставляет сосредоточиться на бизнес требованиях и архитектуре. Ты начинаешь думать на уровне стеков, сервисов, фреймворков и целых систем, потому что сам код начинает быть скрытым за промтами агентов. Однако все таки в дебаггинге и нагруженных системах скилл понимания кода будет существенным плюсом. Возможность посмотреть и понять, что реально делает программа, позволяет справиться со многими проблемами в работе приложения.

Но в целом основная тенденция развития технологий, как и раньше, сохраняется. Они просто продолжают двигаться от низкоуровневых вещей вверх к более сложным и абстрактным уровням. Интересно, что будет происходить с этим дальше? А пока подписывайтесь на мой канал. Здесь я продолжу исследовать AI и его применение в разработке и смежных сферах, тестить модели, инструменты, делать микро проекты. Также подписывайтесь на мой телеграм канал. Там я иногда публикую заметки о полезных вещах, связанных с разработкой и AI. И если вам нужно что-то автоматизировать или внедрить ИИ, пишите мне в телегу, постараюсь помочь. Все ссылки в описании. Увидимся!