Обзор
На этой странице Общайтесь с Hermes из Telegram, Discord, Slack, WhatsApp, Signal, SMS, Email, Home Assistant, Mattermost, Matrix, DingTalk, Feishu/Lark, WeCom, Weixin, BlueBubbles (iMessage), QQ, Yuanbao, Microsoft Teams или вашего браузера. Шлюз — это единый фоновый процесс, который подключается ко всем настроенным платформам, управляет сессиями, запускает задачи по расписанию (cron) и доставляет голосовые сообщения.
Полный набор голосовых функций — включая режим микрофона в CLI, голосовые ответы в мессенджерах и голосовые разговоры в Discord — см. в разделах Voice Mode и Use Voice Mode with Hermes.
Сравнение платформ¶
| Платформа | Голос | Изображения | Файлы | Ветки (Threads) | Реакции | Печать | Стриминг |
|---|---|---|---|---|---|---|---|
| Telegram | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ |
| Discord | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Slack | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| — | ✅ | ✅ | — | — | ✅ | ✅ | |
| Signal | — | ✅ | ✅ | — | — | ✅ | ✅ |
| SMS | — | — | — | — | — | — | — |
| — | ✅ | ✅ | ✅ | — | — | — | |
| Home Assistant | — | — | — | — | — | — | — |
| Mattermost | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ |
| Matrix | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| DingTalk | — | ✅ | ✅ | — | ✅ | — | ✅ |
| Feishu/Lark | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| WeCom | ✅ | ✅ | ✅ | — | — | ✅ | ✅ |
| WeCom Callback | — | — | — | — | — | — | — |
| Weixin | ✅ | ✅ | ✅ | — | — | ✅ | ✅ |
| BlueBubbles | — | ✅ | ✅ | — | ✅ | ✅ | — |
| ✅ | ✅ | ✅ | — | — | ✅ | — | |
| Yuanbao | ✅ | ✅ | ✅ | — | — | ✅ | ✅ |
| Microsoft Teams | — | ✅ | — | ✅ | — | ✅ | — |
Голос = TTS-аудиоответы и/или транскрипция голосовых сообщений. Изображения = отправка/получение изображений. Файлы = отправка/получение вложений. Ветки (Threads) = диалоги с ветвлением. Реакции = emoji-реакции на сообщения. Печать = индикатор набора текста во время обработки. Стриминг = прогрессивные обновления сообщений через редактирование.
Архитектура¶
Каждый адаптер платформы получает сообщения, маршрутизирует их через хранилище сессий для каждого чата и направляет в AIAgent для обработки. Шлюз также запускает планировщик cron, срабатывающий каждые 60 секунд для выполнения отложенных задач.
Быстрая настройка¶
Проще всего настроить платформы обмена сообщениями с помощью интерактивного мастера:
[code] hermes gateway setup # Интерактивная настройка всех платформ для обмена сообщениями
[/code]
Мастер проведёт вас через настройку каждой платформы с выбором с помощью стрелок, покажет, какие платформы уже настроены, и предложит запустить/перезапустить шлюз по завершении.
Команды шлюза¶
[code] hermes gateway # Запуск в режиме foreground hermes gateway setup # Интерактивная настройка платформ для обмена сообщениями hermes gateway install # Установка как пользовательского сервиса (Linux) / launchd-сервиса (macOS) sudo hermes gateway install --system # Только Linux: установка системного сервиса, запускаемого при загрузке hermes gateway start # Запуск сервиса по умолчанию hermes gateway stop # Остановка сервиса по умолчанию hermes gateway status # Проверка статуса сервиса по умолчанию hermes gateway status --system # Только Linux: явная проверка системного сервиса
[/code]
Команды чата (внутри мессенджеров)¶
| Команда | Описание |
|---|---|
/new или /reset |
Начать новый разговор |
/model [provider:model] |
Показать или сменить модель (поддерживается синтаксис provider:model) |
/personality [name] |
Установить личность (personality) |
/retry |
Повторить последнее сообщение |
/undo |
Удалить последний обмен |
/status |
Показать информацию о сессии |
/stop |
Остановить работающего агента |
/approve |
Одобрить ожидающую опасную команду |
/deny |
Отклонить ожидающую опасную команду |
/sethome |
Установить этот чат как домашний канал |
/compress |
Вручную сжать контекст разговора |
/title [name] |
Установить или показать название сессии |
/resume [name] |
Возобновить ранее именованную сессию |
/usage |
Показать использование токенов для этой сессии |
/insights [days] |
Показать аналитику использования |
/reasoning [level\|show\|hide] |
Изменить уровень рассуждений или показать/скрыть отображение рассуждений |
/voice [on\|off\|tts\|join\|leave\|status] |
Управление голосовыми ответами в мессенджерах и голосовыми каналами Discord |
/rollback [number] |
Показать или восстановить контрольные точки файловой системы |
/background <prompt> |
Запустить запрос в отдельной фоновой сессии |
/reload-mcp |
Перезагрузить MCP-серверы из конфигурации |
/update |
Обновить Hermes Agent до последней версии |
/help |
Показать доступные команды |
/<skill-name> |
Вызвать любой установленный навык |
Управление сессиями¶
Персистентность сессий¶
Сессии сохраняются между сообщениями до момента сброса. Агент помнит контекст вашего разговора.
Политики сброса¶
Сессии сбрасываются на основе настраиваемых политик:
| Политика | По умолчанию | Описание |
|---|---|---|
| Ежедневно (Daily) | 4:00 | Сброс в определённый час каждый день |
| По бездействию (Idle) | 1440 мин | Сброс после N минут бездействия |
| Обе (Both) | (комбинированно) | Срабатывает то, что наступит раньше |
Настройка индивидуальных переопределений для каждой платформы в ~/.hermes/gateway.json:
[code] { "reset_by_platform": { "telegram": { "mode": "idle", "idle_minutes": 240 }, "discord": { "mode": "idle", "idle_minutes": 60 } } }
[/code]
Безопасность¶
По умолчанию шлюз запрещает доступ всем пользователям, которых нет в списке разрешённых или которые не прошли сопряжение через ЛС. Это безопасное поведение по умолчанию для бота с доступом к терминалу.
[code] # Ограничение конкретными пользователями (рекомендуется): TELEGRAM_ALLOWED_USERS=123456789,987654321 DISCORD_ALLOWED_USERS=123456789012345678 SIGNAL_ALLOWED_USERS=+155*4567,+1556543 SMS_ALLOWED_USERS=+1554567,+155*6543 EMAIL_ALLOWED_USERS=trusted@example.com,colleague@work.com MATTERMOST_ALLOWED_USERS=3uo8dkh1p7g1mfk49ear5fzs5c MATRIX_ALLOWED_USERS=@alice:matrix.org DINGTALK_ALLOWED_USERS=user-id-1 FEISHU_ALLOWED_USERS=ou_xxxxxxxx,ou_yyyyyyyy WECOM_ALLOWED_USERS=user-id-1,user-id-2 WECOM_CALLBACK_ALLOWED_USERS=user-id-1,user-id-2 TEAMS_ALLOWED_USERS=aad-object-id-1,aad-object-id-2
# Или разрешить через единую переменную
GATEWAY_ALLOWED_USERS=123456789,987654321
# Или явно разрешить всех пользователей (НЕ рекомендуется для ботов с доступом к терминалу):
GATEWAY_ALLOW_ALL_USERS=true
[/code]
Сопряжение через ЛС (альтернатива спискам разрешённых)¶
Вместо ручной настройки идентификаторов пользователей, неизвестные пользователи получают одноразовый код сопряжения, когда пишут боту в ЛС:
[code] # Пользователь видит: "Pairing code: XKGH5N7P" # Вы одобряете его командой: hermes pairing approve telegram XKGH5N7P
# Другие команды сопряжения:
hermes pairing list # Просмотр ожидающих + одобренных пользователей
hermes pairing revoke telegram 123456789 # Удаление доступа
[/code]
Коды сопряжения действуют 1 час, имеют ограничение скорости и используют криптографическую случайность.
Прерывание агента¶
Отправьте любое сообщение, пока агент работает, чтобы прервать его. Ключевые особенности:
- Выполняющиеся команды терминала немедленно завершаются (SIGTERM, затем SIGKILL через 1 с)
- Вызовы инструментов отменяются — выполняется только текущий, остальные пропускаются
- Несколько сообщений объединяются — сообщения, отправленные во время прерывания, соединяются в один запрос
- Команда
/stop— прерывает без постановки в очередь последующего сообщения
Режимы: очередь, прерывание и управление (busy-input mode)¶
По умолчанию отправка сообщения занятому агенту прерывает его. Доступны два других режима:
queue— последующие сообщения ожидают и выполняются как следующий шаг после завершения текущей задачи.steer— последующие сообщения внедряются в текущий запуск через/steer, поступая агенту после следующего вызова инструмента. Без прерывания, без нового шага. Откатывается к поведениюqueue, если агент ещё не начал работу.
[code] display: busy_input_mode: steer # или queue, или interrupt (по умолчанию) busy_ack_enabled: true # установите false, чтобы полностью скрыть ответ ⚡/⏳/⏩ в чате
[/code]
При первом сообщении занятому агенту на любой платформе Hermes добавляет однострочное напоминание к busy-ack, объясняющее настройку ("💡 Первый раз? Совет — …"). Напоминание срабатывает один раз после установки — флаг onboarding.seen.busy_input_prompt фиксирует это. Удалите этот ключ, чтобы увидеть подсказку снова.
Если busy-ack кажется вам излишним — особенно при голосовом вводе или быстром наборе сообщений — установите display.busy_ack_enabled: false. Ваш ввод по-прежнему будет ставиться в очередь, управляться или прерывать, как обычно; скрывается только ответ в чате.
Уведомления о прогрессе инструментов¶
Управление отображением активности инструментов в ~/.hermes/config.yaml:
[code] display: tool_progress: all # off | new | all | verbose tool_progress_command: false # установите true, чтобы включить /verbose в мессенджерах
[/code]
При включении бот отправляет сообщения о статусе во время работы:
[code]
💻 ls -la...
🔍 web_search...
📄 web_extract...
🐍 execute_code...
[/code]
Фоновые сессии¶
Запустите запрос в отдельной фоновой сессии, чтобы агент работал над ним независимо, пока ваш основной чат остаётся отзывчивым:
[code] /background Проверь все серверы в кластере и сообщи о тех, которые недоступны
[/code]
Hermes немедленно подтверждает:
[code] 🔄 Фоновая задача запущена: "Проверить все серверы в кластере..." ID задачи: bg_143022_a1b2c3
[/code]
Как это работает¶
Каждый запрос /background порождает отдельный экземпляр агента, который работает асинхронно:
- Изолированная сессия — фоновый агент имеет собственную сессию с собственной историей разговоров. У него нет информации о контексте вашего текущего чата; он получает только предоставленный вами запрос.
- Та же конфигурация — наследует вашу модель, провайдера, наборы инструментов, настройки рассуждений и маршрутизацию провайдеров из текущей конфигурации шлюза.
- Неблокирующий — ваш основной чат остаётся полностью интерактивным. Отправляйте сообщения, запускайте другие команды или начинайте новые фоновые задачи, пока он работает.
- Доставка результата — когда задача завершается, результат отправляется обратно в тот же чат или канал, где вы ввели команду, с префиксом "✅ Фоновая задача завершена". В случае ошибки вы увидите "❌ Фоновая задача не выполнена" с описанием ошибки.
Уведомления фоновых процессов¶
Когда агент, выполняющий фоновую сессию, использует terminal(background=true) для запуска длительных процессов (серверы, сборки и т.д.), шлюз может отправлять обновления статуса в ваш чат. Управляйте этим через display.background_process_notifications в ~/.hermes/config.yaml:
[code] display: background_process_notifications: all # all | result | error | off
[/code]
| Режим | Что вы получаете |
|---|---|
all |
Обновления выполняющегося вывода и финальное сообщение о завершении (по умолчанию) |
result |
Только финальное сообщение о завершении (независимо от кода возврата) |
error |
Только финальное сообщение при ненулевом коде возврата |
off |
Никаких сообщений от наблюдателя процессов |
Также можно установить через переменную окружения:
[code] HERMES_BACKGROUND_NOTIFICATIONS=result
[/code]
Варианты использования¶
- Мониторинг серверов — "/background Проверь работоспособность всех сервисов и предупреди меня, если что-то недоступно"
- Длительные сборки — "/background Собери и разверни staging-окружение", пока вы продолжаете общение
- Исследовательские задачи — "/background Исследуй цены конкурентов и обобщи в таблице"
- Операции с файлами — "/background Организуй фотографии в ~/Downloads по датам в папки"
tip Фоновые задачи на платформах обмена сообщениями работают по принципу "отправил и забыл" — вам не нужно ждать или проверять их. Результаты автоматически приходят в тот же чат по завершении задачи.
Управление сервисом¶
Linux (systemd)¶
[code] hermes gateway install # Установка как пользовательского сервиса hermes gateway start # Запуск сервиса hermes gateway stop # Остановка сервиса hermes gateway status # Проверка статуса journalctl --user -u hermes-gateway -f # Просмотр логов
# Включение lingering (остаётся работать после выхода из системы)
sudo loginctl enable-linger $USER
# Или установка системного сервиса, запускаемого при загрузке (работает от вашего имени)
sudo hermes gateway install --system
sudo hermes gateway start --system
sudo hermes gateway status --system
journalctl -u hermes-gateway -f
[/code]
Используйте пользовательский сервис на ноутбуках и рабочих станциях разработчика. Используйте системный сервис на VPS или безголовых хостах, которые должны автоматически запускаться при загрузке без использования systemd linger.
Избегайте одновременной установки пользовательского и системного юнитов шлюза, если только вы не делаете это намеренно. Hermes предупредит, если обнаружит оба, так как поведение start/stop/status становится неоднозначным.
Несколько установок
Если вы запускаете несколько установок Hermes на одной машине (с разными каталогами HERMES_HOME), каждая получает собственное имя systemd-сервиса. Стандартный ~/.hermes использует hermes-gateway; другие установки используют hermes-gateway-<hash>. Команды hermes gateway автоматически нацеливаются на правильный сервис для вашего текущего HERMES_HOME.
macOS (launchd)¶
[code] hermes gateway install # Установка как launchd-агента hermes gateway start # Запуск сервиса hermes gateway stop # Остановка сервиса hermes gateway status # Проверка статуса tail -f ~/.hermes/logs/gateway.log # Просмотр логов
[/code]
Сгенерированный plist находится по пути ~/Library/LaunchAgents/ai.hermes.gateway.plist. Он включает три переменных окружения:
- PATH — ваш полный PATH оболочки на момент установки, с добавленными
bin/из виртуального окружения иnode_modules/.bin. Это гарантирует, что установленные пользователем инструменты (Node.js, ffmpeg и т.д.) доступны подпроцессам шлюза, таким как WhatsApp bridge. - VIRTUAL_ENV — указывает на Python-виртуальное окружение, чтобы инструменты могли правильно разрешать пакеты.
- HERMES_HOME — ограничивает шлюз вашей установкой Hermes.
Изменения PATH после установки
plist-файлы launchd статичны — если вы установите новые инструменты (например, новую версию Node.js через nvm или ffmpeg через Homebrew) после настройки шлюза, снова запустите hermes gateway install, чтобы зафиксировать обновлённый PATH. Шлюз обнаружит устаревший plist и перезагрузится автоматически.
Несколько установок
Как и в случае с Linux systemd, каждый каталог HERMES_HOME получает собственный launchd-ярлык. Стандартный ~/.hermes использует ai.hermes.gateway; другие установки используют ai.hermes.gateway-<suffix>.
Наборы инструментов для конкретных платформ¶
Каждая платформа имеет собственный набор инструментов:
| Платформа | Набор инструментов | Возможности |
|---|---|---|
| CLI | hermes-cli |
Полный доступ |
| Telegram | hermes-telegram |
Полные инструменты, включая терминал |
| Discord | hermes-discord |
Полные инструменты, включая терминал |
hermes-whatsapp |
Полные инструменты, включая терминал | |
| Slack | hermes-slack |
Полные инструменты, включая терминал |
| Signal | hermes-signal |
Полные инструменты, включая терминал |
| SMS | hermes-sms |
Полные инструменты, включая терминал |
hermes-email |
Полные инструменты, включая терминал | |
| Home Assistant | hermes-homeassistant |
Полные инструменты + управление устройствами HA (ha_list_entities, ha_get_state, ha_call_service, ha_list_services) |
| Mattermost | hermes-mattermost |
Полные инструменты, включая терминал |
| Matrix | hermes-matrix |
Полные инструменты, включая терминал |
| DingTalk | hermes-dingtalk |
Полные инструменты, включая терминал |
| Feishu/Lark | hermes-feishu |
Полные инструменты, включая терминал |
| WeCom | hermes-wecom |
Полные инструменты, включая терминал |
| WeCom Callback | hermes-wecom-callback |
Полные инструменты, включая терминал |
| Weixin | hermes-weixin |
Полные инструменты, включая терминал |
| BlueBubbles | hermes-bluebubbles |
Полные инструменты, включая терминал |
| QQBot | hermes-qqbot |
Полные инструменты, включая терминал |
| Yuanbao | hermes-yuanbao |
Полные инструменты, включая терминал |
| Microsoft Teams | hermes-teams |
Полные инструменты, включая терминал |
| API Server | hermes (по умолчанию) |
Полные инструменты, включая терминал |
| Webhooks | hermes-webhook |
Полные инструменты, включая терминал |
Следующие шаги¶
- Telegram Setup
- Discord Setup
- Slack Setup
- WhatsApp Setup
- Signal Setup
- SMS Setup (Twilio)
- Email Setup
- Home Assistant Integration
- Mattermost Setup
- Matrix Setup
- DingTalk Setup
- Feishu/Lark Setup
- WeCom Setup
- WeCom Callback Setup
- Weixin Setup (WeChat)
- BlueBubbles Setup (iMessage)
- QQBot Setup
- Yuanbao Setup
- Microsoft Teams Setup
- Open WebUI + API Server
- Архитектура
- Быстрая настройка
- Команды шлюза
- Команды чата (внутри мессенджеров)
- Управление сессиями
- Персистентность сессий
- Политики сброса
- Безопасность
- Сопряжение через ЛС (альтернатива спискам разрешённых)
- Прерывание агента
- Режимы: очередь, прерывание и управление (busy-input mode)
- Уведомления о прогрессе инструментов
- Фоновые сессии
- Как это работает
- Уведомления фоновых процессов
- Варианты использования
- Управление сервисом
- Linux (systemd)
- macOS (launchd)
- Наборы инструментов для конкретных платформ
- Следующие шаги