问题排查记录
在将 OpenClaw 接入飞书群机器人的过程中,遇到了两个典型问题:群消息无响应以及 Gateway 进程频繁断开。经过排查,发现主要是配置类型与启动方式导致的。
消息无法回复
在飞书群里 @ 机器人后没有任何反应。虽然状态显示连接正常,但日志里有一条关键报错:
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'。查阅文档后发现,飞书多账号支持并非通过开启多个渠道实现,而是需要在配置中使用 accounts 字段。
正确的 channels 配置如下:
{"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"}}]}
修改 ~/.openclaw/openclaw.json 并重启 Gateway 后,日志显示两个客户端均成功建立连接:
feishu[yunying]: WebSocket client started
feishu[main]: WebSocket client started
Gateway 自动重启机制
之前遇到 Gateway 无故断开,且手动启动时报错,必须执行 openclaw doctor --fix 重装才能恢复。查看日志发现,Gateway 收到 SIGTERM 信号后已正常关闭,但负责守护的 LaunchAgent 并未触发重新加载。
根本原因在于之前一直采用前台模式直接运行 openclaw gateway,这种方式不受 LaunchAgent 管理。尽管配置文件里写了 KeepAlive: true,但对前台进程无效。
解决方案是放弃前台运行,改用系统服务方式启动:
# 停止当前前台进程
pkill -f openclaw.gateway
# 使用官方命令启动服务
openclaw gateway install
openclaw gateway start
此后 Gateway 将由 LaunchAgent 接管,即使意外断开也能自动拉起,无需人工干预。
总结
这次排查主要涉及两点经验:一是飞书多账号必须通过 accounts 字段配置,二是 Gateway 务必使用 openclaw gateway start 启动以确保服务持久性。掌握这两点能有效避免大部分基础配置问题。

