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

ID користувачів (open_id, формат: ou_xxx)
Запустіть gateway, надішліть DM боту, потім перевірте журнали:
open_id у виводі журналу. Також можна перевірити запити на сполучення, що очікують:
Поширені команди
| Команда | Опис |
|---|---|
/status | Показати стан бота |
/reset | Скинути поточну сесію |
/model | Показати або змінити AI-модель |
Feishu/Lark не підтримує власні меню slash-команд, тому надсилайте їх як звичайні текстові повідомлення.
Усунення несправностей
Бот не відповідає в групових чатах
- Переконайтеся, що бота додано до групи
- Переконайтеся, що ви @mention бота (потрібно за замовчуванням)
- Перевірте, що
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- ліміт завантаження/отримання медіа (за замовчуванням:30MB)
Потокове передавання
Feishu/Lark підтримує потокові відповіді через інтерактивні картки. Коли це ввімкнено, бот оновлює картку в реальному часі під час генерування тексту.streaming: false, щоб надіслати повну відповідь одним повідомленням. blockStreaming вимкнено за замовчуванням; вмикайте це лише тоді, коли хочете перед фінальною відповіддю надсилати завершені блоки assistant.
Оптимізація квоти
Зменште кількість викликів API Feishu/Lark за допомогою двох необов’язкових прапорців:typingIndicator(за замовчуваннямtrue): установітьfalse, щоб пропускати виклики реакції набору текстуresolveSenderNames(за замовчуваннямtrue): установітьfalse, щоб пропускати пошуки профілів відправників
Сесії ACP
Feishu/Lark підтримує ACP для DM і повідомлень у групових гілках. ACP у Feishu/Lark керується текстовими командами - власних меню slash-команд немає, тому використовуйте повідомлення/acp ... безпосередньо в розмові.
Постійне прив’язування ACP
Запустити ACP із чату
У DM або гілці Feishu/Lark:--thread here працює для DM і повідомлень у гілках Feishu/Lark. Подальші повідомлення у прив’язаній розмові маршрутизуються безпосередньо до цієї сесії ACP.
Маршрутизація кількох агентів
Використовуйтеbindings, щоб маршрутизувати DM або групи Feishu/Lark до різних агентів.
match.channel:"feishu"match.peer.kind:"direct"(DM) або"group"(груповий чат)match.peer.id: Open ID користувача (ou_xxx) або ID групи (oc_xxx)
Ізоляція агента для кожного користувача (динамічне створення агентів)
УвімкнітьdynamicAgentCreation, щоб автоматично створювати ізольовані екземпляри агентів для кожного користувача DM. Кожен користувач отримує власні:
- Незалежний каталог робочого простору
- Окремі
USER.md/SOUL.md/MEMORY.md - Приватна історія розмов
- Ізольовані Skills і стан
Динамічні прив’язування містять нормалізований Feishu
accountId, тому облікові записи за замовчуванням і іменовані облікові записи маршрутизують кожного відправника до правильного динамічного агента.Якщо іменований обліковий запис створив динамічного агента без області на старішому випуску, цей legacy-агент усе ще враховується в maxAgents. Підтвердьте, що його не використовує обліковий запис за замовчуванням, перш ніж видаляти його, або тимчасово збільште maxAgents; OpenClaw не може безпечно визначити, якому обліковому запису належить неоднозначний legacy-стан.Швидке налаштування
Як це працює
Коли новий користувач надсилає свій перший DM:- Канал генерує унікальний
agentId:feishu-{user_open_id}для облікового запису за замовчуванням або обмежений дайджест ідентичності з префіксом облікового запису для іменованого облікового запису - Створює новий робочий простір за шляхом
workspaceTemplate - Реєструє агента й створює прив’язування для цього користувача
- Допоміжний засіб робочого простору забезпечує bootstrap-файли (
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" вмикає автоматичне завантаження bootstrap-файлів (USER.md, SOUL.md, MEMORY.md), але означає, що всі DM у всіх каналах мають спільний шаблон ключів сеансів. Для публічних багатокористувацьких ботів, де ізоляція важливіша за автоматичне завантаження bootstrap-файлів, розгляньте "per-channel-peer" і керуйте bootstrap-файлами вручну.
Використовуйте
"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 | Вимагати @mention у групах | true |
channels.feishu.groups.<chat_id>.requireMention | Перевизначення @mention для групи; явні 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 та інші ймовірні аудіоформати
перекодовуються у 48kHz Ogg/Opus за допомогою 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_*), щоб
перший хід і наступний хід залишалися в тому самому сеансі.
Пов’язане
- Огляд каналів - усі підтримувані канали
- Сполучення - автентифікація DM і потік сполучення
- Групи - поведінка групових чатів і блокування за згадками
- Маршрутизація каналів - маршрутизація сеансів для повідомлень
- Безпека - модель доступу й посилення захисту