Перейти к содержанию

Обзор

На этой странице Общайтесь с 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
WhatsApp
Signal
SMS
Email
Home Assistant
Mattermost
Matrix
DingTalk
Feishu/Lark
WeCom
WeCom Callback
Weixin
BlueBubbles
QQ
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 Полные инструменты, включая терминал
WhatsApp hermes-whatsapp Полные инструменты, включая терминал
Slack hermes-slack Полные инструменты, включая терминал
Signal hermes-signal Полные инструменты, включая терминал
SMS hermes-sms Полные инструменты, включая терминал
Email 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 Полные инструменты, включая терминал

Следующие шаги