往别人的智能体里装插件的三个坑
来源:dev.to — 2026-09-03
📋 概述
作者要把一个「工具调用前处理器」插件装进 OpenClaw(steipete 与 vincentkoc 的 npm 发行、MIT 许可、当时为 2026.8.1 版的 agent runtime),三个坑接连而至——而每一个都是 OpenClaw 做了件合理的事,只是作者没想到。第一:插件装在 WSL 的 /mnt/c 世界可写路径(mode 777)上,加载器拒绝从任何进程都能改代码的挂载点装载——把目录挪到 WSL 原生 ext4 并收紧权限即通过。第二:「enabled」与「开机自动加载」是两种说法,裸 .ts 文件能被发现能检查,却因缺少声明 activation.onStartup:true 的 manifest 而永不进入启动激活候选。第三:installer 会先 import 并调用 register(),注册形状猜错(matcher 包了层对象而签名要裸数组)会在安装当刻大声失败。
🔑 核心要点
- WSL 的 DrvFs 挂载把 Windows 文件系统默认暴露成全局可写(mode 777),OpenClaw 不会从任何进程都能改代码的路径装载插件——这不是 bug 而是合理的拒绝,挪到 WSL 原生 ext4 并 chmod -R go-w 即通过
- openclaw plugins list 报告 enabled 与 openclaw plugins doctor 报告发现/模块加载通过,都不等于网关启动时会实例化它——只有 manifest 声明 activation.onStartup:true 的插件才会在启动时被自动加载,裸 .ts 文件只是可被检查的候选
- 裸文件不算真正的插件:运行 openclaw plugins init 脚手架生成的三件套(含 activation.onStartup:true 的 openclaw.plugin.json、package.json、入口文件),把自己代码作为 import 接进去即可
- openclaw plugins install 不只复制文件——它会 import 模块并作为安装步骤的一部分调用 register(api),因此坏注册会在当刻大声失败并给出真实异常
- matcher 该是裸数组而非 {tools:[...]} 对象——猜错形状一次、改一个字即通过;plugins doctor --json 还主动提示这个刚跑通的模式是较旧但仍受支持的兼容路径
- 作者自己的错:设 plugins.allow 以为在加权限,其实是严格 allowlist,一设就把 39 个内置 provider 连同没点名的一起禁用了——config unset 可撤销
💡 金句
这三个坑没有哪个需要读 OpenClaw 源码才能修——两个来自安装器自己的报错文本,一个来自安装包里的一次 grep。
👍 0
👎 0
← 返回 dev.to 首页