Xây dựng Plugin
Plugin mở rộng OpenClaw với các khả năng mới: kênh, nhà cung cấp mô hình, giọng nói, tạo hình ảnh, tìm kiếm web, công cụ agent, hoặc bất kỳ tổ hợp nào. Một plugin có thể đăng ký nhiều khả năng. OpenClaw khuyến khích phát triển plugin bên ngoài. Bạn không cần thêm plugin vào kho OpenClaw. Hãy xuất bản plugin của bạn trên npm, và người dùng có thể cài đặt nó vớiopenclaw plugins install <npm-spec>. OpenClaw cũng duy trì một bộ plugin cốt lõi trong kho, nhưng hệ thống plugin được thiết kế để sở hữu và phân phối độc lập.
Yêu cầu trước
- Node >= 22 và một trình quản lý gói (npm hoặc pnpm)
- Quen thuộc với TypeScript (ESM)
- Đối với plugin trong kho: đã clone kho OpenClaw và chạy
pnpm install
Khả năng của Plugin
Một plugin có thể đăng ký một hoặc nhiều khả năng. Khả năng bạn đăng ký sẽ xác định plugin của bạn cung cấp gì cho OpenClaw:
Một plugin không đăng ký khả năng nào nhưng cung cấp hooks hoặc dịch vụ là plugin chỉ có hook. Mẫu này vẫn được hỗ trợ.
Cấu trúc Plugin
Plugin tuân theo cấu trúc này (dù trong kho hay độc lập):Tạo một plugin
1
Tạo package
Tạo Ví dụ plugin nhà cung cấp:Trường
package.json với khối metadata openclaw. Cấu trúc phụ thuộc vào khả năng mà plugin của bạn cung cấp.Ví dụ plugin kênh:openclaw cho hệ thống plugin biết plugin của bạn cung cấp gì. Một plugin có thể khai báo cả channel và providers nếu nó cung cấp nhiều khả năng.2
Định nghĩa điểm vào
Điểm vào đăng ký khả năng của bạn với API plugin.Plugin kênh:Plugin nhà cung cấp:Plugin đa khả năng (nhà cung cấp + công cụ):Sử dụng
defineChannelPluginEntry từ plugin-sdk/core cho plugin kênh và definePluginEntry từ plugin-sdk/plugin-entry cho mọi thứ khác. Một plugin có thể đăng ký nhiều khả năng như cần thiết.Đối với các kênh kiểu chat, plugin-sdk/core cũng cung cấp createChatChannelPlugin(...) để bạn có thể kết hợp bảo mật DM thông thường, ghép nối văn bản, luồng trả lời, và gửi kết quả đính kèm mà không cần kết nối từng adapter riêng lẻ.3
Import từ các subpath SDK tập trung
Luôn import từ các đường dẫn
Sử dụng subpath hẹp nhất phù hợp với công việc.
openclaw/plugin-sdk/\<subpath\> cụ thể. Việc import nguyên khối cũ đã bị loại bỏ (xem SDK Migration).Nếu mã plugin cũ vẫn import openclaw/extension-api, hãy coi đó là cầu nối tương thích tạm thời. Mã mới nên sử dụng các trợ giúp runtime được tiêm như api.runtime.agent.* thay vì import trực tiếp các trợ giúp agent phía host.Tham khảo subpath phổ biến
Tham khảo subpath phổ biến
4
Sử dụng module cục bộ cho import nội bộ
Trong plugin của bạn, tạo các tệp module cục bộ để chia sẻ mã nội bộ thay vì import lại thông qua SDK plugin:
5
Thêm một manifest plugin
Tạo Đối với plugin kênh, đặt
openclaw.plugin.json trong thư mục gốc của plugin:"kind": "channel" và thêm "channels": ["my-channel"].Xem Plugin Manifest để biết lược đồ đầy đủ.6
Kiểm thử plugin của bạn
Plugin bên ngoài: chạy bộ kiểm thử của riêng bạn với các hợp đồng SDK plugin.Plugin trong kho: OpenClaw chạy kiểm thử hợp đồng với tất cả các plugin đã đăng ký:Đối với kiểm thử đơn vị, import các trợ giúp kiểm thử từ bề mặt kiểm thử:
7
Xuất bản và cài đặt
Plugin bên ngoài: xuất bản lên npm, sau đó cài đặt:Plugin trong kho: đặt plugin dưới
extensions/ và nó sẽ được tự động phát hiện trong quá trình build.Người dùng có thể duyệt và cài đặt plugin cộng đồng với:Đăng ký công cụ agent
Plugin có thể đăng ký công cụ agent — các hàm có kiểu mà LLM có thể gọi. Công cụ có thể là bắt buộc (luôn có sẵn) hoặc tùy chọn (người dùng chọn tham gia qua danh sách cho phép).- Tên công cụ không được trùng với tên công cụ cốt lõi (xung đột sẽ bị bỏ qua)
- Sử dụng
optional: truecho các công cụ kích hoạt hiệu ứng phụ hoặc yêu cầu thêm các tệp nhị phân - Người dùng có thể kích hoạt tất cả các công cụ từ một plugin bằng cách thêm id plugin vào
tools.allow
Kiểm tra lint (plugin trong kho)
Ba script kiểm tra ranh giới SDK cho các plugin trong kho OpenClaw:- Không import gốc nguyên khối — gốc
openclaw/plugin-sdkbị từ chối - Không import trực tiếp từ src/ — plugin không thể import trực tiếp
../../src/ - Không tự import — plugin không thể import subpath
plugin-sdk/\<name\>của chính nó
pnpm check để kiểm tra tất cả các ranh giới trước khi commit.
Plugin bên ngoài không bị ràng buộc bởi các quy tắc lint này, nhưng việc tuân theo các mẫu tương tự được khuyến khích mạnh mẽ.
Danh sách kiểm tra trước khi gửi
package.json có metadata
openclaw chính xácĐiểm vào sử dụng
defineChannelPluginEntry hoặc definePluginEntryTất cả các import sử dụng đường dẫn
plugin-sdk/\<subpath\> tập trungImport nội bộ sử dụng module cục bộ, không phải tự import SDK
Manifest
openclaw.plugin.json có mặt và hợp lệKiểm thử thành công
pnpm check thành công (plugin trong kho)Liên quan
- Plugin SDK Migration — di chuyển từ các bề mặt tương thích đã loại bỏ
- Plugin Architecture — nội bộ và mô hình khả năng
- Plugin Manifest — lược đồ manifest đầy đủ
- Plugin Agent Tools — thêm công cụ agent trong một plugin
- Community Plugins — danh sách và tiêu chuẩn chất lượng