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:| Khả năng | Phương thức đăng ký | Thêm gì vào |
|---|---|---|
| Suy luận văn bản | api.registerProvider(...) | Nhà cung cấp mô hình (LLM) |
| Kênh / nhắn tin | api.registerChannel(...) | Kênh chat (ví dụ: Slack, IRC) |
| Giọng nói | api.registerSpeechProvider(...) | Chuyển văn bản thành giọng nói / STT |
| Hiểu phương tiện | api.registerMediaUnderstandingProvider(...) | Phân tích hình ảnh/âm thanh/video |
| Tạo hình ảnh | api.registerImageGenerationProvider(...) | Tạo hình ảnh |
| Tìm kiếm web | api.registerWebSearchProvider(...) | Nhà cung cấp tìm kiếm web |
| Công cụ agent | api.registerTool(...) | Công cụ có thể gọi bởi agent |
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
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.Đị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ẻ.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
| Subpath | Mục đích |
|---|---|
plugin-sdk/plugin-entry | Trợ giúp definePluginEntry chuẩn + loại nhập nhà cung cấp/plugin |
plugin-sdk/core | Trợ giúp điểm vào kênh, trình tạo kênh, và loại cơ sở chia sẻ |
plugin-sdk/channel-setup | Bộ điều hợp trình hướng dẫn cài đặt |
plugin-sdk/channel-pairing | Nguyên thủy ghép nối DM |
plugin-sdk/channel-reply-pipeline | Dây nối tiền tố trả lời + gõ |
plugin-sdk/channel-config-schema | Trình tạo lược đồ cấu hình |
plugin-sdk/channel-policy | Trợ giúp chính sách nhóm/DM |
plugin-sdk/secret-input | Phân tích/trợ giúp nhập bí mật |
plugin-sdk/webhook-ingress | Trợ giúp yêu cầu/đích webhook |
plugin-sdk/runtime-store | Lưu trữ plugin lâu dài |
plugin-sdk/allow-from | Giải quyết danh sách cho phép |
plugin-sdk/reply-payload | Loại trả lời tin nhắn |
plugin-sdk/provider-oauth | Đăng nhập OAuth + trợ giúp PKCE |
plugin-sdk/provider-onboard | Bản vá cấu hình onboarding nhà cung cấp |
plugin-sdk/testing | Tiện ích kiểm thử |
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:
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 đủ.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ử:
Đă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