Перейти к содержимому

Нейросеть написала Telegram-бота: ~60% кода за моделью

Почти 60% кода Telegram-бота Chuddy написал GLM-5.1 от Z.ai. Разбираем кейс с Show HN: что умеет бот, как он писался с ИИ и почему автор сжал архитектуру с 6 контейнеров до одного.

15 мая 2026 года разработчик под ником kivir опубликовал на Hacker News свой проект — self-hosted Telegram-бота Chuddy для скачивания медиа, OCR и перевода (Show HN, репозиторий kivirnz/chuddy). Главное признание из поста: примерно 60% кодовой базы написала модель GLM-5.1 от Z.ai, а не человек. Кейс показательный сразу по трём причинам: это живой рабочий проект одного человека, а не демка; автор честно рассказал про процесс; и после релиза он сделал полезный рефакторинг, о котором стоит рассказать отдельно.

Дата кейса важна: пост вышел 15.05.2026, этот разбор — в августе 2026, то есть три месяца на границе «свежести». За это время Z.ai успела выпустить новую модель (GLM-5.2), а репозиторий Chuddy продолжал жить. Про «что изменилось с тех пор» — отдельный раздел ниже.

Что за бот и зачем он нужен

Chuddy — self-hosted Telegram-бот, который автор сделал «для группового чата друзей» и не планировал разворачивать где-то ещё:

«This bot was made to be of use to my friends group chat, I apologise in advance for any crudeness in the source code, this isn’t really meant to be deployed elsewhere but I’m not gonna stop you.»

«Этот бот был сделан для группового чата моих друзей, заранее извиняюсь за неаккуратность в исходниках — он не задумывался для деплоя где-то ещё, но останавливать вас не буду.»

— README репозитория kivirnz/chuddy

Что умеет бот (по README): скачивать аудио и видео со 1000+ сайтов, поддерживаемых yt-dlp, и заливать файл обратно в чат; OCR текста с картинок с переводом (Yandex); перевод текста (Google Translate); работу в личных чатах и группах; авторизацию через куки для закрытых сайтов; перекодирование Instagram/Facebook-видео из VP9 в H264 (чтобы iOS открывал без проблем); сжатие больших файлов; «STFU-режим» — только реакции вместо сообщений; кэш файлов через SQLite (дедупликация по file_id).

Команды бота — короткие и «на пальцах»:

Команда Что делает
.v <url> скачать видео (проигрывается в Telegram)
.a <url> скачать аудио
.tr <текст> перевести текст на английский (Google Translate)
.ocr (reply на картинку) OCR и перевод текста с изображения
.help меню помощи
stfu chuddy переключить минимальный режим (только реакции)
/add /remove добавить/убрать чат из списка разрешённых
Репозиторий kivirnz/chuddy на GitHub: README с описанием функций, настройки и раздела Architecture (v2)
Репозиторий Chuddy на момент публикации: README с функциями, настройкой и разделом «Architecture (v2)». Источник: github.com/kivirnz/chuddy, скриншот сделан автором статьи.

Стек актуальной версии (pyproject.toml и Dockerfile): Python 3.12, клиент pyrofork (форк Pyrogram, протокол MTProto), yt-dlp, aiosqlite, Pillow, aiohttp, ffmpeg в контейнере. Для запуска нужны Docker, токен бота от @BotFather, пара api_id/api_hash с my.telegram.org/apps и ID пользователя в allowed_users. Лицензия — BSD-3-Clause.

Как бот писался с ИИ

Главное число кейса автор вынес прямо в пост на Hacker News:

«My latest project, about 60% of the codebase was written with Z.ai’s GLM-5.1 model. It’s basically a Telegram bot that allows for embedding/downloading media easier within group chats. Absolutely 0 telemetry and you’re free to edit the code as you wish. […] I’m very proud of my accomplishments as I had to learn a lot to get this to work as intended.»

«Мой последний проект — около 60% кодовой базы написано моделью GLM-5.1 от Z.ai. По сути это Telegram-бот, который упрощает встраивание и скачивание медиа в групповых чатах. Ноль телеметрии, и вы свободны править код как хотите. […] Я очень горжусь результатом: мне пришлось многому научиться, чтобы всё заработало как надо.»

kivir, Show HN, 15 мая 2026

Тред Show HN про Chuddy: «about 60% of the codebase was written with Z.ai's GLM-5.1 model»
Сам пост-первоисточник: Show HN от 15.05.2026 с признанием про 60% кода за моделью. Источник: news.ycombinator.com/item?id=48149676, скриншот сделан автором статьи.

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

  1. Промпт с описанием бота. Задача формулируется одним абзацем: какие команды, какой стек, куда деплоить. Модель пишет первый каркас: обработчики команд, вызовы yt-dlp, перевод, OCR.
  2. Генерация кода по частям. GLM-5.1 закрывала типовые куски: хендлеры сообщений, парсинг команд, интеграцию с yt-dlp, конфиг в YAML, Dockerfile. Это ровно те блоки, где модель сильна — стандартные паттерны с чётким описанием.
  3. Запуск и дебаг. Бот поднимается в Docker, тестируется в реальном чате группы, ошибки и трейсы отправляются обратно в модель новым промптом — до «зелёного».
  4. Ручная доводка. Токены, куки, перекодирование под конкретные соцсети, права доступа — то, что автор правил руками. Оценка «60% за моделью» означает: оставшиеся ~40% — специфика, которую модель из коробки не знает.
Схема цикла «промпт → код → запуск → дебаг», который описал автор кейса
Цикл работы с кодинг-моделью: промпт, генерация, запуск, возврат ошибки в промпт. Схема обобщает описание автора (пост в Show HN + структура репозитория), нарисована автором статьи — точный промпт-лог kivir не публиковал.

Как это выглядит на практике — рабочий шаблон стартового промпта для похожего бота:

Сделай Telegram-бота для группы друзей на Python:
- .v <ссылка> — скачивает видео через yt-dlp и заливает обратно в чат
- .a <ссылка> — то же для аудио
- .tr <текст> — переводит текст на английский
- .ocr — распознаёт и переводит текст с картинки
Запуск через Docker, конфиг в YAML, доступ только для allowed_users.
Сначала покажи структуру файлов, потом код по модулям.

И шаблон для итерации, когда что-то сломалось:

Бот падает при скачивании ссылки из Instagram. Вот трейс: [...]
Почини, объясни причину одной фразой и покажи дифф.

Граница «модель vs человек» видна и по структуре репозитория: кода, который легко описать словами (обработчики, перевод, OCR, конфиг), много, а «грязи» вроде кук для закрытых сайтов, перекодирования VP9→H264 под iOS и порогов размеров файлов — меньше. Это и есть типичный профиль задачи, где ИИ реально тянет большую часть работы.

Рефакторинг: с шести контейнеров до одного

Самая полезная часть кейса — не «60%», а то, что было дальше. Первая версия Chuddy была микросервисной: 6 контейнеров, Postgres, RabbitMQ, Redis, отдельный FastAPI-сервис и отдельный воркер. Вторая версия — один процесс в одном контейнере. Автор задокументировал сравнение прямо в README:

v1 (6 контейнеров) v2 (1 контейнер)
Postgres (asyncpg + SQLAlchemy + Alembic) SQLite (aiosqlite)
RabbitMQ (4 очереди, 4 exchange) прямые вызовы функций
Redis-кэш удалён
FastAPI REST-сервис удалён
отдельный процесс-воркер влит в бот
~80+ файлов в 4 пакетах 14 Python-файлов
Схема рефакторинга: v1 — шесть контейнеров, v2 — один
Сравнение до/после из раздела «Architecture (v2)» README репозитория. Схема нарисована автором статьи по данным первоисточника.

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

История коммитов подтверждает: крупный коммит-«переделка» датирован началом июня 2026 года, а последние правки (фиксы allowed_users, санитизация ссылок, паузы в pyrofork) шли ещё в августе 2026-го — бот не заброшен, автор дорабатывает его спустя три месяца после поста (история коммитов).

Схема: архитектура Chuddy v2 — один процесс в одном контейнере
Как устроен v2: Telegram → бот-процесс (pyrofork) → yt-dlp → загрузка в чат; хранилище — SQLite. По данным README, схема нарисована автором статьи.

Что изменилось с мая по август 2026

Кейс датирован 15.05.2026, и с тех пор в «железе» кейса поменялось главное — модель. В мае у Z.ai актуальной была GLM-5.1, именно её использовал kivir. На момент публикации этой статьи у Z.ai флагман — GLM-5.2 (документация):

  • контекст 1M токенов «по-настоящему рабочий», вывод до 128K токенов;
  • Terminal-Bench 2.1: 81.0 против 62.0 у GLM-5.1, SWE-bench Pro: 62.1 против 58.4 — то есть скачок заметный, а не косметический;
  • по Terminal-Bench 2.1 модель вплотную подошла к Claude Opus 4.8 (85.0) и, по данным Z.ai, остаётся самой сильной открытой моделью на этих бенчмарках;
  • цена на агрегаторах на момент публикации — около $1.4 за миллион входных и $4.4 за миллион выходных токенов (кэш-чтение $0.26/M), что на фоне Sonnet 5 ($2/$10) выглядит как «бюджетный флагман» (ofox, 28.07.2026).
Официальная документация Z.ai: раздел Introducing GLM-5.2 с бенчмарками модели
Раздел «Introducing GLM-5.2» в доках Z.ai: рабочий 1M-контекст и бенчмарки Terminal-Bench 2.1 (81.0 против 62.0) и SWE-bench Pro (62.1 против 58.4). Источник: docs.z.ai/guides/llm/glm-5.2, скриншот сделан автором статьи.

Практический смысл для читателя такой: если в мае кейс «GLM пишет бота» опирался на GLM-5.1, то сейчас у модели больше контекста и заметно лучше результаты в агентских сценариях — ожидания от «60% кода за моделью» можно обновлять вверх, хотя и не до 100%.

Грабли

Кейс честно показывает и то, что пошло не так:

  • Перепроектирование на старте. Первая версия с Postgres, RabbitMQ, Redis и FastAPI решала несуществующую задачу. Личный бот для группы друзей не порождает очередь из 10 тысяч задач — он порождает 3 запроса в день. Рефакторинг до одного процесса занял у автора отдельную итерацию, которую можно было не делать.
  • Неаккуратный код и «не для деплоя». Автор сам предупреждает про неаккуратность в исходниках. Для чата друзей это нормально, для публичного продукта — нет: код от модели без ревью не стоит выкладывать в production «как есть».
  • Специфика сервисов, которую модель не знает. Перекодирование под iOS, куки, лимиты Telegram по размеру файлов — это пришлось дописывать руками. Модель пишет каркас, а «землю» вокруг него человек.
  • Telegram-бот — это не только код. Нужны токен от BotFather, пара api_id/api_hash с my.telegram.org, ID разрешённых пользователей. Для человека из РФ это ещё и отдельный пункт — см. блок ниже.

Уроки: когда ИИ-бот реально экономит время

По итогам кейса граница «экономит / не экономит» прорисовывается чётко.

ИИ-бот экономит время, когда:
— задача состоит из стандартных паттернов — хендлеры сообщений, парсинг команд, вызовы внешних API (yt-dlp, перевод, OCR), конфиг, Dockerfile;
— продукт — «один человек + один процесс», без распределённости;
— у вас есть быстрый цикл обратной связи: поднял Docker, отправил сообщение в чат, увидел ошибку, скормил её модели.

Не экономит (или делает дороже), когда:
— нужны платёжные интеграции, строгая безопасность, соответствие требованиям;
— специфика платформы глубокая (например, MTProto-нюансы, а не Bot API);
— «асинхронный» стек растёт до микросервисов без реальной нагрузки — как в v1.

И ещё один урок из кейса, который редко формулируют прямо: оценка «60% кода за моделью» не означает «на 60% быстрее». Код генерируется быстро, а вот дебаг, интеграции и доводка съедают время. Экономия реальная, но она в том, что человек не пишет типовые 60%, а не в том, что вся работа делается сама.

Российские реалии

Кейс российскому читателю интересен ровно в той мере, в какой доступны его ингредиенты: Telegram, GLM/Z.ai и оплата API.

  • Telegram в РФ работает без VPN — блокировка снята ещё в 2020 году, и это главная причина, почему «бот на Telegram» из РФ вообще имеет смысл. Оговорка: периодически появляются точечные ограничения отдельных функций или замедления в отдельных регионах; для бота через стандартный Bot API это на практике обычно не мешает. В кейсе Chuddy используется протокол MTProto (клиент pyrofork), а это уже чувствительнее к сети — если планируете повторять кейс, для России проще начинать с Bot API.
  • Z.ai (GLM) из РФ. Z.ai — международная платформа китайской Zhipu AI. На момент публикации явных заявлений о блокировке доступа из РФ нет, сайт и API открываются; но стабильность регистрации и приём именно российских карт перед покупкой стоит проверить на своей карте. Российские Visa и Mastercard, как и у большинства зарубежных API, не работают — рабочие пути те же: карты UnionPay российских банков (проходят не у всех), криптовалюта и посредники, пополнение через юрлицо или агрегаторов (OpenRouter и аналоги) (оплата зарубежных подписок из РФ, Habr, 2026; общие механики работы с зарубежными API из РФ — ЦНИС, июнь 2026).
  • Альтернативы, если Z.ai не подходит. Тот же паттерн «модель пишет бота» работает на DeepSeek и на локальных моделях. Полностью бесплатный и офлайн-вариант — Qwen3-Coder через Ollama: без VPN, без зарубежных карт, код не покидает машину; качество на сложных задачах ниже флагманов, но для бота на стандартных паттернах — достаточно. Русскоязычного разбора именно этого кейса («GLM написал Telegram-бота») в рунете на момент публикации нет — есть смежные живые материалы: опыт вайбкодинга с агентами из РФ (spryt.ru, июль 2026) и практика локальных моделей для агентов (Habr, апрель 2026).

Честные ограничения

  • «60%» — оценка автора, а не метрика. Никаких подсчётов строк или коммитов kivir не публиковал; это честная самооценка, а не измерение. Для ориентира: в кейсе Soamee долю кода агента считали по коммитам (52% — «Co-Authored-By: Claude»), здесь такой статистики нет.
  • Промпт-лог не опубликован. Цикл «промпт → код → дебаг» восстановлен по посту и структуре репозитория; конкретные формулировки промптов kivir не выкладывал.
  • Масштаб маленький. У репозитория на момент публикации 2 звезды и ни одного форка — это личный инструмент, а не проверенный в бою продукт. Он ценен как иллюстрация процесса, а не как образец архитектуры.
  • Модель и цены меняются быстро. Всё про GLM актуально на август 2026: GLM-5.2 вышла в июле, цены на агрегаторах плавают. Перед покупкой сверяйтесь с доками Z.ai.

Вывод

Кейс Chuddy — редкий пример, где автор не просто сказал «ИИ написал код», а показал работающий результат: живой бот для группы друзей, ~60% кода за моделью GLM-5.1, а потом честный рефакторинг с шести контейнеров до одного. Три вывода, которые стоит забрать: модель реально пишет типовую часть бота (хендлеры, интеграции, конфиг), но «землю» — специфику платформы и сервисов — доделывает человек; микросервисы без нагрузки — это долги, а не архитектура; и оценка «60% кода» не равна «60% времени», экономится именно рутинное написание, а не мышление.

Дальше по теме: что такое агентный кодинг, кейс: сайт на Claude Code — 639 коммитов и 52% кода от агента, как установить OpenCode, локальные нейросети для кодинга: Qwen3-Coder через Ollama.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Adblock
detector