clawhub: ketika Anda menginginkan resolusi ClawHub.
Persyaratan
- Node 22.22.3+, Node 24.15+, atau Node 25.9+, dan
npmataupnpm. - Modul ESM TypeScript.
- Untuk pekerjaan plugin bawaan dalam repositori, klon repositori dan jalankan
pnpm install. Pengembangan plugin dari checkout sumber hanya menggunakan pnpm karena OpenClaw menemukan plugin bawaan dari paket workspaceextensions/*.
Pilih bentuk plugin
Plugin kanal
Hubungkan OpenClaw ke platform pesan.
Plugin penyedia
Tambahkan penyedia model, media, pencarian, pengambilan, ucapan, atau waktu nyata.
Plugin backend CLI
Jalankan CLI AI lokal melalui fallback model OpenClaw.
Plugin alat
Daftarkan alat agen.
Mulai cepat
Bangun plugin alat minimal dengan mendaftarkan satu alat agen wajib. Ini adalah bentuk plugin berguna yang paling ringkas dan mencakup paket, manifes, titik masuk, serta pembuktian lokal.1
Buat metadata paket
contracts.tools agar OpenClaw dapat menemukan kepemilikan tanpa
memuat setiap runtime plugin secara dini. Tetapkan activation.onStartup
secara sengaja; contoh ini dimuat saat Gateway dimulai.Permukaan plugin yang dipercaya host juga dibatasi oleh manifes dan memerlukan
deklarasi eksplisit untuk plugin yang diinstal: api.registerAgentToolResultMiddleware(...)
memerlukan setiap runtime target dicantumkan dalam contracts.agentToolResultMiddleware,
dan api.registerTrustedToolPolicy(...) memerlukan setiap ID kebijakan dalam
contracts.trustedToolPolicies. Deklarasi ini menjaga pemeriksaan saat instalasi
tetap selaras dengan pendaftaran runtime.Untuk setiap bidang manifes, lihat Manifes plugin.2
Daftarkan alat
index.ts
definePluginEntry untuk plugin non-kanal. Plugin kanal menggunakan
defineChannelPluginEntry dari openclaw/plugin-sdk/core sebagai gantinya.3
Uji runtime
Untuk plugin eksternal atau yang telah diinstal, periksa runtime yang dimuat:Jika plugin mendaftarkan perintah CLI, jalankan juga perintah tersebut dan konfirmasikan
keluarannya, misalnya
openclaw demo-plugin ping.Untuk plugin bawaan dalam repositori ini, OpenClaw menemukan paket plugin
checkout sumber dari workspace extensions/*. Jalankan pengujian tertarget
yang paling sesuai:4
Uji instalasi paket
Sebelum memublikasikan plugin yang siap dipaketkan, uji bentuk instalasi yang sama dengan yang
akan diterima pengguna. Pertama, tambahkan langkah build, arahkan entri runtime seperti
openclaw.extensions ke JavaScript hasil build seperti ./dist/index.js, dan pastikan
npm pack menyertakan keluaran dist/ tersebut. Entri sumber TypeScript
hanya untuk checkout sumber dan jalur pengembangan lokal.Kemudian kemas plugin dan instal tarball dengan npm-pack::npm-pack: menggunakan proyek npm per-plugin yang dikelola OpenClaw, sehingga mendeteksi
kesalahan dependensi runtime yang dapat tersembunyi dalam pengujian checkout sumber. Ini membuktikan
bentuk paket dan dependensi, bukan kepercayaan resmi yang tertaut katalog.
Impor runtime harus berada dalam dependencies atau optionalDependencies;
dependensi yang hanya dibiarkan dalam devDependencies tidak akan diinstal untuk
proyek runtime terkelola.Jangan gunakan instalasi arsip/jalur mentah sebagai pembuktian akhir untuk perilaku plugin
resmi atau berhak istimewa. Sumber mentah berguna untuk debugging lokal, tetapi
tidak membuktikan jalur dependensi yang sama seperti instalasi npm atau ClawHub. Jika
plugin Anda bergantung pada status plugin resmi tepercaya, tambahkan pembuktian kedua
melalui instalasi resmi berbasis katalog atau jalur paket yang dipublikasikan yang
mencatat kepercayaan resmi. Lihat
Resolusi dependensi plugin untuk
detail akar instalasi dan kepemilikan dependensi.5
Publikasikan
Validasi paket sebelum memublikasikannya:Cuplikan paket ClawHub kanonis berada di
docs/snippets/plugin-publish/.6
Instal
Instal paket yang telah dipublikasikan melalui ClawHub:
Mendaftarkan alat
Alat dapat bersifat wajib atau opsional. Alat wajib selalu tersedia ketika plugin diaktifkan. Alat opsional memerlukan persetujuan eksplisit pengguna sebelum OpenClaw memuat runtime plugin pemiliknya. Factory alat menerima konteks runtime tepercaya, termasukdeliveryContext,
nativeChannelId untuk percakapan platform aktif jika tersedia, dan
requesterSenderId.
outputSchema bersifat opsional. Ini menjelaskan nilai details terstruktur yang digunakan oleh
Mode Kode dan Pencarian Alat. Panggilan katalog
menolak skema yang tidak valid sebelum eksekusi dan memvalidasi nilai akhir setelah
hook alat. Hilangkan untuk alat tanpa hasil JSON yang stabil. Lihat
Plugin alat untuk kontrak lengkap.
Setiap alat yang didaftarkan dengan api.registerTool(...) juga harus dideklarasikan dalam
manifes plugin:
tools.allow:
name
nonkosong yang hilang, execute yang bukan fungsi, atau deskriptor alat tanpa objek
parameters.
Factory alat menerima objek konteks yang disediakan runtime. Gunakan ctx.activeModel
ketika alat perlu mencatat log, menampilkan, atau menyesuaikan diri dengan model aktif untuk giliran
saat ini; objek ini dapat menyertakan provider, modelId, dan modelRef. Perlakukan sebagai
metadata runtime informasional, bukan batas keamanan terhadap operator lokal,
kode plugin yang diinstal, atau runtime OpenClaw yang dimodifikasi. Alat lokal
sensitif tetap harus memerlukan persetujuan eksplisit plugin atau operator dan
gagal secara tertutup ketika metadata model aktif hilang atau tidak sesuai.
Manifes mendeklarasikan kepemilikan dan penemuan; eksekusi tetap memanggil
implementasi alat terdaftar yang aktif. Jaga toolMetadata.<tool>.optional: true
tetap selaras dengan api.registerTool(..., { optional: true }) agar OpenClaw dapat menghindari
pemuatan runtime plugin tersebut hingga alat secara eksplisit dimasukkan ke daftar yang diizinkan.
Konvensi impor
Impor dari subjalur SDK yang terfokus:api.ts dan
runtime-api.ts untuk impor internal. Jangan mengimpor plugin Anda sendiri melalui
jalur SDK. Pembantu khusus penyedia harus tetap berada dalam paket penyedia kecuali
seam tersebut benar-benar generik.
Metode RPC Gateway khusus adalah titik masuk tingkat lanjut. Pertahankan metode tersebut pada
awalan khusus plugin; namespace admin inti seperti config.*,
exec.approvals.*, operator.admin.*, wizard.*, dan update.* tetap dicadangkan
dan diresolusikan menjadi operator.admin. Bridge
openclaw/plugin-sdk/gateway-method-runtime dicadangkan untuk rute HTTP plugin
yang mendeklarasikan contracts.gatewayMethodDispatch: ["authenticated-request"].
Untuk peta impor lengkap, lihat Ikhtisar SDK Plugin.
Daftar periksa prapengajuan
package.json memiliki metadata
openclaw yang benarManifes openclaw.plugin.json tersedia dan valid
Titik masuk menggunakan
defineChannelPluginEntry atau definePluginEntrySemua impor menggunakan jalur
plugin-sdk/<subpath> yang terfokusImpor internal menggunakan modul lokal, bukan impor mandiri SDK
Pengujian lulus (
pnpm test <bundled-plugin-root>/my-plugin/)pnpm check lulus (plugin dalam repositori)Uji terhadap rilis beta
- Pantau rilis openclaw/openclaw (
Watch>Releases). Tag beta terlihat sepertiv2026.3.N-beta.1. Anda juga dapat mengikuti @openclaw di X untuk pengumuman rilis. - Uji plugin Anda terhadap tag beta segera setelah tag tersebut muncul. Waktu sebelum rilis stabil biasanya hanya beberapa jam.
- Setelah pengujian, kirim pesan di utas plugin Anda pada kanal Discord
plugin-forum(discord.gg/clawd), dengan menyertakanall goodatau hal yang mengalami kerusakan. Buat utas jika Anda belum memilikinya. - Jika terjadi kerusakan, buka atau perbarui masalah berjudul
Beta blocker: <plugin-name> - <summary>dan terapkan labelbeta-blocker. Tautkan masalah tersebut di utas Anda. - Buka PR ke
mainberjudulfix(<plugin-id>): beta blocker - <summary>dan tautkan masalah tersebut di PR serta utas Discord Anda. Kontributor tidak dapat memberi label pada PR, sehingga judul menjadi sinyal di sisi PR bagi pengelola dan otomatisasi. Penghambat yang memiliki PR akan digabungkan; penghambat tanpa PR mungkin tetap dirilis. - Tidak adanya kabar berarti aman. Melewatkan jangka waktu ini biasanya berarti perbaikan Anda akan masuk pada siklus berikutnya.
Langkah berikutnya
Plugin Kanal
Buat plugin kanal perpesanan
Plugin Penyedia
Buat plugin penyedia model
Plugin Backend CLI
Daftarkan backend CLI AI lokal
Ikhtisar SDK
Referensi peta impor dan API pendaftaran
Pembantu Runtime
TTS, pencarian, subagen melalui api.runtime
Pengujian
Utilitas dan pola pengujian
Manifes Plugin
Referensi lengkap skema manifes