Как управлять Claude Code через Telegram и работать с агентом из телефона
Терминал — плохой интерфейс для занятого человека. Разбираем схему «Telegram-бот — сервер — агент»: как отдавать задачи голосом, получать отчёты и не отдать боту лишние права.
Терминал — отличный инструмент и ужасный интерфейс
Claude Code живёт в терминале. Для разработчика это нормально: он и так весь день в консоли. Для маркетолога, предпринимателя или владельца агентства — барьер.
Чтобы отдать задачу, нужно открыть ноутбук, подключиться к серверу, найти нужную сессию, набрать команду. На это уходит не секунда, а несколько минут и переключение контекста. В итоге половина задач, которые можно было бы отдать агенту, просто не отдаётся — лень возиться.
Решение простое: приделать к агенту тот интерфейс, который и так открыт у тебя в телефоне двести раз в день. Telegram. Пишешь сообщение — агент на сервере выполняет задачу и отвечает прямо в чат. Голосовое — ещё быстрее: наговорил на ходу, через минуту получил результат.
Я так и работаю. Мой агент Полина живёт на VPS, а разговариваю я с ней почти всегда голосом из Telegram. Ноутбук открываю, когда надо посмотреть код глазами, а не чтобы поставить задачу.
Что даёт Telegram как интерфейс к агенту
Нулевой порог входа. Не нужно учить команды терминала. Пишешь человеческим языком.
Доступ откуда угодно. В машине, в зале ожидания, на встрече. Задача ставится там, где родилась мысль, а не «когда вернусь».
Голос вместо набора. Длинное ТЗ надиктовать в разы быстрее, чем напечатать. Агент получает расшифровку и работает с ней как с обычным текстом.
Файлы в обе стороны. Скинул фото, выгрузку, документ — агент забрал и обработал. Вернул отчёт, таблицу, картинку.
Уведомления. Агент сам пишет первым: задача завершена, cron упал, сервис не отвечает, закончилось место на диске.
История. Переписка — это готовый журнал того, что ты ставил и что получил.
Схема: Telegram-бот — сервер — агент
Архитектура у такого моста предельно простая, и это её главное достоинство.
- Бот в Telegram — лицо системы. Создаётся через официального бота BotFather, получает токен.
- Мост на сервере — постоянно работающий процесс, который слушает сообщения бота. Живёт системным сервисом, чтобы подниматься сам после сбоя и перезагрузки.
- Агент — сессия Claude Code в рабочей директории проекта. Мост передаёт ей текст задачи и забирает результат.
- Хранилище — файлы с инструкциями, база, логи. Отсюда агент берёт контекст, сюда пишет результаты.
- Обратный канал — ответы, статусы и алерты уходят в тот же чат.
Ключевой момент: мост не «думает». Он только переносит сообщения и следит, чтобы сессия была жива. Вся логика — у агента. Чем тупее мост, тем надёжнее вся конструкция.
Работает это только при одном условии: машина включена всегда. На ноутбуке такой мост бессмысленен — поэтому в связке он идёт вместе с переездом агента на VPS.
Голосовые сообщения: как они превращаются в задачи
Схема в три шага:
- Мост получает голосовое и скачивает аудиофайл.
- Файл прогоняется через распознавание речи — локальной моделью на сервере или внешним сервисом.
- Текст уходит агенту как обычное сообщение.
Практика показывает две вещи. Первая: на слабом сервере тяжёлые модели распознавания съедают всю память и роняют остальные процессы — лучше взять модель полегче. Вторая: распознавание всегда немного врёт на именах, названиях проектов и доменах. Поэтому для необратимых действий полезно, чтобы агент сначала повторил задачу своими словами и попросил подтверждение.
Какие задачи реально удобно ставить из чата
| Тип задачи | Из Telegram | Лучше с ноутбука |
|---|---|---|
| Поставить задачу текстом или голосом | да | — |
| Запросить статус проекта и сводку | да | — |
| Запустить готовый сценарий или cron вручную | да | — |
| Получить отчёт, файл, таблицу | да | — |
| Проверить, живы ли сервисы и сайты | да | — |
| Быстрая правка текста или контента | да | — |
| Разбор большого куска кода глазами | — | да |
| Сложный рефакторинг с ревью | — | да |
| Первичная настройка сервера и прав | — | да |
Простое правило: из чата хорошо идёт всё, где результат можно оценить за минуту. Всё, что требует внимательного чтения вывода, честнее делать с большого экрана.
Что стоит повесить на отдельные команды
Свободный текст — это гибко, но для частых операций удобнее короткие команды. У меня, например, набор такой по смыслу:
- статус: что сейчас выполняется, что упало, что в очереди;
- логи: последние строки по конкретному процессу;
- рестарт: перезапуск зависшего сервиса;
- память: что агент помнит по текущему проекту;
- задачи: список запланированного на сегодня.
Такие команды снимают 80% рутинных запросов и не требуют от агента «думать» — он просто отдаёт факты.
Отчёты и алерты: агент пишет первым
Самая недооценённая часть схемы. Агент, который умеет инициировать сообщение, превращается из исполнителя в дежурного.
Что имеет смысл присылать:
- итог ночных задач по расписанию — одним сообщением утром;
- ошибку сразу, как только она случилась, с куском лога;
- предупреждение о ресурсах: кончается диск, растёт память;
- напоминание о действии, которое требует твоего решения;
- результат длинной задачи, которую ты поставил час назад и забыл.
Главное — не превратить чат в поток мусора. Если алертов больше десятка в день, ты перестанешь их читать, и смысл пропадёт. Фильтруй: шлётся только то, на что ты реально реагируешь.
Как формулировать задачу в чате, чтобы не переделывать
Главная причина плохого результата — не агент, а размытая постановка. В терминале ты видишь проект перед глазами и невольно даёшь контекст. В телефоне — нет, и задача превращается в «поправь там текст».
Что стоит держать в голове при диктовке:
- Назови проект явно. «В проекте X» — одна фраза, которая снимает половину ошибок.
- Скажи, где результат. В чат, в файл, на дашборд, в готовую публикацию.
- Обозначь границы. «Только главную страницу», «не трогай стили», «ничего не публикуй».
- Дай критерий готовности. По чему ты поймёшь, что задача закрыта.
- Разбей большое на шаги. Пять мелких задач подряд в чате работают лучше, чем одна гигантская.
И обратная сторона: часть контекста не надо диктовать вообще. Правила, которые повторяются от задачи к задаче — тон текстов, структура проектов, запреты — должны жить в файлах инструкций на сервере, а не в каждом голосовом. Тогда ты говоришь только то, что меняется.
Безопасность: бот — это публичная дверь
Telegram-бота может найти кто угодно. Если не ограничить доступ, ты фактически выдал незнакомым людям консоль на своём сервере. Обязательный минимум:
- Белый список. Бот отвечает только на твой user ID. Все остальные — молча игнорируются.
- Токен не в коде. Хранится в переменных окружения или отдельном защищённом файле, недоступном посторонним.
- Отдельный пользователь на сервере. Мост и агент работают не от суперпользователя.
- Подтверждение необратимых действий. Удаление, деплой, публикация, отправка клиентам — только после явного «да» в чате.
- Логирование. Каждая команда записывается: что пришло, что выполнено, с каким результатом.
- Лимиты. Ограничение на длительность задачи и на количество одновременных запусков, чтобы одна команда не съела весь сервер.
- Ротация токена. Если токен где-то засветился — отозвать и выпустить новый, не раздумывая.
И отдельная мысль: чат — не хранилище секретов. Не пересылай боту пароли и ключи «чтобы он сохранил». Для этого на сервере должно быть нормальное хранилище, а в чате — только ссылка на запись.
Типичные грабли
Мост молчит. Процесс умер, а ты узнал об этом через день. Лечится системным сервисом с автоперезапуском и отдельной проверкой «жив ли мост».
Два экземпляра моста. Запустил вручную, забыл, что уже крутится сервис — и два процесса дерутся за одного бота, сообщения теряются. Правило: запуск только через сервис, никаких ручных стартов «на минутку».
Долгая задача без обратной связи. Ты не понимаешь, работает агент или завис. Решение — промежуточные статусы: «принял», «делаю», «готово».
Лимиты Telegram. Длинные ответы режутся, большие файлы не проходят. Длинный результат лучше класть в файл или на дашборд, а в чат отдавать короткую выжимку и ссылку.
Голос понят неверно. Исправляется подтверждением перед действием.
Контекст потерян. Агент забыл, о каком проекте речь, потому что у него нет постоянной памяти. Это чинится не ботом, а памятью агента — файлами и базой, которые он читает в начале сессии.
Куда это масштабируется
Как только канал работает, на него навешивается всё остальное. Один чат становится пультом:
- контент-задачи и публикации — от идеи до готового материала, включая контент-конвейер под Reels;
- регулярные отчёты по проектам;
- запуск сценариев автоматизации и ответ от них обратно в чат;
- несколько агентов под разные зоны ответственности, каждый со своим чатом или своей командой.
Дальше это перестаёт быть «ботом» и становится рабочим местом, которое всегда с тобой в кармане.
С чего начать
- Сначала подними агента на сервере и убедись, что он нормально делает хотя бы одну задачу руками.
- Создай бота, ограничь доступ своим ID — до всего остального.
- Сделай самый простой мост: текст в чат — задача агенту — ответ обратно. Без голоса и файлов.
- Оформи мост системным сервисом с автоперезапуском.
- Добавь уведомления об ошибках.
- Только потом прикручивай голос, файлы и команды.
Порядок важен. Если начать с красивых фич, а не с надёжности, получится игрушка, которая эффектно работает три дня и потом тихо умирает.
Посмотреть, в каких форматах это разбирается и собирается под конкретные процессы, можно в разделе форматов.
Напиши Игнату лично и расскажи, какие задачи хочешь отдать агенту. Разберём, как связать Claude Code с Telegram под твои процессы.
Или сначала посмотри программу обучения «ИИ-агент на базе Claude Code».
← Все статьи блога · Обучение «ИИ-агент на базе Claude Code»