Plugin Manifest(openclaw.plugin.json)
每个 Plugin 必须在 Plugin 根目录提供一个 openclaw.plugin.json 文件。OpenClaw 用这个清单文件来验证配置,无需执行 Plugin 代码。缺失或无效的清单文件会被视为 Plugin 错误,并阻止配置验证。
查看完整的 Plugin 系统指南:Plugins。
必填字段
{
"id": "voice-call",
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
}
}
必填的键:
id(字符串):Plugin 的规范 ID。configSchema(对象):Plugin 配置的 JSON Schema(内联定义)。
可选的键:
kind(字符串):Plugin 类型(例如:"memory")。channels(数组):此 Plugin 注册的 Channel ID(例如:["matrix"])。providers(数组):此 Plugin 注册的 Provider ID。skills(数组):要加载的 Skill 目录(相对于 Plugin 根目录的路径)。name(字符串):Plugin 的显示名称。description(字符串):Plugin 的简短描述。uiHints(对象):配置字段的标签/占位符/敏感标记,用于 UI 渲染。version(字符串):Plugin 版本(仅供参考)。
JSON Schema 要求
- 每个 Plugin 都必须提供 JSON Schema,即使它不接受任何配置。
- 空 Schema 也是可以的(例如:
{ "type": "object", "additionalProperties": false })。 - Schema 在配置读取/写入时验证,而不是在运行时验证。
验证行为
- 未知的
channels.*键会报错误,除非该 Channel ID 在某个 Plugin 清单中声明过。 plugins.entries.<id>、plugins.allow、plugins.deny和plugins.slots.*必须引用可发现的 Plugin ID。未知的 ID 会报错误。- 如果 Plugin 已安装但清单文件或 Schema 损坏或缺失,验证会失败,Doctor 会报告 Plugin 错误。
- 如果 Plugin 配置存在但 Plugin 被禁用,配置会保留,并在 Doctor 和日志中显示警告。
注意事项
- 清单文件对所有 Plugin 都是必需的,包括从本地文件系统加载的 Plugin。
- Runtime 仍然会单独加载 Plugin 模块;清单文件仅用于发现和验证。
- 如果你的 Plugin 依赖原生模块,请记录构建步骤和任何包管理器白名单要求(例如:pnpm 的
allow-build-scripts和pnpm rebuild <package>)。