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

Feishu

На этой странице Hermes Agent интегрируется с Feishu и Lark в качестве полнофункционального бота. После подключения вы можете общаться с агентом в личных сообщениях или групповых чатах, получать результаты cron-задач в домашнем чате, а также отправлять текст, изображения, аудио и файлы через обычный gateway-поток.

Интеграция поддерживает оба режима подключения: * websocket — рекомендуется; Hermes открывает исходящее соединение, и вам не нужна публичная вебхук-точка * webhook — полезен, когда вы хотите, чтобы Feishu/Lark отправлял события в ваш gateway через HTTP

Как работает Hermes

Контекст Поведение
Личные сообщения Hermes отвечает на каждое сообщение.
Групповые чаты Hermes отвечает только когда бот упомянут (@mention) в чате.
Общие групповые чаты По умолчанию история сессии изолируется для каждого пользователя внутри общего чата.
Это поведение общего чата управляется через config.yaml:
[code]
group_sessions_per_user: true

[/code] Установите false, только если вам явно нужен один общий разговор на весь чат.

Шаг 1: Создайте приложение Feishu / Lark

Рекомендуемый способ: Создание по QR-коду (одна команда)

[code] hermes gateway setup

[/code] Выберите Feishu / Lark и отсканируйте QR-код мобильным приложением Feishu или Lark. Hermes автоматически создаст приложение-бота с правильными разрешениями и сохранит учётные данные.

Альтернатива: Настройка вручную

Если создание по QR-коду недоступно, мастер переключится на ручной ввод: 1. Откройте консоль разработчика Feishu или Lark: * Feishu: https://open.feishu.cn/ * Lark: https://open.larksuite.com/ 2. Создайте новое приложение. 3. В разделе Credentials & Basic Info скопируйте App ID и App Secret. 4. Включите возможность Bot для приложения. 5. Запустите hermes gateway setup, выберите Feishu / Lark и введите учётные данные по запросу.

warning Храните App Secret в тайне. Любой, у кого есть доступ к нему, может выдать себя за ваше приложение.

Шаг 2: Выберите режим подключения

Рекомендуемый: Режим WebSocket

Используйте режим WebSocket, когда Hermes запущен на вашем ноутбуке, рабочей станции или частном сервере. Публичный URL не требуется. Официальный Lark SDK открывает и поддерживает постоянное исходящее WebSocket-соединение с автоматическим переподключением. [code] FEISHU_CONNECTION_MODE=websocket

[/code] Требования: Должен быть установлен Python-пакет websockets. SDK управляет жизненным циклом соединения, поддержанием активности (heartbeats) и автоматическим переподключением. Как это работает: Адаптер запускает WebSocket-клиент Lark SDK в фоновом потоке исполнителя. Входящие события (сообщения, реакции, действия с карточками) отправляются в основной asyncio-цикл. При разрыве соединения SDK автоматически попытается переподключиться.

Опционально: Режим Webhook

Используйте режим webhook только если Hermes уже работает за достижимой HTTP-точкой. [code] FEISHU_CONNECTION_MODE=webhook

[/code] В режиме webhook Hermes запускает HTTP-сервер (через aiohttp) и обслуживает endpoint Feishu по адресу: [code] /feishu/webhook

[/code] Требования: Должен быть установлен Python-пакет aiohttp. Вы можете настроить адрес и путь вебхук-сервера: [code] FEISHU_WEBHOOK_HOST=127.0.0.1 # по умолчанию: 127.0.0.1 FEISHU_WEBHOOK_PORT=8765 # по умолчанию: 8765 FEISHU_WEBHOOK_PATH=/feishu/webhook # по умолчанию: /feishu/webhook

[/code] Когда Feishu отправляет проверочный запрос на верификацию URL (type: url_verification), webhook отвечает автоматически, так что вы можете завершить настройку подписки в консоли разработчика Feishu.

Шаг 3: Настройте Hermes

Вариант A: Интерактивная настройка

[code] hermes gateway setup

[/code] Выберите Feishu / Lark и следуйте подсказкам.

Вариант B: Ручная настройка

Добавьте следующее в ~/.hermes/.env: [code] FEISHU_APP_ID=cli_xxx FEISHU_APP_SECRET=secret_xxx FEISHU_DOMAIN=feishu FEISHU_CONNECTION_MODE=websocket

# Опционально, но настоятельно рекомендуется
FEISHU_ALLOWED_USERS=ou_xxx,ou_yyy
FEISHU_HOME_CHANNEL=oc_xxx

[/code] FEISHU_DOMAIN принимает: * feishu для Feishu China * lark для Lark international

Шаг 4: Запустите Gateway

[code] hermes gateway

[/code] Затем отправьте боту сообщение из Feishu/Lark, чтобы убедиться, что соединение активно.

Домашний чат

Используйте /set-home в чате Feishu/Lark, чтобы отметить его как домашний канал для результатов cron-задач и кросс-платформенных уведомлений. Вы также можете предварительно настроить его: [code] FEISHU_HOME_CHANNEL=oc_xxx

[/code]

Безопасность

Белый список пользователей

Для production-использования укажите белый список открытых идентификаторов (open_id) Feishu: [code] FEISHU_ALLOWED_USERS=ou_xxx,ou_yyy

[/code] Если оставить белый список пустым, любой, кто может связаться с ботом, сможет его использовать. В групповых чатах белый список проверяется по полю open_id отправителя перед обработкой сообщения.

Ключ шифрования вебхука

При работе в режиме webhook укажите ключ шифрования для проверки подписи входящих вебхук-нагрузок: [code] FEISHU_ENCRYPT_KEY=your-encrypt-key

[/code] Этот ключ находится в разделе Event Subscriptions конфигурации вашего приложения Feishu. Когда он установлен, адаптер проверяет каждый вебхук-запрос с помощью алгоритма подписи: [code] SHA256(timestamp + nonce + encrypt_key + body)

[/code] Вычисленный хеш сравнивается с заголовком x-lark-signature с использованием time-safe сравнения. Запросы с недействительной или отсутствующей подписью отклоняются с HTTP 401.

tip В режиме WebSocket проверка подписей выполняется самим SDK, поэтому FEISHU_ENCRYPT_KEY опционален. В режиме webhook настоятельно рекомендуется для production.

Токен верификации

Дополнительный уровень аутентификации, который проверяет поле token внутри вебхук-нагрузок: [code] FEISHU_VERIFICATION_TOKEN=your-verification-token

[/code] Этот токен также находится в разделе Event Subscriptions вашего приложения Feishu. Когда он установлен, каждая входящая вебхук-нагрузка должна содержать соответствующий token в объекте header. Несовпадающие токены отклоняются с HTTP 401. Оба параметра — FEISHU_ENCRYPT_KEY и FEISHU_VERIFICATION_TOKEN — могут использоваться вместе для обеспечения эшелонированной защиты.

Политика групповых сообщений

Переменная окружения FEISHU_GROUP_POLICY определяет, как и отвечает ли Hermes в групповых чатах: [code] FEISHU_GROUP_POLICY=allowlist # по умолчанию

[/code] Значение| Поведение ---|--- open| Hermes отвечает на @упоминания от любого пользователя в любой группе. allowlist| Hermes отвечает только на @упоминания от пользователей, указанных в FEISHU_ALLOWED_USERS. disabled| Hermes полностью игнорирует все групповые сообщения. Во всех режимах бот должен быть явно упомянут (@упоминание или @all) в группе, прежде чем сообщение будет обработано. Личные сообщения всегда обходят это ограничение. Установите FEISHU_REQUIRE_MENTION=false, чтобы разрешить Hermes читать весь групповой трафик без необходимости @упоминания: [code] FEISHU_REQUIRE_MENTION=false

[/code] Для початового управления установите require_mention в записи group_rules — см. раздел Управление доступом для каждой группы ниже.

Идентификация бота

Hermes автоматически определяет open_id и отображаемое имя бота при запуске. Вам нужно задавать их вручную только в случае, когда автоопределение не может связаться с API Feishu или когда ваше приложение использует идентификаторы пользователей с областью видимости тенанта: [code] FEISHU_BOT_OPEN_ID=ou_xxx # только если автоопределение не удалось FEISHU_BOT_USER_ID=xxx # требуется, если приложение использует sender_id_type=user_id FEISHU_BOT_NAME=MyBot # только если автоопределение не удалось

[/code]

Обмен сообщениями между ботами

По умолчанию Hermes игнорирует сообщения, отправленные другими ботами. Включите обмен между ботами, если хотите, чтобы Hermes участвовал в A2A-оркестрации или получал уведомления от других ботов в той же группе. [code] FEISHU_ALLOW_BOTS=mentions # по умолчанию: none

[/code] Значение| Поведение ---|--- none| Игнорировать все сообщения от других ботов (по умолчанию). mentions| Принимать только когда другой бот упоминает (@mention) Hermes. all| Принимать все сообщения от других ботов. Также настраивается как feishu.allow_bots в config.yaml (переменная окружения имеет приоритет, если заданы оба параметра). Ботов-отправителей не нужно добавлять в FEISHU_ALLOWED_USERS — этот белый список применяется только к отправителям-людям. Предоставьте область application:bot.basic_info:read, чтобы отображать имена ботов-отправителей; без неё боты-отправители всё равно будут корректно маршрутизироваться, но будут отображаться как их open_id.

Интерактивные действия с карточками

Когда пользователи нажимают кнопки или взаимодействуют с интерактивными карточками, отправленными ботом, адаптер направляет их как синтетические события команды /card: * Нажатия кнопок становятся: /card button {"key": "value", ...} * Нагрузка value из определения карточки включается в формате JSON. * Действия с карточками дедуплицируются с окном в 15 минут для предотвращения двойной обработки.

События действий с карточками отправляются с типом MessageType.COMMAND, поэтому они проходят через обычный конвейер обработки команд. Это также механизм работы подтверждения команд — когда агенту нужно выполнить опасную команду, он отправляет интерактивную карточку с кнопками Allow Once / Session / Always / Deny. Пользователь нажимает кнопку, и колбэк действия с карточкой передаёт решение об одобрении обратно агенту.

Требуемая конфигурация приложения Feishu

Интерактивные карточки требуют трёх шагов настройки в консоли разработчика Feishu. Отсутствие любого из них приводит к ошибке 200340 при нажатии пользователем кнопок на карточке. 1. Подпишитесь на событие действий с карточками: В разделе Event Subscriptions добавьте card.action.trigger в подписанные события. 2. Включите возможность «Интерактивная карточка»: В App Features > Bot убедитесь, что переключатель Interactive Card включён. Это сообщает Feishu, что ваше приложение может получать колбэки действий с карточками. 3. Настройте URL запроса карточки (только для режима webhook): В App Features > Bot > Message Card Request URL установите URL на тот же endpoint, что и ваш событийный webhook (например, https://your-server:8765/feishu/webhook). В режиме WebSocket это обрабатывается автоматически SDK.

warning Без всех трёх шагов Feishu успешно отправит интерактивные карточки (для отправки требуется только разрешение im:message:send), но нажатие любой кнопки вернёт ошибку 200340. Карточка выглядит работающей — ошибка проявляется только когда пользователь взаимодействует с ней.

Интеллектуальные ответы на комментарии в документах

Помимо чата, адаптер также может отвечать на @-упоминания, оставленные в документах Feishu/Lark. Когда пользователь оставляет комментарий к документу (выделение текста или комментарий ко всему документу) и упоминает бота (@mention), Hermes читает документ вместе с окружающей нитью комментариев и публикует ответ LLM непосредственно в нити. Работает на основе события drive.notice.comment_add_v1, обработчик: * Загружает содержимое документа и временную шкалу комментариев параллельно (20 сообщений для нитей ко всему документу, 12 для нитей с выделением текста). * Запускает агента с наборами инструментов feishu_doc + feishu_drive, ограниченными данной сессией комментария. * Разбивает ответы на части по 4000 символов и публикует их как ответы в нити. * Кэширует сессии для каждого документа на 1 час с лимитом в 50 сообщений, так что последующие комментарии к тому же документу сохраняют контекст.

Трёхуровневое управление доступом

Ответы на комментарии в документах работают только по явному разрешению — неявного режима «разрешить всем» нет. Права разрешаются в следующем порядке (первое совпадение выигрывает, для каждого поля): 1. Конкретный документ — правило, ограниченное конкретным токеном документа. 2. Шаблон (wildcard) — правило, соответствующее шаблону документов. 3. Верхний уровень — правило по умолчанию для рабочего пространства.

Для каждого правила доступны две политики: * allowlist — статический список пользователей / тенантов. * pairing — статический список ∪ разрешения, выданные в рантайме. Полезно для развёртывания, где модераторы могут предоставлять доступ в реальном времени.

Правила хранятся в ~/.hermes/feishu_comment_rules.json (парные разрешения в ~/.hermes/feishu_comment_pairing.json) с горячей перезагрузкой по mtime — изменения вступают в силу при следующем событии комментария без перезапуска gateway. CLI: [code] # Просмотр текущих правил и состояния парных разрешений python -m gateway.platforms.feishu_comment_rules status

# Симуляция проверки доступа для конкретного документа + пользователя
python -m gateway.platforms.feishu_comment_rules check <fileType:fileToken> <user_open_id>

# Управление парными разрешениями в рантайме
python -m gateway.platforms.feishu_comment_rules pairing list
python -m gateway.platforms.feishu_comment_rules pairing add <user_open_id>
python -m gateway.platforms.feishu_comment_rules pairing remove <user_open_id>

[/code]

Требуемая конфигурация приложения Feishu

В дополнение к уже предоставленным разрешениям чата/карточек, добавьте событие drive comment: * Подпишитесь на drive.notice.comment_add_v1 в разделе Event Subscriptions. * Предоставьте области docs:doc:readonly и drive:drive:readonly, чтобы обработчик мог читать содержимое документа.

Поддержка медиа

Входящие (приём)

Адаптер принимает и кэширует следующие типы медиа от пользователей: Тип| Расширения| Как обрабатывается ---|---|--- Изображения| .jpg, .jpeg, .png, .gif, .webp, .bmp| Загружаются через API Feishu и кэшируются локально Аудио| .ogg, .mp3, .wav, .m4a, .aac, .flac, .opus, .webm| Загружаются и кэшируются; небольшие текстовые файлы автоматически извлекаются Видео| .mp4, .mov, .avi, .mkv, .webm, .m4v, .3gp| Загружаются и кэшируются как документы Файлы| .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx и другие| Загружаются и кэшируются как документы Медиа из сообщений с форматированным текстом (post), включая встроенные изображения и вложения, также извлекаются и кэшируются. Для небольших текстовых документов (.txt, .md) содержимое файла автоматически внедряется в текст сообщения, чтобы агент мог прочитать его напрямую без использования инструментов.

Исходящие (отправка)

Метод Что отправляет
send Текстовые или форматированные post-сообщения (автоопределение на основе содержимого markdown)
send_image / send_image_file Загружает изображение в Feishu, затем отправляет как нативный блок изображения (с опциональной подписью)
send_document Загружает файл в API Feishu, затем отправляет как вложение
send_voice Загружает аудиофайл как вложение Feishu
send_video Загружает видео и отправляет как нативное медиасообщение
send_animation GIF-файлы понижаются до вложений (у Feishu нет нативного GIF-блока)
Маршрутизация загрузки файлов автоматическая, на основе расширения:
* .ogg, .opus → загружаются как аудио opus
* .mp4, .mov, .avi, .m4v → загружаются как медиа mp4
* .pdf, .doc(x), .xls(x), .ppt(x) → загружаются с их типом документа
* Всё остальное → загружается как generic stream-файл

Рендеринг Markdown и запасной вариант Post

Когда исходящий текст содержит форматирование markdown (заголовки, жирный текст, списки, блоки кода, ссылки и т.д.), адаптер автоматически отправляет его как сообщение Feishu post со встроенным тегом md вместо обычного текста. Это обеспечивает расширенный рендеринг в клиенте Feishu. Если API Feishu отклоняет нагрузку post (например, из-за неподдерживаемых конструкций markdown), адаптер автоматически переключается на отправку простого текста с удалённым markdown. Этот двухэтапный механизм гарантирует, что сообщения всегда доставляются. Сообщения без markdown (обычный текст) отправляются как простой тип text.

Реакции статуса обработки

Пока агент работает, бот показывает реакцию Typing на вашем сообщении. Она исчезает, когда приходит ответ, или заменяется на CrossMark, если обработка завершилась ошибкой. Установите FEISHU_REACTIONS=false, чтобы отключить это.

Защита от всплесков и пакетная обработка

Адаптер включает подавление (debouncing) для быстрых всплесков сообщений, чтобы не перегружать агента:

Пакетная обработка текста

Когда пользователь отправляет несколько текстовых сообщений подряд, они объединяются в одно событие перед отправкой: Настройка| Переменная окружения| По умолчанию ---|---|--- Период тишины| HERMES_FEISHU_TEXT_BATCH_DELAY_SECONDS| 0.6с Макс. сообщений в пакете| HERMES_FEISHU_TEXT_BATCH_MAX_MESSAGES| 8 Макс. символов в пакете| HERMES_FEISHU_TEXT_BATCH_MAX_CHARS| 4000

Пакетная обработка медиа

Несколько медиавложений, отправленных подряд (например, перетаскивание нескольких изображений), объединяются в одно событие: Настройка| Переменная окружения| По умолчанию ---|---|--- Период тишины| HERMES_FEISHU_MEDIA_BATCH_DELAY_SECONDS| 0.8с

Последовательная обработка для каждого чата

Сообщения в одном чате обрабатываются последовательно (по одному за раз) для обеспечения связности разговора. Каждый чат имеет свою собственную блокировку, поэтому сообщения в разных чатах обрабатываются параллельно.

Ограничение частоты запросов (режим Webhook)

В режиме webhook адаптер применяет ограничение частоты запросов по IP для защиты от злоупотреблений: * Окно: скользящее окно 60 секунд * Лимит: 120 запросов за окно на тройку (app_id, path, IP) * Лимит отслеживания: до 4096 уникальных ключей (предотвращает неограниченный рост памяти)

Запросы, превышающие лимит, получают HTTP 429 (Too Many Requests).

Отслеживание аномалий вебхука

Адаптер отслеживает количество последовательных ошибочных ответов для каждого IP-адреса. После 25 последовательных ошибок с одного IP-адреса в течение 6-часового окна в лог записывается предупреждение. Это помогает обнаружить неверно настроенных клиентов или попытки сканирования. Дополнительные защиты вебхука: * Лимит размера тела: максимум 1 МБ * Таймаут чтения тела: 30 секунд * Проверка Content-Type: принимается только application/json

Настройка WebSocket

При использовании режима websocket вы можете настроить поведение переподключения и ping: [code] platforms: feishu: extra: ws_reconnect_interval: 120 # Секунды между попытками переподключения (по умолчанию: 120) ws_ping_interval: 30 # Секунды между WebSocket-ping (опционально; если не задано — по умолчанию SDK)

[/code] Настройка| Ключ конфигурации| По умолчанию| Описание ---|---|---|--- Интервал переподключения| ws_reconnect_interval| 120с| Сколько ждать между попытками переподключения Интервал ping| ws_ping_interval| (по умолчанию SDK)| Частота поддерживающих ping-запросов WebSocket

Управление доступом для каждой группы

В дополнение к глобальной FEISHU_GROUP_POLICY, вы можете установить детальные правила для каждой группы в group_rules в config.yaml: [code] platforms: feishu: extra: default_group_policy: "open" # Значение по умолчанию для групп, не указанных в group_rules admins: # Пользователи, которые могут управлять настройками бота - "ou_admin_open_id" group_rules: "oc_group_chat_id_1": policy: "allowlist" # open | allowlist | blacklist | admin_only | disabled allowlist: - "ou_user_open_id_1" - "ou_user_open_id_2" "oc_group_chat_id_2": policy: "admin_only" "oc_group_chat_id_3": policy: "blacklist" blacklist: - "ou_blocked_user" "oc_free_chat": policy: "open" require_mention: false # переопределяет FEISHU_REQUIRE_MENTION для этого чата

[/code] Политика| Описание ---|--- open| Любой участник группы может использовать бота allowlist| Только пользователи из allowlist группы могут использовать бота blacklist| Все, кроме пользователей из blacklist группы, могут использовать бота admin_only| Только пользователи из глобального списка admins могут использовать бота в этой группе disabled| Бот игнорирует все сообщения в этой группе Установите require_mention: false в записи group_rules, чтобы пропустить требование @упоминания для этого конкретного чата. Если не указано, чат наследует глобальное значение FEISHU_REQUIRE_MENTION. Группы, не указанные в group_rules, возвращаются к default_group_policy (по умолчанию равно значению FEISHU_GROUP_POLICY).

Дедупликация

Входящие сообщения дедуплицируются с использованием идентификаторов сообщений с TTL в 24 часа. Состояние дедупликации сохраняется между перезапусками в ~/.hermes/feishu_seen_message_ids.json. Настройка| Переменная окружения| По умолчанию ---|---|--- Размер кэша| HERMES_FEISHU_DEDUP_CACHE_SIZE| 2048 записей

Все переменные окружения

Переменная Обязательная По умолчанию Описание
FEISHU_APP_ID App ID Feishu/Lark
FEISHU_APP_SECRET App Secret Feishu/Lark
FEISHU_DOMAIN feishu feishu (Китай) или lark (международная)
FEISHU_CONNECTION_MODE websocket websocket или webhook
FEISHU_ALLOWED_USERS (пусто) Список open_id через запятую для белого списка пользователей
FEISHU_ALLOW_BOTS none Принимать сообщения от других ботов: none, mentions или all
FEISHU_REQUIRE_MENTION true Должны ли групповые сообщения содержать @упоминание бота
FEISHU_HOME_CHANNEL ID чата для вывода cron/уведомлений
FEISHU_ENCRYPT_KEY (пусто) Ключ шифрования для проверки подписи вебхука
FEISHU_VERIFICATION_TOKEN (пусто) Токен верификации для аутентификации вебхук-нагрузки
FEISHU_GROUP_POLICY allowlist Политика групповых сообщений: open, allowlist, disabled
FEISHU_BOT_OPEN_ID (пусто) open_id бота (для обнаружения @упоминаний)
FEISHU_BOT_USER_ID (пусто) user_id бота (для обнаружения @упоминаний)
FEISHU_BOT_NAME (пусто) Отображаемое имя бота (для обнаружения @упоминаний)
FEISHU_WEBHOOK_HOST 127.0.0.1 Адрес привязки вебхук-сервера
FEISHU_WEBHOOK_PORT 8765 Порт вебхук-сервера
FEISHU_WEBHOOK_PATH /feishu/webhook Путь endpoint вебхука
HERMES_FEISHU_DEDUP_CACHE_SIZE 2048 Макс. количество отслеживаемых дедуплицированных ID сообщений
HERMES_FEISHU_TEXT_BATCH_DELAY_SECONDS 0.6 Период тишины для подавления всплесков текста
HERMES_FEISHU_TEXT_BATCH_MAX_MESSAGES 8 Макс. сообщений, объединяемых в текстовый пакет
HERMES_FEISHU_TEXT_BATCH_MAX_CHARS 4000 Макс. символов, объединяемых в текстовый пакет
HERMES_FEISHU_MEDIA_BATCH_DELAY_SECONDS 0.8 Период тишины для подавления всплесков медиа
Настройки WebSocket и ACL для каждой группы настраиваются через config.yaml в разделе platforms.feishu.extra (см. Настройка WebSocket и Управление доступом для каждой группы выше).

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

Проблема Решение
lark-oapi not installed Установите SDK: pip install lark-oapi
websockets not installed; websocket mode unavailable Установите websockets: pip install websockets
aiohttp not installed; webhook mode unavailable Установите aiohttp: pip install aiohttp
FEISHU_APP_ID or FEISHU_APP_SECRET not set Установите обе переменные окружения или настройте через hermes gateway setup
Another local Hermes gateway is already using this Feishu app_id Только один экземпляр Hermes может использовать один app_id одновременно. Сначала остановите другой gateway.
Бот не отвечает в группах Убедитесь, что бот упомянут (@mention), проверьте FEISHU_GROUP_POLICY и проверьте, находится ли отправитель в FEISHU_ALLOWED_USERS, если политика allowlist
Webhook rejected: invalid verification token Убедитесь, что FEISHU_VERIFICATION_TOKEN совпадает с токеном в конфигурации Event Subscriptions вашего приложения Feishu
Webhook rejected: invalid signature Убедитесь, что FEISHU_ENCRYPT_KEY совпадает с ключом шифрования в конфигурации приложения Feishu
Post-сообщения отображаются как обычный текст API Feishu отклонил нагрузку post; это нормальное поведение запасного варианта. Проверьте логи для подробностей.
Изображения/файлы не получены ботом Предоставьте области разрешений im:message и im:resource вашему приложению Feishu
Идентификация бота не определена автоматически Обычно временная сетевая проблема при обращении к endpoint информации о боте Feishu. Временно задайте FEISHU_BOT_OPEN_ID и FEISHU_BOT_NAME вручную.
Сообщения от других ботов по-прежнему игнорируются после включения FEISHU_ALLOW_BOTS Hermes не может идентифицировать себя — задайте FEISHU_BOT_OPEN_IDFEISHU_BOT_USER_ID, если ваше приложение использует sender_id_type=user_id).
Боты-отправители отображаются как ou_xxxxxx вместо имени Предоставьте область application:bot.basic_info:read.
Ошибка 200340 при нажатии кнопок подтверждения Включите возможность Interactive Card и настройте Card Request URL в консоли разработчика Feishu. См. Требуемая конфигурация приложения Feishu выше.
Webhook rate limit exceeded Более 120 запросов/мин с одного IP. Обычно это неверная конфигурация или зацикливание.

Набор инструментов

Feishu / Lark использует предустановку платформы hermes-feishu, которая включает те же основные инструменты, что и Telegram и другие платформы на основе gateway.