Titik Entri Plugin
Setiap plugin mengekspor objek entri default. SDK menyediakan tiga helper untuk membuatnya.definePluginEntry
Import: openclaw/plugin-sdk/plugin-entry
Untuk plugin provider, plugin tool, plugin hook, dan apa pun yang bukan
channel pesan.
| Field | Type | Required | Default |
|---|---|---|---|
id | string | Ya | — |
name | string | Ya | — |
description | string | Ya | — |
kind | string | Tidak | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Tidak | Skema objek kosong |
register | (api: OpenClawPluginApi) => void | Ya | — |
idharus cocok dengan manifestopenclaw.plugin.jsonAnda.kinduntuk slot eksklusif:"memory"atau"context-engine".configSchemadapat berupa fungsi untuk evaluasi lazy.- OpenClaw me-resolve dan memoize skema itu saat akses pertama, sehingga pembuat skema yang mahal hanya berjalan sekali.
defineChannelPluginEntry
Import: openclaw/plugin-sdk/channel-core
Membungkus definePluginEntry dengan wiring khusus channel. Secara otomatis memanggil
api.registerChannel({ plugin }), mengekspos seam metadata CLI bantuan root opsional,
dan mengatur registerFull berdasarkan mode pendaftaran.
| Field | Type | Required | Default |
|---|---|---|---|
id | string | Ya | — |
name | string | Ya | — |
description | string | Ya | — |
plugin | ChannelPlugin | Ya | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Tidak | Skema objek kosong |
setRuntime | (runtime: PluginRuntime) => void | Tidak | — |
registerCliMetadata | (api: OpenClawPluginApi) => void | Tidak | — |
registerFull | (api: OpenClawPluginApi) => void | Tidak | — |
setRuntimedipanggil selama pendaftaran sehingga Anda dapat menyimpan referensi runtime (biasanya melaluicreatePluginRuntimeStore). Ini dilewati selama pengambilan metadata CLI.registerCliMetadataberjalan selamaapi.registrationMode === "cli-metadata"maupunapi.registrationMode === "full". Gunakan ini sebagai tempat kanonis untuk descriptor CLI milik channel agar bantuan root tetap non-activating sementara pendaftaran perintah CLI normal tetap kompatibel dengan pemuatan plugin penuh.registerFullhanya berjalan saatapi.registrationMode === "full". Ini dilewati selama pemuatan setup-only.- Seperti
definePluginEntry,configSchemadapat berupa factory lazy dan OpenClaw memoize skema yang telah di-resolve saat akses pertama. - Untuk perintah CLI root milik plugin, pilih
api.registerCli(..., { descriptors: [...] })saat Anda ingin perintah tetap lazy-loaded tanpa menghilang dari parse tree CLI root. Untuk plugin channel, sebaiknya daftarkan descriptor itu dariregisterCliMetadata(...)dan pertahankanregisterFull(...)tetap fokus pada pekerjaan runtime saja. - Jika
registerFull(...)juga mendaftarkan metode RPC gateway, simpan di prefiks khusus plugin. Namespace admin core yang dicadangkan (config.*,exec.approvals.*,wizard.*,update.*) selalu dipaksa keoperator.admin.
defineSetupPluginEntry
Import: openclaw/plugin-sdk/channel-core
Untuk file setup-entry.ts yang ringan. Mengembalikan hanya { plugin } tanpa
wiring runtime atau CLI.
defineSetupPluginEntry(...) dengan keluarga helper setup
yang sempit:
openclaw/plugin-sdk/setup-runtimeuntuk helper setup yang aman untuk runtime seperti adapter patch setup yang aman untuk import, output catatan lookup,promptResolvedAllowFrom,splitSetupEntries, dan proxy setup yang didelegasikanopenclaw/plugin-sdk/channel-setupuntuk surface setup opsional-installopenclaw/plugin-sdk/setup-toolsuntuk helper CLI/archive/docs setup/install
Mode pendaftaran
api.registrationMode memberi tahu plugin Anda bagaimana plugin dimuat:
| Mode | Kapan | Yang harus didaftarkan |
|---|---|---|
"full" | Startup gateway normal | Semua |
"setup-only" | Channel dinonaktifkan/belum dikonfigurasi | Hanya pendaftaran channel |
"setup-runtime" | Alur setup dengan runtime tersedia | Pendaftaran channel plus hanya runtime ringan yang dibutuhkan sebelum entri penuh dimuat |
"cli-metadata" | Bantuan root / pengambilan metadata CLI | Hanya descriptor CLI |
defineChannelPluginEntry menangani pemisahan ini secara otomatis. Jika Anda menggunakan
definePluginEntry langsung untuk sebuah channel, periksa mode sendiri:
"setup-runtime" sebagai jendela saat surface startup setup-only harus
ada tanpa masuk kembali ke runtime channel bawaan penuh. Yang cocok
meliputi pendaftaran channel, rute HTTP yang aman untuk setup, metode gateway yang aman untuk setup, dan
helper setup yang didelegasikan. Layanan latar belakang berat, registrar CLI, dan
bootstrap SDK provider/client tetap berada di "full".
Khusus untuk registrar CLI:
- gunakan
descriptorssaat registrar memiliki satu atau lebih perintah root dan Anda ingin OpenClaw melakukan lazy-load pada modul CLI nyata saat pertama kali dipanggil - pastikan descriptor tersebut mencakup setiap root perintah tingkat atas yang diekspos oleh registrar
- gunakan
commandssaja hanya untuk jalur kompatibilitas eager
Bentuk plugin
OpenClaw mengklasifikasikan plugin yang dimuat berdasarkan perilaku pendaftarannya:| Shape | Description |
|---|---|
| plain-capability | Satu jenis capability (misalnya hanya provider) |
| hybrid-capability | Beberapa jenis capability (misalnya provider + speech) |
| hook-only | Hanya hook, tanpa capability |
| non-capability | Tools/commands/services tetapi tanpa capability |
openclaw plugins inspect <id> untuk melihat bentuk sebuah plugin.
Terkait
- SDK Overview — API pendaftaran dan referensi subpath
- Runtime Helpers —
api.runtimedancreatePluginRuntimeStore - Setup and Config — manifest, setup entry, deferred loading
- Channel Plugins — membangun objek
ChannelPlugin - Provider Plugins — pendaftaran provider dan hook