Feishu/Lark 是一体化协作平台,团队可以在其中聊天、共享文档、管理日历并协同完成工作。 Status: 已可生产用于机器人私信 + 群聊。WebSocket 是默认模式;webhook 模式可选。Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
快速开始
需要 OpenClaw 2026.4.25 或更高版本。运行
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- 需要 @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 网关,向机器人发送私信,然后检查日志:
open_id。你也可以检查待处理的配对请求:
常用命令
| 命令 | 描述 |
|---|---|
/status | 显示机器人状态 |
/reset | 重置当前会话 |
/model | 显示或切换 AI 模型 |
Feishu/Lark 不支持原生斜杠菜单,因此请将这些命令作为纯文本消息发送。
故障排除
机器人在群聊中没有响应
- 确保机器人已添加到群组
- 确保你 @mention 机器人(默认要求)
- 验证
groupPolicy不是"disabled" - 检查日志:
openclaw logs --follow
机器人没有收到消息
- 确保机器人已在 Feishu Open Platform / Lark Developer 中发布并获批
- 确保事件订阅包含
im.message.receive_v1 - 确保已选择持久连接(WebSocket)
- 确保已授予所有必需的权限范围
- 确保 Gateway 网关正在运行:
openclaw gateway status - 检查日志:
openclaw logs --follow
App Secret 泄露
- 在 Feishu Open Platform / Lark Developer 中重置 App Secret
- 更新你的配置中的值
- 重启 Gateway 网关:
openclaw gateway restart
高级配置
多账号
defaultAccount 控制在出站 API 未指定 accountId 时使用哪个账号。
accounts.<id>.tts 使用与 messages.tts 相同的结构,并会深度合并到全局 TTS 配置之上,因此多机器人 Feishu 设置可以在全局保留共享的提供商凭据,同时仅按账号覆盖 voice、model、persona 或 auto mode。
消息限制
textChunkLimit- 出站文本分块大小(默认:2000个字符)mediaMaxMb- 媒体上传/下载限制(默认:30MB)
流式传输
Feishu/Lark 支持通过交互式卡片进行流式回复。启用后,机器人会在生成文本时实时更新卡片。streaming: false 可在一条消息中发送完整回复。blockStreaming 默认关闭;仅当你希望在最终回复前刷出已完成的助手分块时启用它。
配额优化
使用两个可选标志减少 Feishu/Lark API 调用次数:typingIndicator(默认true):设置为false可跳过输入中反应调用resolveSenderNames(默认true):设置为false可跳过发送者资料查询
ACP 会话
Feishu/Lark 支持在私信和群组线程消息中使用 ACP。Feishu/Lark ACP 由文本命令驱动 - 没有原生斜杠菜单,因此请直接在对话中使用/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)或群组 ID(oc_xxx)
配置参考
完整配置: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 | App ID | - |
channels.feishu.accounts.<id>.appSecret | App Secret | - |
channels.feishu.accounts.<id>.domain | 单账户域覆盖 | feishu |
channels.feishu.accounts.<id>.tts | 单账户 TTS 覆盖 | messages.tts |
channels.feishu.dmPolicy | 私信策略 | allowlist |
channels.feishu.allowFrom | 私信允许列表(open_id 列表) | [BotOwnerId] |
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.textChunkLimit | 消息分块大小 | 2000 |
channels.feishu.mediaMaxMb | 媒体大小限制 | 30 |
channels.feishu.streaming | 流式卡片输出 | true |
channels.feishu.blockStreaming | 已完成块回复的流式传输 | false |
channels.feishu.typingIndicator | 发送正在输入反应 | true |
channels.feishu.resolveSenderNames | 解析发送者显示名称 | true |
支持的消息类型
接收
- ✅ 文本
- ✅ 富文本(post)
- ✅ 图片
- ✅ 文件
- ✅ 音频
- ✅ 视频/媒体
- ✅ 表情贴纸
file_key JSON。配置 tools.media.audio 后,OpenClaw 会下载语音便签资源,并在智能体轮次前运行共享音频转录,因此智能体会收到语音转录文本。如果 Feishu 在音频载荷中直接包含转录文本,则会直接使用该文本,不再进行另一次 ASR 调用。如果没有音频转录提供商,智能体仍会收到 <media:audio> 占位符和保存的附件,而不是原始 Feishu 资源载荷。
发送
- ✅ 文本
- ✅ 图片
- ✅ 文件
- ✅ 音频
- ✅ 视频/媒体
- ✅ 交互式卡片(包括流式更新)
- ⚠️ 富文本(post 风格格式;不支持完整的 Feishu/Lark 创作能力)
audio 消息类型,并要求上传 Ogg/Opus 媒体(file_type: "opus")。现有 .opus 和 .ogg 媒体会直接作为原生音频发送。仅当回复请求语音递送(audioAsVoice / 消息工具 asVoice,包括 TTS 语音便签回复)时,MP3/WAV/M4A 和其他可能的音频格式才会通过 ffmpeg 转码为 48kHz Ogg/Opus。普通 MP3 附件仍作为常规文件发送。如果缺少 ffmpeg 或转换失败,OpenClaw 会回退为文件附件并记录原因。
线程和回复
- ✅ 行内回复
- ✅ 线程回复
- ✅ 回复线程消息时,媒体回复会保持线程感知
groupSessionScope: "group_topic" 和 "group_topic_sender",原生 Feishu/Lark 话题群组使用事件 thread_id(omt_*)作为规范话题会话键。如果原生话题起始事件省略 thread_id,OpenClaw 会先从 Feishu 补全它,再路由该轮次。OpenClaw 转为线程的普通群组回复会继续使用回复根消息 ID(om_*),使首轮和后续轮次保持在同一会话中。