插件清单(openclaw.plugin.json)
每个插件都必须在插件根目录下提供 openclaw.plugin.json 文件。
OpenClaw 使用这个清单文件来在不执行插件代码的情况下校验配置。清单缺失或无效会被视为插件错误,阻止配置校验。
完整的插件系统指南见:插件。
必填字段
{
"id": "voice-call",
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
}
}
必填键:
id(字符串):插件的规范 ID。configSchema(对象):插件配置的 JSON Schema(内联)。
可选键:
kind(字符串):插件类型(例如"memory"、"context-engine")。channels(数组):该插件注册的频道 ID(例如["matrix"])。providers(数组):该插件注册的 provider ID。skills(数组):要加载的 skill 目录(相对于插件根目录)。name(字符串):插件显示名称。description(字符串):插件简介。uiHints(对象):配置字段的标签/占位符/敏感标记,用于 UI 渲染。version(字符串):插件版本(仅供参考)。
JSON Schema 要求
- 每个插件都必须提供 JSON Schema,即使不接受任何配置。
- 空 schema 是可以接受的(例如
{ "type": "object", "additionalProperties": false })。 - Schema 在配置读/写时校验,不在运行时。
校验行为
- 未知的
channels.*键是错误,除非该频道 ID 已由插件清单声明。 plugins.entries.<id>、plugins.allow、plugins.deny和plugins.slots.*必须引用可发现的插件 ID。未知 ID 是错误。- 如果插件已安装但清单或 schema 损坏/缺失,校验失败,Doctor 会报告插件错误。
- 如果存在插件配置但插件被禁用,配置会被保留,并在 Doctor + 日志中显示警告。
补充说明
- 清单是所有插件必需的,包括本地文件系统加载的插件。
- 运行时仍然单独加载插件模块;清单仅用于发现 + 校验。
- 排他性的插件类型通过
plugins.slots.*选择。kind: "memory"由plugins.slots.memory选择。kind: "context-engine"由plugins.slots.contextEngine选择(默认:内置legacy)。
- 如果你的插件依赖原生模块,请在文档中说明构建步骤和包管理器白名单要求(例如 pnpm 的
allow-build-scripts和pnpm rebuild <package>)。