OpenClaw插件开发怎么开始:目录结构、接口和调试步骤

时间:2026-06-15 10:54:55 来源:互联网

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 是否在根目录。到了这一步,再去改业务代码才有意义。一个能被稳定加载的最小插件,就是后续开发最有价值的样板。