在针对 OpenClaw (v2026.2.26) 进行本地化插件开发,尤其是加载较新的 @openclaw/feishu 插件时,你可能会遇到接连不断的坑。今天这篇博客,我将复盘一下我刚碰到的一个本地加载错误。
当我拉取了飞书插件(v2026.2.26)的代码到本地目录,并准备通过 npm install 安装依赖再调用 openclaw plugins install ./加载就报错了:
text
[openclaw] Failed to start CLI: Error: spawn EINVAL
at ChildProcess.spawn (node:internal/child_process:421:11)
at spawn (node:child_process:796:9)
at runCommandWithTimeout (file:///C:/Users/Administrator/AppData/Local/nvm/v24.13.0/node_modules/openclaw/dist/exec-BhaMholX.js:196:16)
一开始查阅了这篇帖子,里面提到可能和执行引擎的环境有关,将错误提交给 AI 后,
AI 建议修改相关执行代码,通过显式判断是否在使用 shell,来动态开关 windowsVerbatimArguments(保持参数原样传递)。关键修复代码如下:
javascript
const useShell = shouldSpawnWithShell({
resolvedCommand,
platform: process.platform
});
const child = spawn(resolvedCommand, argv.slice(1), {
stdio,
cwd,
env: resolvedEnv,
// 关键修正:shell 模式下必须关闭 windowsVerbatimArguments
windowsVerbatimArguments: useShell ? false : windowsVerbatimArguments,
shell: useShell,
});
🎁 尾声彩蛋:消除 Untracked Local Code 警告
当所有报错不再出现,系统启动后却弹出了一个橙色警告:
feishu: loaded without install/load-path provenance; treat as untracked local code and pin trust via plugins.allow...
这是一个安全机制:OpenClaw 检测到我们是本地强行读取的插件,由于缺乏官方来源保证,需要我们显式增加信任。解决方式非常简单:
在你的 OpenClaw 配置文件 "C:\Users\Administrator\.openclaw\openclaw.json"里(通常在全局技能节点或者根对象节点中),增加 plugins.allow 字段白名单:
json
"plugins": {
"allow": ["feishu"]
}
保存配置然后重启 OpenClaw 服务,世界终于彻底清静了。
总结
Happy Coding!🚀