跳到主要内容
OpenClaw 飞书机器人配置指南:多渠道 AI 助手集成 | 极客日志
TypeScript Node.js AI
OpenClaw 飞书机器人配置指南:多渠道 AI 助手集成 综述由AI生成 OpenClaw 开源 AI 项目中飞书机器人的配置流程。内容包括环境准备、飞书企业应用创建与权限管理、事件订阅设置、环境变量及配置文件编写。对比了 WebSocket 与 Webhook 连接模式,介绍了群组策略、消息类型支持及多账号配置方案。提供基础与高级功能测试用例,并列出常见问题排查方法,助力开发者快速实现多渠道 AI 助手集成。
林间仙子 发布于 2026/4/6 更新于 2026/5/24 39 浏览一、前言
1.1 为什么需要配置飞书机器人?
OpenClaw 作为开源万能个人助理框架,支持多渠道通信。飞书(Lark)作为企业级协作平台,是集成 AI 助手的理想选择:
多渠道接入 - 支持私聊、群组、频道
富媒体交互 - 支持文本、图片、卡片、表情
企业级安全 - 完善的权限管理
开放 API - 丰富的集成能力
1.2 飞书机器人支持的功能
OpenClaw 的飞书扩展支持:
功能 说明 私聊对话 与 AI 助手 1 对 1 交流 群组互动 群聊中@机器人对话 文档操作 飞书云文档读写 表情回应 支持各类消息互动 Webhook 实时消息推送 双模式 WebSocket / Webhook
二、准备工作
2.1 环境要求
2.2 OpenClaw 安装
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
cp .env.example .env
pnpm dev
2.3 飞书账号要求
拥有飞书管理员权限
可访问飞书开放平台
企业版或个人版飞书账号均可
三、飞书应用创建
3.1 创建企业应用
访问飞书开放平台
访问:https://open.feishu.cn/ 登录你的飞书账号。
此处点击右上角进入开发者后台。
创建应用
点击「创建企业应用」填写应用名称:OpenClaw 助手,上传应用图标。
填写应用基本信息
应用名称:OpenClaw 助手
应用描述:基于 OpenClaw 的 AI 助手
上传应用图标
配置应用信息
应用描述:基于 OpenClaw 的 AI 助手
应用主页:可选填
落地页:可选填
3.2 获取应用凭证 {
"appId" : "your_app_id_here" ,
"appSecret" : "your_app_secret_here"
}
⚠️ 注意 :妥善保管 appSecret,泄露后需重新创建
3.3 开通权限 权限名称 权限说明 必要性 im:message 发送和接收消息 ⭐ 必选 im:chat 群组管理 ⭐ 必选 im:contact 联系人读取 ⭐ 必选 doc:document 云文档读写 🔸 可选 drive:file 云空间文件 🔸 可选 approval:instance 审批流程 🔸 可选
3.4 配置事件订阅
Webhook URL 配置
https://your-domain.com/api/feishu/webhook
订阅事件 必需事件:
├── im:message
│ └── 接收消息事件
└── im.chat
└── 群组事件
3.5 发布应用 审核时间:1-3 工作日。企业自建应用可无需审核。
四、OpenClaw 配置
4.1 配置文件结构 openclaw/
├── .env
├── apps/
│ └── feishu/
│ └── config.ts
└── extensions/
└── feishu/
└── src/
├── client.ts
├── accounts.ts
└── types.ts
4.2 环境变量配置
FEISHU_APP_ID=your_app_id
FEISHU_APP_SECRET=your_app_secret
FEISHU_DOMAIN=feishu
FEISHU_CONNECTION_MODE=websocket
FEISHU_WEBHOOK_PATH=/api/feishu/webhook
FEISHU_VERIFICATION_TOKEN=your_token
4.3 飞书配置文件
export const FeishuConfig = {
credentials : {
appId : process.env .FEISHU_APP_ID ,
appSecret : process.env .FEISHU_APP_SECRET ,
},
domain : process.env .FEISHU_DOMAIN || 'feishu' ,
connectionMode : process.env .FEISHU_CONNECTION_MODE || 'websocket' ,
webhook : {
path : process.env .FEISHU_WEBHOOK_PATH || '/api/feishu/webhook' ,
verificationToken : process.env .FEISHU_VERIFICATION_TOKEN ,
},
message : {
maxLength : 20000 ,
retryTimes : 3 ,
retryInterval : 1000 ,
},
logging : {
level : 'info' ,
format : 'json' ,
},
};
4.4 账号配置
export const feishuAccounts = [
{
accountId : 'main' ,
appId : process.env .FEISHU_APP_ID ,
appSecret : process.env .FEISHU_APP_SECRET ,
enabled : true ,
configured : true ,
domain : 'feishu' ,
connectionMode : 'websocket' ,
},
{
accountId : 'lark' ,
appId : 'your_lark_app_id' ,
appSecret : 'your_lark_app_secret' ,
enabled : false ,
configured : false ,
domain : 'lark' ,
},
];
五、核心配置详解
5.1 连接模式配置
WebSocket 模式(推荐)
const wsConfig = {
connectionMode : 'websocket' ,
heartbeatInterval : 30000 ,
reconnectInterval : 5000 ,
maxReconnectAttempts : 10 ,
};
Webhook 模式
const webhookConfig = {
connectionMode : 'webhook' ,
path : '/api/feishu/webhook' ,
methods : ['POST' ],
};
5.2 消息类型支持
const supportedMessageTypes = [
'text' ,
'image' ,
'file' ,
'audio' ,
'video' ,
'rich_text' ,
'card' ,
'interactive' ,
];
5.3 消息发送配置
export interface FeishuMessageInfo {
messageId : string ;
chatId : string ;
senderId ?: string ;
messageType : string ;
content : string ;
timestamp : number ;
}
const sendRichText = async (chatId : string , markdown : string ) => {
await client.sendMessage ({
receiveId : chatId,
msgType : 'rich_text' ,
content : JSON .stringify ({
rich_text : {
elements : [
{
type : 'text' ,
text : markdown,
},
],
},
}),
});
};
六、群组策略配置
6.1 群白名单配置
export const groupPolicy = {
allowlist : {
enabled : true ,
mode : 'whitelist' ,
matchSource : 'id' ,
allowedGroups : [
'oc_xxxxxxxxxxxxx' ,
],
matchRules : {
namePatterns : ['AI-*' , '测试群' ],
},
},
defaultPolicy : {
allowed : true ,
responseMention : true ,
typingIndicator : true ,
},
};
6.2 群组功能开关
export const groupFeatures = {
mentionReply : {
enabled : true ,
prefix : '@你的名字' ,
},
privateChat : {
enabled : true ,
requireFollow : false ,
},
document : {
enabled : true ,
read : true ,
write : true ,
create : true ,
},
media : {
upload : true ,
download : true ,
maxSize : 20 * 1024 * 1024 ,
},
};
6.3 权限控制
export const userPermissions = {
admins : [
'ou_xxxxxxxxxxxxx' ,
],
user : {
canUse : true ,
dailyLimit : 100 ,
canUpload : true ,
maxFileSize : 10 * 1024 * 1024 ,
},
anonymous : {
canUse : false ,
},
};
七、功能测试
7.1 基础功能测试
测试 1:私聊对话
你好,OpenClaw!
你好!我是 OpenClaw AI 助手。有什么可以帮助你的吗?
测试 2:群组@互动
@OpenClaw 帮我总结今天的新闻
今天的主要新闻:
1. xxx
2. xxx
3. xxx
7.2 高级功能测试
测试 3:飞书文档操作
@OpenClaw 读取文档 [文档 ID]
@OpenClaw 在文档 [ID] 中添加以下内容:
- 项目进度更新
- 明日工作计划
测试 4:文件传输
@OpenClaw 上传图片 [图片文件]
@OpenClaw 下载这个文件
7.3 测试用例表 测试项 测试步骤 预期结果 实际结果 私聊对话 发送"你好" 回复欢迎语 ✅ 群组@互动 @机器人提问 AI 回复 ✅ 文档读取 请求读取文档 返回文档内容 ✅ 文档写入 添加内容 内容成功添加 ✅ 图片发送 发送图片 图片正常显示 ✅ 文件上传 上传文件 文件上传成功 ✅ 断线重连 断开网络后重连 自动重连成功 ✅ 高频测试 连续发送 10 条 全部正常回复 ✅
八、常见问题
Q1: WebSocket 连接失败? Error : WebSocket connection failed
ping open.feishu.cn
sudo ufw status
netstat -tlnp | grep 443
FEISHU_LOG_LEVEL=debug pnpm dev
Q2: 消息发送失败? Error: Failed to send message
if (message.length > 20000 ) {
}
const sendWithRetry = async (message, retries = 3 ) => {
for (let i = 0 ; i < retries; i++) {
try {
return await sendMessage (message);
} catch (e) {
if (i === retries - 1 ) throw e;
await sleep (1000 * (i + 1 ));
}
}
};
Q3: 机器人无响应?
curl http://localhost:3000/api/feishu/status
curl http://localhost:3000/api/feishu/events
tail -f logs/feishu.log
Q4: 权限不足?
Q5: 文档操作失败? Error : Document operation failed
const checkDocPermission = async (docId : string ) => {
const doc = await client.doc .get ({
document_id : docId,
});
if (!doc.readable ) {
throw new Error ('文档无读取权限' );
}
if (!doc.writable ) {
throw new Error ('文档无写入权限' );
}
};
九、进阶技巧
9.1 多账号配置
export const multiAccount = {
accounts : [
{
name : '飞书' ,
domain : 'feishu' ,
config : feishuConfig,
},
{
name : 'Lark' ,
domain : 'lark' ,
config : larkConfig,
enabled : false ,
},
],
loadBalancing : 'round_robin' ,
};
9.2 自定义消息卡片
const sendCard = async (chatId : string ) => {
await client.sendMessage ({
receiveId : chatId,
msgType : 'interactive' ,
content : JSON .stringify ({
card : {
config : {
wide_screen_mode : true ,
enable_forward : true ,
},
elements : [
{
tag : 'div' ,
fields : [
{
is_short : false ,
text : {
tag : 'lark_md' ,
content : '**AI 助手回复**\n你好!有什么可以帮你?' ,
},
},
],
},
{
tag : 'action' ,
actions : [
{
tag : 'button' ,
text : {
tag : 'plain_text' ,
content : '继续对话' ,
},
type : 'primary' ,
action_id : 'continue_chat' ,
},
{
tag : 'button' ,
text : {
tag : 'plain_text' ,
content : '结束对话' ,
},
type : 'default' ,
action_id : 'end_chat' ,
},
],
},
],
},
}),
});
};
9.3 消息缓存策略
export const messageCache = {
enabled : true ,
maxSize : 1000 ,
ttl : 3600 ,
strategy : 'lru' ,
get : async (key : string ) => {},
set : async (key : string , value : any ) => {},
delete : async (key : string ) => {},
clear : async () => {},
};
9.4 性能优化
export const performance = {
maxConcurrent : 10 ,
queueSize : 100 ,
batching : {
enabled : true ,
maxBatchSize : 10 ,
maxWaitTime : 100 ,
},
pool : {
min : 2 ,
max : 10 ,
},
};
9.5 日志与监控
export const logging = {
level : 'info' ,
format : 'json' ,
fields : {
traceId : true ,
userId : true ,
chatId : true ,
messageId : true ,
timestamp : true ,
},
outputs : [
{
type : 'console' ,
level : 'info' ,
},
{
type : 'file' ,
level : 'info' ,
path : './logs/feishu.log' ,
rotation : 'daily' ,
},
{
type : 'remote' ,
level : 'warn' ,
endpoint : 'https://your-log-service.com' ,
},
],
};
十、总结
10.1 配置要点回顾
✅ 创建飞书企业应用
✅ 获取并保管好应用凭证
✅ 开通必要权限
✅ 配置环境变量
✅ 选择连接模式(推荐 WebSocket)
✅ 配置群组白名单
✅ 测试各功能模块
相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online