OpenClaw插件开发怎么开始:目录结构、接口和调试步骤
OpenClaw插件开发想顺利起步,最稳的做法是先做一个最小工具插件,而不是一上来接消息平台或复杂服务。原因很现实:工具插件只要目录、package 元数据、openclaw.plugin.json 和入口文件对齐,就能很快验证“能被发现、能加载、能被调用”这三件事。只要这三件事成立,后面扩展 Channel、MC。

先把目录当成加载证据
一个新插件至少要能回答四个问题:包叫什么、运行入口在哪里、manifest 放在哪、构建产物是否存在。package.json 里的 type 通常按 ESM 处理,openclaw.extensions 要指向可加载的入口文件;发布给别人安装时,入口更适合指向构建后的 JavaScript,而不是本机 TypeScript 源码。
openclaw.plugin.json 放在插件根目录。这里的 id 是后面启用、诊断、allowlist 和报错定位的核心标识。id 写错,不只是名称难看,配置里的 plugins.entries、plugins.allow 也会跟着对不上。目录里建议保留 src、dist、测试文件和 manifest,调试时用“入口文件存在、manifest 可读、构建产物时间更新”来判断是否跑到新代码。
入口文件只做一件小事
入门阶段的入口文件别急着包装业务流程。用 definePluginEntry 注册一个简单工具,参数 schema 只放一个字符串,execute 返回一段可见文本。这个动作看似简单,却能验证 SDK 导入路径、TypeBox 参数定义、工具名称、返回格式和运行时加载链路。
工具名要和 manifest 里的 contracts.tools 对齐。
参数必须有明确 schema,缺失或格式不对会在诊断里暴露。
返回值要能被调用端看见,别只写本地 console。
如果这一层都没跑通,继续加认证、网络请求或文件读写只会把问题藏深。我的经验是,第一次 OpenClaw插件开发入门流程要用“最小输入、最短返回、可复制命令”做 proof,留下一次成功输出,后面每次改动都能拿它对照。
manifest 不是装饰文件
manifest 的作用是让系统在不执行插件代码的情况下完成冷检查。它要说明插件 id、可选名称、描述、激活方式、配置 schema,以及插件声称提供哪些能力。哪怕插件没有配置,也应该给出严格的空对象 schema,避免用户配置里混入拼错字段还以为生效。
contracts.tools 尤其容易漏。运行时代码注册了工具,manifest 没声明,发现链路和运行链路就会分裂。反过来,manifest 声称有工具,入口没有注册,也会在 inspect 或 doctor 里暴露。判断标准很简单:冷元数据看到的能力,运行时也要拿得到。
调试要留下可复现路径
本地验证建议按固定顺序做:安装依赖,构建产物,安装本地路径,启用插件,inspect runtime,再调用最小工具。每一步都留命令和输出。遇到失败时先看哪一步没有证据,不要凭感觉改配置。
如果 inspect 能看到插件但工具不可用,优先查 contracts.tools、工具名和 allowlist;如果插件根本不可见,优先查安装路径、package 元数据和 manifest 是否在根目录。到了这一步,再去改业务代码才有意义。一个能被稳定加载的最小插件,就是后续开发最有价值的样板。