Привет, Хабр! Я Руслан, больше 15 лет работаю в IT. Начинал Java-разработчиком, потом несколько лет работал тимлидом, сейчас я техлид в крупном банке.

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

Всё изменилось за последний год. Сейчас помимо основной работы я занимаюсь несколькими проектами. В этой статье хочу рассказать про самый успешный свой open-source-проект opencode-telegram-bot. На момент написания статьи у него 1298 звезд на GitHub и 48 контрибьюторов.

https://github.com/grinev/opencode-telegram-bot

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

О проекте

opencode-telegram-bot — клиент в Telegram для OpenCode, одного из самых популярных CLI-агентов. Бот запускается локально и доступен только вашему пользователю — его id жёстко прописан в конфигурации.

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

Модель, агент, effort и контекст отображаются в виде reply keyboard — то есть всегда перед глазами.

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

С чего всё началось

В начале 2026 года, на новогодних праздниках, у меня было много свободного времени, и я оплатил подписку и поставил Claude Code. Не то чтобы я до этого не использовал ИИ для написания кода. Я использовал Cursor, сделал несколько небольших проектов, ещё у меня была активная подписка на Windsurf, в нём я тоже пробовал делать разные вещи. Но я писал на тех языках, которые знал, и смотрел код.

С Claude Code всё сразу пошло по-другому. Я начал делать сервис для анализа инвестиций и за пару дней собрал прототип, который показывал данные по портфелю и котировки. Потом экспериментировал с разными проектами и подумал, что было бы удобно управлять Claude Code с телефона.

Я посмотрел существующие решения — тогда толком ничего не было, OpenClaw ещё не стал популярным. Начал разбираться, как написать своё, посоветовался с Gemini, и он мне стал рассказывать, что надо парсить вывод TUI и что это довольно сложно. В общем, эту идею я отложил.

А потом решил попробовать другие CLI-агенты. На слуху тогда был OpenCode. Я установил его, и он мне понравился гораздо больше Claude Code: интерфейс богаче, есть всплывающие окна, часть вещей можно делать мышью. А ещё я узнал, что OpenCode можно запустить как сервер и управлять им через API. И подумал: вот тут-то не будет больших проблем написать Telegram-клиент. И я начал разработку.

Сначала хотел писать на привычном мне Kotlin, но, посоветовавшись с ИИ, выбрал TypeScript, потому что для него было удобное API. Да и код я всё равно совсем не смотрел. За пару дней у меня появился рабочий прототип: я мог запустить бота, отправить сообщение и получить ответ — это впечатляло.

Когда я продолжил добавлять фичи, были некоторые сложности: не всё работало с первого раза, приходилось отлаживать в несколько итераций. Я запускал бота руками, описывал агенту поведение, а он смотрел логи.

Релиз в open-source

Дорабатывал бота ещё где-то три недели. Добавил базовые функции: переключение между сессиями и проектами, выбор модели, агента и уровень рассуждений, отображение работы основных инструментов. Ботом вполне можно было пользоваться, и я сам уже начал использовать его вне дома, где нет доступа к OpenCode.

Я подумал, что бот уже вполне рабочий, и решил выложить его в open-source. Посмотрел конкурентов: было два похожих бота, примерно по 20 звёзд на GitHub у каждого. Выглядело так, будто авторы что-то сделали и выложили, но регулярно их не поддерживали. Да и по набору фич мне казалось, что мой бот уже удобнее.

ИИ помог подготовить репозиторий к выкладке. Я построил с агентом план из множества шагов и шёл по нему последовательно. Что нужно было сделать:

  • Настроить .gitignore, чтобы в репозиторий не попадали лишние файлы.

  • Добавить LICENSE и прописать данные об авторе в package.json.

  • Добавить CONTRIBUTING.md с описанием процесса разработки, работы с git, формата задач и пулреквестов.

  • Подготовить пакет к установке через npm, в приватном репозитории был настроен только локальный запуск.

  • Настроить CI/CD: линтер, сборку, тесты. Удивительно, как легко это делается с ИИ-агентами: похоже на какую-то магию, когда агент с первого раза пишет рабочий пайплайн.

  • Убрать из репозитория отладочный код и всё лишнее.

  • Проверить совместимость со всеми ОС. Я разрабатывал на Windows и работу на других системах не проверял, хотя она была заложена в коде изначально.

  • Перевести документацию на английский и убрать из кода русскоязычные комментарии. Агенты написали их очень много, потому что я общаюсь с ними на русском, а инструкций насчёт комментариев не было.

  • Добавить подробную инструкцию для пользователя: описание, обзор возможностей, установка.

  • Добавить локализацию. Хорошо, что я сделал это на раннем этапе: даже тогда это заняло довольно много времени. Сейчас в проекте 688 локализованных строк и поддерживается 12 языков.

Версию 0.1.0 я опубликовал одним коммитом в новый публичный репозиторий. Исходный репозиторий решил не открывать, чтобы не выставлять напоказ хаотичную историю коммитов и разный мусор: изначально проект не задумывался для open-source.

Ещё перед релизом я настроил публикацию пакета в npm, чтобы бота можно было установить одной командой: npx @grinev/opencode-telegram-bot@latest. С агентом это получилось сделать буквально за час. Это тогда очень поражало, как быстро с ИИ можно сделать вещи, которые без него заняли бы много времени. А при первом запуске мастер настройки спрашивает токен бота и id пользователя в Telegram, чтобы не пришлось руками править файл конфигурации.

Маркетинг

Сразу после релиза я попросил друзей и знакомых поставить проекту звёзды. На старте у меня было 8 звёзд. А уже в первые дни звёзды стали ставить незнакомые мне люди. Тема мобильных клиентов для разных ИИ-агентов тогда была на пике интереса, и люди находили мой проект на GitHub. Темп был небольшой: 2–3 звезды в неделю.

Через пару недель я задался вопросом, как увеличить приток новых пользователей в репозиторий. Пошёл с этим к своему ИИ-агенту, и он посоветовал две вещи: написать посты на Reddit и на Hacker News.

Начал я с Reddit. Честно скажу, просто попросил агента написать мне пост. Пост прошёл несколько кругов правок по моим замечаниям и через полчаса уже был опубликован. Выбрал сабреддит r/opencodeCLI как самый релевантный. Больших надежд не строил, но пост неожиданно хорошо приняли.

Ссылка на пост

У поста +65 рейтинга и 31 тысяча просмотров. Он дал хороший прирост звёзд: в первый день +30 новых пользователей, а через неделю у проекта было уже больше 100 звёзд. Это позволило мне обогнать конкурентов и дало мотивацию развивать проект дальше.

Я написал на Reddit ещё несколько постов. Они собирали по 10–15 тысяч просмотров, но такого эффекта по звёздам уже не давали.

На Hacker News я написал пост, но он не получил ни одной оценки. Писал туда и про другой свой проект — тоже нулевой результат. Вероятно, я не понимаю, как работает эта платформа, при том что на Reddit посты без проблем набирают много просмотров.

После всплеска от первого поста на Reddit темп снова упал до нескольких звёзд в неделю. Люди продолжали находить проект через поиск на GitHub, а вот Google его не показывал. Нужно было время, чтобы проект появился в выдаче Google, и ссылка из поста на Reddit с десятками тысяч просмотров не дала мгновенного эффекта. Теперь я вижу, что правильнее было сразу создать публичный репозиторий, делать проект в нём сначала для себя, а продвижением заниматься, когда он будет приведён в нормальный вид. К тому времени Google его уже проиндексирует.

Спустя 5–6 недель проект появился в Google на первых строчках по запросам «OpenCode Telegram», «OpenCode Telegram Client» и «OpenCode Telegram Bot». С тех пор на страницу проекта стабильно приходит около 100 просмотров в сутки, что даёт где-то 3–5 звёзд в день.

Если не считать нескольких постов на Reddit весной и летом, я больше ничего не делал для продвижения проекта. Стабильный трафик дают Google и GitHub.

Процесс разработки

Как я уже говорил, начинал я в Claude Code. Основной моделью тогда был Sonnet 4.5. Opus 4.5 уже вышел, но я им не пользовался: он очень быстро съедал лимиты подписки за 20 долларов. Я сразу начал работать в режиме планирования, и это позволило лучше контролировать результат. Очень понравилось, как Claude в режиме плана задавал вопросы с вариантами ответа.

Но вообще качество работы Sonnet оставляло желать лучшего: далеко не всё работало с первого раза, и я тратил много времени на отладку. Начал искать варианты, решил попробовать подписку ChatGPT и узнал, что её можно подключить в OpenCode. Незадолго до этого вышла модель GPT-5.3-Codex, и она показывала гораздо лучшие результаты, чем Sonnet. К тому же модели OpenAI прилежнее относились к написанию тестов. Никаких жёстких порогов покрытия я не вводил, в инструкции просто было сказано писать тесты, но Sonnet её часто игнорировал.

В общем, с переходом на модели OpenAI разница стала заметна сразу. Особенно когда вышла GPT-5.4: она была ещё умнее и хорошо справлялась с задачами. Мне уже не приходилось проводить множество итераций отладки, прежде чем фича заработает как нужно. Основную часть фич весной я сделал на GPT-5.4, и разработка шла очень бодро.

Режимом планирования я пользовался и в OpenCode, модель там тоже задавала вопросы с вариантами ответа. Но OpenCode в то время выводил план прямо в чат и при правках заново перепечатывал его целиком. Тогда я начал настраивать свой воркфлоу для разработки. Завёл собственных агентов (агент в OpenCode — это, по сути, режим работы со своим системным промптом) и переключался между ними во время реализации:

  • Ask — для код-ревью и моих вопросов по коду

  • Spec — для планирования работ, план пишется в отдельный файл в нужном мне формате

  • Code — соответственно, реализация, с дополнительными инструкциями, которые улучшают качество кода

Где-то в начале лета я открыл для себя Playwright MCP и осознал, что агент может автономно тестировать приложения в браузере. Сначала использовал его в других проектах, а потом понял, что это применимо и к Telegram-боту: можно тестировать через веб-версию Telegram. С тех пор моя продуктивность сильно выросла: раньше я всё прокликивал сам, а теперь могу доверить это агенту.

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

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

Контрибьюторы

После того как я выложил проект в open-source, первые контрибьюторы появились быстро. Уже через 4 дня я увидел первый пулреквест. В нём была поддержка прокси для Telegram. У проекта было очень мало звёзд, и я, честно говоря, сразу подумал, что контрибьютор хочет внедрить какой-то вредоносный код. Проверил правки агентом, запустил и убедился, что это не так.

Вообще контрибьюторы действительно добавляют новые фичи, хотя часто присылают очень небрежные правки. Я всегда проверяю код с агентами, а ещё сам смотрю, как работает фича. Бывает, присылают крупные доработки, и их часто приходится отклонять: либо я не собирался их делать, либо хотел сделать по-другому. А вот фиксы и небольшие правки принимаю, обычно после 1–2 кругов доработки.

Были релизы, целиком состоящие из пулреквестов от контрибьюторов.

Развитие продукта

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

На некоторых функциях пользователи прямо настаивали. Как только я выложил бота, меня сразу стали просить добавить распознавание речи и поддержку картинок, присылали и пулреквесты с этим.

Потом очень часто стали просить добавить поддержку топиков в Telegram, чтобы в каждом топике шла своя сессия. Но бот задумывался для работы в одном окне, как в терминале, и вся архитектура заточена под это. Я регулярно отказываю в таких просьбах. Люди присылают и пулреквесты — я их, кстати, смотрю и вижу много ошибок. Задача сложнее, чем кажется. Планирую это сделать, когда смогу выделить время, чтобы аккуратно всё переписать и протестировать.

Не так давно начали просить добавить поддержку новой версии OpenCode 2.0. Сам я ей тогда ещё не пользовался, узнал о ней благодаря моим пользователям и добавил поддержку вскоре после выхода.

Планов на самом деле ещё много, но я пишу в размеренном темпе, в свободное время, при том что у меня есть и другие проекты. Обычно раз в неделю выпускаю релиз с несколькими фичами, а посреди недели иногда ещё хотфиксы.

Как я использую бота

Сначала я программировал с него, но потом понял, что это перебор: от компьютера надо отдыхать. Сейчас использую бота как ассистента в Telegram, чтобы быстро что-то спросить. Бывает, что запускаю с него задачи на разработку, которые не требуют постоянного контроля.

На домашнем компьютере бот запущен постоянно, и если мне что-то нужно, я могу получить к нему доступ через Telegram. Работа идёт в одном потоке, но есть команда /detach, которая позволяет отключиться от сессии в процессе выполнения и начать другую, а потом в чат приходит уведомление.

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

Что я понял

  • ИИ даёт возможность делать open-source-проекты в свободное время. С агентами рабочий прототип собирается за считаные дни, а регулярные релизы становятся реальными даже параллельно с основной работой.

  • Надо просто делать и делиться, необязательно делать идеально. Достаточно выложить проект с базовыми функциями — многое из того, что действительно нужно, подскажут пользователи.

  • Важны каналы распространения. Нужна установка одной командой, например через npm, и понятная инструкция.

  • Если проектом кто-то пользуется, это даёт мотивацию делать его дальше. К тому же пользователи часто замечают то, что автор пропустил. Например, выход новой версии инструмента, под который сделан проект.

  • Проект нужно постоянно поддерживать. Одного релиза мало. Люди пользуются проектом, когда видят, что он живой и регулярно обновляется.

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

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

А еще, разработка open-source проектов вдохновила меня вести блог в Telegram, где рассказываю про этот и другие проекты и в целом про разработку с ИИ: https://t.me/greenrus_ai

Комментарии (5)


  1. NickAlister
    30.10.2026 09:40

    Я этим ботом тоже пользуюсь, удобно иногда проверить логи через агента без ssh.


  1. BelerafonL
    30.10.2026 09:40

    А чем это принципиально отличается от гермеса? Ну я прочитал историю разработки, да, но вот на текущий момент?


    1. greenrus Автор
      30.10.2026 09:40

      Это инструмент который работает только с Telegram в отличие от Hermes, где есть много разных мессенджеров. И возможностей конечно поменьше. Зато более богатый UI в плане настроек работы с OpenCode. То есть это стоит рассматривать не как альтернативу Hermes, а как OpenCode в Telegram, практически все возможности, которые есть в OpenCode будут доступны из Telegram с этим ботом


  1. VladSmir
    30.10.2026 09:40

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


    1. greenrus Автор
      30.10.2026 09:40

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