Все записи
6 мин

Новый telegram-бот с нуля: 9 спек, 8 AI-экспертов и дебаты Claude против GPT за один заход

вайбкодингclaude codetelegram-боты

За один заход я запустил новый проект, telegram-бот JustStep, и прежде чем нейросеть написала хоть строчку кода, я прогнал через AI весь предкодовый процесс. Это уже не первый раз, когда я проектирую проект с AI ещё до кода, но в этот раз размахнулся куда шире. Накидал 9 черновиков спек, собрал консилиум из 8 экспертов (4 Claude через Agent tool плюс 4 GPT через codex, все параллельно), устроил двойной стресс-тест и дебаты Claude против GPT. И попробовал два приёма, которых раньше не делал: консилиум сразу на группе спек, а не по одной штуке, и отдельный AI-эксперт в роли защитника, чтобы консилиум не вырезал то, что я задумал. Если коротко, вот так выглядит разработка telegram-бота через AI, когда ты не пишешь код руками, а оркестрируешь и заранее выбиваешь из задумки все слабые места.

Что вообще за JustStep

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

Под капотом стек, который я уже знаю и который дешёвый в обслуживании: Python 3.12, aiogram 3 на боте, FastAPI, Postgres, голос распознаётся через faster-whisper, а думает над ответом связка Anthropic Haiku и Sonnet — дешёвая модель для рутины, дорогая для сложного. Пакетным менеджером взял uv, он быстрый. Ничего экзотического, всё проверенное, потому что экзотику потом самому же и чинить.

Девять спек и зачем их столько

Первое, что я сделал, это не код. Это 9 черновиков спек, от ядра MVP до post-MVP фич, и сразу разложил их по фазам: Phase 1, потом 2a, 2b, 3 и в самом конце 4. Зачем так дробно? Потому что когда у тебя всё в одной куче, ты либо делаешь сразу всё и тонешь, либо делаешь как попало. А когда фаза 1 — это голый минимум, который уже работает и приносит пользу, всё остальное можно спокойно откладывать без чувства, что ты что-то недоделал. Это и есть нормальная разработка MVP продукта: сначала то, без чего бот бессмысленен, а уже потом всё, что делает его лучше.

И вот тут я попробовал то, чего раньше не делал. Обычно консилиум я гонял по одной спеке за раз: берёшь фичу, скармливаешь экспертам, разбираешь. Дорого по токенам и, главное, теряется общая картина, потому что эксперт смотрит на кусок и не видит, как он стыкуется с соседними. В этот раз я собрал консилиум сразу на группе спек, на всём связанном флоу одной фазы. Получилось и экономнее, и куда полезнее, ведь эксперты разбирали не отдельную деталь в вакууме, а как весь узел работает вместе. Если вы уже копались в том, как я вообще собрал свой процесс принятия решений, я про это подробно писал в SCD: как я собрал свой метод из двух чужих, и тут как раз его развитие.

Восемь экспертов и один защитник

Консилиум у меня — это 8 AI-агентов параллельно: четыре Claude через Agent tool и четыре GPT через codex exec. Архитектор, прагматик, скептик и так далее, каждый со своим характером и своей задачей кусать задумку с разных сторон. Запускаются одновременно, я собираю ответы, потом идёт двойной стресс-тест, где отдельно Claude и отдельно GPT атакуют варианты, а следом дебаты, где Claude и GPT спорят между собой, а я выбираю, кто прав.

Но была у этого подхода старая болячка, и в этот раз я её наконец прижал. AI-эксперты, особенно скептик и прагматик, обожают резать скоуп. Чуть что — «а давай это не сейчас», «вынеси в backlog», «слишком рано для такого». И ты вроде слушаешь умных ребят, а в итоге от твоей задумки остаётся огрызок. Я его попросил побыть защитником, чтобы мне консилиум не урезал то, что я хочу сделать, потому что они очень любители: давай это не сейчас. То есть один из экспертов получил прямую инструкцию защищать те фичи, которые я считаю обязательными, и спорить с теми, кто их выкидывает. Критика теперь шла про то, КАК сделать и сколько это стоит, а не про то, ЧТО вообще делать. Я эту граблю один раз уже ловил, когда собрал консилиум и забыл добавить туда пользователя, эксперты тогда тоже жили в своём техническом мире. Так что да, консилиум — мощная штука, но за ним надо присматривать, иначе он оптимизирует тебя в ноль.

Что поймали ещё до кода

И вот тут начинается самое ценное, ради чего весь этот цирк с восемью экспертами и затевается. На ревью словили настоящий prod-killer, который бы я в коде заметил только когда бот начал бы виснуть у живых юзеров. Голосовая фича на faster-whisper изначально крутилась бы прямо в event loop, а распознавание речи это тяжёлая синхронная операция, и она бы намертво блокировала всё остальное, пока один человек диктует голосовуху. Решение вынесли в отдельный пул потоков плюс ограничитель на два параллельных распознавания, чтобы и loop не блокировался, и сервер не лёг от десяти одновременных голосовых. Поймать такое на этапе спеки, а не на проде в три часа ночи, и есть смысл гонять консилиум перед кодом.

Второй кусок мне очень понравился по элегантности. Когда нейросеть работает со списком, например выбирает из вариантов шага, она у меня возвращает не идентификатор элемента, а просто индекс позиции в списке. Звучит как мелочь, а это убирает целый класс багов: модель физически не может выдумать несуществующий идентификатор, потому что галлюцинация тут невозможна в принципе. Нет идентификатора — нет шанса, что нейросеть его придумает из головы. Я вообще давно заметил эту закономерность с контекстом: чем больше контекста, тем более поверхностно лмка проходит и делает действия. Так что чем проще и уже ты делаешь интерфейс для модели, тем меньше она напортачит.

Ну и про дальний горизонт тоже подумали. Фаза 4 — это еженедельные сводки, и я её специально поставил на триггер: она включается только когда наберётся хотя бы 20 активных юзеров и классификатор пройдёт проверку качества. Смысл простой, не строить тяжёлую weekly-механику под аудиторию, которой пока нет. Проектировать «под миллион» до того, как у тебя появились первые честные двадцать человек, это самообман, на котором я в прошлом не раз обжигался.

Что я с этого вынес

Если свести всё в сухой остаток: один заход, 9 спек, 8 AI-экспертов в параллель, двойной стресс-тест и дебаты Claude против GPT, и всё это до первой строчки кода. По времени это смешные затраты против того, что один пойманный prod-killer стоил бы мне дня отладки на живых пользователях, а урезанный консилиумом скоуп — вообще не того продукта, который я хотел. Через неделю после этого захода бот уже стоял на проде, так что предкодовая возня окупилась. Два приёма беру в постоянку: консилиум на группе спек целиком даёт картину, которой не было при разборе по одной, а эксперт-защитник наконец-то перестал давать умникам кромсать мою задумку.

Многие думают, что вайбкодинг — это когда ты пишешь нейросети «сделай бота» и она магией всё рожает. Не смешите меня. Настоящая работа тут не в том, чтобы Claude Code написал код, он его и так напишет. Работа в том, чтобы до кода выбить из задумки все дыры, заставить AI-агентов спорить друг с другом и защитить то, что важно, от их же оптимизаторского зуда. Код пишет нейросеть, а думаю и решаю всё ещё я. И вот эта часть никуда не делась, как ни крути.