记一次 OpenClaw 飞书插件接入填坑指南: Error: spawn EINVAL

在针对 OpenClaw (v2026.2.26) 进行本地化插件开发,尤其是加载较新的 @openclaw/feishu 插件时,你可能会遇到接连不断的坑。今天这篇博客,我将复盘一下我刚碰到的一个本地加载错误。

当我拉取了飞书插件(v2026.2.26)的代码到本地目录,并准备通过 npm install 安装依赖再调用 openclaw plugins install ./加载就报错了:

less 复制代码
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(保持参数原样传递)。关键修复代码如下:

php 复制代码
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 复制代码
json
"plugins": {
    "allow": ["feishu"]
  }

保存配置然后重启 OpenClaw 服务,世界终于彻底清静了。

总结

Happy Coding!🚀

相关推荐
英俊潇洒美少年4 小时前
Vue 生产环境打包:SourceMap、压缩、混淆、加密全解 + 最佳实践
前端·javascript·vue.js
巴博尔5 小时前
UNIAPP中NVUE页面 动画
android·前端·javascript·ios·uni-app
她说人狗殊途7 小时前
基于 vue-cli 创建
前端·javascript·vue.js
AZaLEan__8 小时前
前端移动端适配与 Bootstrap
前端·bootstrap·html
大家的林语冰8 小时前
Deno 2.8 正式发布,再次超越 Bun,史上最大的次版本升级诞生!
前端·javascript·node.js
渣渣xiong8 小时前
从零开始:前端转型AI agent直到就业第五十七天-第五十八天
前端·人工智能·python
AI周红伟9 小时前
周红伟:长鑫科技(CXMT)财务全景分析
前端·chrome·科技
excel9 小时前
JS 正则在多次 test() 时为什么会出现 lastIndex 缓存问题?
前端
IT_陈寒9 小时前
为什么 Java 的 Optional 让我调试到深夜?
前端·人工智能·后端
米丘10 小时前
React 19.x 的 lazy 与 Suspense
前端·javascript·react.js