В этом руководстве описаны изменения бота Telegram на базе агента «Гермес», который может использовать несколько сотрудников команды. В результате вы получаете команду общего ИИ-ассистента, который может писать для помощи с кодом, исследованиями, администрированием систем и многим другим — с записью по авторизации пользователя.
Что мы создаём
Telegram-бота, который:
Любой авторизованный член команды может написать в личные сообщения о помощи — код-ревью, исследования, шелл-команды, отладка
Работает на вашем экране с полным доступом к инструментам — терминал, редактирование файлов, веб-поиск, выполнение кода.
Индивидуальные сессии для каждого пользователя — у каждого свой свой контекст контекста разговора
Безопасен по умолчанию — взаимодействовать могут только одобренные пользователи, два метода авторизации.
Запланированные задачи — ежедневные стендапы, проверки состояния и напоминания, добавление в командный канал.
Предварительные требования
Перед началом убедитесь, что у вас есть:
Установленный Hermes Agent на сервере или VPS (не на ноутбуке — бот должен оставаться в работе). Следуйте руководству по установке, если ещё не установили.
Учётная запись Telegram для вас (владельца бота)
Настроенный провайдер LLM — как минимум API-ключ для OpenAI, Anthropic или другого провайдера в ~/.hermes/.env:::совет
VPS за 5$/месяц вполне достаточно для запуска шлюза. Сам Hermes легкий — затраты идут на API-вызовы LLM, и они выполняются удаленно.
Шаг 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:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
Сохраните этот токен — он понадобится на следующем шаге.
Задайте описание (необязательно, но рекомендуется):
/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, вставьте токен бота и введите свой идентификатор пользователя, когда будет предложено.
Вариант Б: Ручная обработка
Добавьте эти строки в ~/.hermes/.env:
# Telegram bot token from BotFatherTELEGRAM_BOT_TOKEN=7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
# Your Telegram user ID (numeric)TELEGRAM_ALLOWED_USERS=123456789
Поиск своего ID пользователя
Ваш ID пользователя Telegram — это числовое значение (не имя пользователя). Чтобы его найти:
Он мгновенно возвращает ваш числовой идентификатор пользователя.
Скопируйте это число в TELEGRAM_ALLOWED_USERS:::информация
Идентификатор пользователя Telegram — это, например, постоянные числа, 123456789. Они отличаются от вашего @username, который может меняться. Всегда вскормленной цифрой ID для списков разрешённых.
Шаг 3: Запуск шлюза
Быстрая проверка
Сначала запустите шлюз в интерактивном режиме, чтобы убедиться, что всё работает:
Откройте Telegram, зайдите в его бот и отправьте ему сообщение. Если он ответит, всё в порядке. Нажмите Ctrl+C, чтобы остановиться.
Продуктивный режим: установка как службы мониторинга Диптихов
Для постоянных развёртваний, которые переживают перезагрузки:
hermesgatewayinstall
sudohermesgatewayinstall--system# Linux only: boot-time system service
Это создаёт фоновую службу: пользовательскую systemd службу в Linux по умолчанию, launchd службу в macOS или системную службу Linux, запускаемую при включении, если передать --system.
# Linux — управление пользовательской службой по умолчанию
hermesgatewaystart
hermesgatewaystop
hermesgatewaystatus
# Просмотр логов в реальном времени
journalctl--user-uhermes-gateway-f
# Оставить работающим после выхода из SSH
sudologinctlenable-linger$USER# Linux серверы — явные команды для системной службы
sudohermesgatewaystart--system
sudohermesgatewaystatus--system
journalctl-uhermes-gateway-f
Затем отправьте тестовое сообщение своего боту в Telegram. Вы должны получить ответ в течение нескольких секунд.
Шаг 4: Настройка доступа к станции
Теперь дайте доступ своим коллегам. Есть два шкафа.
Подход A: Статический список разрешённых
Соберите идентификаторы пользователей Telegram каждого члена команды (пусть они натпишу @userinfobot) и запишите их списком через запятую:
# In ~/.hermes/.envTELEGRAM_ALLOWED_USERS=123456789,987654321,555555555
Перезапустить шлюз после изменений:
hermesgatewaystop&&hermesgatewaystart
Подход Б: Привязка через личные сообщения (рекомендации для команды)
Привязка через личные сообщения более гибкая — вам не нужно предварительно собирать идентификаторы пользователей. Вот как это работает:
Коллега пишет боту в личные сообщения — так как его нет в списке решенных, бот отвечает одноразовым кодом привязки:
🔐 Pairing code: XKGH5N7P
Send this code to the bot owner for approval.
Коллега отправляет вам код (по любому каналу — Slack, по электронной почте, лично)
Вы одобряете его на расстоянии:
bash
hermes pairing approve telegram XKGH5N7P
Он в системе — бот сразу начинает появляться на его сообщениях.
Управление предпочтительными пользователями:
# Посмотреть всех ожидающих и одобренных пользователей
hermespairinglist
# Отозвать доступ у кого-то
hermespairingrevoketelegram987654321# Очистить просроченные ожидающие коды
hermespairingclear-pending
```:::совет
Привязкачерезличноесообщениеидеальнадлякоманды,потомучтовамненужноперезапускатьшлюзпридобавленииновыхпользователей.Одобрениевнесеновсилунемедленно.</div>
### Вопросы безопасности
-**Никогданеустанавливайте`GATEWAY_ALLOW_ALL_USERS=true`**дляботасдоступомктерминалу—любой,ктонайдетвашуботу,сможетнастроитькомандуввашемформате.
-Кодыпривязкиистекаютчерез**1час**иобеспечиваюткриптографическуюслучайность.
-Ограничениеколичествазапросовпоследовательнойперебором:1запроспользователяза10минут,максимум3ожидающихкоданаплатформе.
-После5неудачныходобренийплатформаблокируетсяна1час.
-Вседанныепривязкихранятсясправами`chmod0600`
---
## Шаг 5: Настройка бота### Установка домашнего канала
**Домашнийканал**—этоместо,кудаботвыдаётрезультатыcron-задачипроактивныесообщения.Безнеговзапланированныхзадачахнетместадляполучениярезультатов.
**Вариант1:**Используйтекоманду`/sethome`влюбойгруппеиличатеTelegram,гдебот—маленькийребенок.
**Вариант2:**Настроитьвручнуюв`~/.hermes/.env`:
```bash
TELEGRAM_HOME_CHANNEL=-1001234567890
TELEGRAM_HOME_CHANNEL_NAME="Team Updates"
Чтобы узнать ID канала группы @userinfobot в группе — он сообщает ID чата группы.
Инструменты настройки, отображающие прогресс
Управляйте тем, сколько деталей бот показывает при использовании инструментов. В ~/.hermes/config.yaml:
display:tool_progress:new# off | new | all | verbose
Режим
Что вы видите
выключено
Только чистые ответы — инструменты любой активности
новый
Краткий статус для каждого нового инструмента (рекомендуется для мессенджеров)
все
Каждый вызов инструмента с деталями
многословный
Полный выводной инструмент, включая результаты команды
Пользователи также могут изменить это для своей сессии с помощью команды /verbose в чате.
Настройка личности с помощью SOUL.md
Для оформления стиля общения бота, отредактировав ~/.hermes/SOUL.md:
# 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
```:::информация
Файлы контекста внедряются в систему каждой сессии запроса. Делайте их краткими — каждый символ учитывается в вашем токене-бюджете.</div>---## Шаг 6: Настройка запланированных задач
После запуска шлюза вы можете запланировать повторяющиеся задачи, результаты которых будут выдаваться в командном канале.
### Ежедневный стендап
Написать боту в Telegram:
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.
Агент автоматически создаёт 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.
Таким образом, даже если кто-то попросит настроить боту что-то плохое, ваша хостовая система будет защищена.
Мониторинг шлюза
# Проверить, запущен ли шлюз
hermesgatewaystatus
# Просмотр логов в реальном времени (Linux)
journalctl--user-uhermes-gateway-f
# Просмотр логов в реальном времени (macOS)
tail-f~/.hermes/logs/gateway.log
Обновление Hermes
Из Telegram отредактируйте боту /update — он загрузит полную версию и перезапустит. Или с сервера: