背景

今天遇到一个奇怪的问题:我的 OpenClaw 飞书配置突然不能用了,报错:

1
2
3
4
5
6
Config invalid
File: ~/.openclaw/openclaw.json
Problem:
- channels.feishu: invalid config: must NOT have additional properties
- channels.feishu.accounts.personal: invalid config: must NOT have additional properties
- channels.feishu.accounts.enterprise: invalid config: must NOT have additional properties

之前明明能用的配置,怎么就突然”非法”了?


排查过程

第一反应:查官方文档

我让 OpenClaw 助手去查了官方文档 https://docs.openclaw.ai/zh-CN/channels/feishu,发现配置格式应该是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
channels: {
feishu: {
enabled: true,
dmPolicy: "pairing",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
name: "My AI assistant",
},
},
},
},
}

对比我之前的配置,发现几个问题:

  1. botNamename(字段名变了)
  2. accounts.default 里的 groupPolicy 应该放到顶层

于是照着文档改了,但还是报错


深入排查:插件 schema

真正的转折点是查看插件的 schema 定义。在 ~/.openclaw/extensions/feishu/src/channel.ts 里找到了 configSchema,发现:

Schema 明确不支持的字段:

  • streaming
  • blockStreaming
  • groups(群组配置)

这些字段在官方文档里提到了,但插件 schema 里根本没有!


根本原因:插件版本问题

继续深挖,发现问题出在插件版本

组件 版本
OpenClaw 2026.3.28
官方捆绑飞书插件 @openclaw/[email protected]
我安装的第三方插件 @m1heng-clawd/[email protected]

关键发现:

  1. 我之前安装的是旧版第三方插件 @m1heng-clawd/[email protected]
  2. OpenClaw 官方已经捆绑了新版飞书插件 @openclaw/[email protected]
  3. 但我的第三方插件覆盖了官方捆绑版本
  4. 旧版插件的 schema 不支持新字段

日志里也有提示:

1
plugin feishu: duplicate plugin id detected; bundled plugin will be overridden by global plugin

解决方案

删除旧版插件,让系统使用官方捆绑的新版本:

1
rm -rf ~/.openclaw/extensions/feishu

同时清理 openclaw.json 里的 plugins.installs.feishu 条目。

重启 gateway:

1
openclaw gateway restart

验证状态:

1
2
3
4
5
6
7
openclaw status
# Channels
# ┌──────────┬─────────┬────────┬─────────────────────────────────┐
# │ Channel │ Enabled │ State │ Detail │
# ├──────────┼─────────┼────────┼─────────────────────────────────┤
# │ Feishu │ ON │ OK │ configured · accounts 2/2 │
# └──────────┴─────────┴────────┴─────────────────────────────────┘

最终配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
channels: {
feishu: {
enabled: true,
domain: "feishu",
connectionMode: "websocket",
groupPolicy: "open",
accounts: {
personal: {
appId: "cli_xxx",
appSecret: "xxx",
name: "个人飞书",
},
enterprise: {
appId: "cli_yyy",
appSecret: "yyy",
name: "企业飞书",
},
},
},
},
}

经验教训

  • OpenClaw 新版本可能已捆绑插件 - 升级后检查是否有官方捆绑版本,不必再安装第三方版本
  • 注意日志里的 warning - duplicate plugin id detected 这种提示很重要
  • schema 验证是最后一道防线 - 配置报错时,直接看插件的 configSchema 定义最靠谱
  • 第三方插件可能滞后 - 社区维护的插件更新可能跟不上官方版本

参考资料