1. 升级后飞书插件突然罢工,先别急着重装
OpenClaw 升级到 2026.3.23 之后,飞书插件加载失败是最近问得比较多的一个坑。表现很典型:机器人不回消息、飞书侧事件推送没反应,或者干脆在启动日志里刷出一串plugin path not found。很多人第一反应是把飞书插件卸了重装,结果发现重装完还是报同样的错,因为问题根本不在插件本身,而在openclaw.json里那条指向旧全局路径的plugins.load.paths。
这篇就围绕这个场景,把openclaw doctor的诊断输出、plugins.load.paths的路径配置、以及openclaw.json的骨架讲清楚,最后给一份可以直接抄的配置片段和验证步骤。适合已经装过 OpenClaw、正在用飞书插件做消息接入、升级后突然发现插件不加载的同学。如果你还没配过飞书插件,也可以顺着看,理解路径机制之后少踩一次坑。
核心结论先放这里:2026.3.23 调整了全局安装目录结构,旧配置里写死的全局extensions/feishu路径失效了,而用户目录下的插件安装路径是稳定的。把plugins.load.paths里那条失效路径删掉,让 OpenClaw 回落到用户目录加载,插件就能恢复。
2. 用 openclaw doctor 定位飞书插件到底卡在哪
遇到插件不加载,不要靠猜,先让openclaw doctor把体检报告打出来。它是 OpenClaw 自带的诊断命令,会检查配置合法性、插件路径可达性、插件 ID 冲突等,基本能一眼看出问题。
2.1 先跑一次只读诊断
在终端执行:
openclaw doctor注意这里先不加--fix,只读模式不会改你的配置,安全。典型输出会长这样:
ERROR: plugin path not found: D:\devTools\Node.js\node_global\node_modules\openclaw\extensions\feishu WARN: duplicate plugin id detected; bundled plugin will be overridden by global plugin Error: Config validation failed: plugins.load.paths: plugin: plugin path not found三行信息量很大。第一行plugin path not found直接点名了失效路径,就是它导致配置校验失败。第二行duplicate plugin id说明同一个feishu插件 ID 被发现了两次,一次来自内置(bundled),一次来自全局路径,系统提示全局会覆盖内置。第三行是最终结果:plugins.load.paths校验没过,整个配置加载中断,插件自然起不来。
2.2 理解路径为什么会失效
OpenClaw 的插件路径分两类,升级影响的是第一类:
| 路径类型 | 路径示例 | 是否受升级影响 |
|---|---|---|
| 全局安装 | D:\devTools\Node.js\node_global\node_modules\openclaw\extensions\ | 会变,升级后目录结构可能调整 |
| 用户安装 | C:\Users\Administrator\.openclaw\extensions\ | 稳定,不受升级影响 |
2026.3.23 这次升级动了全局安装目录,但你的openclaw.json里还留着升级前写死的全局路径。配置校验时去这个路径找插件,找不到,于是报plugin path not found。而用户目录下的插件其实一直都在,只是被那条失效路径挡住了。
提示:
openclaw doctor报的路径是绝对路径,直接复制出来去文件管理器里看一眼,如果目录不存在,基本就确认是路径失效,而不是插件没装。
3. 改 openclaw.json:删掉失效的 plugins.load.paths
定位到问题后,修复动作其实很小,就是编辑配置文件。但配置文件的位置和结构要先搞清楚,不然容易改错地方。
3.1 找到配置文件
Windows 下默认路径是:
C:\Users\Administrator\.openclaw\openclaw.jsonmacOS / Linux 下对应~/.openclaw/openclaw.json。用你顺手的编辑器打开,VS Code、Notepad++ 都行。改之前建议先复制一份备份,比如openclaw.json.bak,改坏了能回滚。
3.2 看清 plugins 配置段的结构
打开后搜索"plugins",你会看到类似这样的结构:
"plugins": { "load": { "paths": [ "D:\\devTools\\Node.js\\node_global\\node_modules\\openclaw\\extensions\\feishu" ] }, "entries": { "qwen-portal-auth": { "enabled": true }, "feishu": { "enabled": true } }, "installs": { "feishu": { "source": "npm", "spec": "@openclaw/feishu", "installPath": "C:\\Users\\Administrator\\.openclaw\\extensions\\feishu", "version": "2026.3.2" } } }三个字段各管一摊:load.paths是手动指定的插件搜索路径,entries是插件启用开关,installs记录插件从哪装的、装到哪、什么版本。问题就出在load.paths里那条全局路径。
3.3 删除 load 字段
把整个"load"字段删掉,只保留entries和installs。修复前:
"plugins": { "load": { "paths": [ "D:\\devTools\\Node.js\\node_global\\node_modules\\openclaw\\extensions\\feishu" ] }, "entries": { "feishu": { "enabled": true } } }修复后:
"plugins": { "entries": { "feishu": { "enabled": true } }, "installs": { "feishu": { "source": "npm", "spec": "@openclaw/feishu", "installPath": "C:\\Users\\Administrator\\.openclaw\\extensions\\feishu", "version": "2026.3.2" } } }删掉load.paths之后,OpenClaw 不再去那条失效的全局路径找插件,而是自动使用用户目录C:\Users\Administrator\.openclaw\extensions\feishu下已安装的插件。这个目录不受升级影响,路径稳定。
注意:JSON 对逗号很敏感。删掉
load字段后,确认"plugins": {后面紧跟的是"entries",中间不要留下多余的逗号,否则会报 JSON 解析错误,那是另一个坑了。
3.4 如果你确实需要自定义路径
有些同学把插件装在非默认位置,那load.paths不能直接删,要改成有效路径。比如插件实际在D:\openclaw-plugins\feishu,就写成:
"plugins": { "load": { "paths": [ "D:\\openclaw-plugins\\feishu" ] }, "entries": { "feishu": { "enabled": true } } }Windows 路径里的反斜杠在 JSON 中要写成双反斜杠\\,这是转义要求,单反斜杠会被当成非法转义字符。改完同样跑 doctor 验证。
4. 验证插件恢复加载
配置改完,保存文件,回到终端重新跑带修复的诊断:
openclaw doctor --fix这次应该不再出现plugin path not found。如果一切正常,输出里关于飞书插件的部分会显示为已加载或校验通过,duplicate plugin id的警告通常也会一起消失,因为失效的全局路径不再参与加载,冲突源没了。
想更直观地确认插件真的起来了,可以启动 OpenClaw 后看启动日志,搜索feishu关键字,正常会看到插件注册成功的记录。然后在飞书里给机器人发一条测试消息,能收到回复就说明整条链路通了。
如果你还想顺手验证模型侧是否正常,可以在 OpenClaw 里跑一次模型对话,确认插件加载和模型调用互不影响。模型对话入口在 TaoToken 模型对话,接入相关的 Key 和文档在 API Keys 和 接入文档,需要的话可以对照着排查。
5. 本篇常见错误排查
修的过程中,除了路径失效,还有几个高频报错容易混在一起,这里一并列出来对照。
5.1 报 JSON 解析错误
删load字段时最容易留下多余逗号,报错类似Unexpected token } in JSON。解决办法是把openclaw.json贴进任意 JSON 校验工具,或者用 VS Code 打开,它会直接标红。重点检查"plugins": {之后、"entries"之前有没有孤立逗号。
5.2 删了 load 还是找不到插件
说明用户目录下其实没有插件。检查C:\Users\Administrator\.openclaw\extensions\feishu是否存在。如果不存在,需要重新安装飞书插件:
openclaw plugins install @openclaw/feishu装完再跑openclaw doctor --fix。注意installs段里的installPath要和实际安装位置一致,不一致的话手动改过来。
5.3 duplicate plugin id 警告不消失
如果删了load.paths还有重复 ID 警告,检查是不是在别的地方又配了一遍飞书插件路径,比如环境变量OPENCLAW_PLUGIN_PATH或者项目级的.openclaw配置。全局配置和项目配置同时生效时也会冲突,保留一处即可。
5.4 改了配置但没生效
OpenClaw 有些进程会缓存配置,改完记得重启服务,别只重开终端。另外确认你改的是当前用户实际加载的那个openclaw.json,多用户环境下可能改错了 home 目录。
5.5 飞书侧仍然收不到消息
插件加载成功但消息不通,问题就不在 OpenClaw 配置了,去查飞书开放平台的事件订阅地址、机器人权限、以及应用是否发布。这部分和升级无关,属于接入配置,按飞书后台的提示逐项核对。
6. 长期跑飞书插件,配置怎么放更省心
这次踩坑的根源,是把插件路径写死在了全局安装目录下,而全局目录会随版本升级变化。更稳的做法是让插件装在用户目录,配置里不写load.paths,交给 OpenClaw 自动发现。这样以后升级,只要插件本身兼容,路径这块基本不会再出问题。
如果你打算长期用 OpenClaw 跑编码类或 Agent 类任务,插件和模型调用会越来越频繁,配置稳定性比省那点磁盘空间重要得多。需要长期编码或 Agent 场景的话,可以看下 Coding Plan,配合稳定的插件配置一起用。日常管理 Key 和查看用量在 Console,官网入口是 taotoken.net。
最后留一个我自己的习惯:每次升级 OpenClaw 之前,先把openclaw.json备份一份,升级后第一件事就是跑openclaw doctor,别等插件罢工了才回头查。路径类问题,doctor 基本都能替你指出来,比翻日志快得多。