Назад к списку

Telegram-бот для Claude Code: AI-ассистент в кармане

aiclaudeclaude-codetelegramtelegram-botautomation
Telegram-бот для Claude Code: AI-ассистент в кармане

Как я сделал Telegram-бота с Claude Code на старом ноутбуке: голосовые сообщения, картинки, интеграции с TickTick, Strava, Gmail через MCP. Полная инструкция по настройке.

Я пробовал разные варианты. Подключался к серверу по SSH с телефона и запускал Claude Code в tmux-сессии — работать с терминалом с мобильного оказалось отдельным видом мучений. Мелкий шрифт, неудобный ввод, случайные нажатия. Пробовал встроенную функцию claude remote-control — она позволяет продолжить локальную сессию с телефона через claude.ai или мобильное приложение Claude. Звучит идеально, но на практике пока сыровато: сессии периодически зависают, а когда хочешь переключиться на новую задачу — нет удобного способа почистить контекст и начать заново. В общем, ни один из этих подходов для повседневного мобильного использования не годился.

В итоге всё получилось сделать по-другому — через Telegram-бота. Теперь у меня полноценный Claude Code в кармане — с доступом ко всем файлам, проектам, заметкам и внешним сервисам. С голосовыми сообщениями и картинками. Работает 24/7 на старом ноутбуке в углу комнаты. Как я это сделал — ниже.

Идея: старый ноутбук как персональный сервер

У меня был лишний ноутбук, который не понадобился жене — она купила себе MacBook, на котором я, кстати, собираю билды для Timetracker под iOS. Я поставил на него Linux и превратил в домашний сервер — он просто стоит в углу с закрытой крышкой и работает. Настроил Syncthing — утилиту для синхронизации файлов между устройствами. Теперь ноутбук-сервер синхронизирован с моим основным рабочим компьютером и телефоном.

Что синхронизируется:

  • Заметки — Obsidian vault, доступен и на телефоне, и на рабочем компе, и на сервере
  • Все проекты — персональные и рабочие, с кодом и конфигами
  • Документы — сканы, важные файлы
  • Бег — план тренировок, история пробежек, заметки по подготовке к забегам
  • CLAUDE.md файлы — инструкции для Claude в каждом проекте
  • И куча всего остального — секреты, конфиги, рабочие материалы

Пункт про CLAUDE.md — ключевой. В каждом моём проекте лежит такой файл с описанием: что это за проект, как его собирать, как деплоить, какие есть особенности. Claude Code автоматически подхватывает эти файлы. А значит, бот в Telegram тоже их видит — и знает контекст каждого проекта без лишних объяснений.

Кроме того, в домашней директории лежит глобальный CLAUDE.md с информацией обо мне: семья, документы, предпочтения, структура папок. Claude знает, где что лежит, и может найти нужный файл без подсказок. Причём этот файл можно редактировать прямо через бота — сказал «запомни, что всё, что относится к бегу лежит в папке Running», и Claude сам обновит свои инструкции. В следующий раз объяснять не придётся.

Архитектура

Цепочка выглядит так:

Телеграм-бот принимает сообщение, передаёт его в Claude Code через Agent SDK. Claude CLI запускается как отдельный процесс с нужными флагами: стриминг JSON-ответов, подключение MCP-серверов, ограничение количества шагов. Claude выполняет задачу — читает файлы, запускает команды, обращается к внешним сервисам — и возвращает результат обратно в Telegram.

Сессии сохраняются в SQLite. Это значит, что диалог можно продолжить — Claude помнит предыдущий контекст.

MCP-серверы: подключение внешних сервисов

Через MCP (Model Context Protocol) к боту подключены внешние сервисы:

  • TickTick — менеджер задач. Claude может создавать, просматривать и редактировать задачи
  • Strava — данные о пробежках. Claude анализирует тренировки и даёт советы. Как я это настраивал — рассказывал отдельно
  • Gmail — чтение почты, создание черновиков писем
  • Google Calendar — просмотр расписания, создание и редактирование событий
  • Context7 — доступ к актуальной документации библиотек

Конфигурация хранится в mcp-servers.json рядом с ботом. Добавить новый сервис — дело пяти минут.

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

Установка

Бот основан на open-source проекте claude-code-telegram. Установка через uv:

uv tool install git+https://github.com/RichardAtCT/claude-code-telegram

Дальше нужно создать Telegram-бота через @BotFather и получить токен. Узнать свой Telegram user ID можно через @userinfobot.

Вся конфигурация — в файле .env:

# Telegram TELEGRAM_BOT_TOKEN=ваш_токен_от_BotFather TELEGRAM_BOT_USERNAME=имя_бота ALLOWED_USERS=ваш_telegram_id # Безопасность APPROVED_DIRECTORY=/home/username # песочница для файловых операций # API ключи ANTHROPIC_API_KEY=ваш_ключ_anthropic OPENAI_API_KEY=ваш_ключ_openai # для распознавания голоса # Заметки NOTES_DIRECTORY=/path/to/obsidian/vault # MCP ENABLE_MCP=true

Запуск как systemd-сервис

Чтобы бот работал постоянно и перезапускался при падении, я настроил его как systemd user service.

Файл ~/.config/systemd/user/claude-telegram-bot.service:

[Unit] Description=Claude Code Telegram Bot After=network-online.target Wants=network-online.target [Service] Type=simple WorkingDirectory=/home/username/.config/claude-telegram-bot ExecStart=/home/username/.local/bin/claude-telegram-bot Restart=on-failure RestartSec=10 [Install] WantedBy=default.target

Включаем и запускаем:

systemctl --user enable claude-telegram-bot systemctl --user start claude-telegram-bot

Теперь бот стартует автоматически при загрузке системы и перезапускается, если что-то пошло не так.

Доработка: голосовые сообщения

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

Я добавил поддержку голоса: бот скачивает аудиофайл (.ogg) из Telegram, отправляет его в OpenAI Whisper API для распознавания речи, а полученный текст передаёт в Claude как обычный промпт.

Whisper распознаёт отлично — и русский, и английский. Стоит копейки: минута аудио обходится в $0.006. За месяц активного использования набегает меньше доллара.

Доработка: работа с картинками

Второе ограничение — бот не умел работать с изображениями. Ни принимать, ни отправлять.

Приём картинок. Теперь, когда отправляешь фото боту, он скачивает его, сохраняет во временный файл и передаёт Claude через инструмент Read. Claude — мультимодальная модель, он понимает изображения. Можно сфотографировать документ, чек, скриншот ошибки — и попросить разобраться.

Отправка картинок. Когда Claude в процессе работы читает файл с изображением (например, ищет скан документа в заметках), бот перехватывает путь к файлу и автоматически отправляет картинку в Telegram. Не нужно просить «отправь мне файл» — если Claude прочитал картинку, она придёт сама.

Работа с заметками

На телефоне у меня Obsidian с теми же заметками, что синхронизируются на сервер. Бот имеет доступ к этой же папке. Это открывает кучу сценариев:

  • Попросить найти что-то в заметках — Claude ищет по файлам
  • Сохранить новую заметку голосом
  • Отправить фото и попросить сохранить в заметки — изображение копируется в attachments/ с автоматическим именем по таймстампу, а ссылка оформляется в формате Obsidian: ![[attachments/img_20260307_143022.jpg]]
  • Попросить найти картинку в заметках — бот найдёт и отправит прямо в чат

Реальные сценарии: «не думай, куда»

Главная ценность этой связки — не нужно думать о маршрутизации информации. Просто говоришь, что нужно, а Claude сам решает, куда это положить.

Мысль о проекте на ходу. Голосом: «В Timetracker нужно добавить экспорт в CSV». Claude знает про этот проект (есть CLAUDE.md), открывает файл заметок или TODO проекта и дописывает туда. Мне не нужно помнить, где у какого проекта какой файл.

Быстрая задача. «Напомни завтра помыть машину». Claude создаёт задачу в TickTick с нужной датой. Не нужно открывать приложение, выбирать список, ставить дату — одна фраза.

Рабочая заметка. «Запиши: на созвоне обсудили, что API v2 выкатываем в четверг». Claude сохраняет в Obsidian в нужную папку (Work/...) — он знает структуру.

Запрос информации. «Когда у меня перелёт в Новосибирск?» — Claude ищет в календаре информацию о рейсе и отвечает. «Какой у меня адрес?» — находит и говорит.

Анализ тренировки. После пробежки: «Как тебе моя сегодняшняя тренировка?» — Claude обращается к Strava, получает данные и даёт анализ. Можно тут же попросить скорректировать план будущих пробежек и сохранить.

Расписание на день. «Что у меня сегодня?» — Claude проверяет задачи в TickTick, включая просроченные, и выдаёт сводку.

Безопасность

Несколько важных моментов:

  • Whitelist по Telegram ID. Только указанные пользователи могут общаться с ботом. Все остальные сообщения игнорируются
  • Sandbox. APPROVED_DIRECTORY ограничивает файловые операции указанной директорией. Claude не может выйти за её пределы
  • Фильтрация инструментов. Можно ограничить список доступных Claude инструментов
  • Аудит. Все обращения и действия логируются

Подводные камни

Память. Бот с Claude CLI и MCP-серверами потребляет около 1.4 ГБ оперативки. Ноутбук с 8 ГБ у меня справляется, но учитывайте это.

Таймауты. Длинные операции (большие файлы, сложные запросы) могут упираться в таймауты Telegram. Бот отправляет промежуточные статусы, но иногда приходится подождать.

Syncthing-конфликты. Если файл редактируется одновременно на двух устройствах, Syncthing создаёт конфликтную копию. Решается правильной настройкой .stignore и пониманием, что сервер — это read-write нода, а не просто зеркало.

CLAUDE.md — суперсила. Если вы уже используете Claude Code и ведёте CLAUDE.md в проектах — бот автоматически подхватывает весь этот контекст. Если не ведёте — это повод начать.

Итог

Вся эта связка — старый ноутбук + Linux + Syncthing + Telegram-бот + Claude Code — превращает AI-ассистента из инструмента «за рабочим столом» в инструмент «всегда с собой». Главное преимущество — не нужно думать о маршрутизации информации. Заметка, задача, инструкция к проекту, запрос документа — всё через одну точку входа. Claude знает структуру файлов, знает контекст проектов, знает, где что лежит. Просто говоришь — он делает.

Если у вас есть лишний компьютер, Claude Code и пара вечеров — попробуйте. Необязательно даже иметь физическую машину — такой сетап можно поднять и на VPS в облаке, главное, чтобы там крутился Linux и был установлен Claude Code. Это один из тех случаев, когда результат сильно превосходит затраченные усилия.

© 2026 Ivan Bezdenezhnykh. Все права защищены.