OpenClaw × 飞书保姆级接入指南

0 阅读8分钟

最近最近弄了一个 OpenClaw + 飞书 Bot,如果你也想用个人飞书账号搭一个能“帮你干活”的 AI Bot,这篇可以直接跟着做。

image.png


一、准备工作

开始之前,建议先确认下面几件事:

1. 你已经有一个飞书开发者账号

可以正常登录飞书开放平台。

2. 你已经安装了 OpenClaw

你可以先在终端里执行:

openclaw --help

如果能正常输出帮助信息,就说明 CLI 已经装好了。


如果没有安装那么先需要安装openclaw,需要先安装openclaw:

一、OpenClaw 安装指南(Mac / Node 环境)

1️⃣ 先确认你的环境

OpenClaw 是基于 Node.js 的 CLI 工具,所以你必须先有:

必备环境:

Node.js >= 18
npm 或 pnpm

👉 检查是否已安装

在终端执行:

node -v
npm -v

✅ 正常情况

v18.x.x 或 v20.x.x

❌ 如果没有

建议直接去官网装:

👉 nodejs.org/

或者用 nvm(推荐开发者用):

brew install nvm

2️⃣ 安装 OpenClaw(推荐方式)

✅ 方式一:npm 全局安装(最通用)

npm install -g openclaw

✅ 方式二:pnpm(更快)

pnpm add -g openclaw

⚠️ Mac 用户注意

如果报权限错误:

EACCES: permission denied

可以这样:

sudo npm install -g openclaw

或者配置 npm 全局目录(更推荐长期方案)


3️⃣ 验证是否安装成功

执行:

openclaw --help

✅ 正确输出(示例)

Usage: openclaw [options] [command]

Commands:
  gateway
  pairing
  message

👉 看到这些命令就说明安装成功了


4️⃣ ⚠️ 很多人会踩的坑(重点)


❌ 坑1:以为 openclaw 就是启动服务

执行:

openclaw

👉 只会输出帮助,不会启动任何东西


✅ 正确做法是:

openclaw gateway

👉 这个才是启动服务


❌ 坑2:命令找不到

command not found: openclaw

👉 原因:

  • npm 全局路径没加到 PATH

✅ 解决方法:

执行:

npm root -g

找到路径后加入:

export PATH=$PATH:你的npm全局bin路径

❌ 坑3:装了但版本太低

有些同学 Node 是 14 / 16:

👉 可能会运行异常或报错


✅ 建议:

Node 18 或 20(最稳)

5️⃣ (可选)用 brew 安装(Mac)

如果你习惯 brew:

brew install openclaw

⚠️ 注意

brew 版本可能不是最新
如果遇到奇怪问题,建议还是用 npm


6️⃣ 安装完成后你应该达到的状态

你现在应该能做到:

openclaw --help   ✅
openclaw gateway  ✅(可以启动)

👉 到这里为止:

OpenClaw 安装 ✔
CLI 可用 ✔

二、第一步:在飞书开放平台创建应用

进入飞书开放平台后,创建一个自建应用。

创建完后,先给应用加上机器人能力

image.png

创建一个自建应用,并添加“机器人”能力。后续所有消息交互,都会通过这个 Bot 进行。


三、第二步:进入“事件与回调”,这里一定要选对

这一部分是最容易走错的地方。

路径是:

开发配置 → 事件与回调

进入后你会看到“订阅方式”,一般会有两种:

  • 使用长连接接收事件
  • 将回调发送至开发者服务器

正确选择:使用长连接接收事件

如果你是本地体验,直接选这个。

不要一开始就选“开发者服务器回调”,因为那种方式意味着你要额外准备:

  • 一个公网可访问的 HTTP 地址
  • 回调 JSON 校验
  • 请求地址配置
  • 可能还要做内网穿透

这套流程更适合你已经有正式后端服务的情况,不适合初次接入。

image.png


三、第三步:不要纠结 webhook,也不要填请求地址

这里专门说一下我踩过的坑。

我一开始以为只要给飞书配一个 URL,比如:

https://xxx.loca.lt/webhook/feishu

Bot 就能工作。

结果飞书直接报:

返回数据不是合法的 JSON 格式

后来才发现,这是因为我把流程搞复杂了:

  • 本来可以走长连接
  • 结果跑去配开发者服务器回调
  • 本地又没有真正启动一个符合飞书要求的 webhook 服务
  • 自然就会报错

所以如果你走的是本文这套流程:

这里完全不需要填写请求地址
也不需要 localtunnel / cloudflare


四、第四步:发布应用版本

飞书有一个很容易被忽略的机制:

很多配置改完以后,必须发布版本才会生效。

也就是说,你不是点了保存就算完成了,还需要:

创建版本 → 发布

这个动作特别容易漏掉。
漏掉之后最典型的现象就是:

  • 你明明觉得自己都配好了
  • 但 Bot 还是没有反应

配置完长连接模式后,记得创建版本并发布,否则 Bot 仍然不会按新配置工作。


五、第五步:不要直接执行 openclaw,真正该启动的是 gateway

这是第二个特别容易误判的点。

我一开始在终端里直接执行:

openclaw

结果出来的是帮助信息、Usage、Options。

当时我还以为 OpenClaw 已经跑起来了,实际上并没有。

后来查看帮助内容才发现,真正应该启动的是:

openclaw gateway

这条命令的含义是:

启动本地 WebSocket Gateway,也就是和飞书建立长连接的核心进程。

你可以把这部分写得很明确:

正确启动命令

openclaw gateway

错误理解

openclaw

只是显示帮助,不会启动服务。

openclaw 本身只是 CLI 入口,真正要跑起来的是 openclaw gateway


六、第六步:如果提示 “Gateway already running”,其实是好事

当我执行:

openclaw gateway

之后,又重复执行了一次,终端里报了类似:

Gateway already running
Port xxxx is already in use

第一反应会觉得是不是又报错了。

但实际上这通常说明:

OpenClaw Gateway 已经在本地成功启动了。

也就是说,这不是坏消息,而是说明你已经跑起来了,只是又重复开了一次。

所以看到类似下面这些信息时,不要慌:

  • Gateway already running
  • Gateway already running locally
  • Port xxxx is already in use

它们通常意味着:

已经有一个 OpenClaw gateway 进程在运行。

这类提示一般不是失败,而是说明 gateway 已经在跑了,不需要重复启动。


七、第七步:回到飞书里给 Bot 发消息,拿 pairing code

当长连接已经跑起来之后,就可以回到飞书里和 Bot 对话了。

这时候你可以先发一句最简单的:

hi

如果链路是通的,Bot 一般会回复类似这样的内容:

OpenClaw: access not configured.
Your Feishu user id: ...
Pairing code: XXXXXXXX
Ask the bot owner to approve with:
openclaw pairing approve feishu XXXXXXXX

看到这一步,说明已经非常接近成功了。
这不是报错,而是在提示你进行绑定授权

image.png

看到 pairing code,说明飞书已经能和本地 OpenClaw 正常通信,当前只差最后一步授权绑定。


八、第八步:回到终端执行 pairing approve

把飞书返回的 code 复制出来,在终端里执行:

openclaw pairing approve feishu 你的PairingCode

例如:

openclaw pairing approve feishu 4KJQBPE4

这一步成功之后,飞书端就不会再提示 access not configured 了。

这里可以加一句特别实用的提醒:

注意事项

  • pairing code 必须用最新生成的
  • 旧 code 很容易报:
No pending pairing request found for code: XXXXX

这不是命令写错,而是 code 已经过期或已失效了

用飞书里刚拿到的最新 pairing code 执行 approve。旧 code 可能会提示 no pending pairing request。


九、第九步:第一次跑通后,先做最小能力测试

到这里,其实接入已经完成了。
但不要一上来就给它下特别复杂的任务,比如:

  • 创建调研文档
  • 生成内容
  • 再同步到飞书
  • 再发消息通知别人

因为 OpenClaw 这类 Agent 的链路比较长,很容易在第一轮就把自己搞糊涂。

我建议先做一个最小测试

请创建一个飞书文档,标题为 test-openclaw,并返回文档链接。

如果这个都能成功,说明最基础的 doc 工具链是通的。
然后再逐渐加复杂度。


十、为什么我会遇到 “LLM request timed out”

我在测试“创建调研文档”时,Bot 一开始回复说:

已创建调研文档,文件保存在本地工作空间。

接着我回复“需要的”之后,它又卡住,最后报:

LLM request timed out.

这说明什么?

说明它不是“还在思考”,而是:

这轮请求已经失败 / 超时结束了。

这个现象在 Agent 系统里很常见,原因通常包括:

  • 模型本身慢
  • 指令太复杂
  • Tool 调用过多
  • 先生成本地结果,再尝试同步飞书时超时

所以我后来总结出一个更稳的使用方式:

错误方式

一步要求它完成太多事:

帮我写文档 + 创建飞书文档 + 同步 + 返回链接 + 发消息通知

正确方式

拆成两步:

第一步:

先帮我整理一份调研文档内容

第二步:

请把上面的内容创建为飞书文档,并返回链接

这样成功率会高很多。


十一、如何判断它是“还在思考”还是“已经失败”

这是使用过程中很实用的一个判断方法。

还在跑的表现

  • 飞书里还在持续输出
  • 本地 gateway 日志还在动
  • 没有明确报错

已经失败的表现

  • 飞书出现 LLM request timed out
  • 很久没有任何新消息
  • 本地日志也停住了

一旦看到 timeout,基本不用继续等了,应该重新发更明确、更短的任务。


十二、适合谁用,适合什么场景

就我目前的体验来说,这套接入方式特别适合:

  • 个人飞书账号做体验
  • 本地验证 OpenClaw 能力
  • 做文档生成、飞书工具调用类 demo
  • 想先做一个自己的 AI 助手原型

但如果你是要上公司正式环境,那就另一个话题了,后面一般还要考虑:

  • 应用审批
  • 权限范围
  • 安全合规
  • 稳定部署
  • 服务器化运行

也就是说:

个人验证阶段,长连接模式很好用
正式生产环境,再考虑服务端部署和团队权限