@openclaw/feishu: особисті повідомлення бота, групові чати, потокові відповіді у вигляді карток та інструменти Feishu для документів, вікі, диска й Bitable.
Стан: готовий до використання у виробничому середовищі для особистих повідомлень бота та групових чатів. WebSocket є стандартним транспортом подій (публічна URL-адреса не потрібна); режим Webhook необов’язковий.
Швидкий початок
Потрібна версія OpenClaw 2026.5.29 або новіша. Виконайте
openclaw --version, щоб перевірити версію. Оновіть за допомогою openclaw update.1
Запустіть майстер налаштування каналу
@openclaw/feishu, якщо його немає, а потім покроково виконує налаштування:- Налаштування вручну: вставте App ID та App Secret із Feishu Open Platform (
https://open.feishu.cn) або Lark Developer (https://open.larksuite.com). - Налаштування за QR-кодом: відскануйте QR-код у застосунку Feishu, щоб автоматично створити бота. Цей процес обмежує особисті повідомлення вашим власним обліковим записом (
dmPolicy: "allowlist"із вашимopen_id).
2
Після завершення налаштування перезапустіть Gateway, щоб застосувати зміни
Керування доступом
Особисті повідомлення
Налаштуйтеchannels.feishu.dmPolicy (стандартне значення: pairing), щоб визначити, хто може надсилати боту особисті повідомлення:
Схвалення запиту на сполучення:
Групові чати
Політика груп (channels.feishu.groupPolicy, стандартне значення: allowlist):
Вимога згадування (
channels.feishu.requireMention):
- Стандартно: потрібне @згадування, крім випадків, коли чинна політика групи —
"open"; тоді стандартним значенням єfalse, щоб повідомлення, які не можуть містити згадування (наприклад, зображення), усе одно надходили агенту. - Явно встановіть
trueабоfalse, щоб перевизначити це; перевизначення для окремої групи:channels.feishu.groups.<chat_id>.requireMention. - Трансляційні згадування
@allі@_allне вважаються згадуваннями бота. Повідомлення, у якому одночасно згадано@allі безпосередньо бота, усе одно вважається згадуванням бота.
Приклади конфігурації груп
Дозволити всі групи без обов’язкового @згадування
Дозволити всі групи, але й надалі вимагати @згадування
Дозволити лише певні групи
allowlist групу також можна допустити, додавши явний запис groups.<chat_id>. Явні записи не перевизначають groupPolicy: "disabled". Стандартні налаштування із символом узагальнення в groups.* налаштовують відповідні групи, але самі собою не допускають їх.
Обмежити відправників у групі
channels.feishu.groupSenderAllowFrom задає однаковий список дозволених відправників для всіх груп; значення allowFrom окремої групи має вищий пріоритет.
Отримання ідентифікаторів груп і користувачів
Ідентифікатори груп (chat_id, формат: oc_xxx)
Відкрийте групу у Feishu/Lark, натисніть піктограму меню у верхньому правому куті та перейдіть до Settings. Ідентифікатор групи (chat_id) указано на сторінці налаштувань.

Ідентифікатори користувачів (open_id, формат: ou_xxx)
Запустіть Gateway, надішліть боту особисте повідомлення, а потім перевірте журнали:
open_id у виводі журналу. Також можна перевірити запити на сполучення, що очікують розгляду:
Поширені команди
Feishu/Lark не підтримує вбудовані меню команд із похилою рискою, тому надсилайте ці команди як звичайні текстові повідомлення.
Усунення несправностей
Бот не відповідає в групових чатах
- Переконайтеся, що бота додано до групи
- Переконайтеся, що ви @згадали бота (стандартно це обов’язково)
- Переконайтеся, що
groupPolicyне має значення"disabled" - Перевірте журнали:
openclaw logs --follow
Бот не отримує повідомлення
- Переконайтеся, що бота опубліковано та схвалено у Feishu Open Platform / Lark Developer
- Переконайтеся, що підписка на події містить
im.message.receive_v1 - Переконайтеся, що вибрано persistent connection (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— розмір фрагмента вихідного тексту (стандартне значення:4000символів)streaming.chunkMode—"length"(стандартне значення) розділяє текст на межі обмеження;"newline"віддає перевагу межам нових рядківmediaMaxMb— обмеження на завантаження та отримання медіафайлів (стандартне значення:30МБ)
Потокове передавання
Feishu/Lark підтримує потокові відповіді через інтерактивні картки (API потокового передавання Card Kit). Коли цю функцію ввімкнено, бот оновлює картку в реальному часі під час генерування тексту.streaming.mode: "off", щоб надсилати повну відповідь одним повідомленням; renderMode: "raw" (звичайний текст замість карток) також вимикає потокові картки. streaming.block.enabled стандартно вимкнено; вмикайте його лише тоді, коли потрібно надсилати завершені блоки асистента до остаточної відповіді. Застаріле логічне значення streaming і плоскі ключі blockStreaming / blockStreamingCoalesce / chunkMode переносяться до цієї вкладеної структури за допомогою openclaw doctor --fix.
Оптимізація квоти
Зменште кількість викликів API Feishu/Lark за допомогою двох необов’язкових прапорців:typingIndicator(стандартне значенняtrue): установітьfalse, щоб пропустити виклики реакції на введення текстуresolveSenderNames(стандартне значенняtrue): установітьfalse, щоб пропустити пошук профілів відправників
Область групового сеансу та тематичні гілки
channels.feishu.groupSessionScope (на верхньому рівні, для окремого облікового запису або окремої групи) визначає, як групові повідомлення зіставляються із сеансами агента:
Для тематичних областей вбудовані тематичні групи Feishu/Lark використовують подію
thread_id (omt_*) як канонічний ключ тематичного сеансу. Якщо в події початку вбудованої теми немає thread_id, OpenClaw отримує його з Feishu перед маршрутизацією звернення. Звичайні відповіді в групах, які OpenClaw перетворює на гілки, і надалі використовують ідентифікатор кореневого повідомлення відповіді (om_*), щоб перше й наступні звернення залишалися в одному сеансі.
Установіть replyInThread: "enabled" (на верхньому рівні або для окремої групи), щоб відповіді бота створювали або продовжували тематичну гілку Feishu замість вбудованої відповіді. topicSessionMode є застарілим попередником groupSessionScope; віддавайте перевагу groupSessionScope.
Інструменти робочого простору Feishu
Plugin постачається з інструментами агента для документів Feishu, чатів, бази знань, хмарного сховища, дозволів і Bitable, а також відповідними Skills (feishu-doc, feishu-drive, feishu-perm, feishu-wiki). Сімейства інструментів контролюються параметром channels.feishu.tools:
tools.base — це псевдонім для tools.bitable; якщо задано обидва значення, пріоритет має явно вказане значення bitable. Обмеження для окремих облікових записів містяться в accounts.<id>.tools.
Надайте drive:drive.metadata:readonly для прямих пошуків feishu_drive info поза кореневим
каталогом, якщо застосунок ще не має повної області доступу drive:drive. Без жодної з цих областей доступу info
залишає доступним застарілий пошук у кореневому каталозі через drive:drive:readonly.
Сеанси ACP
Feishu/Lark підтримує ACP для приватних повідомлень і повідомлень у гілках груп. ACP у Feishu/Lark керується текстовими командами — вбудованих меню команд із косою рискою немає, тому використовуйте повідомлення/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 - Приватну історію розмов
- Ізольовані навички та стан
Динамічні прив’язування містять нормалізований
accountId Feishu, тому типовий та іменовані облікові записи спрямовують кожного відправника до правильного динамічного агента.Якщо в попередньому випуску іменований обліковий запис створив динамічного агента без області дії, цей застарілий агент усе одно враховується в maxAgents. Перш ніж видаляти його, переконайтеся, що типовий обліковий запис його не використовує, або тимчасово збільште maxAgents; OpenClaw не може безпечно визначити, якому обліковому запису належить неоднозначний застарілий стан.Швидке налаштування
Як це працює
Коли новий користувач надсилає перше приватне повідомлення:- Канал створює унікальний
agentId:feishu-{user_open_id}для типового облікового запису або обмежений дайджест ідентичності з префіксом облікового запису для іменованого облікового запису - Створюється новий робочий простір за шляхом
workspaceTemplate - Агент реєструється, і для цього користувача створюється прив’язування
- Допоміжний засіб робочого простору забезпечує наявність початкових файлів (
AGENTS.md,SOUL.md,USER.mdтощо) під час першого доступу - Усі майбутні повідомлення цього користувача спрямовуються до його виділеного агента
Параметри конфігурації
Змінні шаблону:
{agentId}— створений ідентифікатор агента (наприклад,feishu-ou_xxxxxxабоfeishu-support-<identity_digest>){userId}— Feishu open_id відправника (наприклад,ou_xxxxxx)
Область дії сеансу
session.dmScope визначає, як приватні повідомлення зіставляються із сеансами агентів. Це глобальне налаштування, яке впливає на всі канали.
Компроміс: використання
"main" вмикає автоматичне завантаження початкових файлів (USER.md, SOUL.md, MEMORY.md), але означає, що всі приватні повідомлення в усіх каналах використовують однаковий шаблон ключа сеансу. Для загальнодоступних багатокористувацьких ботів, де ізоляція важливіша за автоматичне завантаження початкових файлів, розгляньте "per-channel-peer" і керуйте початковими файлами вручну.
Використовуйте
"per-account-channel-peer", якщо іменовані облікові записи Feishu мають зберігати окремі сеанси для того самого відправника. Динамічні прив’язування зберігають область дії облікового запису.Типове багатокористувацьке розгортання
Перевірка
Перевірте журнали Gateway, щоб переконатися, що динамічне створення працює:Примітки
- Ізоляція робочого простору: кожен користувач отримує власний каталог робочого простору й екземпляр агента. У межах звичайного обміну повідомленнями користувачі не можуть бачити історію розмов або файли один одного.
- Межа безпеки: це механізм ізоляції контексту обміну повідомленнями, а не межа безпеки для недовірених співорендарів. Процес агента й середовище хоста є спільними.
- Запис конфігурації має залишатися ввімкненим: динамічне створення агентів записує агентів і прив’язування до конфігурації; воно пропускається, коли
channels.feishu.configWritesмає значенняfalse(типово: увімкнено). bindingsмає бути порожнім: динамічні агенти автоматично реєструють власні прив’язування- Шлях оновлення: наявні прив’язування, створені вручну, продовжують працювати разом із динамічними агентами
session.dmScopeє глобальним: це впливає на всі канали, а не лише на Feishu
Довідник із конфігурації
Повна конфігурація: Конфігурація GatewayПідтримувані типи повідомлень
Отримання
- ✅ Текст
- ✅ Форматований текст (допис)
- ✅ Зображення
- ✅ Файли
- ✅ Аудіо
- ✅ Відео/медіа
- ✅ Наліпки
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 із частотою 48kHz за допомогою ffmpeg лише тоді, коли відповідь запитує голосове
доставлення (audioAsVoice / інструмент повідомлень asVoice, зокрема відповіді TTS у вигляді голосових нотаток).
Звичайні вкладення MP3 залишаються звичайними файлами. Якщо ffmpeg відсутній або
перетворення не вдається, OpenClaw повертається до вкладення файлу та записує причину в журнал.
Гілки та відповіді
- ✅ Вбудовані відповіді
- ✅ Відповіді в гілках
- ✅ Медіавідповіді зберігають прив’язку до гілки під час відповіді на повідомлення в гілці
Пов’язані матеріали
- Огляд каналів - усі підтримувані канали
- Сполучення - автентифікація приватних повідомлень і процес сполучення
- Групи - поведінка групового чату та обмеження за згадками
- Маршрутизація каналів - маршрутизація сеансів для повідомлень
- Безпека - модель доступу та посилення захисту