Как я создал приложение на 100K строк кода, не написав ни одной строчки
или история о том, как Telegram-бот превратился в платформу для стримеров
Кто я: Меня зовут Денис. Бывший сисадмин, потом 15 лет был по факту продактом, хотя это было не модно, даже слов таких тогда не знали. Несколько проектов разной степени успешности, но не выжили. Сейчас просто "айтишник"(с 9 до 18 работать на удалёнке - оказывается так много свободного времени остаётся).
Разработкой не занимался, в основном операционкой и развитием. В программировании максимум на что способен - поправить css или html c bootstrap и на этом мои познания заканчиваются.
Исходная задача: нанимал стримеров для рекламы пет проекта (продакт в душе - это неизлечимо), но они через одного халтурили. То не в то время, то забыл, то вообще передумал. А все хотят предоплату...
Проблема: надо как-то считать, но лень искать готовые решения для мониторинга стримов
Идея: просто сделать оповещения в Telegram + подсчёт времени стрима.
Обстоятельства: и тут как раз открыл для себя агентский кодинг. Думаю - чем чёрт не шутит, попробую. Но что-то увлёкся...
Что получилось: платформа на 111,979 строк кода, не считая Bootstrap и библиотек Python
Как это началось
Выбор инструментов
На самом деле инструментов много, даже слишком, но у 90% проблемы не то, чтобы заплатить из РФ, хотя это тоже проблема, но и с доступом вообще. Так что остановился на VSCode + Kilo Code, позже Roo Code по причине доступности бесплатных моделей в арсенале и поддержки работы с бесплатным вариантом Qwen Code.
С чего начать?
Ну самое простое "Сделай мне бота, который пишет в Telegram, когда стример начал стрим. И пусть считает, сколько он стримит". Но нет! Я же на опыте, пошёл гуглить, хотя сейчас это не гуглить уже, а наверное "вайбсерчить". Но суть не поменялась. Наткнулся на заброшенный userinfobot (надо же как то в ТГ слать сообщения и знать куда), так он ещё и на Java оказался. Думаю так не пойдёт! Первым делом переписал его на Python, тоже по совету GPT (на самом деле разных, но так проще называть) Сказано - сделано. И да, Github для себя тоже впервые открыл не в качестве потребителя :) Тут обошлось без глобальных проблем. Дальше началось веселье.
Составление плана
Начитавшись тг каналов и насмотревшись видео решил составить план MVP, разбить его на этапы и делать по частям.
Не могу сказать, что совсем без проблем, но хоть как-то работающее приложение с сайтом, в докере, с базой sqlite у меня было через 4 часа. 30 минут агент кодил и потом 3,5 часа мы пытались это всё запустить. Приложение умело в авторизацию и поиск стримов по ключевым словам на твич и кик. Казалось бы - прикрути отправку сообщений через уже готовый инструмент и статистику и всё!
Но нет, продакт он на то и продакт, чтобы думать "а вдруг это кому-нибудь нужно".
Пошёл кастдевить.
Выяснил, что в таком виде оно не то, что не нужно, а крайне нежелательно. Стримерам комфортно брать предоплату, срывать сроки или вообще забивать (кто бы сомневался). А для заказчиков - крайне скудный функционал - для крупных рекламодателей не интересно с мелкими стримерами работать, именно из-за указанных выше причин, а для мелких комфортно быть в сладком неведении и самостоятельно наступать на все грабли. Да и у крупных стримеров худо-бедно есть менеджеры, которые как-то тянут эту тему.
Эволюция проекта или "И тут Остапа понесло"
Сам я это вряд ли опишу, поэтому попросил агента помочь составить абзац по датам планов, с моими правками, конечно:
Смотрите, вот что показывает хронология моих планов и документации:
Ноябрь: рождение
Началось просто. 4-5 ноября — базовый функционал: деплой, подключение Twitch, потом Kick. Работало.
8-9 ноября — добавил авторизацию в VK. Уже три платформы. Ну как добавил, авторизация это пол беды, а вот с определением урл стрима пришлось не сладко.
10-11 ноября — решил, что нужен нормальный сайт. Нашёл в закромах давно купленный шаблон Metronic, составил общий план. Выяснил, что Qwen категорически не умеет в html, даже в элементарных задачах забывает div или бьёт js. После чего неделю искал и правил за ним косяки, уже с Grok fast, благо он появился в демке у Kilo Code, а потом и MiniMax:M2, правда ненадолго и очень не надёжно, он или работает и прилично работает или свой код может вставить в чужую функцию, прям по середине и потом судорожно искать, а почему же код не запускается.
Но в итоге поборол!
22 ноября — профили пользователей, фиксы аватарок. Всё как у людей.
А потом случилось 29 ноября.
В этот день я создал 40+ файлов документации. Сорок! За один день.
Там всё: первая стадия AI-системы, система промптов, схема базы данных, архитектура контрактов. В этот день бот превратился в платформу.
Тут уже понял, что на бесплатных ИИ уже не вывезу, к тому же Grok fast совсем сломался у Kilo, а у MiniMax закончилось демо и я перешёл на Roo, где хотя бы минимакс остался, а за грок уже пришлось платить.
Декабрь: масштабирование
1-4 декабря — контракты. Планы, алгоритмы, мониторинг.
7 декабря — кэширование и... 6 версий промпта за один вечер. Типичная история: "поправим ещё разок", "теперь точно", "ну ещё одну правочку".
8 декабря — план развития AI.
12 декабря — доска коллабораций.
18 декабря — UX улучшения.
20 декабря — редизайн главной страницы, доска коллабораций и... генерация изображений. 7 файлов за день. "А давайте добавим ещё одну фичу".
21 декабря — Банят не только нас для них, но и у них нас тоже банят, поэтому - SOCKS5 прокси для генерации картинок в gpt-5-image через openrouter.
23-24 декабря — миграция на MySQL, 10 файлов миграций, кредитная система, оповещения. Пора масштабироваться, катим в прод.
25 декабря — интеграция платежей. Интересно.. а Тбанк понимает сам свою систему хеширования?... Context7 тут не помог понадобилась помощь зала.
26 декабря — исправление промптов.
27 декабря — система офферов стримеров.
Итог:
80+ файлов документации за 2 месяца. 111,979 строк кода.
Это уже AI про себя выдал: "Это не план. Это хаос, который работает. Каждый день — новая идея. "А давайте добавим..." — и AI делает. Я тестирую, правлю, снова "а давайте...".И так 2 месяца."
Устал, бедный.
Что в итоге?
А в итоге получился Stream Finder
Для стримеров:
Оповещения о стримах в TG и не только.. с AI обработкой - текст и картинка генерятся по названию стрима и тематике. Под капотом 3 модели генерации картинок разной стоимости и качества и 1 текстовая.
Система контрактов с рекламодателями с чатом и мониторингом выполнения контракта
AI-анализ профиля - чтобы не выяснять каждый раз "а кто это и что ему можно предложить".
Коллаборации со стримерами - такие же контракты, но без контрактов
Публикация платных услуг с созданием и отслеживанием контрактов - а-ля "Вызвать на комбат 100 рублей"
Для рекламодателей:
Публикация предложений, сбор откликов
Создание контрактов с автоотслеживанием
Прямые контакты со стримером, без писем "на деревню дедушке" или привлекания внимания в чате, чтобы выпросить контакт.
Какие выводы?
1. Не брезгуйте составлением пошагового плана. Из большого плана с вероятностью 90% агент сделает в лучшем случае половину, остальное понаставит заглушек, скажет "Я сделяль!" и откажется продолжать в том же контексте (а в новом уже не откатиться в рамках диалога, надо через гит)
2. Одной модели ни когда не достаточно, особенно когда большой контекст. Надо иметь несколько вариантов. У каждого свои сильные и слабые стороны.
3. Большой контекст - это боль. То, что пишут, что контекстное окно 200к, 400к, а то и 1-2М - врут. Больше 100к контекст вывозят единицы, Qwen в их числе, поэтому он до сих пор со мной, но как же ему плохо в это время.. Сразу подключайте индексацию и ограничивайте максимальное число строк, которое может прочитать за раз агент.
Хорошо помог системный промт:
"ИСПОЛЬЗУЙ ПОИСК ПО КОДОВОЙ БАЗЕ, ВМЕСТО ПРЯМОГО ЧТЕНИЯ ФАЙЛОВ !!!!!! Не читай файлы целиком, пока не найдешь нужный фрагмент через поиск!!!
ЗАПРЕЩЕНО использовать `read_file` для файлов длиннее 500 строк целиком. В этом проекте есть огромные файлы (например, crud.py или web.py). Вместо этого ВСЕГДА используй:`findstr` или `search_files` для поиска нужных строк внутри файла.`read_file` с обязательными параметрами `start_line` и `end_line` (читай не более 100-200 строк за раз). Сначала запрашивай список функций/структуру файла через поиск, прежде чем читать тело функции. "
4. Орать на агента - ПОМОГАЕТ!! Материться - нет )
5. То, что Kilo или Roo Code пишут размер контекста - это на каждый запрос. Чем длиннее диалог, тем дороже каждый шаг. Разбивайте на минимально возможные части.
6. Главное вовремя остановиться!
Что со всем этим теперь делать?
А вот это хороший вопрос.
Рынка нет, большинство стримеров ведут каналы из принципа - пусть будет, не мешает. Понимания, что тг не для привлечения новых зрителей, а для удержания старых - нет. Развитием занимаются единицы. Все хотят зарабатывать, но ни чего не хотят для этого делать. Типа во я стану крупным, так сразу фишка и попрёт. А между прочим выхлоп с мелких кратно выше, чем с крупных.
Со стороны рекламодателей спроса тоже нет. Крупным нужна безопасная сделка и ериды. Ну в принципе проблема решаемая, но без стримеров решать её нет смысла.
Так что пока будет как будет. И с Новым Годом!