OpenClaw飞书渠道配置问题与解决方案
发布时间:2026-04-08,版本记录:基于 1Panel 部署的 OpenClaw 实例,从 3.28(2026.3.28)升级至 2026.4.7。升级后容器启动即卡死并陷入循环重启,日志持续输出以下错误:Config invalidFile: ~/.openclaw/openclaw.json Problem:- channels.feishu: unknown channel id: feishu Run: openclaw doctor --fix。此问题并非个例,大量用户在同一升级过程中遭遇相同故障。
故障根因
问题集中在两个独立维度。
根因一:1Panel 镜像中飞书插件路径配置错误
| 路径 | 说明 |
|---|---|
OPENCLAW_BUNDLED_PLUGINS_DIR=/app/extensions | 容器默认的 bundled 插件目录(未包含飞书插件) |
/app/dist/extensions/feishu/ | 飞书插件的实际部署位置(预编译 .js 版本) |
1Panel 官方 openclaw:latest 镜像打包时,/app/extensions/ 目录并未放置飞书插件,而其编译产物实际位于 /app/dist/extensions/feishu/。环境变量指向了不存在的路径,导致 OpenClaw 始终无法加载飞书插件。
根因二:旧版配置字段违反新版 schema 校验
旧配置中留存了以下字段,新版本 schema 校验更为严格,触发 must NOT have additional properties 错误:
"replyInThread": "disabled",
"topicSessionMode": "disabled",
"reactionNotifications": "own",
"renderMode": "card",
"actions": { "reactions": true },
"typingIndicator": true,
"resolveSenderNames": true,
"streaming": true,
"blockStreaming": true,
"textChunkLimit": 2000,
"mediaMaxMb": 30,
"webhookPath": "/feishu/events"
关键提醒:
typingIndicator、resolveSenderNames、streaming等字段在 2026.4.x 版本中已迁移至插件内部默认值,不再允许在 channel 配置中显式声明。若旧配置仍保留这些字段,升级后必然导致启动失败。
解决步骤
第一步:修改 docker-compose.yml(需 root 权限)
文件路径:/opt/1panel/apps/openclaw/openclaw/docker-compose.yml
在 environment 区块新增一行环境变量,并将镜像版本锁定至 2026.4.7:
environment:
HOME: /home/node
TERM: xterm-256color
OPENCLAW_BUNDLED_PLUGINS_DIR: /app/dist/extensions # ← 新增此变量
image: 1panel/openclaw:2026.4.7 # ← 指定具体版本
作用:将 OpenClaw 的 bundled 插件目录覆盖为 /app/dist/extensions,使其能够正确定位到飞书插件。
第二步:重建容器
docker stop 1Panel-openclaw-7tjZ
docker rm 1Panel-openclaw-7tjZ
cd /opt/1panel/apps/openclaw/openclaw
docker compose up -d
或在 1Panel 管理面板保存配置后重启容器,效果相同。
第三步:写入正确的飞书 channel 配置
容器启动后,执行以下 Python 脚本更新配置文件:
docker exec 1Panel-openclaw-7tjZ python3 -c "
import json
with open('/home/node/.openclaw/openclaw.json', 'r') as f:
config = json.load(f)
# 添加 feishu 插件
plugins = config.setdefault('plugins', {})
allow = plugins.setdefault('allow', [])
if 'feishu' not in allow:
allow.append('feishu')
plugins.setdefault('entries', {})['feishu'] = {'enabled': True, 'config': {}}
# 写入 feishu channel 配置(仅保留 2026.4.x 支持的字段)
config['channels']['feishu'] = {
'enabled': True,
'defaultAccount': 'main',
'accounts': {
'main': {
'appId': 'cli_a94ba863b9f9dcb1',
'appSecret': 'DWJWRZMIqMRIXriLsxNBYfTw'
},
'hoare': {
'appId': 'cli_a948989a8879dcd3',
'appSecret': 'z2Xj6thGjUzHccuFDwBfCjbN8'
}
},
'domain': 'feishu',
'connectionMode': 'websocket',
'dmPolicy': 'open',
'allowFrom': ['*'],
'groupPolicy': 'open',
'requireMention': True
}
with open('/home/node/.openclaw/openclaw.json', 'w') as f:
json.dump(config, f, indent=2, ensure_ascii=False)
print('配置写入完成')
"
验证成功的标志
容器日志出现以下输出即表明配置生效:
[gateway] feishu_doc: Registered feishu_doc, feishu_app_scopes
[gateway] feishu_chat: Registered feishu_chat tool
[gateway] feishu_wiki: Registered feishu_wiki tool
[gateway] feishu_drive: Registered feishu_drive tool
[gateway] feishu_bitable: Registered bitable tools
[gateway] ready (4 plugins, 1.4s) ← 插件数从3增至4
[feishu] feishu[main]: bot open_id recovered: ou_xxx ← WebSocket 连接成功
核心问题(两个层面):
镜像路径错误:1Panel 的 openclaw 镜像默认 OPENCLAW_BUNDLED_PLUGINS_DIR=/app/extensions,但飞书插件实际位于 /app/dist/extensions/feishu/,路径不匹配导致持续报错 unknown channel id: feishu。
配置字段不兼容:旧配置中 replyInThread、topicSessionMode、renderMode、typingIndicator 等字段在新版本 schema 严格校验下已被废弃。
解决方案核心(单行环境变量):
在 docker-compose.yml 的 environment 段添加:
OPENCLAW_BUNDLED_PLUGINS_DIR: /app/dist/extensions
升级要点:每次切换镜像版本时,该环境变量必须保留,同时飞书 channel 配置只使用文档明确支持的字段。