openclaw 对接完飞书群机器人配置踩坑记:消息不回、Gateway 断开问题排查
前言
用 OpenClaw 配飞书机器人,踩了两个坑:群消息不回、Gateway 总是断开。排查了好一阵子,总算搞定了,记录一下希望能帮到遇到同样问题的朋友。
发现问题
飞书消息不回复
在飞书群里 @ 了机器人,完全没反应。一开始以为是网络不好或者机器人没上线,但状态显示明明是连接着的,这就奇怪了。
Gateway 频繁断开
每次改完配置跑 openclaw gateway restart,或者根本什么都没干,Gateway 说断就断。再想启动就报错,必须跑一遍 openclaw doctor --fix 重新安装才能用。太影响使用了。
查看原因
飞书机器人 ID 搞错了
翻日志看到这么一句:
receive events or callbacks through persistent connection only available in self-build & Feishu app 查了一下,原来一开始配的那个 App ID(yyyyyyyyyyyyyy)是快捷版/小程序类型的飞书应用,这类不支持 WebSocket 长连接收消息。找运维要了正确的机器人 ID(xxxxxxxxxxxxxxxx),换上去果然就好了。
多机器人配置一直失败
想给运营 agent(yunying)单独配一个飞书机器人,试了很多次一直报"unknown channel id"。后来翻 OpenClaw 官方文档才发现,飞书多账号不是那么配的,得用 accounts 字段。
正确姿势:
{"channels":{"feishu":{"defaultAccount":"main","accounts":{"main":{"appId":"xxxxxxxxxxxxxxxx","appSecret":"abcdefghijklmnopqrstuvwxyz"},"yunying":{"appId":"yyyyyyyyyyyyyy","appSecret":"1234567890abcdef"}}}}}然后 bindings 这么配:
{"bindings":[{"type":"route","agentId":"main","match":{"channel":"feishu","accountId":"main"}},{"type":"route","agentId":"yunying","match":{"channel":"feishu","accountId":"yunying"}}]}Gateway 断开的原因
日志显示 Gateway 收到 SIGTERM 后正常关闭了,但 LaunchAgent 没自动重新加载。
后来才搞明白——我之前一直是跑 openclaw gateway 在前台启动,而不是用 LaunchAgent。虽然 LaunchAgent 配了 KeepAlive: true,但前台进程不受它管,断开后就死了,不会自动起来。
解决问题
飞书多账号配置
改完 ~/.openclaw/openclaw.json 的配置,重启 Gateway:
openclaw gateway restart 两个机器人都连上了。日志能看出来:
feishu[yunying]: WebSocket client started feishu[main]: WebSocket client started Gateway 自动重启
简单说就是别跑 openclaw gateway,改用 LaunchAgent:
# 先停掉前台运行的 Gateway# 然后用 LaunchAgent 方式启动 openclaw gateway install openclaw gateway start 以后 Gateway 就会受 LaunchAgent 管理,断开会自动重启,不用每次手动搞了。
踩过的坑
总结一下:
- 飞书多账号要用
accounts字段配,别想着开多个渠道 - Gateway 一定要用
openclaw gateway start启动,别直接跑openclaw gateway
有其他问题欢迎评论区聊聊。