Discord — ИИ в вашем сервере
Discord — AI in Your Server — easy-to-understand guide based on official docs
Discord — ИИ в вашем сервере
Итак, вы хотите добавить Hermes Agent в свой Discord-сервер? Отличный выбор. Это руководство проведёт вас через всё, что нужно знать — от того, как Hermes ведёт себя после приглашения, до полного процесса настройки и важных новых функций проверки работоспособности.
Начнём с самого интересного: как на самом деле общаться с Hermes в Discord.
Как Hermes ведёт себя на вашем сервере
Hermes — это не просто тупой бот, который отвечает на всё подряд. Он умно подходит к тому, когда и где говорить. Вот разбивка:
| Контекст | Поведение |
|---|---|
| Личные сообщения | Hermes отвечает на каждое сообщение. Никаких @упоминаний не нужно. Каждое ЛС получает отдельную приватную сессию. |
| Каналы сервера | По умолчанию Hermes отвечает только тогда, когда вы упоминаете его через @. В остальных случаях он молчит. |
| Каналы свободного ответа | Хотите канал, где люди могут общаться без тегов? Добавьте его в DISCORD_FREE_RESPONSE_CHANNELS — и Hermes будет отвечать на каждое сообщение прямо в канале. |
| Треды | Hermes отвечает в том же треде. Правила упоминаний действуют, если только тред или его родительский канал не являются каналами свободного ответа. |
| Общие каналы | По умолчанию Hermes хранит историю переписки каждого пользователя отдельно — даже в одном канале. Алиса и Боб, общающиеся в #research, получают две независимые сессии. |
| Сообщения с упоминанием других | Если кто-то упоминает другого пользователя через @, но не Hermes, бот по умолчанию молчит. Никаких вмешательств в разговоры, которые не адресованы ему. |
Совет профи: Хотите выделенный канал для помощи от бота, где люди могут просто писать и получать ответы? Добавьте этот канал в DISCORD_FREE_RESPONSE_CHANNELS — и готово.
Модель шлюза: больше, чем просто вебхук
Вот что важно: Hermes в Discord — это не простой вебхук, который отправляет заранее заготовленный ответ. Каждое сообщение проходит через полный конвейер:
- Проверка авторизации (
DISCORD_ALLOWED_USERS) - Проверка упоминаний / свободного ответа
- Поиск сессии
- Загрузка транскрипта сессии
- Полное выполнение агента — инструменты, память, слэш-команды
- Отправка ответа обратно в Discord
Это означает, что каждый ответ подкреплён полным интеллектом Hermes, а не просто скриптовым ответом.
Сессии: кто чем делится?
По умолчанию Hermes изолирует разговоры:
- Каждое ЛС получает свою сессию
- Каждый тред получает своё пространство имён для сессии
- Каждый пользователь в общем канале получает свою сессию
Это управляется в config.yaml:
group_sessions_per_user: true
Если вы хотите один общий разговор для всей комнаты (полезно для совместных пространств), установите значение false:
group_sessions_per_user: false
Но будьте осторожны: общие сессии означают общий контекст и общие затраты на токены. Длинная задача одного человека с кучей инструментов может раздуть контекст для всех. А если кто-то прервёт выполнение на середине, это может нарушить работу всей комнаты.
Прерывания и конкурентность
С посессионными сессиями для каждого пользователя (по умолчанию) Алиса может прервать свой собственный запрос, не влияя на разговор Боба в том же канале. Боб сохраняет свою историю, Алиса — свою, и никто никому не мешает.
С общими сессиями вся комната делит один «слот запущенного агента». Последующие сообщения от разных людей могут прерывать друг друга или вставать в очередь. Весело для совместной работы, но потенциально хаотично.
Новое: проверки работоспособности WebSocket шлюза
Вот недавнее улучшение, о котором стоит знать. У Discord есть два отдельных транспорта: REST и Gateway WebSocket. Успешный REST-вызов не доказывает, что бот всё ещё может получать события в реальном времени.
Теперь Hermes отслеживает работоспособность шлюза, проверяя:
- Состояние готовности
- Состояние закрытия клиента/сокета
- Открытость сокета
- Возраст подтверждения heartbeat (ACK)
- Задержку heartbeat
После заданного количества нездоровых выборок адаптер генерирует повторяемое фатальное событие и чисто переподключается. Никаких бесконечных циклов переподключения.
Настройте пороговые значения в config.yaml:
discord:
websocket_liveness_interval_seconds: 15
websocket_liveness_failure_threshold: 2
websocket_heartbeat_ack_max_age_seconds: 60
websocket_max_latency_seconds: 30
Примечание: старые имена liveness_interval_seconds и liveness_failure_threshold всё ещё работают как алиасы совместимости, но они больше не означают проверку REST.
Шаг 1: Создайте Discord-приложение
- Перейдите в Discord Developer Portal и войдите в систему.
- Нажмите New Application в правом верхнем углу.
- Дайте имя вашему приложению (например, «Hermes Agent») и примите Условия предоставления услуг для разработчиков.
- Нажмите Create.
Вы попадёте на страницу General Information. Запишите ваш Application ID — он понадобится для создания ссылки-приглашения.
Шаг 2: Создайте бота
- На левой боковой панели нажмите Bot.
- Discord автоматически создаст пользователя-бота для вашего приложения. При желании настройте имя пользователя.
- В разделе Authorization Flow установите Public Bot в положение ON — это требуется для ссылки-приглашения, предоставляемой Discord.
Это основа. Дальше вы получите токен бота, зададите переменные окружения и пригласите Hermes на свой сервер. И не успеете оглянуться, как ваш ИИ-ассистент уже будет прямо в Discord — готов общаться, использовать инструменты и помнить контекст, всё в реальном времени.
📖 Официальная документация
Эта статья основана на официальной документации Hermes Agent :Официальные документы › user-guide/messaging/discord