clawhub: saat Anda menginginkan resolusi ClawHub.
Persyaratan
- Gunakan Node 22.19+, Node 23.11+, atau Node 24+ dan manajer paket seperti
npmataupnpm. - Pahami modul TypeScript ESM.
- Untuk pekerjaan plugin bawaan di dalam repo, clone repositori dan jalankan
pnpm install. Pengembangan plugin dari checkout sumber hanya mendukung pnpm karena OpenClaw memuat plugin bawaan dari paket workspaceextensions/*.
Pilih bentuk plugin
Channel plugin
Hubungkan OpenClaw ke platform perpesanan.
Provider plugin
Tambahkan penyedia model, media, pencarian, pengambilan, ucapan, atau realtime.
CLI backend plugin
Jalankan CLI AI lokal melalui fallback model OpenClaw.
Tool plugin
Daftarkan alat agen.
Mulai cepat
Bangun plugin alat minimal dengan mendaftarkan satu alat agen wajib. Ini adalah bentuk plugin berguna yang paling singkat dan menunjukkan paket, manifest, entry point, dan bukti lokal.Create package metadata
contracts.tools agar OpenClaw dapat menemukan kepemilikan tanpa
memuat setiap runtime plugin secara bersemangat. Atur activation.onStartup
secara sengaja. Contoh ini dimulai saat startup Gateway.Surface plugin tepercaya host juga dibatasi manifest dan memerlukan pengaktifan
eksplisit untuk plugin yang dipasang. Jika plugin yang dipasang mendaftarkan
api.registerAgentToolResultMiddleware(...), deklarasikan setiap target runtime di
contracts.agentToolResultMiddleware. Jika mendaftarkan
api.registerTrustedToolPolicy(...), deklarasikan setiap id kebijakan di
contracts.trustedToolPolicies. Deklarasi ini menjaga inspeksi saat pemasangan
dan pendaftaran runtime tetap selaras.Untuk setiap field manifest, lihat Manifest plugin.Register the tool
index.ts
definePluginEntry untuk plugin non-channel. Plugin channel menggunakan
defineChannelPluginEntry.Test the runtime
Untuk plugin yang dipasang atau plugin eksternal, inspeksi runtime yang dimuat:Jika plugin mendaftarkan perintah CLI, jalankan juga perintah tersebut. Misalnya,
perintah demo sebaiknya memiliki bukti eksekusi seperti
openclaw demo-plugin ping.Untuk plugin bawaan dalam repositori ini, OpenClaw menemukan paket plugin
checkout sumber dari workspace extensions/*. Jalankan pengujian tertarget
terdekat:Test the package install
Sebelum memublikasikan plugin yang siap dipaketkan, uji bentuk pemasangan 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 output dist/ tersebut. Entri sumber TypeScript hanya
untuk checkout sumber dan jalur pengembangan lokal.Lalu paketkan plugin dan pasang tarball dengan npm-pack::npm-pack: menggunakan proyek npm per-plugin terkelola milik OpenClaw, sehingga menangkap
kesalahan dependensi runtime yang dapat tersembunyi oleh pengujian checkout sumber. Ini membuktikan
bentuk paket dan dependensi, bukan kepercayaan resmi yang tertaut katalog.
Impor runtime harus berada di dependencies atau optionalDependencies;
dependensi yang hanya tersisa di devDependencies tidak akan dipasang untuk proyek
runtime terkelola.Jangan gunakan pemasangan arsip/path mentah sebagai bukti akhir untuk perilaku plugin resmi atau
dengan hak istimewa. Sumber mentah berguna untuk debugging lokal, tetapi
tidak membuktikan jalur dependensi yang sama seperti pemasangan npm atau ClawHub. Jika
plugin Anda bergantung pada status plugin resmi tepercaya, tambahkan bukti kedua
melalui pemasangan resmi berbasis katalog atau jalur paket yang dipublikasikan yang
mencatat kepercayaan resmi. Lihat
Resolusi dependensi plugin untuk detail
root pemasangan dan kepemilikan dependensi.Publish
Validasi paket sebelum memublikasikan:Cuplikan ClawHub kanonis berada di
docs/snippets/plugin-publish/.Mendaftarkan alat
Alat dapat bersifat wajib atau opsional. Alat wajib selalu tersedia ketika plugin diaktifkan. Alat opsional memerlukan opt-in pengguna.api.registerTool(...) juga harus dideklarasikan dalam
manifest plugin:
tools.allow:
parameters, dilewati dan dilaporkan dengan
cara yang sama. Alat terdaftar adalah fungsi bertipe yang dapat dipanggil model
setelah pemeriksaan kebijakan dan allowlist lolos.
Factory alat menerima objek konteks yang disediakan runtime. Gunakan ctx.activeModel
ketika alat perlu mencatat log, menampilkan, atau beradaptasi dengan model aktif untuk
turn saat ini. Objek dapat menyertakan provider, modelId, dan modelRef. Perlakukan sebagai
metadata runtime informasional, bukan sebagai batas keamanan terhadap operator lokal,
kode plugin yang dipasang, atau runtime OpenClaw yang dimodifikasi. Alat lokal sensitif
tetap harus memerlukan opt-in plugin atau operator yang eksplisit dan gagal tertutup
ketika metadata model aktif hilang atau tidak sesuai.
Manifest mendeklarasikan kepemilikan dan discovery; eksekusi tetap memanggil implementasi alat
terdaftar yang aktif. Jaga toolMetadata.<tool>.optional: true
tetap selaras dengan api.registerTool(..., { optional: true }) agar OpenClaw dapat menghindari
memuat runtime plugin tersebut sampai alat secara eksplisit masuk allowlist.
Konvensi impor
Impor dari subpath SDK yang terfokus:api.ts dan
runtime-api.ts untuk impor internal. Jangan impor plugin Anda sendiri melalui
path SDK. Helper khusus penyedia sebaiknya tetap berada di paket penyedia kecuali
seam tersebut benar-benar generik.
Metode RPC Gateway kustom adalah entry point lanjutan. Pertahankan pada
prefiks khusus plugin; namespace admin core seperti config.*,
exec.approvals.*, operator.admin.*, wizard.*, dan update.* tetap dicadangkan
dan di-resolve ke operator.admin. Bridge
openclaw/plugin-sdk/gateway-method-runtime dicadangkan untuk route HTTP plugin
yang mendeklarasikan contracts.gatewayMethodDispatch: ["authenticated-request"].
Untuk peta impor lengkap, lihat Gambaran umum SDK plugin.
Checklist pra-pengajuan
package.json memiliki metadata
openclaw yang benarManifest openclaw.plugin.json ada dan valid
Entry point menggunakan
defineChannelPluginEntry atau definePluginEntrySemua impor menggunakan path
plugin-sdk/<subpath> yang terfokusImpor internal menggunakan modul lokal, bukan self-import SDK
Pengujian lolos (
pnpm test -- <bundled-plugin-root>/my-plugin/)pnpm check lolos (plugin dalam repo)Uji terhadap rilis beta
- Pantau tag rilis GitHub di openclaw/openclaw dan berlangganan melalui
Watch>Releases. Tag beta terlihat sepertiv2026.3.N-beta.1. Anda juga dapat mengaktifkan notifikasi untuk akun X resmi OpenClaw @openclaw untuk pengumuman rilis. - Uji plugin Anda terhadap tag beta segera setelah tag tersebut muncul. Jendela waktu sebelum stable biasanya hanya beberapa jam.
- Posting di thread plugin Anda di kanal Discord
plugin-forumsetelah pengujian denganall goodatau hal yang rusak. Jika Anda belum memiliki thread, buat satu. - Jika ada yang rusak, buka atau perbarui issue berjudul
Beta blocker: <plugin-name> - <summary>dan terapkan labelbeta-blocker. Letakkan tautan issue di thread Anda. - Buka PR ke
mainberjudulfix(<plugin-id>): beta blocker - <summary>dan tautkan issue tersebut di PR dan thread Discord Anda. Kontributor tidak dapat memberi label pada PR, jadi judul adalah sinyal sisi PR untuk maintainer dan otomasi. Blocker dengan PR akan digabungkan; blocker tanpa PR mungkin tetap dikirimkan. Maintainer memantau thread ini selama pengujian beta. - Diam berarti hijau. Jika Anda melewatkan jendela waktu, perbaikan Anda kemungkinan masuk pada siklus berikutnya.
Langkah Berikutnya
Plugin Kanal
Bangun plugin kanal perpesanan
Plugin Penyedia
Bangun plugin penyedia model
Plugin Backend CLI
Daftarkan backend CLI AI lokal
Ikhtisar SDK
Referensi API import map dan pendaftaran
Pembantu Runtime
TTS, pencarian, subagent melalui api.runtime
Pengujian
Utilitas dan pola pengujian
Manifes Plugin
Referensi skema manifes lengkap