Thumbnail image

Вайб-кодинг Telegram-бота: от идеи до работающего сервиса за пару часов

Thu, Mar 27, 2025 3-minute read

Table of Contents

Практическая часть

Когда я познакомился с Cursor и идеей вайб-кодинга, сразу захотелось попробовать их на проекте с нуля. Я вспомнил свою старую задумку: сделать инструмент, который поможет гитаристам-любителям вроде меня запомнить расположение нот на грифе при стандартном строе (e-A-D-G-B-E).

Для начала я настоятельно рекомендую установить один из популярных инструментов для вайб-кодинга, например, Cursor, WindSurf или Loveable. Я начал с Cursor, потому что он построен на базе VS Code. Быстро разобраться с инструментом можно по небольшому руководству или этим видео:

У Cursor есть несколько режимов работы, которые хорошо описаны в этом треде.

Cursor довольно интуитивен, так что освоиться можно за несколько минут. Правда, взаимодействие с ним немного отличается от привычной работы в IDE. Вот алгоритм, которым я пользовался при создании бота:

  • В режиме чата я как можно подробнее описываю нужную функциональность: требования к фиче, PRD и так далее. Затем спрашиваю, нужны ли Cursor дополнительные пояснения.
  • После уточнений прошу составить план реализации из небольших отдельных шагов, как будто выполнять его будет начинающий разработчик. Отдельно прошу пока не писать код и учитывать опыт того, кто будет работать по этому плану.
  • Мой первый промпт был таким: «Я хочу создать на Python Telegram-бота, который поможет пользователям выучить ноты на гитарном грифе. Бот должен показывать гриф в виде ASCII-графики, скрывать одну случайную ноту знаком вопроса и предлагать пользователю ее угадать. Вот пример ASCII-грифа, сгенерированного через ChatGPT: (вставить сюда сам пример). НЕ ПИШИ КОД. Подготовь пошаговый план реализации, как будто его будет выполнять начинающий разработчик. Если без кода не обойтись, используй псевдокод».
  • Сохраняю полученный план в файл plan.md, добавляю его в репозиторий и затем использую как контекст.
  • Прошу Cursor реализовать первый шаг и проверить результат.
  • Если результат меня устраивает, отправляю изменения в репозиторий.
  • Если нет, стараюсь как можно понятнее объяснить проблему и прошу Cursor ее исправить.
  • Повторяю, пока все не будет готово!

В конце я с помощью ChatGPT сделал иконку и описание, с помощью Cursor упаковал бота в контейнер и развернул его на fly.io. На всю разработку и развертывание ушло около 2–4 часов, плюс еще примерно час на доработку ASCII-грифа.

Результат

Бота можно попробовать прямо сейчас в Telegram: просто найдите @FretBuddyBot.

Репозиторий проекта: https://github.com/amsilf/FretBuddy

Небольшая демонстрация:

FretBuddy-A-QuickDemo

Как работать с Cursor эффективнее

Напоследок несколько практических советов, которые помогут воплощать идеи с помощью Cursor со скоростью света:

  • Всегда используйте систему контроля версий, даже в личных проектах. Такие инструменты, как Cursor, могут внести много изменений, за которыми сложно уследить.

Issues with Cursor-1

Оригинальный тред

  • Придерживайтесь понятного цикла работы с обратной связью, например, того, что я описал выше, вместо того чтобы просто вываливать требования в чат.
  • Подготовьте подходящий файл .cursorrule, чтобы работать эффективнее. Рекомендую посмотреть awesome-cursorrules.
  • Если вы опытный инженер, у вас наверняка есть набор правил и подходов, которых вы привыкли придерживаться. Самое время передать этот опыт через контекст Cursor, чтобы код и инфраструктура создавались с учетом накопленных вами знаний.

Issues with Cursor-2

Оригинальный тред

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

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

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