Plugin maintainer reference
Kompatibilitas Plugin
OpenClaw mempertahankan kontrak plugin lama yang terhubung melalui adaptor kompatibilitas bernama sebelum menghapusnya. Hal ini melindungi plugin bawaan dan eksternal yang ada sementara kontrak SDK, manifes, penyiapan, konfigurasi, dan runtime agen berkembang.
Registri kompatibilitas
Kontrak kompatibilitas plugin dilacak dalam registri inti di
src/plugins/compat/registry.ts. Setiap catatan memiliki:
- kode kompatibilitas yang stabil
- status:
active,deprecated,removal-pending, atauremoved - pemilik:
sdk,config,setup,channel,provider,plugin-execution,agent-runtime, ataucore - tanggal pengenalan dan penghentian jika berlaku
- panduan pengganti
- dokumentasi, diagnostik, dan pengujian yang mencakup perilaku lama dan baru
Registri tersebut menjadi sumber untuk perencanaan pengelola dan pemeriksaan inspektur plugin mendatang. Jika perilaku yang berhadapan dengan plugin berubah, tambahkan atau perbarui catatan kompatibilitas dalam perubahan yang sama dengan penambahan adaptor.
Kompatibilitas perbaikan dan migrasi Doctor dilacak secara terpisah di
src/commands/doctor/shared/deprecation-compat.ts. Catatan tersebut mencakup bentuk
konfigurasi lama, tata letak buku besar instalasi, dan shim perbaikan yang mungkin perlu
tetap tersedia setelah jalur kompatibilitas runtime dihapus.
Pemeriksaan rilis harus memeriksa kedua registri. Jangan menghapus migrasi Doctor hanya karena catatan kompatibilitas runtime atau konfigurasi yang sesuai telah kedaluwarsa; verifikasi terlebih dahulu bahwa tidak ada jalur peningkatan yang didukung yang masih memerlukan perbaikan tersebut. Validasi ulang juga setiap anotasi pengganti selama perencanaan rilis, karena kepemilikan plugin dan cakupan konfigurasi dapat berubah ketika penyedia dan kanal dipindahkan keluar dari inti.
Kebijakan penghentian
OpenClaw tidak boleh menghapus kontrak plugin terdokumentasi dalam rilis yang sama yang memperkenalkan penggantinya. Urutan migrasi:
- Tambahkan kontrak baru.
- Pertahankan perilaku lama yang terhubung melalui adaptor kompatibilitas bernama.
- Keluarkan diagnostik atau peringatan ketika penulis plugin dapat menindaklanjutinya.
- Dokumentasikan pengganti dan linimasa.
- Uji jalur lama dan baru.
- Tunggu hingga jangka waktu migrasi yang diumumkan berlalu.
- Hapus hanya dengan persetujuan eksplisit untuk rilis yang mengandung perubahan tidak kompatibel.
Catatan yang dihentikan harus menyertakan tanggal mulai peringatan, pengganti, tautan
dokumentasi, dan tanggal penghapusan akhir tidak lebih dari tiga bulan setelah peringatan
dimulai. Jangan menambahkan jalur kompatibilitas yang dihentikan dengan jangka waktu
penghapusan tanpa batas, kecuali pengelola secara eksplisit memutuskan bahwa itu adalah kompatibilitas
permanen dan menandainya sebagai active.
Area kompatibilitas saat ini
Pemeriksaan Juli 2026 menghapus alias SDK root, manifes, penyedia, runtime, flag registri, dan konfigurasi web milik plugin yang telah kedaluwarsa. Migrasi Doctor tetap dilacak secara terpisah agar jalur peningkatan yang didukung masih dapat memperbaiki konfigurasi lama.
Area kompatibilitas bertanggal yang tersisa adalah:
- jangka waktu subjalur SDK bulan Agustus dan September yang tercantum dalam panduan migrasi
- alias hook
api.on("deactivate", ...)danapi.on("subagent_spawning", ...) - pendaftaran embedding khusus memori dan jembatan penyimpanan sesi beta.5
- alias callback masuk WhatsApp yang dijelaskan di bawah
- penguraian target kanal eksplisit dan
openclaw/plugin-sdk/messaging-targets - alias agen Pi tersemat
- alias SDK harness agen yang telah dirilis, yang penghapusannya menunggu keputusan migrasi baru yang didokumentasikan secara eksternal
Catatan registri aktif tanpa tanggal mencakup perilaku yang didukung, bukan utang penghapusan, termasuk petunjuk aktivasi, pengambilan plugin, pengaktifan plugin bawaan, dan fallback konfigurasi kanal yang dihasilkan.
Alias datar callback masuk WhatsApp
Callback runtime WhatsApp mengirimkan WebInboundMessage: konteks
bersarang kanonis event, payload, quote, group, dan platform beserta
alias datar yang dihentikan untuk bidang callback yang telah dirilis. Kode callback baru
harus membaca konteks bersarang. Kode yang membentuk pesan callback bersarang
yang bersih dapat menggunakan WebInboundCallbackMessage; listener kompatibilitas yang
masih menyuntikkan pesan pengujian atau plugin datar lama harus menggunakan
LegacyFlatWebInboundMessage atau WebInboundMessageInput.
Alias datar tetap tersedia hingga 2026-08-30; jangka waktu tersebut hanya berlaku
untuk akses alias datar, bukan bentuk bersarang, yang merupakan kontrak
runtime kanonis. Anotasi TypeScript @deprecated setiap alias datar
menyebutkan pengganti bersarangnya secara tepat. Contoh umum:
id,timestamp, danisBatcheddipindahkan ke bawahevent.body,mediaPath,mediaType,mediaFileName,mediaUrl,location, danuntrustedStructuredContextdipindahkan ke bawahpayload.to,chatId, bidang pengirim/diri sendiri,sendComposing,reply(...), dansendMedia(...)dipindahkan ke bawahplatform.- bidang
replyTo*dipindahkan ke bawahquote; bidang subjek/peserta/sebutan grup dipindahkan ke bawahgroup.
payload.untrustedStructuredContext diekstrak dari payload penyedia
masuk. Plugin harus memeriksa label, source, dan type sebelum
memperlakukan payload miliknya sebagai otoritatif.
Bidang penerimaan masuk WhatsApp
Pesan callback WhatsApp yang diterima membawa admission, sebuah envelope
aman untuk publik bagi keputusan kontrol akses yang menerima pesan tersebut. Kode
callback baru harus membaca fakta penerimaan dari msg.admission, bukan dari
bidang penerimaan tingkat atas yang lebih lama.
Bidang tingkat atas tetap tersedia hingga 2026-08-30. Anotasi
TypeScript @deprecated setiap bidang menyebutkan penggantinya:
fromdanconversationIddipindahkan keadmission.conversation.id.accountIddipindahkan keadmission.accountId.accessControlPassedadalah tampilan kompatibilitas turunan dariadmission.ingress.decision === "allow"; pada pesan yang sudah membawaadmission, penulisan boolean lama tidak menulis ulang graf ingress.chatTypedipindahkan keadmission.conversation.kind.
Paket inspektur plugin
Inspektur plugin harus berada di luar repo inti OpenClaw sebagai paket/repositori terpisah yang didukung oleh kontrak kompatibilitas dan manifes berversi. CLI hari pertama harus berupa:
openclaw-plugin-inspector ./my-pluginCLI tersebut harus menghasilkan validasi manifes/skema, versi kompatibilitas
kontrak yang diperiksa, pemeriksaan metadata instalasi/sumber, pemeriksaan impor
jalur dingin, serta peringatan penghentian/kompatibilitas. Gunakan --json untuk output
stabil yang dapat dibaca mesin dalam anotasi CI. Inti OpenClaw harus mengekspos
kontrak dan fixture yang dapat digunakan oleh inspektur, tetapi tidak boleh menerbitkan
biner inspektur dari paket utama openclaw.
Jalur penerimaan pengelola
Gunakan Blacksmith Testbox yang didukung Crabbox untuk jalur penerimaan paket yang dapat diinstal saat memvalidasi inspektur eksternal terhadap paket plugin OpenClaw. Jalankan dari checkout OpenClaw yang bersih setelah paket dibangun:
pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "pnpm install && pnpm build && npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/telegram --json"pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/discord --json"pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- <clawhub-plugin-dir> --json"Pertahankan jalur ini sebagai pilihan opsional bagi pengelola, karena jalur ini menginstal paket npm eksternal dan dapat memeriksa paket plugin yang dikloning di luar repo. Pengaman repo lokal mencakup peta ekspor SDK, metadata registri kompatibilitas, pengurangan impor SDK yang dihentikan, dan batas impor ekstensi bawaan; bukti inspektur Testbox mencakup paket sebagaimana digunakan oleh penulis plugin eksternal.
Catatan rilis
Catatan rilis harus menyertakan penghentian plugin mendatang beserta tanggal target
dan tautan ke dokumentasi migrasi, sebelum jalur kompatibilitas berpindah ke
removal-pending atau removed.