背景
在将 OpenClaw 接入飞书群机器人时,我遇到了两个典型问题:一是群内@机器人后无响应,二是 Gateway 服务频繁断开且难以自恢复。经过排查,发现主要是应用类型选择错误、多账号配置结构不当以及启动方式不规范导致的。
问题一:飞书消息无响应
日志中曾出现如下报错:
receive events or callbacks through persistent connection only available in self-build & Feishu app
这提示我们,最初配置的 App ID 对应的是快捷版或小程序类型的飞书应用,这类应用不支持 WebSocket 长连接来接收事件回调。正确的做法是向运维申请支持自建应用的机器人 ID,替换原有配置后即可正常收发消息。
问题二:Gateway 频繁断开
修改配置重启 Gateway 后,服务经常无故断开。若直接在前台运行 openclaw gateway,进程退出后不会自动拉起,必须手动执行 openclaw doctor --fix 重装才能恢复。
根本原因在于 LaunchAgent 虽然配置了 KeepAlive: true,但它只管理后台服务进程,不接管前台运行的命令行实例。因此,必须改用系统服务方式启动。
多账号配置方案
若需为不同 Agent(如运营 agent)绑定独立飞书机器人,不能简单开启多个渠道,而应在 channels 下定义 accounts 字段。
配置文件示例:
{
"channels": {
"feishu": {
"defaultAccount": "main",
"accounts": {
"main": {
"appId": "xxxxxxxxxxxxxxxx",
"appSecret": "abcdefghijklmnopqrstuvwxyz"
},
"yunying": {
"appId": "yyyyyyyyyyyyyy",
"appSecret": "1234567890abcdef"
}
}
}
}
}
同时需在 bindings 中指定路由规则,区分不同账号对应的 Agent:
{
"bindings": [
{
"type": "route",
"agentId": "main",
"match": {
"channel": "feishu",
"accountId": "main"
}
},
{
"type": "route",
"agentId": "yunying",
"match": {
"channel": "feishu",
"accountId": "yunying"
}
}
]
}
解决 Gateway 自动重启
停止前台运行的 Gateway 进程,改用系统服务启动:
# 确保前台进程已停止
pkill -f "openclaw gateway" || true
# 使用 LaunchAgent 方式安装并启动
openclaw gateway install
openclaw gateway start
此后 Gateway 将由 LaunchAgent 托管,即使网络波动或服务异常退出,系统也会自动尝试重启,无需人工干预。
总结
- 飞书多账号需通过
accounts字段配置,而非创建多个渠道。 - Gateway 务必使用
openclaw gateway start启动,确保由系统服务管理以保证稳定性。


