Ini adalah panduan kontributor bagi pengembang inti OpenClaw. Jika Anda
sedang membuat plugin eksternal, lihat Membuat plugin
sebagai gantinya. Untuk referensi arsitektur mendalam (model kapabilitas, kepemilikan,
alur pemuatan, pembantu runtime), lihat Internal Plugin.
- plugin = batas kepemilikan
- kapabilitas = kontrak inti bersama
Kapan harus membuat kapabilitas
Buat kapabilitas baru hanya jika semua hal berikut terpenuhi:- Lebih dari satu vendor secara masuk akal dapat mengimplementasikannya.
- Kanal, alat, atau plugin fitur harus dapat menggunakannya tanpa perlu mengetahui vendornya.
- Inti perlu memiliki perilaku fallback, kebijakan, konfigurasi, atau pengiriman.
Urutan standar
- Definisikan kontrak inti bertipe.
- Tambahkan pendaftaran plugin untuk kontrak tersebut.
- Tambahkan pembantu runtime bersama.
- Hubungkan satu plugin vendor nyata sebagai bukti.
- Pindahkan konsumen fitur/kanal ke pembantu runtime.
- Tambahkan pengujian kontrak.
- Dokumentasikan konfigurasi yang ditujukan bagi operator dan model kepemilikannya.
Penempatan komponen
Titik integrasi penyedia dan harness
Gunakan hook penyedia ketika perilaku merupakan bagian dari kontrak penyedia model, bukan loop agen generik. Contohnya mencakup parameter permintaan khusus penyedia setelah pemilihan transportasi, preferensi profil autentikasi, overlay prompt, dan perutean fallback lanjutan setelah failover model/profil. Gunakan hook harness agen ketika perilaku merupakan bagian dari runtime yang menjalankan suatu giliran. Harness dapat mengklasifikasikan hasil protokol eksplisit seperti keluaran kosong, penalaran tanpa keluaran yang terlihat, atau rencana terstruktur tanpa jawaban akhir agar kebijakan fallback model luar dapat menentukan keputusan percobaan ulang. Jaga agar kedua titik integrasi tetap sempit:- Inti memiliki kebijakan percobaan ulang/fallback.
- Plugin penyedia memiliki petunjuk permintaan/autentikasi/perutean khusus penyedia.
- Plugin harness memiliki klasifikasi percobaan khusus runtime.
- Plugin pihak ketiga mengembalikan petunjuk, bukan mutasi langsung terhadap status inti.
Daftar periksa berkas
Untuk kapabilitas baru, bersiaplah menyentuh area berikut:src/<capability>/types.tssrc/<capability>/...registry/runtime.tssrc/plugins/types.tssrc/plugins/registry.tssrc/plugins/captured-registration.tssrc/plugins/contracts/registry.tssrc/plugins/runtime/types-core.tssrc/plugins/runtime/index.tssrc/plugin-sdk/<capability>.tssrc/plugin-sdk/<capability>-runtime.ts- Satu atau beberapa paket plugin bawaan.
- Konfigurasi, dokumentasi, pengujian.
Contoh lengkap: pembuatan gambar
Pembuatan gambar mengikuti struktur standar:- Inti mendefinisikan
ImageGenerationProvider. - Inti mengekspos
registerImageGenerationProvider(...). - Inti mengekspos
api.runtime.imageGeneration.generate(...)dan.listProviders(...). - Plugin vendor (
comfy,deepinfra,fal,google,litellm,microsoft-foundry,minimax,openai,openrouter,vydra,xai) mendaftarkan implementasi yang didukung vendor. - Vendor mendatang mendaftarkan kontrak yang sama tanpa mengubah kanal/alat.
agents.defaults.imageModelmenganalisis gambar.agents.defaults.imageGenerationModelmenghasilkan gambar.
Penyedia embedding
GunakanregisterEmbeddingProvider(...) / kontrak embeddingProviders untuk
penyedia embedding vektor yang dapat digunakan kembali. Kontrak ini sengaja lebih luas
daripada memori: alat, pencarian, pengambilan, pengimpor, atau plugin fitur masa depan
dapat menggunakan embedding tanpa bergantung pada mesin memori. Pencarian memori
juga menggunakan embeddingProviders generik.
API pendaftaran lama yang khusus untuk memori dan kontrak memoryEmbeddingProviders
sudah tidak digunakan lagi. Gunakan registerEmbeddingProvider dan
embeddingProviders untuk semua penyedia embedding baru.
Daftar periksa peninjauan
Sebelum merilis kapabilitas baru, verifikasi:- Tidak ada kanal/alat yang mengimpor kode vendor secara langsung.
- Pembantu runtime menjadi jalur bersama.
- Setidaknya satu pengujian kontrak memverifikasi kepemilikan bawaan.
- Dokumentasi konfigurasi menyebutkan model/kunci konfigurasi baru.
- Dokumentasi plugin menjelaskan batas kepemilikan.
Terkait
- Internal Plugin — model kapabilitas, kepemilikan, alur pemuatan, pembantu runtime.
- Membuat plugin — tutorial plugin pertama.
- Ikhtisar SDK — peta impor dan referensi API pendaftaran.
- Membuat Skills — permukaan kontributor pendamping.