Telegram Assistant
На этой странице Это руководство проведёт вас через настройку Telegram-бота на базе Hermes Agent, которым сможет пользоваться вся команда. В результате ваша команда получит общего AI-ассистента, которому можно писать для помощи с кодом, исследованиями, администрированием системы и многим другим — защищённого поштучной авторизацией пользователей.
Что мы создаём¶
Telegram-бот, который: * Любой авторизованный член команды может написать в личку за помощью — код-ревью, исследования, shell-команды, отладка * Запускается на вашем сервере с полным доступом к инструментам — терминал, редактирование файлов, веб-поиск, выполнение кода * Индивидуальные сессии — у каждого пользователя свой контекст беседы * Безопасен по умолчанию — только одобренные пользователи могут взаимодействовать, два метода авторизации * Запланированные задачи — ежедневные стендапы, проверки здоровья и напоминания, доставляемые в командный канал
Предварительные требования¶
Перед началом убедитесь, что у вас есть:
* Hermes Agent установлен на сервере или VPS (не на ноутбуке — бот должен работать постоянно). Следуйте руководству по установке, если ещё не сделали этого.
* Аккаунт Telegram для себя (владельца бота)
* Настроен LLM-провайдер — как минимум API-ключ для OpenAI, Anthropic или другого поддерживаемого провайдера в ~/.hermes/.env
tip VPS за $5/месяц более чем достаточно для запуска шлюза. Сам Hermes лёгковесный — затраты идут на LLM API-вызовы, которые выполняются удалённо.
Шаг 1: Создайте Telegram-бота¶
Каждый Telegram-бот начинается с @BotFather — официального бота Telegram для создания ботов.
1. Откройте Telegram и найдите @BotFather или перейдите по ссылке t.me/BotFather
2. Отправьте/newbot — BotFather задаст два вопроса:
* Отображаемое имя — то, что видят пользователи (например, Team Hermes Assistant)
* Имя пользователя — должно заканчиваться на bot (например, myteam_hermes_bot)
3. Скопируйте токен бота — BotFather ответит примерно таким сообщением:
[code] Use this token to access the HTTP API:
7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
[/code] Сохраните этот токен — он понадобится на следующем шаге. 4. Установите описание (необязательно, но рекомендуется): [code] /setdescription
[/code] Выберите своего бота, затем введите что-то вроде: [code] Team AI assistant powered by Hermes Agent. DM me for help with code, research, debugging, and more.
[/code] 5. Установите команды бота (необязательно — даёт пользователям меню команд): [code] /setcommands
[/code]
Выберите своего бота, затем вставьте:
[code] new - Start a fresh conversation
model - Show or change the AI model
status - Show session info
help - Show available commands
stop - Stop the current task
[/code]
warning
Держите токен бота в секрете. Любой, у кого есть токен, может управлять ботом. Если токен утёк, используйте /revoke в BotFather для生成 нового.
Шаг 2: Настройте шлюз¶
У вас есть два варианта: интерактивный мастер настройки (рекомендуется) или ручная конфигурация.
Вариант A: Интерактивная настройка (рекомендуется)¶
[code] hermes gateway setup
[/code] Мастер проведёт вас через все этапы с выбором с помощью стрелок. Выберите Telegram, вставьте токен бота и введите свой ID пользователя по запросу.
Вариант B: Ручная настройка¶
Добавьте эти строки в ~/.hermes/.env:
[code]
# Telegram bot token from BotFather
TELEGRAM_BOT_TOKEN=7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
# Your Telegram user ID (numeric)
TELEGRAM_ALLOWED_USERS=123456789
[/code]
Как узнать свой ID пользователя¶
Ваш ID пользователя Telegram — это числовое значение (не имя пользователя). Чтобы узнать его:
1. Напишите @userinfobot в Telegram
2. Он мгновенно ответит вашим числовым ID пользователя
3. Скопируйте это число в TELEGRAM_ALLOWED_USERS
info
ID пользователей Telegram — это постоянные числа, например 123456789. Они отличаются от @username, который может меняться. Всегда используйте числовой ID для списков разрешений.
Шаг 3: Запустите шлюз¶
Быстрая проверка¶
Сначала запустите шлюз в режиме переднего плана, чтобы убедиться, что всё работает: [code] hermes gateway
[/code]
Вы должны увидеть вывод, похожий на:
[code]
[Gateway] Starting Hermes Gateway...
[Gateway] Telegram adapter connected
[Gateway] Cron scheduler started (tick every 60s)
[/code]
Откройте Telegram, найдите своего бота и отправьте ему сообщение. Если он отвечает — вы в деле. Нажмите Ctrl+C для остановки.
Продакшн: Установка как сервис¶
Для постоянного развёртывания, которое переживает перезагрузки:
[code]
hermes gateway install
sudo hermes gateway install --system # Linux only: boot-time system service
[/code]
Это создаёт фоновый сервис: пользовательский systemd-сервис на Linux по умолчанию, launchd-сервис на macOS или системный сервис Linux для автозагрузки, если передать --system.
[code]
# Linux — manage the default user service
hermes gateway start
hermes gateway stop
hermes gateway status
# View live logs
journalctl --user -u hermes-gateway -f
# Keep running after SSH logout
sudo loginctl enable-linger $USER
# Linux servers — explicit system-service commands
sudo hermes gateway start --system
sudo hermes gateway status --system
journalctl -u hermes-gateway -f
[/code]
[code]
# macOS — manage the service
hermes gateway start
hermes gateway stop
tail -f ~/.hermes/logs/gateway.log
[/code]
macOS PATH
Файл launchd plist захватывает ваш shell PATH при установке, чтобы подпроцессы шлюза могли найти такие инструменты, как Node.js и ffmpeg. Если вы установите новые инструменты позже, повторно запустите hermes gateway install, чтобы обновить plist.
Проверьте, что он запущен¶
[code] hermes gateway status
[/code] Затем отправьте тестовое сообщение своему боту в Telegram. Вы должны получить ответ в течение нескольких секунд.
Шаг 4: Настройте доступ для команды¶
Теперь давайте предоставим доступ вашим коллегам. Есть два подхода.
Подход A: Статический список разрешений¶
Соберите ID пользователей Telegram каждого члена команды (пусть они напишут @userinfobot) и добавьте их в виде списка через запятую:
[code]
# In ~/.hermes/.env
TELEGRAM_ALLOWED_USERS=123456789,987654321,555555555
[/code] Перезапустите шлюз после изменений: [code] hermes gateway stop && hermes gateway start
[/code]
Подход B: Привязка через личные сообщения (рекомендуется для команд)¶
Привязка через личные сообщения гибче — вам не нужно собирать ID пользователей заранее. Вот как это работает:
1. Коллега пишет боту в личку — так как его нет в списке разрешений, бот отвечает одноразовым кодом привязки:
[code] 🔐 Pairing code: XKGH5N7P
Send this code to the bot owner for approval.
[/code] 2. Коллега отправляет вам код (любым каналом — Slack, email, лично) 3. Вы подтверждаете его на сервере: [code] hermes pairing approve telegram XKGH5N7P
[/code] 4. Он в деле — бот немедленно начинает отвечать на его сообщения
Управление привязанными пользователями:
[code]
# See all pending and approved users
hermes pairing list
# Revoke someone's access
hermes pairing revoke telegram 987654321
# Clear expired pending codes
hermes pairing clear-pending
[/code] tip Привязка через личные сообщения идеальна для команд, потому что вам не нужно перезапускать шлюз при добавлении новых пользователей. Подтверждения вступают в силу немедленно.
Вопросы безопасности¶
- Никогда не устанавливайте
GATEWAY_ALLOW_ALL_USERS=trueдля бота с доступом к терминалу — любой, кто найдёт вашего бота, сможет выполнять команды на вашем сервере - Коды привязки истекают через 1 час и используют криптографическую случайность
- Ограничение скорости предотвращает атаки перебором: 1 запрос на пользователя за 10 минут, макс. 3 ожидающих кода на платформу
- После 5 неудачных попыток подтверждения платформа блокируется на 1 час
- Все данные привязки хранятся с правами доступа
chmod 0600
Шаг 5: Настройте бота¶
Установите домашний канал¶
Домашний канал — это канал, куда бот доставляет результаты cron-задач и проактивные сообщения. Без него у запланированных задач нет места для вывода.
Вариант 1: Используйте команду /sethome в любой Telegram-группе или чате, где состоит бот.
Вариант 2: Установите вручную в ~/.hermes/.env:
[code]
TELEGRAM_HOME_CHANNEL=-1001234567890
TELEGRAM_HOME_CHANNEL_NAME="Team Updates"
[/code] Чтобы узнать ID канала, добавьте @userinfobot в группу — он сообщит ID чата группы.
Настройте отображение прогресса инструментов¶
Управляйте тем, сколько деталей показывает бот при использовании инструментов. В ~/.hermes/config.yaml:
[code]
display:
tool_progress: new # off | new | all | verbose
[/code]
Режим| Что вы видите
---|---
off| Только чистые ответы — без активности инструментов
new| Краткий статус для каждого нового вызова инструмента (рекомендуется для мессенджеров)
all| Каждый вызов инструмента с деталями
verbose| Полный вывод инструментов, включая результаты команд
Пользователи также могут изменить это в рамках сессии командой /verbose в чате.
Настройте личность с помощью SOUL.md¶
Настройте стиль общения бота, отредактировав ~/.hermes/SOUL.md:
Полное руководство см. в Использование SOUL.md с Hermes.
[code]
# Soul
You are a helpful team assistant. Be concise and technical.
Use code blocks for any code. Skip pleasantries — the team
values directness. When debugging, always ask for error logs
before guessing at solutions.
[/code]
Добавьте контекст проекта¶
Если ваша команда работает над конкретными проектами, создайте файлы контекста, чтобы бот знал ваш стек:
[code]
# Team Context
- We use Python 3.12 with FastAPI and SQLAlchemy
- Frontend is React with TypeScript
- CI/CD runs on GitHub Actions
- Production deploys to AWS ECS
- Always suggest writing tests for new code
[/code] info Файлы контекста внедряются в системный промпт каждой сессии. Держите их краткими — каждый символ учитывается в вашем токенном бюджете.
Шаг 6: Настройте запланированные задачи¶
С запущенным шлюзом вы можете планировать повторяющиеся задачи, результаты которых будут доставляться в ваш командный канал.
Ежедневная сводка стендапа¶
Напишите боту в Telegram:
[code]
Every weekday at 9am, check the GitHub repository at
github.com/myorg/myproject for:
1. Pull requests opened/merged in the last 24 hours
2. Issues created or closed
3. Any CI/CD failures on the main branch
Format as a brief standup-style summary.
[/code] Агент автоматически создаёт cron-задачу и доставляет результаты в чат, где вы запросили (или в домашний канал).
Проверка здоровья сервера¶
[code]
Every 6 hours, check disk usage with 'df -h', memory with 'free -h',
and Docker container status with 'docker ps'. Report anything unusual —
partitions above 80%, containers that have restarted, or high memory usage.
[/code]
Управление запланированными задачами¶
[code]
# From the CLI
hermes cron list # View all scheduled jobs
hermes cron status # Check if scheduler is running
# From Telegram chat
/cron list # View jobs
/cron remove <job_id> # Remove a job
[/code] warning Промпты cron-задач выполняются в полностью новых сессиях без памяти о предыдущих разговорах. Убедитесь, что каждый промпт содержит весь контекст, необходимый агенту — пути к файлам, URL, адреса серверов и чёткие инструкции.
Советы для продакшна¶
Используйте Docker для безопасности¶
Для общего командного бота используйте Docker в качестве бэкенда терминала, чтобы команды агента выполнялись в контейнере, а не на вашем хосте:
[code]
# In ~/.hermes/.env
TERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=nikolaik/python-nodejs:python3.11-nodejs20
[/code]
Или в ~/.hermes/config.yaml:
[code]
terminal:
backend: docker
container_cpu: 1
container_memory: 5120
container_persistent: true
[/code] Таким образом, даже если кто-то попросит бота выполнить что-то разрушительное, ваша хост-система будет защищена.
Мониторинг шлюза¶
[code]
# Check if the gateway is running
hermes gateway status
# Watch live logs (Linux)
journalctl --user -u hermes-gateway -f
# Watch live logs (macOS)
tail -f ~/.hermes/logs/gateway.log
[/code]
Держите Hermes обновлённым¶
Из Telegram отправьте боту /update — он скачает последнюю версию и перезапустится. Или с сервера:
[code]
hermes update
hermes gateway stop && hermes gateway start
[/code]
Расположение логов¶
| Что | Расположение |
|---|---|
| Логи шлюза | journalctl --user -u hermes-gateway (Linux) или ~/.hermes/logs/gateway.log (macOS) |
| Вывод cron-задач | ~/.hermes/cron/output/{job_id}/{timestamp}.md |
| Определения cron-задач | ~/.hermes/cron/jobs.json |
| Данные привязки | ~/.hermes/pairing/ |
| История сессий | ~/.hermes/sessions/ |
| * * * | |
| ## Дальнейшие шаги | |
| У вас есть работающий командный Telegram-ассистент. Вот несколько следующих шагов: | |
| * Руководство по безопасности — глубокое погружение в авторизацию, изоляцию контейнеров и одобрение команд | |
| * Шлюз сообщений — полный справочник по архитектуре шлюза, управлению сессиями и командам чата | |
| * Настройка Telegram — платформо-специфичные детали, включая голосовые сообщения и TTS | |
| * Запланированные задачи — продвинутое cron-планирование с вариантами доставки и cron-выражениями | |
| * Файлы контекста — AGENTS.md, SOUL.md и .cursorrules для проектных знаний | |
| * Личность — встроенные пресеты личности и пользовательские определения персонажей | |
| * Добавьте больше платформ — тот же шлюз может одновременно запускать Discord, Slack и WhatsApp |
Вопросы или проблемы? Откройте issue на GitHub — вклад приветствуется. * Что мы создаём * Предварительные требования * Шаг 1: Создайте Telegram-бота * Шаг 2: Настройте шлюз * Вариант A: Интерактивная настройка (рекомендуется) * Вариант B: Ручная настройка * Как узнать свой ID пользователя * Шаг 3: Запустите шлюз * Быстрая проверка * Продакшн: Установка как сервис * Проверьте, что он запущен * Шаг 4: Настройте доступ для команды * Подход A: Статический список разрешений * Подход B: Привязка через личные сообщения (рекомендуется для команд) * Вопросы безопасности * Шаг 5: Настройте бота * Установите домашний канал * Настройте отображение прогресса инструментов * Настройте личность с помощью SOUL.md * Добавьте контекст проекта * Шаг 6: Настройте запланированные задачи * Ежедневная сводка стендапа * Проверка здоровья сервера * Управление запланированными задачами * Советы для продакшна * Используйте Docker для безопасности * Мониторинг шлюза * Держите Hermes обновлённым * Расположение логов * Дальнейшие шаги