Appearance
飞书(Lark)渠道通过 WebSocket 长连接接入,无需公网 Webhook。创建飞书企业应用、配置 App ID 和 App Secret 后,龙虾即可在飞书私聊和群组中接收消息。支持 Drive 文档评论触发、流式卡片回复、多账号和 ACP 会话绑定。本文提供从创建飞书应用到测试完成的全流程指引。
飞书 Bot
飞书(Lark)是企业常用的团队聊天协作平台。这个插件通过平台的 WebSocket 事件订阅将 OpenClaw 龙虾接入飞书/Lark Bot,无需暴露公网 Webhook 地址即可接收消息。
OpenClaw 飞书接入步骤(4 步)
- 在飞书开放平台创建企业自建应用,获取 App ID 和 App Secret
- 开启应用能力:消息与群组 → 接收消息 → 机器人
- 在
openclaw.json配置飞书渠道(或运行openclaw configure填入) - 运行
openclaw start,在飞书私聊发消息测试
详细步骤见下方各节。
内置插件
当前 OpenClaw 发行版已内置飞书插件,无需单独安装。
如果你使用的是较旧构建版本或不含内置飞书的自定义安装,手动安装:
bash
openclaw plugins install @openclaw/feishu快速开始
有两种方式添加飞书渠道:
方式一:引导向导(推荐)
如果你刚安装了 OpenClaw,运行:
bash
openclaw onboard向导会引导你完成:
- 创建飞书应用并收集凭据
- 在 OpenClaw 中配置应用凭据
- 启动 Gateway
配置完成后,检查 Gateway 状态:
bash
openclaw gateway status
openclaw logs --follow方式二:CLI 配置
如果已完成初始安装,通过 CLI 添加渠道:
bash
openclaw channels add选择飞书,然后输入 App ID 和 App Secret。
配置完成后:
bash
openclaw gateway status
openclaw gateway restart
openclaw logs --follow第一步:创建飞书应用
1. 打开飞书开放平台
访问 飞书开放平台 并登录。
Lark(国际版)租户应使用 https://open.larksuite.com/app 并在飞书配置中设置 domain: "lark"。
2. 创建应用
- 点击创建企业自建应用
- 填写应用名称和描述
- 选择应用图标
3. 复制凭据
在凭证与基础信息中,复制:
- App ID(格式:
cli_xxx) - App Secret
❗ 重要:妥善保管 App Secret。
4. 配置权限
在权限管理中,点击批量导入并粘贴:
json
{
"scopes": {
"tenant": [
"aily:file:read",
"aily:file:write",
"application:application.app_message_stats.overview:readonly",
"application:application:self_manage",
"application:bot.menu:write",
"cardkit:card:read",
"cardkit:card:write",
"contact:user.employee_id:readonly",
"corehr:file:download",
"event:ip_list",
"im:chat.access_event.bot_p2p_chat:read",
"im:chat.members:bot_access",
"im:message",
"im:message.group_at_msg:readonly",
"im:message.p2p_msg:readonly",
"im:message:readonly",
"im:message:send_as_bot",
"im:resource"
],
"user": ["aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read"]
}
}5. 启用 Bot 能力
在应用能力 > 机器人中:
- 启用机器人能力
- 设置机器人名称
6. 配置事件订阅
⚠️ 重要:在设置事件订阅前,请确保:
- 已经通过
openclaw channels add为飞书完成配置 - Gateway 正在运行(
openclaw gateway status)
在事件订阅中:
- 选择使用长连接接收事件(WebSocket)
- 添加事件:
im.message.receive_v1 - (可选)如需飞书云文档评论工作流,还需添加:
drive.notice.comment_add_v1
⚠️ 如果 Gateway 未运行,长连接配置可能无法保存。
7. 发布应用
- 在版本管理与发布中创建版本
- 提交审核并发布
- 等待管理员批准(企业自建应用通常会自动审批)
第二步:配置 OpenClaw
通过向导配置(推荐)
bash
openclaw channels add选择飞书,粘贴 App ID + App Secret。
通过配置文件配置
编辑 ~/.openclaw/openclaw.json:
json5
{
channels: {
feishu: {
enabled: true,
dmPolicy: "pairing",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
name: "我的 AI 助手",
},
},
},
},
}如果使用 connectionMode: "webhook" 模式,需要同时设置 verificationToken 和 encryptKey。飞书 Webhook 服务器默认绑定到 127.0.0.1,仅当确实需要不同绑定地址时才设置 webhookHost。
Verification Token 和 Encrypt Key(Webhook 模式)
使用 Webhook 模式时,在配置中设置 channels.feishu.verificationToken 和 channels.feishu.encryptKey。获取方法:
- 在飞书开放平台中打开你的应用
- 进入开发配置 → 事件与回调
- 打开加密策略 tab
- 复制 Verification Token 和 Encrypt Key
通过环境变量配置
bash
export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"Lark(国际版)域名设置
如果你的租户在 Lark 国际版,将 domain 设置为 lark:
json5
{
channels: {
feishu: {
domain: "lark",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
},
},
},
},
}配额优化参数
两个可选参数可以减少飞书 API 调用:
typingIndicator(默认true):设为false跳过打字状态回调resolveSenderNames(默认true):设为false跳过发件人信息查询
json5
{
channels: {
feishu: {
typingIndicator: false,
resolveSenderNames: false,
},
},
}第三步:启动并测试
1. 启动 Gateway
bash
openclaw gateway2. 发送测试消息
在飞书中找到你的 Bot 并发送消息。
3. 批准配对
默认情况下,Bot 会回复配对码。批准它:
bash
openclaw pairing approve feishu <CODE>批准后即可正常聊天。
访问控制
私信(DM)
默认:
dmPolicy: "pairing"(未知用户收到配对码)批准配对:
bashopenclaw pairing list feishu openclaw pairing approve feishu <CODE>白名单模式:在
channels.feishu.allowFrom中设置允许的 Open ID
群组聊天
群组策略(channels.feishu.groupPolicy):
"open"= 允许群组中的所有人"allowlist"= 只允许groupAllowFrom中的人"disabled"= 禁用群组消息
默认:allowlist
提及要求(channels.feishu.requireMention,可通过 channels.feishu.groups.<chat_id>.requireMention 覆盖):
- 明确
true= 必须 @提及 - 明确
false= 无需提及即响应 - 未设置且
groupPolicy: "open"= 默认false - 未设置且
groupPolicy不是"open"= 默认true
群组配置示例
允许所有群组,无需 @提及(开放群组默认)
json5
{
channels: {
feishu: {
groupPolicy: "open",
},
},
}允许所有群组,但仍需要 @提及
json5
{
channels: {
feishu: {
groupPolicy: "open",
requireMention: true,
},
},
}只允许特定群组
json5
{
channels: {
feishu: {
groupPolicy: "allowlist",
// 飞书群组 ID(chat_id)格式:oc_xxx
groupAllowFrom: ["oc_xxx", "oc_yyy"],
},
},
}限制群组中可发消息的发件人
json5
{
channels: {
feishu: {
groupPolicy: "allowlist",
groupAllowFrom: ["oc_xxx"],
groups: {
oc_xxx: {
// 飞书用户 ID(open_id)格式:ou_xxx
allowFrom: ["ou_user1", "ou_user2"],
},
},
},
},
}获取群组/用户 ID
群组 ID(chat_id)
格式:oc_xxx
方式一(推荐):
- 启动 Gateway 并在群组中 @提及 Bot
- 运行
openclaw logs --follow查找chat_id
用户 ID(open_id)
格式:ou_xxx
方式一(推荐):
- 启动 Gateway 并给 Bot 发 DM
- 运行
openclaw logs --follow查找open_id
方式二: 查看配对请求中的用户 Open ID:
bash
openclaw pairing list feishu常用命令
| 命令 | 描述 |
|---|---|
/status | 显示 Bot 状态 |
/reset | 重置会话 |
/model | 显示/切换模型 |
注意:飞书不支持原生命令菜单,命令需作为文本消息发送。
Gateway 管理命令
| 命令 | 描述 |
|---|---|
openclaw gateway status | 显示 Gateway 状态 |
openclaw gateway install | 安装/启动 Gateway 服务 |
openclaw gateway stop | 停止 Gateway 服务 |
openclaw gateway restart | 重启 Gateway 服务 |
openclaw logs --follow | 实时查看 Gateway 日志 |
故障排查
Bot 在群组中不响应
- 确保 Bot 已加入群组
- 确保你 @提及了 Bot(默认行为)
- 检查
groupPolicy是否未设置为"disabled" - 检查日志:
openclaw logs --follow
Bot 收不到消息
- 确保应用已发布并获批
- 确保事件订阅包含
im.message.receive_v1 - 确保启用了长连接
- 确保应用权限配置完整
- 确保 Gateway 正在运行:
openclaw gateway status - 检查日志:
openclaw logs --follow
App Secret 泄露
- 在飞书开放平台重置 App Secret
- 更新配置中的 App Secret
- 重启 Gateway
消息发送失败
- 确保应用有
im:message:send_as_bot权限 - 确保应用已发布
- 检查日志中的详细错误
高级配置
多账号
json5
{
channels: {
feishu: {
defaultAccount: "main",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
name: "主 Bot",
},
backup: {
appId: "cli_yyy",
appSecret: "yyy",
name: "备用 Bot",
enabled: false,
},
},
},
},
}defaultAccount 控制出站 API 未明确指定 accountId 时使用哪个飞书账号。
消息限制
textChunkLimit:出站文本块大小(默认:2000 字符)mediaMaxMb:媒体上传/下载限制(默认:30MB)
流式回复
飞书通过交互式卡片支持流式回复。启用后,Bot 在生成文本时实时更新卡片内容。
json5
{
channels: {
feishu: {
streaming: true, // 启用流式卡片输出(默认 true)
blockStreaming: true, // 启用块级流式传输(默认 true)
},
},
}设置 streaming: false 则等待完整回复后再发送。
ACP 会话
飞书支持 ACP 用于:
- 私信(DM)
- 群组话题对话
飞书 ACP 通过文本命令驱动,没有原生斜杠命令菜单,直接在对话中使用 /acp ... 消息。
持久 ACP 绑定:
json5
{
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" },
},
},
],
}从聊天中启动线程绑定 ACP:
text
/acp spawn codex --thread here--thread here适用于 DM 和飞书话题- 绑定的 DM/话题中后续消息直接路由到该 ACP 会话
多 Agent 路由
使用 bindings 将飞书 DM 或群组路由到不同 Agent:
json5
{
bindings: [
{
agentId: "main",
match: {
channel: "feishu",
peer: { kind: "direct", id: "ou_xxx" },
},
},
{
agentId: "coding-agent",
match: {
channel: "feishu",
peer: { kind: "group", id: "oc_zzz" },
},
},
],
}飞书云文档评论
飞书可以在有人给飞书文档(Docs、Sheets 等)添加评论时触发 Agent。Agent 收到评论文本、文档上下文和评论线程,可以在线程中回复或编辑文档。
要求:
- 在飞书应用事件订阅设置中订阅
drive.notice.comment_add_v1(与现有im.message.receive_v1并列) - Drive 工具默认启用;通过
channels.feishu.tools.drive: false禁用
feishu_drive 工具支持的评论操作:
| 操作 | 描述 |
|---|---|
list_comments | 列出文档上的评论 |
list_comment_replies | 列出评论线程中的回复 |
add_comment | 添加新的顶级评论 |
reply_comment | 回复现有评论线程 |
配置参考
完整配置:Gateway 配置
| 设置 | 描述 | 默认值 |
|---|---|---|
channels.feishu.enabled | 启用/禁用渠道 | true |
channels.feishu.domain | API 域名(feishu 或 lark) | feishu |
channels.feishu.connectionMode | 事件传输模式 | websocket |
channels.feishu.defaultAccount | 默认出站路由账号 ID | default |
channels.feishu.dmPolicy | DM 策略 | pairing |
channels.feishu.allowFrom | DM 白名单(open_id 列表) | - |
channels.feishu.groupPolicy | 群组策略 | allowlist |
channels.feishu.groupAllowFrom | 群组白名单 | - |
channels.feishu.requireMention | 默认是否需要 @提及 | 按条件 |
channels.feishu.textChunkLimit | 消息块大小 | 2000 |
channels.feishu.mediaMaxMb | 媒体大小限制 | 30 |
channels.feishu.streaming | 启用流式卡片输出 | true |
channels.feishu.blockStreaming | 启用块流式传输 | true |
channels.feishu.typingIndicator | 启用打字状态 | true |
channels.feishu.resolveSenderNames | 解析发件人姓名 | true |
常见问题
Q: 飞书 Bot 收不到消息,但应用已发布,该怎么排查?
A: 依次检查:① 事件订阅是否勾选了 im.message.receive_v1 且选择了长连接(WebSocket)模式;② Gateway 是否正在运行(openclaw gateway status);③ 查看日志 openclaw logs --follow 确认是否有连接报错。常见原因是应用发布时 Gateway 未运行导致长连接初始化失败。
Q: 飞书群组里 @了 Bot 但没有回复?
A: 检查 groupPolicy(是否为 disabled 或 allowlist 但群组不在白名单中)和 requireMention 设置。若群组 ID 不在 groupAllowFrom 中,需先添加;若已在但仍无响应,用 openclaw logs --follow 查看是否有"群组未授权"日志。
Q: 如何找到飞书群组 ID(chat_id)和用户 ID(open_id)?
A: 最简单的方式:启动 Gateway,在飞书中 @提及 Bot 或私聊 Bot,然后运行 openclaw logs --follow,在日志中查找 chat_id(格式 oc_xxx)和 open_id(格式 ou_xxx)。