Yuanbao

Подключите Hermes к Yuanbao, корпоративной платформе обмена сообщениями от Tencent. Адаптер использует WebSocket-шлюз для доставки сообщений в реальном времени и поддерживает как прямые (C2C), так и групповые беседы.

Yuanbao — это корпоративная платформа обмена сообщениями, используемая в основном внутри Tencent и в корпоративной среде. Она использует WebSocket для связи в реальном времени, HMAC-аутентификацию и поддерживает расширенные медиа, включая изображения, файлы и голосовые сообщения.

Предварительные требования

Установите необходимые зависимости:

pip install websockets httpx aiofiles

Настройка

1. Создание бота в Yuanbao

  1. Загрузите приложение Yuanbao с https://yuanbao.tencent.com/

  2. В приложении перейдите в PAI → Мой бот и создайте нового бота

  3. После создания бота скопируйте APP_ID и APP_SECRET

2. Запуск мастера настройки

Самый простой способ настроить Yuanbao — через интерактивный мастер:

hermes gateway setup

Выберите Yuanbao при запросе. Мастер выполнит:

  1. Запросит ваш APP_ID

  2. Запросит ваш APP_SECRET

  3. Автоматически сохранит конфигурацию

WebSocket URL и API Domain имеют встроенные значения по умолчанию. Вам нужно указать только APP_ID и APP_SECRET для начала работы.

3. Настройка переменных окружения

После начальной настройки проверьте эти переменные в ~/.hermes/.env:

# Обязательно
YUANBAO_APP_ID=your-app-id
YUANBAO_APP_SECRET=your-app-secret
YUANBAO_WS_URL=wss://api.yuanbao.example.com/ws
YUANBAO_API_DOMAIN=https://api.yuanbao.example.com

# Опционально: ID учётной записи бота (обычно получается автоматически из sign-token)
# YUANBAO_BOT_ID=your-bot-id

# Опционально: внутренняя среда маршрутизации (например, test/staging/production)
# YUANBAO_ROUTE_ENV=production

# Опционально: домашний канал для cron/уведомлений (формат: direct:<account> или group:<group_code>)
YUANBAO_HOME_CHANNEL=direct:bot_account_id
YUANBAO_HOME_CHANNEL_NAME="Уведомления бота"

# Опционально: ограничение доступа (устаревшее, см. Access Control ниже для детальных политик)
YUANBAO_ALLOWED_USERS=user_account_1,user_account_2

4. Запуск шлюза

hermes gateway

Адаптер подключится к WebSocket-шлюзу Yuanbao, выполнит аутентификацию с помощью HMAC-подписей и начнёт обработку сообщений.

Возможности

Параметры конфигурации

Форматы ID чатов

Yuanbao использует идентификаторы с префиксами в зависимости от типа беседы:

Тип чата Формат Пример
Прямое сообщение (C2C) direct:<account> direct:user123
Групповое сообщение group:<group_code> group:grp456

Загрузка медиа

Адаптер Yuanbao автоматически обрабатывает загрузку медиа через COS (Tencent Cloud Object Storage):

URL-адреса медиа автоматически проверяются и загружаются перед отправкой для предотвращения SSRF-атак.

Домашний канал

Используйте команду /sethome в любом чате Yuanbao (ЛС или группа), чтобы назначить его домашним каналом. Запланированные задачи (cron) доставляют свои результаты в этот канал.

tip Авто-домашний канал Если домашний канал не настроен, первый пользователь, написавший боту, будет автоматически установлен владельцем домашнего канала. Если текущий домашний канал — это групповой чат, первое прямое сообщение переключит его на личный канал.

Вы также можете настроить его вручную в ~/.hermes/.env:

YUANBAO_HOME_CHANNEL=direct:user_account_id
# или для группы:
# YUANBAO_HOME_CHANNEL=group:group_code
YUANBAO_HOME_CHANNEL_NAME="Мои обновления бота"

Пример: Установка домашнего канала

  1. Начните беседу с ботом в Yuanbao

  2. Отправьте команду: /sethome

  3. Бот ответит: «Домашний канал установлен на [имя_чата] с ID [id_чата]. Cron-задачи будут доставляться в этот канал.»

  4. Будущие cron-задачи и уведомления будут отправляться в этот канал

Пример: Доставка cron-задачи

Создайте cron-задачу:

/cron "0 9 * * *" Проверить состояние сервера

Результат выполнения будет доставлен в ваш домашний канал Yuanbao каждый день в 9:00.

Советы по использованию

Начало беседы

Отправьте любое сообщение боту в Yuanbao:

привет

Бот ответит в той же ветке беседы.

Доступные команды

Все стандартные команды Hermes работают в Yuanbao:

Команда Описание
/new Начать новую беседу
/model [provider:model] Показать или изменить модель
/sethome Установить этот чат как домашний канал
/status Показать информацию о сессии
/help Показать доступные команды

Отправка файлов

Чтобы отправить файл боту, просто прикрепите его напрямую в чате Yuanbao. Бот автоматически загрузит и обработает вложение.

Вы также можете добавить сообщение вместе с вложением:

Пожалуйста, проанализируйте этот документ

Получение файлов

Когда вы просите бота создать или экспортировать файл, он отправляет файл прямо в ваш чат Yuanbao.

Устранение неполадок

Бот онлайн, но не отвечает на сообщения

Причина: Ошибка аутентификации при WebSocket-рукопожатии.

Решение:

  1. Проверьте правильность APP_ID и APP_SECRET

  2. Убедитесь, что WebSocket URL доступен

  3. Убедитесь, что учётная запись бота имеет соответствующие разрешения

  4. Просмотрите логи шлюза: tail -f ~/.hermes/logs/gateway.log

Ошибка «Connection refused»

Причина: WebSocket URL недоступен или неверен.

Решение:

  1. Проверьте формат WebSocket URL (должен начинаться с wss://)

  2. Проверьте сетевое подключение к домену API Yuanbao

  3. Убедитесь, что брандмауэр разрешает WebSocket-соединения

  4. Проверьте URL с помощью: curl -I https://[YUANBAO_API_DOMAIN]

Ошибка загрузки медиа

Причина: Недействительные учётные данные COS или недоступен медиа-сервер.

Решение:

  1. Проверьте правильность API_DOMAIN

  2. Убедитесь, что для вашего бота включены разрешения на загрузку медиа

  3. Убедитесь, что медиа-файл доступен и не повреждён

  4. Проверьте конфигурацию COS-бакета у администратора платформы

Сообщения не доставляются в домашний канал

Причина: Неверный формат ID домашнего канала или cron-задача ещё не запустилась.

Решение:

  1. Проверьте правильность формата YUANBAO_HOME_CHANNEL

  2. Проверьте с помощью команды /sethome, чтобы автоматически определить правильный формат

  3. Проверьте расписание cron с помощью /status

  4. Убедитесь, что у бота есть права на отправку в целевой чат

Частые разрывы соединения

Причина: Нестабильное WebSocket-соединение или ненадёжная сеть.

Решение:

  1. Проверьте логи шлюза на наличие ошибок

  2. Увеличьте таймаут heartbeat в настройках соединения

  3. Обеспечьте стабильное сетевое подключение к API Yuanbao

  4. Включите подробное логирование: HERMES_LOG_LEVEL=debug

Контроль доступа

Yuanbao поддерживает детальный контроль доступа как для личных, так и для групповых бесед:

# Политика ЛС: open (по умолчанию) | allowlist | disabled
YUANBAO_DM_POLICY=open
# ID пользователей, разделённые запятыми, которым разрешено писать боту в ЛС (используется только при DM_POLICY=allowlist)
YUANBAO_DM_ALLOW_FROM=user_id_1,user_id_2

# Политика групп: open (по умолчанию) | allowlist | disabled
YUANBAO_GROUP_POLICY=open
# Коды групп, разделённые запятыми, которым разрешено (используется только при GROUP_POLICY=allowlist)
YUANBAO_GROUP_ALLOW_FROM=group_code_1,group_code_2

Эти параметры также можно задать в config.yaml:

platforms:
  yuanbao:
    extra:
      dm_policy: allowlist
      dm_allow_from: "user1,user2"
      group_policy: open
      group_allow_from: ""

Расширенная конфигурация

Разбиение сообщений

Yuanbao имеет ограничение на максимальный размер сообщения. Hermes автоматически разбивает большие ответы с учётом Markdown-разметки (соблюдая границы блоков кода, таблиц и абзацев).

Параметры соединения

Следующие параметры соединения встроены в адаптер с разумными значениями по умолчанию:

Параметр Значение по умолчанию Описание
Таймаут подключения WebSocket 15 секунд Время ожидания WS-рукопожатия
Интервал heartbeat 30 секунд Частота ping для поддержания соединения
Макс. попыток переподключения 100 Максимальное количество попыток переподключения
Задержка переподключения 1 с → 60 с (экспоненциально) Время ожидания между попытками переподключения
Интервал heartbeat ответа 2 секунды Частота отправки статуса RUNNING
Таймаут отправки 30 секунд Таймаут для исходящих WS-сообщений
Эти значения в настоящее время не настраиваются через переменные окружения. Они оптимизированы для типичных развёртываний Yuanbao.

Подробное логирование

Включите отладочное логирование для устранения проблем с соединением:

HERMES_LOG_LEVEL=debug hermes gateway

Интеграция с другими возможностями

Cron-задачи

Планируйте задачи, выполняемые в Yuanbao:

/cron "0 */4 * * *" Отчёт о состоянии системы

Результаты доставляются в ваш домашний канал.

Фоновые задачи

Запускайте длительные операции без блокировки беседы:

/background Проанализировать все файлы в архиве

Кросс-платформенные сообщения

Отправьте сообщение из CLI в Yuanbao:

hermes chat -q "Отправить 'Привет из CLI' на yuanbao:group:group_code"