Быстрый старт
Требуется OpenClaw 2026.5.29 или новее. Выполните
openclaw --version, чтобы проверить версию. Обновитесь командой openclaw update.Запустите мастер настройки канала
Управление доступом
Личные сообщения
НастройтеdmPolicy, чтобы управлять тем, кто может отправлять личные сообщения боту:
"pairing"- неизвестные пользователи получают код сопряжения; подтвердите через CLI"allowlist"- общаться могут только пользователи, перечисленные вallowFrom"open"- разрешить публичные личные сообщения только когдаallowFromвключает"*"; при ограничивающих записях общаться могут только соответствующие пользователи"disabled"- отключить все личные сообщения
Групповые чаты
Политика групп (channels.feishu.groupPolicy):
| Значение | Поведение |
|---|---|
"open" | Отвечать на все сообщения в группах |
"allowlist" | Отвечать только группам из groupAllowFrom или явно настроенным в groups.<chat_id> |
"disabled" | Отключить все групповые сообщения; явные записи groups.<chat_id> не переопределяют это |
allowlist
Требование упоминания (channels.feishu.requireMention):
true- требовать @упоминание (по умолчанию)false- отвечать без @упоминания- Переопределение для группы:
channels.feishu.groups.<chat_id>.requireMention - Широковещательные
@allи@_allне считаются упоминаниями бота. Сообщение, в котором упомянуты и@all, и сам бот напрямую, всё равно считается упоминанием бота.
Примеры настройки групп
Разрешить все группы, @упоминание не требуется
Разрешить все группы, но по-прежнему требовать @упоминание
Разрешить только определённые группы
allowlist также можно допустить группу, добавив явную запись groups.<chat_id>. Явные записи не переопределяют groupPolicy: "disabled". Подстановочные значения по умолчанию в groups.* настраивают совпадающие группы, но сами по себе не допускают группы.
Ограничить отправителей внутри группы
Получить идентификаторы групп/пользователей
Идентификаторы групп (chat_id, формат: oc_xxx)
Откройте группу в Feishu/Lark, нажмите значок меню в правом верхнем углу и перейдите в Настройки. Идентификатор группы (chat_id) указан на странице настроек.

Идентификаторы пользователей (open_id, формат: ou_xxx)
Запустите gateway, отправьте личное сообщение боту, затем проверьте журналы:
open_id в выводе журнала. Также можно проверить ожидающие запросы на сопряжение:
Распространённые команды
| Команда | Описание |
|---|---|
/status | Показать статус бота |
/reset | Сбросить текущую сессию |
/model | Показать или сменить модель ИИ |
Feishu/Lark не поддерживает встроенные меню slash-команд, поэтому отправляйте их как обычные текстовые сообщения.
Устранение неполадок
Бот не отвечает в групповых чатах
- Убедитесь, что бот добавлен в группу
- Убедитесь, что вы @упоминаете бота (требуется по умолчанию)
- Проверьте, что
groupPolicyне равен"disabled" - Проверьте журналы:
openclaw logs --follow
Бот не получает сообщения
- Убедитесь, что бот опубликован и одобрен в Feishu Open Platform / Lark Developer
- Убедитесь, что подписка на события включает
im.message.receive_v1 - Убедитесь, что выбрано постоянное соединение (WebSocket)
- Убедитесь, что выданы все необходимые области разрешений
- Убедитесь, что gateway запущен:
openclaw gateway status - Проверьте журналы:
openclaw logs --follow
Настройка по QR-коду не реагирует в мобильном приложении Feishu
- Запустите настройку повторно:
openclaw channels login --channel feishu - Выберите ручную настройку
- В Feishu Open Platform создайте самосозданное приложение и скопируйте его App ID и App Secret
- Вставьте эти учетные данные в мастер настройки
App Secret утёк
- Сбросьте App Secret в Feishu Open Platform / Lark Developer
- Обновите значение в вашей конфигурации
- Перезапустите gateway:
openclaw gateway restart
Расширенная конфигурация
Несколько аккаунтов
defaultAccount управляет тем, какой аккаунт используется, когда исходящие API не указывают accountId.
accounts.<id>.tts использует ту же форму, что и messages.tts, и выполняет глубокое слияние поверх
глобальной конфигурации TTS, поэтому настройки Feishu с несколькими ботами могут хранить общие учетные данные
провайдера глобально, переопределяя только голос, модель, персону или автоматический режим
для каждого аккаунта.
Ограничения сообщений
textChunkLimit- размер фрагмента исходящего текста (по умолчанию:2000символов)mediaMaxMb- лимит загрузки/скачивания медиа (по умолчанию:30МБ)
Потоковая передача
Feishu/Lark поддерживает потоковые ответы через интерактивные карточки. Когда это включено, бот обновляет карточку в реальном времени по мере генерации текста.streaming: false, чтобы отправлять полный ответ одним сообщением. blockStreaming по умолчанию отключен; включайте его только если хотите, чтобы завершенные блоки ассистента отправлялись до финального ответа.
Оптимизация квоты
Сократите количество вызовов API Feishu/Lark с помощью двух необязательных флагов:typingIndicator(по умолчаниюtrue): установитеfalse, чтобы пропустить вызовы реакции набора текстаresolveSenderNames(по умолчаниюtrue): установитеfalse, чтобы пропустить запросы профилей отправителей
Сессии ACP
Feishu/Lark поддерживает ACP для личных сообщений и сообщений в групповых ветках. ACP в Feishu/Lark управляется текстовыми командами - встроенных меню slash-команд нет, поэтому используйте сообщения/acp ... прямо в разговоре.
Постоянная привязка ACP
Создать ACP из чата
В личном сообщении или ветке Feishu/Lark:--thread here работает для личных сообщений и сообщений в ветках Feishu/Lark. Последующие сообщения в привязанном разговоре направляются напрямую в эту сессию ACP.
Маршрутизация нескольких агентов
Используйтеbindings, чтобы направлять личные сообщения или группы Feishu/Lark разным агентам.
match.channel:"feishu"match.peer.kind:"direct"(личное сообщение) или"group"(групповой чат)match.peer.id: Open ID пользователя (ou_xxx) или идентификатор группы (oc_xxx)
Изоляция агента для каждого пользователя (динамическое создание агента)
ВключитеdynamicAgentCreation, чтобы автоматически создавать изолированные экземпляры агентов для каждого пользователя личных сообщений. Каждый пользователь получает собственные:
- Независимый каталог рабочего пространства
- Отдельные
USER.md/SOUL.md/MEMORY.md - Приватную историю разговора
- Изолированные Skills и состояние
Динамические привязки включают нормализованный Feishu
accountId, поэтому аккаунты по умолчанию и именованные аккаунты направляют каждого отправителя к правильному динамическому агенту.Если именованный аккаунт создал динамического агента без области действия в более старом релизе, этот legacy-агент по-прежнему учитывается в maxAgents. Убедитесь, что он не используется аккаунтом по умолчанию, прежде чем удалять его, или временно увеличьте maxAgents; OpenClaw не может безопасно определить, какому аккаунту принадлежит неоднозначное legacy-состояние.Быстрая настройка
Как это работает
Когда новый пользователь отправляет своё первое личное сообщение:- Канал генерирует уникальный
agentId:feishu-{user_open_id}для аккаунта по умолчанию или ограниченный дайджест идентичности с префиксом аккаунта для именованного аккаунта - Создает новое рабочее пространство по пути
workspaceTemplate - Регистрирует агента и создает привязку для этого пользователя
- Помощник рабочего пространства обеспечивает файлы начальной загрузки (
AGENTS.md,SOUL.md,USER.mdи т. д.) при первом доступе - Направляет все будущие сообщения от этого пользователя его выделенному агенту
Параметры конфигурации
| Настройка | Описание | По умолчанию |
|---|---|---|
channels.feishu.dynamicAgentCreation.enabled | Включить автоматическое создание агента для каждого пользователя | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate | Шаблон пути для рабочих пространств динамических агентов | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate | Шаблон имени каталога агента | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents | Максимальное количество создаваемых динамических агентов | без ограничения |
{agentId}- сгенерированный ID агента (например,feishu-ou_xxxxxxилиfeishu-support-<identity_digest>){userId}- Feishu open_id отправителя (например,ou_xxxxxx)
Область сеанса
session.dmScope управляет тем, как личные сообщения сопоставляются с сеансами агента. Это глобальная настройка, которая влияет на все каналы.
| Значение | Поведение | Лучше всего подходит для |
|---|---|---|
"main" | DM каждого пользователя сопоставляется с основным сеансом его агента | Однопользовательские боты, где нужно автоматически загружать USER.md / SOUL.md |
"per-channel-peer" | Каждая комбинация (канал + пользователь) получает отдельный сеанс | Публичные многопользовательские боты, которым нужна более строгая изоляция |
"per-account-channel-peer" | Каждая комбинация (аккаунт + канал + пользователь) получает отдельный сеанс | Многоаккаунтные боты, которым нужна изоляция сеансов на уровне аккаунта |
"main" включает автоматическую загрузку файлов начальной инициализации (USER.md, SOUL.md, MEMORY.md), но означает, что все DM во всех каналах используют один и тот же шаблон ключей сеанса. Для публичных многопользовательских ботов, где изоляция важнее автоматической загрузки начальных файлов, рассмотрите "per-channel-peer" и управляйте начальными файлами вручную.
Используйте
"per-account-channel-peer", когда именованные аккаунты Feishu должны сохранять отдельные сеансы для одного и того же отправителя. Динамические привязки сохраняют область аккаунта.Типичное многопользовательское развертывание
Проверка
Проверьте журналы Gateway, чтобы подтвердить, что динамическое создание работает:Примечания
- Изоляция рабочего пространства: каждый пользователь получает собственный каталог рабочего пространства и экземпляр агента. Пользователи не могут видеть историю разговоров или файлы друг друга в обычном потоке обмена сообщениями.
- Граница безопасности: это механизм изоляции контекста сообщений, а не граница безопасности против недоверенного совместного арендатора. Процесс агента и среда хоста являются общими.
bindingsдолжен быть пустым: динамические агенты автоматически регистрируют собственные привязки- Путь обновления: существующие ручные привязки продолжают работать вместе с динамическими агентами
session.dmScopeявляется глобальным: это влияет на все каналы, а не только на Feishu
Справочник по конфигурации
Полная конфигурация: Конфигурация Gateway| Настройка | Описание | По умолчанию |
|---|---|---|
channels.feishu.enabled | Включить или отключить канал | true |
channels.feishu.domain | Домен API (feishu или lark) | feishu |
channels.feishu.connectionMode | Транспорт событий (websocket или webhook) | websocket |
channels.feishu.defaultAccount | Аккаунт по умолчанию для исходящей маршрутизации | default |
channels.feishu.verificationToken | Требуется для режима webhook | - |
channels.feishu.encryptKey | Требуется для режима webhook | - |
channels.feishu.webhookPath | Путь маршрута Webhook | /feishu/events |
channels.feishu.webhookHost | Хост привязки Webhook | 127.0.0.1 |
channels.feishu.webhookPort | Порт привязки Webhook | 3000 |
channels.feishu.accounts.<id>.appId | ID приложения | - |
channels.feishu.accounts.<id>.appSecret | Секрет приложения | - |
channels.feishu.accounts.<id>.domain | Переопределение домена для аккаунта | feishu |
channels.feishu.accounts.<id>.tts | Переопределение TTS для аккаунта | messages.tts |
channels.feishu.dmPolicy | Политика DM | pairing |
channels.feishu.allowFrom | Список разрешенных отправителей DM (список open_id) | - |
channels.feishu.groupPolicy | Политика групп | allowlist |
channels.feishu.groupAllowFrom | Список разрешенных групп | - |
channels.feishu.requireMention | Требовать @упоминание в группах | true |
channels.feishu.groups.<chat_id>.requireMention | Переопределение @упоминания для группы; явные ID также допускают группу в режиме списка разрешенных | унаследовано |
channels.feishu.groups.<chat_id>.enabled | Включить или отключить конкретную группу | true |
channels.feishu.dynamicAgentCreation.enabled | Включить автоматическое создание агента для каждого пользователя | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate | Шаблон пути для рабочих пространств динамических агентов | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate | Шаблон имени каталога агента | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents | Максимальное количество создаваемых динамических агентов | без ограничения |
channels.feishu.textChunkLimit | Размер фрагмента сообщения | 2000 |
channels.feishu.mediaMaxMb | Ограничение размера медиа | 30 |
channels.feishu.streaming | Потоковый вывод карточек | true |
channels.feishu.blockStreaming | Потоковая отправка ответов завершенными блоками | false |
channels.feishu.typingIndicator | Отправлять реакции набора текста | true |
channels.feishu.resolveSenderNames | Разрешать отображаемые имена отправителей | true |
channels.feishu.tools.bitable | Включить инструменты Bitable/Base | true |
channels.feishu.tools.base | Псевдоним для channels.feishu.tools.bitable; явный bitable имеет приоритет, когда заданы оба | true |
channels.feishu.accounts.<id>.tools.bitable | Ограничитель инструментов Bitable/Base для аккаунта | унаследовано |
channels.feishu.accounts.<id>.tools.base | Псевдоним для аккаунта для tools.bitable | унаследовано |
Поддерживаемые типы сообщений
Получение
- ✅ Текст
- ✅ Форматированный текст (post)
- ✅ Изображения
- ✅ Файлы
- ✅ Аудио
- ✅ Видео/медиа
- ✅ Стикеры
file_key. Когда настроен tools.media.audio, OpenClaw скачивает ресурс голосовой заметки и запускает общую аудиотранскрибацию перед ходом агента, поэтому агент получает текстовую расшифровку речи. Если Feishu включает текст расшифровки прямо в полезную нагрузку аудио, этот текст используется без дополнительного вызова ASR. Без провайдера аудиотранскрибации агент все равно получает плейсхолдер <media:audio> вместе с сохраненным вложением, а не необработанную полезную нагрузку ресурса Feishu.
Отправка
- ✅ Текст
- ✅ Изображения
- ✅ Файлы
- ✅ Аудио
- ✅ Видео/медиа
- ✅ Интерактивные карточки (включая потоковые обновления)
- ⚠️ Форматированный текст (форматирование в стиле публикаций; не поддерживает все возможности авторинга Feishu/Lark)
audio и требуют
загрузки медиа Ogg/Opus (file_type: "opus"). Существующие медиа .opus и .ogg
отправляются напрямую как нативное аудио. MP3/WAV/M4A и другие вероятные аудиоформаты
транскодируются в Ogg/Opus 48 кГц с помощью ffmpeg только когда ответ запрашивает
доставку голосом (audioAsVoice / инструмент сообщений asVoice, включая ответы
с голосовыми заметками TTS). Обычные вложения MP3 остаются обычными файлами. Если ffmpeg отсутствует или
преобразование завершается неудачно, OpenClaw откатывается к файловому вложению и записывает причину в журнал.
Треды и ответы
- ✅ Встроенные ответы
- ✅ Ответы в тредах
- ✅ Медиаответы сохраняют привязку к треду при ответе на сообщение в треде
groupSessionScope: "group_topic" и "group_topic_sender" нативные
тематические группы Feishu/Lark используют thread_id события (omt_*) как канонический
ключ сессии темы. Если нативное событие начала темы опускает thread_id, OpenClaw
заполняет его из Feishu перед маршрутизацией хода. Обычные ответы в группе, которые
OpenClaw превращает в треды, продолжают использовать ID корневого сообщения ответа (om_*), чтобы
первый ход и последующий ход оставались в одной сессии.
Связанные материалы
- Обзор каналов - все поддерживаемые каналы
- Сопряжение - аутентификация в личных сообщениях и поток сопряжения
- Группы - поведение группового чата и фильтрация по упоминаниям
- Маршрутизация каналов - маршрутизация сессий для сообщений
- Безопасность - модель доступа и усиление защиты