clawhub: khi bạn muốn phân giải qua ClawHub.
Yêu cầu
- Dùng Node 22.19+, Node 23.11+, hoặc Node 24+ và một trình quản lý gói như
npmhoặcpnpm. - Quen thuộc với các mô-đun TypeScript ESM.
- Với công việc trên Plugin đóng gói sẵn trong repo, hãy clone kho lưu trữ và chạy
pnpm install. Phát triển Plugin từ source checkout chỉ dùng pnpm vì OpenClaw tải các Plugin đóng gói sẵn từ các gói workspaceextensions/*.
Chọn hình dạng Plugin
Channel plugin
Kết nối OpenClaw với một nền tảng nhắn tin.
Provider plugin
Thêm một nhà cung cấp mô hình, phương tiện, tìm kiếm, fetch, giọng nói, hoặc realtime.
CLI backend plugin
Chạy một CLI AI cục bộ thông qua cơ chế dự phòng mô hình của OpenClaw.
Tool plugin
Đăng ký công cụ agent.
Khởi động nhanh
Xây dựng một Plugin công cụ tối thiểu bằng cách đăng ký một công cụ agent bắt buộc. Đây là hình dạng Plugin hữu ích ngắn nhất và thể hiện gói, manifest, điểm vào, và bằng chứng cục bộ.Create package metadata
contracts.tools để OpenClaw có thể phát hiện quyền sở hữu mà không
cần tải sớm mọi runtime Plugin. Đặt activation.onStartup
có chủ đích. Ví dụ này khởi động khi Gateway khởi động.Các bề mặt Plugin được host tin cậy cũng được kiểm soát bằng manifest và yêu cầu
bật rõ ràng đối với Plugin đã cài đặt. Nếu một Plugin đã cài đặt đăng ký
api.registerAgentToolResultMiddleware(...), hãy khai báo từng runtime đích trong
contracts.agentToolResultMiddleware. Nếu nó đăng ký
api.registerTrustedToolPolicy(...), hãy khai báo từng policy id trong
contracts.trustedToolPolicies. Các khai báo này giữ cho việc kiểm tra lúc cài đặt
và đăng ký runtime đồng bộ với nhau.Với mọi trường manifest, xem manifest Plugin.Register the tool
index.ts
definePluginEntry cho các Plugin không phải kênh. Plugin kênh dùng
defineChannelPluginEntry.Test the runtime
Với một Plugin đã cài đặt hoặc Plugin bên ngoài, hãy kiểm tra runtime đã tải:Nếu Plugin đăng ký một lệnh CLI, hãy chạy cả lệnh đó. Ví dụ,
một lệnh demo nên có bằng chứng thực thi như
openclaw demo-plugin ping.Với một Plugin đóng gói sẵn trong kho lưu trữ này, OpenClaw phát hiện các
gói Plugin từ source checkout trong workspace extensions/*. Chạy bài kiểm thử
nhắm mục tiêu gần nhất:Test the package install
Trước khi phát hành một Plugin sẵn sàng đóng gói, hãy kiểm thử đúng hình dạng cài đặt
mà người dùng sẽ nhận được. Trước tiên thêm bước build, trỏ các mục nhập runtime như
openclaw.extensions tới JavaScript đã build như ./dist/index.js, và đảm bảo
npm pack bao gồm đầu ra dist/ đó. Mục nhập mã nguồn TypeScript
chỉ dành cho source checkout và đường dẫn phát triển cục bộ.Sau đó đóng gói Plugin và cài đặt tarball bằng npm-pack::npm-pack: dùng dự án npm do OpenClaw quản lý cho từng Plugin, nên nó phát hiện
các lỗi phụ thuộc runtime mà kiểm thử source checkout có thể che giấu. Nó chứng minh
hình dạng gói và phụ thuộc, không phải độ tin cậy chính thức liên kết với catalog.
Các import runtime phải nằm trong dependencies hoặc optionalDependencies;
các phụ thuộc chỉ để trong devDependencies sẽ không được cài đặt cho
dự án runtime được quản lý.Không dùng cài đặt archive/path thô làm bằng chứng cuối cùng cho hành vi Plugin
chính thức hoặc đặc quyền. Mã nguồn thô hữu ích cho gỡ lỗi cục bộ, nhưng
chúng không chứng minh cùng đường dẫn phụ thuộc như cài đặt npm hoặc ClawHub. Nếu
Plugin của bạn dựa vào trạng thái Plugin chính thức đáng tin cậy, hãy thêm bằng chứng thứ hai
thông qua một cài đặt chính thức dựa trên catalog hoặc một đường dẫn gói đã phát hành có
ghi nhận độ tin cậy chính thức. Xem
phân giải phụ thuộc Plugin để biết chi tiết về
install-root và quyền sở hữu phụ thuộc.Publish
Xác thực gói trước khi phát hành:Các đoạn mẫu ClawHub chuẩn nằm trong
docs/snippets/plugin-publish/.Đăng ký công cụ
Công cụ có thể là bắt buộc hoặc tùy chọn. Công cụ bắt buộc luôn khả dụng khi Plugin được bật. Công cụ tùy chọn yêu cầu người dùng chọn tham gia.api.registerTool(...) cũng phải được khai báo trong
manifest Plugin:
tools.allow:
parameters, sẽ bị bỏ qua và
được báo cáo theo cùng cách. Công cụ đã đăng ký là các hàm có kiểu mà mô hình có thể gọi
sau khi vượt qua kiểm tra chính sách và allowlist.
Factory công cụ nhận một đối tượng ngữ cảnh do runtime cung cấp. Dùng ctx.activeModel
khi một công cụ cần ghi log, hiển thị, hoặc thích ứng với mô hình đang hoạt động cho lượt
hiện tại. Đối tượng có thể bao gồm provider, modelId, và modelRef. Hãy xem nó là
metadata runtime mang tính thông tin, không phải ranh giới bảo mật chống lại operator
cục bộ, mã Plugin đã cài đặt, hoặc runtime OpenClaw đã sửa đổi. Công cụ cục bộ
nhạy cảm vẫn nên yêu cầu chọn tham gia rõ ràng từ Plugin hoặc operator và fail closed
khi metadata active-model bị thiếu hoặc không phù hợp.
Manifest khai báo quyền sở hữu và phát hiện; khi thực thi vẫn gọi phần triển khai
công cụ đã đăng ký trực tiếp. Giữ toolMetadata.<tool>.optional: true
đồng bộ với api.registerTool(..., { optional: true }) để OpenClaw có thể tránh
tải runtime Plugin đó cho đến khi công cụ được đưa vào allowlist rõ ràng.
Quy ước import
Import từ các subpath SDK tập trung:api.ts và
runtime-api.ts cho import nội bộ. Không import chính Plugin của bạn thông qua
đường dẫn SDK. Helper chuyên biệt cho nhà cung cấp nên ở lại trong gói nhà cung cấp trừ khi
đường nối thực sự có tính tổng quát.
Các phương thức RPC Gateway tùy chỉnh là một điểm vào nâng cao. Giữ chúng trên một
tiền tố riêng cho Plugin; các namespace quản trị lõi như config.*,
exec.approvals.*, operator.admin.*, wizard.*, và update.* vẫn được dành riêng
và phân giải tới operator.admin. Cầu nối
openclaw/plugin-sdk/gateway-method-runtime được dành riêng cho các route HTTP của Plugin
khai báo contracts.gatewayMethodDispatch: ["authenticated-request"].
Để xem đầy đủ bản đồ import, xem tổng quan Plugin SDK.
Danh sách kiểm tra trước khi gửi
package.json có metadata
openclaw chính xácManifest openclaw.plugin.json hiện diện và hợp lệ
Điểm vào dùng
defineChannelPluginEntry hoặc definePluginEntryMọi import dùng đường dẫn
plugin-sdk/<subpath> tập trungImport nội bộ dùng mô-đun cục bộ, không tự import SDK
Kiểm thử pass (
pnpm test -- <bundled-plugin-root>/my-plugin/)pnpm check pass (Plugin trong repo)Kiểm thử với bản phát hành beta
- Theo dõi các thẻ phát hành GitHub trên openclaw/openclaw và đăng ký qua
Watch>Releases. Thẻ beta có dạng nhưv2026.3.N-beta.1. Bạn cũng có thể bật thông báo cho tài khoản X chính thức của OpenClaw @openclaw để nhận thông báo phát hành. - Kiểm thử plugin của bạn với thẻ beta ngay khi thẻ xuất hiện. Khoảng thời gian trước bản ổn định thường chỉ kéo dài vài giờ.
- Đăng trong chuỗi thảo luận của plugin của bạn trong kênh Discord
plugin-forumsau khi kiểm thử, với nội dungall goodhoặc những gì bị lỗi. Nếu bạn chưa có chuỗi thảo luận, hãy tạo một chuỗi. - Nếu có lỗi, hãy mở hoặc cập nhật một issue có tiêu đề
Beta blocker: <plugin-name> - <summary>và áp dụng nhãnbeta-blocker. Đặt liên kết issue vào chuỗi thảo luận của bạn. - Mở một PR tới
maincó tiêu đềfix(<plugin-id>): beta blocker - <summary>và liên kết issue trong cả PR lẫn chuỗi Discord của bạn. Người đóng góp không thể gắn nhãn PR, vì vậy tiêu đề là tín hiệu phía PR dành cho người bảo trì và tự động hóa. Các lỗi chặn có PR sẽ được hợp nhất; các lỗi chặn không có PR vẫn có thể được phát hành. Người bảo trì theo dõi các chuỗi này trong quá trình kiểm thử beta. - Im lặng nghĩa là ổn. Nếu bạn bỏ lỡ khoảng thời gian này, bản sửa của bạn có khả năng sẽ được đưa vào chu kỳ tiếp theo.
Bước tiếp theo
Plugin kênh
Xây dựng plugin kênh nhắn tin
Plugin nhà cung cấp
Xây dựng plugin nhà cung cấp mô hình
Plugin CLI Backend
Đăng ký một backend CLI AI cục bộ
Tổng quan SDK
Tham chiếu API import map và đăng ký
Trợ giúp Runtime
TTS, tìm kiếm, subagent qua api.runtime
Kiểm thử
Tiện ích và mẫu kiểm thử
Plugin Manifest
Tham chiếu lược đồ manifest đầy đủ