Regional platforms
Feishu
Feishu/Lark — це універсальна платформа для співпраці, де команди спілкуються, діляться документами, керують календарями та разом виконують роботу.
Стан: готово до production для особистих повідомлень боту та групових чатів. WebSocket є режимом за замовчуванням; режим Webhook необов’язковий.
Швидкий старт
Запустіть майстер налаштування каналу
openclaw channels login --channel feishu
Відскануйте QR-код мобільним застосунком Feishu/Lark, щоб автоматично створити бота Feishu/Lark.
Після завершення налаштування перезапустіть Gateway, щоб застосувати зміни
openclaw gateway restart
Керування доступом
Особисті повідомлення
Налаштуйте dmPolicy, щоб керувати тим, хто може надсилати особисті повідомлення боту:
"pairing"- невідомі користувачі отримують код сполучення; підтвердіть через CLI"allowlist"- спілкуватися можуть лише користувачі, перелічені вallowFrom(за замовчуванням: лише власник бота)"open"- дозволити публічні особисті повідомлення лише колиallowFromмістить"*"; з обмежувальними записами спілкуватися можуть лише відповідні користувачі"disabled"- вимкнути всі особисті повідомлення
Підтвердити запит на сполучення:
openclaw pairing list feishu
openclaw pairing approve feishu <CODE>
Групові чати
Політика груп (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, і безпосередньо бота, усе одно зараховується як згадка бота.
Приклади налаштування груп
Дозволити всі групи, @згадка не потрібна
{
channels: {
feishu: {
groupPolicy: "open",
},
},
}
Дозволити всі групи, але все ще вимагати @згадку
{
channels: {
feishu: {
groupPolicy: "open",
requireMention: true,
},
},
}
Дозволити лише конкретні групи
{
channels: {
feishu: {
groupPolicy: "allowlist",
// Group IDs look like: oc_xxx
groupAllowFrom: ["oc_xxx", "oc_yyy"],
},
},
}
У режимі allowlist ви також можете допустити групу, додавши явний запис groups.<chat_id>. Явні записи не перевизначають groupPolicy: "disabled". Типові значення з wildcard у groups.* налаштовують відповідні групи, але самі по собі не допускають групи.
{
channels: {
feishu: {
groupPolicy: "allowlist",
groups: {
oc_xxx: {
requireMention: false,
},
},
},
},
}
Обмежити відправників у групі
{
channels: {
feishu: {
groupPolicy: "allowlist",
groupAllowFrom: ["oc_xxx"],
groups: {
oc_xxx: {
// User open_ids look like: ou_xxx
allowFrom: ["ou_user1", "ou_user2"],
},
},
},
},
}
Отримати ID групи/користувача
ID груп (chat_id, формат: oc_xxx)
Відкрийте групу у Feishu/Lark, натисніть значок меню у верхньому правому куті та перейдіть до Налаштування. ID групи (chat_id) наведено на сторінці налаштувань.

ID користувачів (open_id, формат: ou_xxx)
Запустіть Gateway, надішліть особисте повідомлення боту, а потім перевірте журнали:
openclaw logs --follow
Шукайте open_id у виводі журналу. Ви також можете перевірити очікувані запити на сполучення:
openclaw pairing list feishu
Поширені команди
| Команда | Опис |
|---|---|
/status |
Показати стан бота |
/reset |
Скинути поточний сеанс |
/model |
Показати або змінити модель AI |
Усунення несправностей
Бот не відповідає в групових чатах
- Переконайтеся, що бота додано до групи
- Переконайтеся, що ви @згадуєте бота (потрібно за замовчуванням)
- Перевірте, що
groupPolicyне є"disabled" - Перевірте журнали:
openclaw logs --follow
Бот не отримує повідомлення
- Переконайтеся, що бот опублікований і схвалений у Feishu Open Platform / Lark Developer
- Переконайтеся, що підписка на події містить
im.message.receive_v1 - Переконайтеся, що вибрано постійне з’єднання (WebSocket)
- Переконайтеся, що надано всі потрібні області дозволів
- Переконайтеся, що Gateway запущено:
openclaw gateway status - Перевірте журнали:
openclaw logs --follow
App Secret витік
- Скиньте App Secret у Feishu Open Platform / Lark Developer
- Оновіть значення у вашій конфігурації
- Перезапустіть Gateway:
openclaw gateway restart
Розширена конфігурація
Кілька облікових записів
{
channels: {
feishu: {
defaultAccount: "main",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
name: "Primary bot",
tts: {
providers: {
openai: { voice: "shimmer" },
},
},
},
backup: {
appId: "cli_yyy",
appSecret: "yyy",
name: "Backup bot",
enabled: false,
},
},
},
},
}
defaultAccount керує тим, який обліковий запис використовується, коли вихідні API не вказують accountId.
accounts.<id>.tts використовує ту саму форму, що й messages.tts, і глибоко об’єднується з
глобальною конфігурацією TTS, тому налаштування Feishu з кількома ботами можуть зберігати спільні облікові дані
постачальника глобально, перевизначаючи лише голос, модель, persona або автоматичний режим
для кожного облікового запису.
Обмеження повідомлень
textChunkLimit- розмір фрагмента вихідного тексту (за замовчуванням:2000символів)mediaMaxMb- ліміт завантаження/вивантаження медіа (за замовчуванням:30MB)
Стримінг
Feishu/Lark підтримує стримінгові відповіді через інтерактивні картки. Коли це ввімкнено, бот оновлює картку в реальному часі під час генерування тексту.
{
channels: {
feishu: {
streaming: true, // enable streaming card output (default: true)
blockStreaming: true, // opt into completed-block streaming
},
},
}
Встановіть streaming: false, щоб надіслати повну відповідь одним повідомленням. blockStreaming вимкнено за замовчуванням; вмикайте його лише тоді, коли хочете, щоб завершені блоки асистента надсилалися перед фінальною відповіддю.
Оптимізація квоти
Зменште кількість викликів API Feishu/Lark за допомогою двох необов’язкових прапорців:
typingIndicator(за замовчуваннямtrue): встановітьfalse, щоб пропустити виклики реакції набору текстуresolveSenderNames(за замовчуваннямtrue): встановітьfalse, щоб пропустити пошуки профілів відправників
{
channels: {
feishu: {
typingIndicator: false,
resolveSenderNames: false,
},
},
}
Сеанси ACP
Feishu/Lark підтримує ACP для особистих повідомлень і повідомлень у групових тредах. ACP у Feishu/Lark керується текстовими командами - нативних меню slash-команд немає, тому використовуйте повідомлення /acp ... безпосередньо в розмові.
Постійне прив’язування ACP
{
agents: {
list: [
{
id: "codex",
runtime: {
type: "acp",
acp: {
agent: "codex",
backend: "acpx",
mode: "persistent",
cwd: "/workspace/openclaw",
},
},
},
],
},
bindings: [
{
type: "acp",
agentId: "codex",
match: {
channel: "feishu",
accountId: "default",
peer: { kind: "direct", id: "ou_1234567890" },
},
},
{
type: "acp",
agentId: "codex",
match: {
channel: "feishu",
accountId: "default",
peer: { kind: "group", id: "oc_group_chat:topic:om_topic_root" },
},
acp: { label: "codex-feishu-topic" },
},
],
}
Запустити ACP із чату
У особистому повідомленні або треді Feishu/Lark:
/acp spawn codex --thread here
--thread here працює для особистих повідомлень і повідомлень у тредах Feishu/Lark. Наступні повідомлення в прив’язаній розмові спрямовуються безпосередньо до цього сеансу ACP.
Маршрутизація кількох агентів
Використовуйте bindings, щоб спрямовувати особисті повідомлення або групи Feishu/Lark до різних агентів.
{
agents: {
list: [
{ id: "main" },
{ id: "agent-a", workspace: "/home/user/agent-a" },
{ id: "agent-b", workspace: "/home/user/agent-b" },
],
},
bindings: [
{
agentId: "agent-a",
match: {
channel: "feishu",
peer: { kind: "direct", id: "ou_xxx" },
},
},
{
agentId: "agent-b",
match: {
channel: "feishu",
peer: { kind: "group", id: "oc_zzz" },
},
},
],
}
Поля маршрутизації:
match.channel:"feishu"match.peer.kind:"direct"(особисте повідомлення) або"group"(груповий чат)match.peer.id: Open ID користувача (ou_xxx) або ID групи (oc_xxx)
Див. Отримати ID групи/користувача, щоб отримати поради щодо пошуку.
Довідник конфігурації
Повна конфігурація: Конфігурація 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 |
Ідентифікатор застосунку | - |
channels.feishu.accounts.<id>.appSecret |
Секрет застосунку | - |
channels.feishu.accounts.<id>.domain |
Перевизначення домену для окремого облікового запису | feishu |
channels.feishu.accounts.<id>.tts |
Перевизначення TTS для окремого облікового запису | messages.tts |
channels.feishu.dmPolicy |
Політика DM | allowlist |
channels.feishu.allowFrom |
Список дозволених DM (список open_id) | [BotOwnerId] |
channels.feishu.groupPolicy |
Політика груп | allowlist |
channels.feishu.groupAllowFrom |
Список дозволених груп | - |
channels.feishu.requireMention |
Вимагати @згадку в групах | true |
channels.feishu.groups.<chat_id>.requireMention |
Перевизначення @згадки для групи; явні ідентифікатори також допускають групу в режимі списку дозволених | inherited |
channels.feishu.groups.<chat_id>.enabled |
Увімкнути/вимкнути певну групу | true |
channels.feishu.textChunkLimit |
Розмір фрагмента повідомлення | 2000 |
channels.feishu.mediaMaxMb |
Обмеження розміру медіа | 30 |
channels.feishu.streaming |
Потокове виведення картки | true |
channels.feishu.blockStreaming |
Потокове передавання відповідей завершеними блоками | false |
channels.feishu.typingIndicator |
Надсилати реакції введення | true |
channels.feishu.resolveSenderNames |
Визначати відображувані імена відправників | true |
Підтримувані типи повідомлень
Отримання
- ✅ Текст
- ✅ Форматований текст (допис)
- ✅ Зображення
- ✅ Файли
- ✅ Аудіо
- ✅ Відео/медіа
- ✅ Стікери
Вхідні аудіоповідомлення Feishu/Lark нормалізуються як медіаплейсхолдери замість необробленого JSON file_key. Коли tools.media.audio налаштовано, OpenClaw завантажує ресурс голосової нотатки й запускає спільне транскрибування аудіо перед ходом агента, тож агент отримує розшифровку мовлення. Якщо Feishu включає текст розшифровки безпосередньо в аудіокорисне навантаження, цей текст використовується без додаткового виклику ASR. Без провайдера транскрибування аудіо агент усе одно отримує плейсхолдер <media:audio> і збережене вкладення, а не необроблене корисне навантаження ресурсу Feishu.
Надсилання
- ✅ Текст
- ✅ Зображення
- ✅ Файли
- ✅ Аудіо
- ✅ Відео/медіа
- ✅ Інтерактивні картки (зокрема потокові оновлення)
- ⚠️ Форматований текст (форматування у стилі допису; не підтримує повні можливості авторства Feishu/Lark)
Нативні аудіобульбашки Feishu/Lark використовують тип повідомлення Feishu audio і потребують завантажених медіа Ogg/Opus (file_type: "opus"). Наявні медіа .opus і .ogg надсилаються безпосередньо як нативне аудіо. MP3/WAV/M4A та інші ймовірні аудіоформати перекодовуються в 48 кГц 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 перетворює на потоки, і надалі використовують ідентифікатор кореневого повідомлення відповіді (om_*), щоб перший хід і наступний хід залишалися в тій самій сесії.
Пов’язане
- Огляд каналів - усі підтримувані канали
- Сполучення - автентифікація DM і потік сполучення
- Групи - поведінка групового чату та обмеження згадок
- Маршрутизація каналів - маршрутизація сесій для повідомлень
- Безпека - модель доступу та посилення захисту