Plugin manifest (openclaw.plugin.json)
Mỗi plugin bắt buộc phải có file openclaw.plugin.json ở thư mục gốc của plugin.
OpenClaw dùng manifest này để kiểm tra cấu hình mà không cần chạy code của plugin.
Nếu thiếu manifest hoặc manifest không hợp lệ sẽ được coi là lỗi plugin và chặn việc kiểm tra config.
Xem hướng dẫn đầy đủ về hệ thống plugin: Plugins.
Các trường bắt buộc
{
"id": "voice-call",
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
}
}
Các key bắt buộc:
id(string): id chuẩn của plugin.configSchema(object): JSON Schema cho config của plugin (inline).
Các key tùy chọn:
kind(string): loại plugin (ví dụ:"memory").channels(array): các channel id được đăng ký bởi plugin này (ví dụ:["matrix"]).providers(array): các provider id được đăng ký bởi plugin này.skills(array): các thư mục skill cần load (đường dẫn tương đối so với thư mục gốc của plugin).name(string): tên hiển thị của plugin.description(string): mô tả ngắn về plugin.uiHints(object): nhãn/placeholder/cờ nhạy cảm cho các trường config để render UI.version(string): phiên bản plugin (chỉ mang tính thông tin).
Yêu cầu về JSON Schema
- Mọi plugin đều phải có JSON Schema, kể cả khi không nhận config nào.
- Schema rỗng cũng được chấp nhận (ví dụ:
{ "type": "object", "additionalProperties": false }). - Schema được kiểm tra khi đọc/ghi config, không phải lúc runtime.
Cách hoạt động của validation
- Các key
channels.*không xác định sẽ báo lỗi, trừ khi channel id đó được khai báo trong plugin manifest. plugins.entries.<id>,plugins.allow,plugins.deny, vàplugins.slots.*phải tham chiếu đến các plugin id có thể phát hiện được. Các id không xác định sẽ báo lỗi.- Nếu plugin đã được cài đặt nhưng có manifest hoặc schema bị lỗi hoặc thiếu, validation sẽ thất bại và Doctor sẽ báo lỗi plugin.
- Nếu config của plugin tồn tại nhưng plugin bị vô hiệu hóa, config sẽ được giữ lại và một cảnh báo sẽ hiển thị trong Doctor + logs.
Lưu ý
- Manifest là bắt buộc cho tất cả plugin, kể cả khi load từ filesystem local.
- Runtime vẫn load module plugin riêng biệt; manifest chỉ dùng cho việc phát hiện + validation.
- Nếu plugin của các bạn phụ thuộc vào native modules, hãy ghi rõ các bước build và yêu cầu allowlist của package-manager (ví dụ: pnpm
allow-build-scripts-pnpm rebuild <package>).