Это руководство проведёт вас через настройку Telegram-бота на основе Hermes Agent, который могут использовать несколько членов команды. В итоге ваша команда получит общего AI-ассистента, которому можно писать для помощи с кодом, исследованиями, системным администрированием и многим другим — защищённого авторизацией по пользователям.
Что мы создаём
Telegram-бот, который:
Любой авторизованный участник команды может писать в ЛС для помощи — ревью кода, исследования, shell-команды, отладка
Работает на вашем сервере с полным доступом к инструментам — терминал, редактирование файлов, веб-поиск, выполнение кода
Сессии для каждого пользователя — у каждого свой контекст беседы
Безопасен по умолчанию — только одобренные пользователи могут взаимодействовать, с двумя методами авторизации
Запланированные задачи — ежедневные стендапы, проверки здоровья и напоминания в командный канал
Предварительные требования
Перед началом убедитесь, что у вас есть:
Установленный Hermes Agent на сервере или VPS (не на ноутбуке — бот должен работать постоянно). Следуйте руководству по установке, если ещё не сделали этого.
Аккаунт Telegram для себя (владельца бота)
Настроенный LLM-провайдер — как минимум, API-ключ для OpenAI, Anthropic или другого поддерживаемого провайдера в ~/.hermes/.env
VPS за $5/мес. вполне достаточно для шлюза. Сам Hermes лёгкий — деньги тратятся на LLM API запросы, которые выполняются удалённо.
Шаг 1: Создание Telegram-бота
Каждый Telegram-бот начинается с @BotFather — официального бота Telegram для создания ботов.
Откройте Telegram и найдите @BotFather, или перейдите по ссылке t.me/BotFather
Отправьте /newbot — BotFather спросит вас два пункта:
Отображаемое имя — то, что видят пользователи (например, Team Hermes Assistant)
Имя пользователя — должно заканчиваться на bot (например, myteam_hermes_bot)
Скопируйте токен бота — BotFather ответит примерно так:
Use this token to access the HTTP API:
7123456789:***...
Сохраните этот токен — он понадобится на следующем шаге.
Установите описание (необязательно, но рекомендуется):
/setdescription
Выберите вашего бота, затем введите что-то вроде:
Team AI assistant powered by Hermes Agent. DM me for help with code, research, debugging, and more.
Установите команды бота (необязательно — даёт пользователям меню команд):
/setcommands
Выберите вашего бота, затем вставьте:
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
Храните токен бота в секрете. Любой, у кого есть токен, может управлять ботом. Если он утёк, используйте `/revoke` в BotFather для создания нового.
Шаг 2: Настройка шлюза
У вас есть два варианта: интерактивный мастер настройки (рекомендуется) или ручная настройка.
Вариант A: Интерактивная настройка (рекомендуется)
hermesgatewaysetup
Этот мастер проведёт вас через всё с выбором с помощью стрелок. Выберите Telegram, вставьте токен бота и укажите ваш ID пользователя при запросе.
Вариант B: Ручная настройка
Добавьте эти строки в ~/.hermes/.env:
# Telegram bot token from BotFatherTELEGRAM_BOT_TOKEN=7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
# Your Telegram user ID (numeric)TELEGRAM_ALLOWED_USERS=123456789
Поиск вашего ID пользователя
Ваш ID пользователя Telegram — это числовое значение (не имя пользователя). Чтобы найти его:
Он мгновенно ответит вашим числовым ID пользователя
Скопируйте этот номер в TELEGRAM_ALLOWED_USERS
ID пользователей Telegram — это постоянные числа, например 123456789. Они отличаются от вашего @username, который может меняться. Всегда используйте числовой ID для списков доступа.
Шаг 3: Запуск шлюза
Быстрая проверка
Сначала запустите шлюз в обычном режиме (foreground) чтобы убедиться, что всё работает:
Откройте Telegram, найдите вашего бота и отправьте ему сообщение. Если он ответит, всё работает. Нажмите Ctrl+C для остановки.
Продакшн: Установка как сервиса
Для постоянного развёртывания, переживающего перезагрузки:
hermesgatewayinstall
sudohermesgatewayinstall--system# Linux only: boot-time system service
Это создаёт фоновый сервис: пользовательский сервис systemd на Linux по умолчанию, сервис launchd на macOS или системный сервис Linux для загрузки, если указать --system.
# Linux — manage the default user service
hermesgatewaystart
hermesgatewaystop
hermesgatewaystatus
# View live logs
journalctl--user-uhermes-gateway-f
# Keep running after SSH logout
sudologinctlenable-linger$USER# Linux servers — explicit system-service commands
sudohermesgatewaystart--system
sudohermesgatewaystatus--system
journalctl-uhermes-gateway-f
# macOS — manage the service
hermesgatewaystart
hermesgatewaystop
tail-f~/.hermes/logs/gateway.log
tip macOS PATH
Файл plist launchd захватывает ваш shell PATH при установке, поэтому подпроцессы шлюза могут находить инструменты вроде Node.js и ffmpeg. Если вы установите новые инструменты позже, повторно выполните hermes gateway install для обновления plist.
Проверка работы
hermesgatewaystatus
Затем отправьте тестовое сообщение вашему боту в Telegram. Вы должны получить ответ в течение нескольких секунд.
Шаг 4: Настройка доступа команды
Теперь давайте дадим доступ вашим коллегам. Есть два подхода.
Подход A: Статический список доступа
Соберите ID пользователей Telegram каждого участника команды (пусть они напишут @userinfobot) и добавьте их списком через запятую:
# In ~/.hermes/.envTELEGRAM_ALLOWED_USERS=123456789,987654321,555555555
Перезапустите шлюз после изменений:
hermesgatewaystop&&hermesgatewaystart
Подход B: Привязка через ЛС (рекомендуется для команд)
Привязка через ЛС более гибкая — вам не нужно собирать ID пользователей заранее. Вот как это работает:
Коллега пишет боту в ЛС — так как его нет в списке доступа, бот отвечает одноразовым кодом привязки:
🔐 Pairing code: XKGH5N7P
Send this code to the bot owner for approval.
Коллега отправляет вам код (через любой канал — Slack, email, лично)
Вы одобряете его на сервере:
bash
hermes pairing approve telegram XKGH5N7P
Всё готово — бот немедленно начинает отвечать на их сообщения
Управление привязанными пользователями:
# See all pending and approved users
hermespairinglist
# Revoke someone's access
hermespairingrevoketelegram987654321# Clear expired pending codes
hermespairingclear-pending
Привязка через ЛС идеальна для команд, потому что вам не нужно перезапускать шлюз при добавлении новых пользователей. Одобрения вступают в силу немедленно.
Вопросы безопасности
Никогда не устанавливайте GATEWAY_ALLOW_ALL_USERS=true на боте с доступом к терминалу — любой, кто найдёт вашего бота, сможет выполнять команды на вашем сервере
Коды привязки истекают через 1 час и используют криптографическую случайность
Ограничение запросов предотвращает атаки перебором: 1 запрос на пользователя за 10 минут, макс. 3 ожидающих кода на платформу
После 5 неудачных попыток одобрения платформа блокируется на 1 час
Все данные привязки хранятся с правами chmod 0600
Шаг 5: Настройка бота
Установка домашнего канала
Домашний канал — это куда бот доставляет результаты задач cron и проактивные сообщения. Без него у запланированных задач нет места для отправки вывода.
Вариант 1: Используйте команду /sethome в любой группе или чате Telegram, где бот является участником.
# 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.
Добавление контекста проекта
Если ваша команда работает над конкретными проектами, создайте файлы контекста, чтобы бот знал ваш стек:
<!-- ~/.hermes/AGENTS.md -->
# 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
Файлы контекста внедряются в системный промпт каждой сессии. Будьте кратки — каждый символ учитывается в вашем токен-бюджете.
Шаг 6: Настройка запланированных задач
С запущенным шлюзом вы можете планировать повторяющиеся задачи, которые доставляют результаты в ваш командный канал.
Агент автоматически создаёт задачу cron и доставляет результаты в чат, где вы задали запрос (или в домашний канал).
Проверка здоровья сервера
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.
Управление запланированными задачами
# From the CLI
hermescronlist# View all scheduled jobs
hermescronstatus# Check if scheduler is running# From Telegram chat
/cronlist# View jobs
/cronremove<job_id># Remove a job
Промпты задач cron запускаются в полностью свежих сессиях без памяти о предыдущих разговорах. Убедитесь, что каждый промпт содержит **весь** контекст, необходимый агенту — пути к файлам, URL, адреса серверов и чёткие инструкции.
Советы для продакшна
Использование Docker для безопасности
На общем командном боте используйте Docker в качестве терминального бэкенда, чтобы команды агента выполнялись в контейнере, а не на вашем хосте:
# In ~/.hermes/.envTERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=nikolaik/python-nodejs:python3.11-nodejs20
Таким образом, даже если кто-то попросит бота выполнить что-то разрушительное, ваша хост-система будет защищена.
Мониторинг шлюза
# Check if the gateway is running
hermesgatewaystatus
# Watch live logs (Linux)
journalctl--user-uhermes-gateway-f
# Watch live logs (macOS)
tail-f~/.hermes/logs/gateway.log
Обновление Hermes
В Telegram отправьте /update боту — он загрузит последнюю версию и перезапустится. Или с сервера: