跳到主要内容
OpenClaw 集成飞书机器人实战指南 | 极客日志
TypeScript Node.js AI
OpenClaw 集成飞书机器人实战指南 综述由AI生成 如何将 OpenClaw 智能代理框架与飞书机器人进行深度集成。内容涵盖从环境搭建、飞书应用创建与权限配置,到插件安装、核心功能实战(如消息发送、文档操作、多维表格交互)及进阶优化技巧。文章提供了具体的命令行操作、代码示例及安全最佳实践,帮助开发者快速实现 AI 助手在企业协作场景中的落地,并包含常见问题排查指南。
奶糖兔 发布于 2026/4/7 更新于 2026/5/22 12 浏览OpenClaw 集成飞书机器人实战指南
将大语言模型的能力接入飞书,实现真正的智能化办公。本文将带你从零开始,完成 OpenClaw 与飞书的深度集成。
什么是 OpenClaw
OpenClaw 是一个开源的智能代理框架,支持本地部署 AI 能力、多通道消息接入以及智能任务编排。它的核心优势在于 AI 原生设计、跨平台统一接口以及持久化上下文管理。
核心架构
┌─────────────────────────────────────────────────────┐
│ OpenClaw Framework │
├─────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Chat │ │ Email │ │ Calendar │ ... │
│ │ Plugin │ │ Plugin │ │ Plugin │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────────────┤
│ Skill Marketplace (Feishu Docs, Drive, Wiki...) │
├─────────────────────────────────────────────────────┤
│ Memory & Context Management │
├─────────────────────────────────────────────────────┤
│ Model Providers Layer (Qwen, DeepSeek, Ollama) │
└─────────────────────────────────────────────────────┘
相比传统 bot 框架,OpenClaw 在 AI 原生设计和本地模型支持上表现更佳,无需依赖云端服务即可保护隐私。
前期准备
硬件要求
CPU:双核以上(建议四核)
内存:≥ 4GB RAM(AI 推理场景建议 8GB+)
磁盘:至少 10GB 可用空间
网络:稳定互联网连接
软件环境
Windows 用户推荐 WSL2
wsl --list--verbose
wsl --update
wsl -d Ubuntu
macOS/Linux 原生环境
node --version
npm --version
飞书应用创建与授权
1. 登录开发者平台
访问 飞书开放平台 → 点击 '企业自建应用' → '创建应用'。
2. 填写基本信息
应用名称 :OpenClaw Bot
:选择或上传一个 1024x1024 PNG
图标
描述 :我的智能 AI 助手,帮助你高效工作
可见范围 :选择相应的部门或个人
3. 获取关键凭证
App ID: cli_xxxxxxxxxxxxxx
App Secret: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
⚠️ 安全提醒 :App Secret 是敏感信息,请妥善保管,不要提交到公开的代码仓库!
echo "FEISHU_APP_ID=cli_xxx" >> ~/.env.openclaw
echo "FEISHU_APP_SECRET=xxx-xxxx-xxxx-xxxx-xxxxxx" >> ~/.env.openclaw
chmod 600 ~/.env.openclaw
export FEISHU_APP_ID=cli_xxx
export FEISHU_APP_SECRET=xxx-xxxx-xxxx-xxxx-xxxxxx
4. 配置权限范围 在飞书应用后台左侧菜单找到 '管理' → '权限和应用' → '添加权限范围' 。
权限标识 类型 必要度 用途说明 im:messageTenant 必需 发送和接收群聊消息 im:message:send_as_botTenant 必需 以机器人身份发送消息 im:chatTenant 必需 创建和管理聊天会话 docx:document:createUser 可选 创建飞书云文档 base:record:createUser 可选 向多维表格写入数据
注意:Tenant 级别权限可能需要管理员审批,生产环境请遵循最小权限原则。
5. 发布应用并邀请进群
测试版发布 :开发阶段使用,可见范围为当前部门。
正式版发布 :生产环境使用,需提交代码审核。
打开任意飞书群聊
点击右上角 "..." → "添加机器人"
搜索你的应用名称并加入
验证成功标志:机器人出现在群成员列表中,且可以正常 @ 机器人并收到回复。
OpenClaw 环境搭建
安装方式对比 方式 适用场景 优点 缺点 全局安装 个人开发者 一次安装到处用 可能权限冲突 Docker 部署 团队协作 环境隔离干净 额外学习成本 GitHub Codespace 在线体验 零配置开箱即用 需要网络条件
方式一:全局安装(推荐)
npm install -g @openclaw/cli
openclaw --version
openclaw init
方式二:Docker 部署 # Dockerfile
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
EXPOSE 8765
CMD ["node", "dist/index.js"]
version: '3.8'
services:
openclaw:
build: .
ports:
- "8765:8765"
environment:
- NODE_ENV=production
- FEISHU_APP_ID=${FEISHU_APP_ID}
- FEISHU_APP_SECRET=${FEISHU_APP_SECRET}
volumes:
- ./workspace:/app/workspace
- ./memory:/app/memory
docker-compose up -d
docker-compose logs -f openclaw
配置文件详解 生成后的 /root/.openclaw/config.json 核心字段说明:
{
"gateway" : {
"port" : 18789 ,
"mode" : "local" ,
"bind" : "loopback" ,
"auth" : { "mode" : "token" , "token" : "自动生成" }
} ,
"agents" : {
"defaults" : {
"model" : { "primary" : "deepseek/deepseek-chat" } ,
"workspace" : "/root/.openclaw/workspace"
}
} ,
"plugins" : {
"entries" : { "feishu" : { "enabled" : true } }
}
}
飞书插件配置详解
插件架构解析 /root/.openclaw/extensions/feishu/
├── index.ts
├── src/
│ ├── channel.ts
│ ├── monitor.ts
│ ├── client.ts
│ └── skills/
└── package.json
核心配置文件 创建 .env.openclaw 或使用以下方式配置:
FEISHU_APP_ID=cli_xxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
FEISHU_CONNECTION_MODE=websocket
FEISHU_LOG_LEVEL=debug
FEISHU_MESSAGE_DEBOUNCE_MS=300
FEISHU_RETRY_ATTEMPTS=3
启用飞书插件
方式一:通过 CLI 启用
openclaw plugins list
openclaw plugins enable feishu
openclaw plugins status feishu
方式二:手动编辑 config.json nano ~/.openclaw/config.json
{ "plugins" : { "entries" : { "qwen-portal-auth" : { "enabled" : true } , "feishu" : { "enabled" : true } } } }
pkill -f openclaw-gateway
openclaw gateway start
验证连接状态
openclaw gateway status | grep feishu
openclaw probe feishu
[INFO] Feishu plugin initialized
[INFO] Connected to IM Cloud Server
[INFO] Bot info: id =oc_f91fe..., name=OpenClaw Bot
[INFO] Listening for incoming messages...
核心功能实战
📤 发送文本消息
基础用法
openclaw message \--channel feishu \--target oc_group_chat_id_here \--message "你好,我是 OpenClaw 机器人!"
通过 Python 脚本调用 import subprocess
import json
def send_feishu_message (chat_id, content ):
result = subprocess.run(
['openclaw' , 'message' , '--channel' , 'feishu' , '--target' , chat_id, '--message' , content, '--output' , 'json' ],
capture_output=True , text=True
)
return json.loads(result.stdout)
response = send_feishu_message("oc_abc123xyz" , "今天的日报已完成,请及时查收!📊" )
print (f"消息已发送:{response['messageId' ]} " )
🖼️ 发送富媒体消息
发送图片
openclaw message \--channel feishu \--target oc_target_id \--media /path/to/image.png \--caption "项目架构图"
openclaw message \--channel feishu \--target oc_target_id \--media "https://example.com/chart.png" \--caption "本周数据统计"
发送卡片消息 {
"type" : "text card" ,
"header" : { "title" : "📅 会议提醒" , "subtitle" : "重要项目评审会" } ,
"hero" : { "type" : "image" , "sub_type" : "cover" , "url" : "https://cdn.example.com/meeting.jpg" } ,
"content" : [ { "section" : { "text" : { "content" : "时间:今天 14:00-16:00\n地点:会议室 A\n参会人:产品部全体" } } } ]
}
openclaw message \--channel feishu \--target oc_target_id \--card-file card.json
🎯 @提及与回复功能
openclaw message \--channel feishu \--target oc_group_id \--message "这个问题需要跟进一下" \--mention-user ou_user_open_id
openclaw message \--channel feishu \--target oc_group_id \--message "紧急通知:服务器维护将于今晚 0 点开始" \--mention-all
openclaw message \--channel feishu \--target oc_group_id \--reply-to om_original_message_id \--message "@user 好的,这个需求我已经理解了"
📑 文档与知识库操作
创建云文档
openclaw doc create \--channel feishu \--title "2026 年 Q1 工作计划" \--folder-token folder_token_optional
读取文档内容
openclaw doc read \--channel feishu \--token doc_token_from_url
追加内容到文档 <!-- 创建 update.txt -->
- [x] 数据分析看板
- [ ] 报表导出功能
- [ ] 第三方集成
openclaw doc append \--channel feishu \--token doc_xxx \--file update.txt
📊 多维表格(Bitable)操作
查询数据
openclaw bitable query \--channel feishu \--app-token app_xxx \--table-id table_xxx \--filter "Status='进行中'"
[{"id" :"rec_abc" , "Name" :"用户中心重构" , "Priority" :"高" , "Assignee" :["张三" , "李四" ]}]
写入数据 openclaw bitable insert \--channel feishu \--app-token app_xxx \--table-id table_xxx \--fields '{"Task":"编写技术文档","Owner":"王五","DueDate":"2026-03-20"}'
🔄 定时任务与自动回复
创建周期性任务
0 9 * * * openclaw message --channel feishu --target oc_team_chat --template daily-summary
0 15 1 * * openclaw message --channel feishu --target oc_management --template weekly-report-reminder
openclaw cron import crontab.txt
openclaw cron list
配置自动回复规则 rules:
- trigger: "@me 天气"
response: "正在查询今日天气...{{weather(city)}} "
- trigger: "帮我定个会议"
action: calendar.create
fields:
title: "团队例会"
duration: 60
- trigger: "周报"
response_template: |
📊 **本周工作总结**
已完成: {{tasks.completed}}
进行中: {{tasks.in_progress}}
openclaw rules load rules.yaml
进阶技巧与最佳实践
🔒 安全最佳实践
1. 凭证管理
const appId = "cli_xxx" ; // DANGER!
npm install -g keytar
keytar.setPassword("openclaw" , "feishu_secret" , "xxx-xxxx-xxxx" );
const secret = keytar.getPasswordSync("openclaw" , "feishu_secret" );
2. API 速率限制
async function sendWithRetry (message, maxAttempts = 5 ) {
let attempt = 0 ;
while (attempt < maxAttempts) {
try {
await sendMessage (message);
return { success : true };
} catch (error) {
if (error.code === 'RATE_LIMITED' ) {
const delay = Math .pow (2 , attempt) * 1000 ;
console .log (`Rate limited, retrying in ${delay} ms` );
await sleep (delay);
attempt++;
} else {
throw error;
}
}
}
return { success : false , error : 'Max retries exceeded' };
}
🚀 性能优化
1. 消息批处理 from openclaw import FeishuClient
client = FeishuClient()
for member in members:
client.send_message(member.chat_id, "通知内容" )
client.batch_send({
'messages' : [{'chat_id' : m.id , 'content' : '通知内容' } for m in members]
})
2. 缓存策略 class CacheManager {
constructor (ttl = 300000 ) {
this .cache = new Map ();
this .ttl = ttl;
}
get (key ) {
const entry = this .cache .get (key);
if (!entry || Date .now () > entry.expiry ) {
this .cache .delete (key);
return null ;
}
return entry.value ;
}
set (key, value ) {
this .cache .set (key, { value, expiry : Date .now () + this .ttl });
}
}
const cache = new CacheManager ();
let groupInfo = cache.get ('group_' + chatId);
if (!groupInfo) {
groupInfo = await client.getChatInfo (chatId);
cache.set ('group_' + chatId, groupInfo);
}
📈 监控与调试
启用详细日志 export OPENCLAW_LOG_LEVEL=debug
export LOGGING_MODULES="feishu,monitor,sender"
常见日志分析
[INFO] [feishu] Message received from oc_xxx
[DEBUG] [parser] Extracted intent: check_status
[INFO] [executor] Running task: status_report
[INFO] [sender] Response sent successfully
[WARN] [rate-limit] Approaching quota limit (85%)
[WARN] [cache] Cache miss rate high: 45%
[ERROR] [auth] Access token expired, refreshing...
[ERROR] [network] Request timeout after 30s
常见问题排查
问题 1:无法连接到飞书服务器 症状: Error: Connection refused at api.feishu.cn:443
解决方案:
curl -I https://api.feishu.cn/open-apis/auth/v3/version
sudo iptables -L | grep 443
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
问题 2:认证失败 / Token 无效 症状: Error: invalid_access_token
解决步骤:
openclaw auth refresh --provider feishu
cat ~/.openclaw/credentials/feishu.json | jq '.app_id'
rm -rf ~/.openclaw/cache/feishu/*
openclaw cache clear
问题 3:消息发送被限流
const DELAY_PER_REQUEST = 100 ;
async function sendMessageBatch (messages ) {
for (const msg of messages) {
await sendSingleMessage (msg);
await sleep (DELAY_PER_REQUEST );
}
}
const pLimit = require ('p-limit' );
const limit = pLimit (5 );
Promise .all (messages.map (msg => limit (() => sendSingleMessage (msg))));
问题 4:@提及无法触发响应
问题 5:WebSocket 连接频繁断开 { "plugins" : { "feishu" : { "websocket" : { "heartbeat_interval_ms" : 30000 , "reconnect_delay_base_ms" : 5000 , "max_reconnect_attempts" : 10 } } } }
问题 6:无法读取/写入文档
openclaw scope list --provider feishu
总结与展望 通过本文的学习,你应该已经掌握了 OpenClaw 与飞书集成的全流程:
基础篇 :理解 OpenClaw 特性,完成飞书应用创建与权限配置。
进阶篇 :掌握多通道消息发送、@提及与智能回复、文档与多维表格的 CRUD 操作。
高阶篇 :学会自定义技能开发、性能优化与缓存策略,以及安全最佳实践。
下一步可以尝试结合本地 LLM 实现智能对话,构建更复杂的工作流引擎,或探索多租户与企业级部署方案。参考官方文档获取更多 API 细节与示例代码。
相关免费在线工具 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