Ни строчки руками: как я вайбкодил AI-мастера D&D и что показали два месяца открытой беты. Claude.. Claude. dnd.. Claude. dnd. llm.. Claude. dnd. llm. openrouter.. Claude. dnd. llm. openrouter. python.. Claude. dnd. llm. openrouter. python. вайбкодинг.. Claude. dnd. llm. openrouter. python. вайбкодинг. ии-агенты.. Claude. dnd. llm. openrouter. python. вайбкодинг. ии-агенты. инди-разработка.. Claude. dnd. llm. openrouter. python. вайбкодинг. ии-агенты. инди-разработка. искусственный интеллект.. Claude. dnd. llm. openrouter. python. вайбкодинг. ии-агенты. инди-разработка. искусственный интеллект. монетизация.. Claude. dnd. llm. openrouter. python. вайбкодинг. ии-агенты. инди-разработка. искусственный интеллект. монетизация. пет-проект.. Claude. dnd. llm. openrouter. python. вайбкодинг. ии-агенты. инди-разработка. искусственный интеллект. монетизация. пет-проект. Программирование.. Claude. dnd. llm. openrouter. python. вайбкодинг. ии-агенты. инди-разработка. искусственный интеллект. монетизация. пет-проект. Программирование. Разработка игр.

Каждый раз, когда на Хабре очередной срач про вайбкодинг, я сижу тихонько и молчу. Мне спорить неудобно: у меня в проде живёт продукт, где весь код — от миграций базы до анимации кубиков — написали агенты. Вообще весь. Клавиатура за полгода не набрала ни одного if.

Продукт — «Таверна Мокрый Тортл», AI-мастер подземелий. Соло-игра в D&D 5e прямо в Telegram: бот плюс мини-апп с листом персонажа. Броски без поддавков, бой по правилам, магия, левелап. Сделал для тех, кто хочет играть в НРИ, но группу собрать не может — а таких, как выяснилось, немало) Бота зовут @dnd5char_bot, сайт dnd-dm.ru, кликабельных ссылок не будет.

Все цифры — из прод-базы и кабинета ЮKassa, срез на 17 августа. Где цифры мне не льстят — покажу тоже, иначе какой смысл.

Как я до этого докатился

1 февраля я откопал свой старый заброшенный проект. План был скромнейший: генератор персонажей для D&D и чарлист, простенький, для своих. Полтора месяца гонял агентов по формочкам и характеристикам, а 17 марта что-то щёлкнуло, и я написал в свой канал: «кажется я проект по ДнД + полноценный ГЭЙминг замучу всё таки. С сохранением инфы, персонажей, отыгрышем, правилами и всяким прочим». Ну то есть решил: раз персонажа можно генерировать, значит, можно его и водить. А уже 13 июня открыл бету для всех.

Всё это — вечерами после работы. Днём я проектирую чужую игру, вечером — свою. Программистом я не был (вернее был, но пол года и это не считается) и, что смешно, так и не стал: моя должность в этом проекте называется «у меня хлыст, у тебя код».

Стек: Python и aiogram на бэке, React-миниапп на фронте, PostgreSQL, хостинг на Railway, мозги через OpenRouter. Как движок устроен внутри — пайплайн хода, бой, память мира и прочие кишки — я разбирал в прошлой статье, повторяться не буду.

Как выглядит разработка, в которой не пишешь код

Сразу отвечу на главное возражение: нет, это не «попросил ChatGPT сделать бота и молюсь». Так не работает, все уже проверили. Работает скучное слово «процесс».

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

В цифрах: 2 700 коммитов за полгода, 123 активных дня, порядка 250 тысяч строк — 219 тысяч на Python и 29 на TypeScript. Половина коммитов сделана уже во время беты: живые игроки генерят задачи лучше меня. Любимый замер: игрок кидает багрепорт в чат в 15:23, в 15:46 отвечаю «проверю», в 15:57 фикс на проде. 34 минуты посреди буднего дня.

Стоит всё это 240 долларов в месяц за подписку Claude (на ней же сидят остальные мои проекты, так что на бота честно падает только часть) плюс 20 долларов за Railway. Сколько жрёт LLM самой игры — ниже, в деньгах.

Где агенты меня подставили

Не всё так радостно в нашем царстве прИИкрасного будущего.

Самая любимая история — про v2. Я решил, что пора переделывать движок, и скачал из интернета модный скилл «автономный цикл разработки» — из тех, что сами планируют, сами пишут, сами проверяют и сами себя хвалят. Поставил задачу «сделай v2» и ушёл жить жизнь. Агент честно работал неделю, где я периодически его переставлял, чтоб окно контекста не умирало. Сжёг весь мой недельный лимит запросов и выдал нечто, что стояло рядом с v2 и даже пахло как v2, но при ближайшем рассмотрении оказалось мёртвым куском, который я выкинул целиком. Автономность без контрольных точек — это не разработка, это обогреватель.

Модель почему-то решила, что я хочу v2 просто как факт существования, а не как продолжение текущего проекта. Поэтому он сам себе сделал всё, сам себя покрыл тестами зелеными и был таков. Попытку встроить я выкинул, легче было сделать нормально. Скилл я тоже выкинул, как вы понимаете)

Вторая история массовее. За один июль агенты 372 раза уронили SQL-запросы к прод-базе. Сел разбирать логи: 93% фейлов — одна и та же причина. Агент угадывал имя колонки вместо того, чтобы посмотреть схему. Уверенно, с деталями, мимо. Вылечилось до обидного просто — шпаргалкой со схемой, которую я принудительно вбил в контекст. Агенты с тех пор живут со шпаргалкой, я — с лёгким недоверием.

И классика. Агент добавил новый PATCH-эндпоинт, покрыл тестами, тесты зелёные, деплой. Тут же игроки ловят «ошибку сохранения настроек»: в CORS-списке разрешённых методов PATCH не оказалось, и браузер резал запросы, не донося их до бэкенда. А тесты ходили в обход браузера и ничего не заметили. Хотфикс, новое правило в инструкцию, поехали дальше.

Вывод из всех трёх случаев один. Агенты — не магия и не сотрудники, а очень быстрые исполнители с уверенностью сеньора и памятью аквариумной рыбки. Держит их в рамках только процесс: ревью, тесты, узкие ТЗ и контрольные точки. Ну и полезные плагины и шишки, которые ты сам себе набил. Или он тебе набил. Тут как посмотреть :) Вайбкод без процесса рождает ровно то, чем его пугают в комментариях.

Циферки

Бета открылась 13 июня. Ниже — два полных месяца с хвостиком, всё из базы.

Воронка

968 новых пользователей. Рекламный бюджет — ноль рублей: пара постов в моём же канале, сайт и один ролик в TikTok на великие и могучие 17к просмотров (мама я блогер). 59% пришедших создают персонажа, из создавших 83% делают первый ход. И трафик становится чище: в июне до персонажа доходило 41–52% пришедших, сейчас — почти три четверти. Не релевантный юзер ушёл, а НРИшник с желанием покатать в днд – пришёл)

Глубина

Медианный игрок делает 16 ходов — а ход тут не клик по кнопке, а полноценное действие с ответом мастера. 45% игравших переваливают за 20 ходов, каждый пятый за 50, рекордсмен наиграл 333 за одну сессию. Первая сессия затягивает: садишься «на полчасика», выныриваешь через пару часов с прокачанным героем.

Жизнь игрока

А вот тут больно. Медианная «жизнь» (считаю по тем, кто наиграл хотя бы пять ходов) — одна сессия: сел, выжег вечер, ушёл. В среднем игрок живёт 2,6 дня, верхние 10% — от 6,5 дня, почти каждый десятый — неделю и дольше. Первая сессия работает, а причины вернуться через неделю у продукта нет. Это сейчас моя главная продуктовая задача — не «сделать интереснее», а «дать повод прийти ещё раз».

Деньги деньги дребеденьги

125 платежей на 50 635 рублей за два месяца, 53 плательщика, средний чек 405 вечнодеревянных. 45% плательщиков платят повторно. Июнь принёс около 15 тысяч, июль — 30,5. И самое странное открытие: медиана времени между первым ходом и оплатой — около нуля, а почти половина плательщиков платит вообще до первого хода. Люди покупают не привычку, а обещание. Что с этим делать в оффере — ещё думаю, но факт красивый :)

Движок и маржа

За первые два месяца бета сгенерировала 1,03 миллиарда токенов на 293 тысячах LLM-запросов. Смешанная цена — 0,36 доллара за миллион токенов, спасает кэширование промптов: кэш-хиты 18,5% (за всё время, т.к. опростоволосился на старте и первый месяц не дал должного внимания кэшированию, а жаль). Маржу считаю двумя способами, потому что один слишком красивый. Только игровые вызовы — около 73%. А если повесить на бету вообще все затраты OpenRouter, включая разработку, QA-прогоны и тесты, — около 36%. Аккуратная формулировка: бета в плюсе, даже если заставить её оплачивать собственную разработку.

Что я понял

Тем, кто считает вайбкодинг преступлением: вы правы, но наполовину. Без процесса агенты производят дорогие куски ничего — моя v2 тому памятник. Но конвейер с ревью и тестами выдаёт прод, который два месяца держит сотни живых игроков и принимает живые деньги. Профессия не умерла — переехала уровнем выше: не писать код, а проектировать процесс, который его пишет. И как мне кажется это отдушина тем, у кого свербит что-то сделать, а руки находятся на уровне талии, ну или чуть пониже.

Тем, кто пилит свои проекты: платят на входе, а не после «распробовал». Глубина сессии и удержание — разные метрики, и прокачка первой не тянет вторую. И агенты снимают потолок «нет времени», но не снимают потолок «нет процесса».

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

Автор: sunm8

Источник