插件清单 (openclaw.plugin.json)
每个 OpenClaw 插件必须在插件根目录提供openclaw.plugin.json 清单文件。OpenClaw 使用此清单在不执行插件代码的情况下验证配置。
缺失或无效的清单将被视为插件错误,并阻止配置验证。
必需字段
最小清单文件:插件的唯一标识符。必须与
plugins.entries.<id> 中的键匹配。命名规范:- 使用小写字母和连字符
- 避免与核心功能冲突
- 例如:
voice-call,memory-lancedb,custom-auth
插件配置的 JSON Schema。用于在运行时加载前验证用户配置。即使插件不接受配置,也必须提供空 schema:
可选字段
插件类型标识。当前支持:
"memory"- 记忆系统插件
该插件注册的消息平台 ID 列表。用于配置验证:如果
channels.<id> 出现在配置中但未在任何插件清单中声明,将报错。示例:该插件注册的 AI 模型提供商 ID 列表。示例:
要加载的技能目录列表,相对于插件根目录。示例:OpenClaw 会在
<plugin-root>/skills/ 下查找技能文件。插件的显示名称。用于日志和用户界面。示例:
插件的简短描述。示例:
插件版本号(仅供参考)。建议遵循语义化版本规范。示例:
用于 UI 渲染的配置字段提示。键为配置路径,值为提示对象。提示对象字段:
label: 字段标签help: 帮助文本placeholder: 输入占位符sensitive: 是否为敏感信息(如密码)advanced: 是否为高级选项tags: 标签列表
JSON Schema 要求
基础规则
- 所有插件必须提供 JSON Schema,即使不接受任何配置
- Schema 在配置读取/写入时验证,不是运行时验证
- 使用
additionalProperties: false防止意外的配置键
空配置 Schema
对于不接受配置的插件:带属性的 Schema
嵌套对象
条件验证
使用if/then/else 进行条件验证:
验证行为
OpenClaw 在以下时机验证配置:验证错误
未知频道 ID:禁用插件的配置
如果插件被禁用但有配置,OpenClaw 会:- 保留配置(不删除)
- 在
doctor中显示警告 - 在日志中记录警告
- 不验证配置(因为插件未加载)
完整示例
简单插件清单
完整功能清单
消息平台插件清单
最佳实践
常见问题
清单文件必须在哪里?
清单文件必须在哪里?
openclaw.plugin.json 必须在插件根目录,与 package.json 同级。可以省略 configSchema 吗?
可以省略 configSchema 吗?
不可以。即使插件不接受配置,也必须提供空 schema:
如何验证清单文件?
如何验证清单文件?
使用 它会报告清单错误和配置验证问题。
openclaw doctor 检查插件配置:清单更改后需要做什么?
清单更改后需要做什么?
- 重新构建插件(如果需要)
- 重启网关以重新加载清单
uiHints 是必需的吗?
uiHints 是必需的吗?
不是必需的,但强烈推荐。它提供更好的用户体验,特别是在 UI 配置工具中。
下一步
创建插件
从零开始构建你的第一个插件
Plugin SDK
探索完整的 SDK API 参考
代理工具
为 AI 代理添加自定义工具