Об этом проекте
tg-cli (команда tg) представляет собой Telegram-мост для AI-агентов по кодингу. Он состоит из двух частей: исходящего CLI, который агенты используют для отправки обновлений, и входящего демона tg-ctl, который передает ваши ответы с телефона обратно в активную сессию агента.
Исходящий поток. Агенты отправляют текст, HTML-отчеты, фотографии и файлы. HTML-теги определяются автоматически, а для каждого агента добавляется брендированный эмодзи-префикс. Markdown-файлы конвертируются в PDF через pandoc и headless Chrome перед загрузкой (при сбое отправляется оригинал). Пути к файлам в тексте сообщения определяются и автоматически прикрепляются путем рекурсивного поиска по рабочему дереву, при этом путь остается в подписи.
Перед отправкой срабатывают несколько защитных механизмов. Сообщения, которые из-за длины фрагментируются более чем на шесть частей, отклоняются с указанием количества символов и фрагментов. Секретные файлы никогда не прикрепляются: файлы .env, приватные SSH-ключи, pem/key/p12/pfx/ppk, конфигурационные файлы учетных данных, истории shell, tfvars, credentials.json и kubeconfig; автоопределение таких файлов игнорируется, а явный аргумент с таким файлом вызывает ошибку. Защита от «битых» токенов блокирует одиночные CJK-символы внутри латинских или кириллических слов, а также токены с двумя и более сменами скрипта, допуская при этом полноценный двуязычный текст. Защита скриншотов отклоняет сообщения, где упоминается скриншот, но фото не прикреплено. Словарный фильтр сверяет запрещенные слова из пользовательского JSON-файла с заголовком, телом и подписями каждого сообщения (без возможности обхода; при повреждении файла отправка блокируется). Автоссылки разрешаются через linear CLI для тикетов Linear и через gh для PR/issue в GitHub с кэшированием результатов на час. Отдельные функции можно отключить флагом no-feature.
Входящий поток. tg-ctl запускается автоматически при первой исходящей отправке из tmux-панели с обнаруженным агентом. Текстовые ответы из Telegram внедряются в панель этого агента. Ответ на сообщение с цитатой добавляет якорь цитирования, а команда tg replies позволяет извлечь полный оригинал. Команда /agent маршрутизирует сообщение конкретному агенту с использованием нечеткого поиска (с поддержкой кириллицы) по именам окон; при неоднозначности предлагаются кнопки выбора, сгруппированные по сессиям, а при пустом вызове выводится список агентов.
Агент, запущенный вне tmux, не имеет панели; он помечается как недоступный с указанием причины и получает второй канал через Stop-hook inbox, который считывается в конце каждого хода. В README четко указано ограничение: агент в режиме ожидания получит сообщение из очереди только при завершении следующего хода. Команда tg-ctl inbox показывает содержимое очереди.
Функция Question-to-buttons пересылает вопросы агента и запросы разрешений в Telegram в виде инлайн-кнопок, позволяя отвечать нажатием, после чего ответ сразу внедряется в панель. Поддерживаются формы вопросов и разрешений Claude Code, Codex PermissionRequest, а также события question.asked и permission.asked от opencode. Настройка выполняется идемпотентно командой install-hooks, которая сохраняет существующие настройки. Сообщения, отправленные во время ожидания ответа на вопрос, откладываются, а на просроченную карточку вопроса все еще можно ответить обычным текстом.
Команды включают stop (прерывание текущего хода), kill, status, limit (последняя телеметрия использования по агентам), tasks (фильтруемая доска задач), agent, daily (отчет о выполненной работе) и spend (использование токенов и стоимость). Фотографии и документы из Telegram скачиваются в локальный кэш, а путь к ним передается агенту. Телеметрия из Claude Code statusLine, подсчеты токенов Codex и статистика сессий Pi могут вызвать предупреждение при достижении лимита в 90%. Маршрутизация по темам форума является опциональной и экспериментальной с известными нюансами по созданию агентов при создании тем. Управление можно отключить в конфигурационном файле.
Установка. Однострочный скрипт устанавливает зависимости через Bun, добавляет tg в PATH и регистрирует навык агента; также возможен ручной клон и создание симлинка. Конфигурация хранится в .env файле в директории config с токеном бота и chat id. Подкоманда install-skill создает файл навыка и добавляет инструкции в обнаруженные файлы среды. Поскольку скачанный скрипт является исполняемым бинарным файлом, этап сборки отсутствует, а скрипт развертывания обновляет версию, отклоняя обновление при наличии локальных изменений. Изменения в коде демона требуют перезапуска, что отслеживается скриптом. Требуется один токен бота на машину, так как Telegram разрешает только одного потребителя getUpdates на токен.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.