Plugins
Plugin
Plugin memperluas OpenClaw dengan kemampuan baru: kanal, penyedia model, harness agen, alat, Skills, ucapan, transkripsi realtime, suara realtime, pemahaman-media, pembuatan gambar, pembuatan video, pengambilan web, pencarian web, dan lainnya. Sebagian plugin bersifat inti (dikirim bersama OpenClaw), sebagian lainnya eksternal. Sebagian besar plugin eksternal dipublikasikan dan ditemukan melalui ClawHub. Npm tetap didukung untuk instalasi langsung dan untuk sekumpulan sementara paket plugin milik OpenClaw selama migrasi tersebut selesai.
Mulai cepat
Untuk contoh instalasi, daftar, hapus instalasi, pembaruan, dan publikasi yang dapat disalin-tempel, lihat Kelola plugin.
Lihat yang dimuat
openclaw plugins list
Instal plugin
# Search ClawHub plugins
openclaw plugins search "calendar"
# From ClawHub
openclaw plugins install clawhub:openclaw-codex-app-server
# From npm
openclaw plugins install npm:@acme/openclaw-plugin
openclaw plugins install npm-pack:./openclaw-plugin-1.2.3.tgz
# From git
openclaw plugins install git:github.com/acme/[email protected]
# From a local directory or archive
openclaw plugins install ./my-plugin
openclaw plugins install ./my-plugin.tgz
Mulai ulang Gateway
openclaw gateway restart
Lalu konfigurasikan di bawah plugins.entries.\<id\>.config dalam file konfigurasi Anda.
Pengelolaan asli obrolan
Dalam Gateway yang sedang berjalan, /plugins enable dan /plugins disable
khusus pemilik memicu pemuat ulang konfigurasi Gateway. Gateway memuat ulang
permukaan runtime plugin di dalam proses, dan giliran agen baru membangun ulang
daftar alatnya dari registry yang telah disegarkan. /plugins install
mengubah kode sumber plugin, sehingga Gateway meminta mulai ulang alih-alih
berpura-pura proses saat ini dapat memuat ulang modul yang sudah diimpor
dengan aman.
Verifikasi plugin
openclaw plugins inspect <plugin-id> --runtime --json
# If the plugin registered a CLI root, run one command from that root.
openclaw <plugin-command> --help
Gunakan --runtime saat Anda perlu membuktikan alat terdaftar, layanan,
metode gateway, hook, atau perintah CLI milik plugin. inspect biasa adalah
pemeriksaan manifes/registry dingin dan sengaja menghindari impor runtime
plugin.
Jika Anda lebih suka kontrol asli obrolan, aktifkan commands.plugins: true dan gunakan:
/plugin install clawhub:<package>
/plugin show <plugin-id>
/plugin enable <plugin-id>
Jalur instalasi menggunakan resolver yang sama seperti CLI: path/arsip lokal,
clawhub:<pkg> eksplisit, npm:<pkg> eksplisit, npm-pack:<path.tgz>
eksplisit, git:<repo> eksplisit, atau spesifikasi paket polos melalui npm.
Jika konfigurasi tidak valid, instalasi biasanya gagal tertutup dan mengarahkan
Anda ke openclaw doctor --fix. Satu-satunya pengecualian pemulihan adalah jalur
instal ulang plugin bawaan yang sempit untuk plugin yang memilih ikut ke
openclaw.install.allowInvalidConfigRecovery.
Selama startup Gateway, konfigurasi plugin yang tidak valid gagal tertutup
seperti konfigurasi tidak valid lainnya. Jalankan openclaw doctor --fix untuk
mengarantina konfigurasi plugin yang buruk dengan menonaktifkan entri plugin
tersebut dan menghapus payload konfigurasi tidak validnya; cadangan konfigurasi
normal menyimpan nilai sebelumnya.
Saat konfigurasi kanal merujuk ke plugin yang tidak lagi dapat ditemukan tetapi
id plugin usang yang sama tetap ada dalam konfigurasi plugin atau catatan
instalasi, startup Gateway mencatat peringatan dan melewati kanal tersebut
alih-alih memblokir setiap kanal lainnya. Jalankan openclaw doctor --fix untuk
menghapus entri kanal/plugin usang; kunci kanal yang tidak dikenal tanpa bukti
plugin usang tetap menggagalkan validasi agar salah ketik tetap terlihat.
Jika plugins.enabled: false ditetapkan, referensi plugin usang diperlakukan
sebagai inert: startup Gateway melewati pekerjaan penemuan/pemuatan plugin dan
openclaw doctor mempertahankan konfigurasi plugin yang dinonaktifkan alih-alih
menghapusnya otomatis. Aktifkan kembali plugin sebelum menjalankan pembersihan
doctor jika Anda ingin id plugin usang dihapus.
Instalasi dependensi plugin hanya terjadi selama alur instalasi/pembaruan
eksplisit atau perbaikan doctor. Startup Gateway, pemuatan ulang konfigurasi, dan
inspeksi runtime tidak menjalankan manajer paket atau memperbaiki pohon
dependensi. Plugin lokal harus sudah memasang dependensinya, sedangkan plugin
npm, git, dan ClawHub dipasang di bawah root plugin terkelola OpenClaw. Dependensi
npm dapat di-hoist dalam root npm terkelola OpenClaw; instalasi/pembaruan memindai
root terkelola tersebut sebelum trust dan penghapusan instalasi menghapus paket
terkelola npm melalui npm. Plugin eksternal dan path muat kustom tetap harus
dipasang melalui openclaw plugins install. Gunakan
openclaw plugins list --json untuk melihat dependencyStatus statis bagi
setiap plugin yang terlihat tanpa mengimpor kode runtime atau memperbaiki
dependensi. Lihat Resolusi dependensi plugin
untuk siklus hidup saat instalasi.
Kepemilikan path plugin yang diblokir
Jika diagnostik plugin mengatakan
blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
dan validasi konfigurasi diikuti dengan plugin present but blocked, OpenClaw
menemukan file plugin yang dimiliki oleh pengguna Unix berbeda dari proses yang
memuatnya. Biarkan konfigurasi plugin tetap ada; perbaiki kepemilikan sistem
file atau jalankan OpenClaw sebagai pengguna yang sama yang memiliki direktori
state.
Untuk instalasi Docker, image resmi berjalan sebagai node (uid 1000), jadi
direktori konfigurasi dan workspace OpenClaw yang di-bind mount dari host
biasanya harus dimiliki oleh uid 1000:
sudo chown -R 1000:1000 /path/to/openclaw-config /path/to/openclaw-workspace
Jika Anda sengaja menjalankan OpenClaw sebagai root, perbaiki root plugin terkelola agar dimiliki root sebagai gantinya:
sudo chown -R root:root /path/to/openclaw-config/npm
Setelah memperbaiki kepemilikan, jalankan ulang openclaw doctor --fix atau
openclaw plugins registry --refresh agar registry plugin yang tersimpan sesuai
dengan file yang telah diperbaiki.
Untuk instalasi npm, selector mutable seperti latest atau dist-tag di-resolve
sebelum instalasi lalu dipin ke versi terverifikasi yang tepat dalam root npm
terkelola OpenClaw. Setelah npm selesai, OpenClaw memverifikasi entri
package-lock.json yang terpasang masih cocok dengan versi dan integritas yang
di-resolve. Jika npm menulis metadata paket yang berbeda, instalasi gagal dan
paket terkelola dikembalikan alih-alih menerima artefak plugin yang berbeda.
Root npm terkelola juga mewarisi overrides npm tingkat paket OpenClaw, sehingga
pin keamanan yang melindungi host terpaketkan juga berlaku pada dependensi
plugin eksternal yang di-hoist.
Checkout sumber adalah workspace pnpm. Jika Anda mengkloning OpenClaw untuk
mengutak-atik plugin bawaan, jalankan pnpm install; OpenClaw kemudian memuat
plugin bawaan dari extensions/<id> sehingga edit dan dependensi lokal paket
digunakan langsung. Instalasi root npm biasa ditujukan untuk OpenClaw terpaketkan,
bukan pengembangan checkout sumber.
Jenis plugin
OpenClaw mengenali dua format plugin:
| Format | Cara kerjanya | Contoh |
|---|---|---|
| Native | openclaw.plugin.json + modul runtime; dieksekusi dalam proses |
Plugin resmi, paket npm komunitas |
| Bundle | Tata letak kompatibel Codex/Claude/Cursor; dipetakan ke fitur OpenClaw | .codex-plugin/, .claude-plugin/, .cursor-plugin/ |
Keduanya muncul di bawah openclaw plugins list. Lihat Bundle Plugin untuk detail bundle.
Jika Anda menulis plugin native, mulai dengan Membangun Plugin dan Ikhtisar SDK Plugin.
Entry point paket
Paket npm plugin native harus mendeklarasikan openclaw.extensions dalam
package.json. Setiap entri harus tetap berada di dalam direktori paket dan
di-resolve ke file runtime yang dapat dibaca, atau ke file sumber TypeScript
dengan pasangan JavaScript hasil build yang diinferensi seperti src/index.ts
ke dist/index.js.
Instalasi terpaketkan harus mengirimkan output runtime JavaScript tersebut.
Fallback sumber TypeScript ditujukan untuk checkout sumber dan path pengembangan
lokal, bukan untuk paket npm yang dipasang ke root plugin terkelola OpenClaw.
Jika peringatan paket terkelola mengatakan paket tersebut requires compiled runtime output for TypeScript entry ..., paket dipublikasikan tanpa file
JavaScript yang dibutuhkan OpenClaw saat runtime. Itu adalah masalah pengemasan
plugin, bukan masalah konfigurasi lokal. Perbarui atau instal ulang plugin
setelah penerbit memublikasikan ulang JavaScript terkompilasi, atau nonaktifkan/
hapus instalasi plugin tersebut sampai paket yang diperbaiki tersedia.
Gunakan openclaw.runtimeExtensions saat file runtime yang dipublikasikan tidak
berada pada path yang sama seperti entri sumber. Jika ada, runtimeExtensions
harus berisi tepat satu entri untuk setiap entri extensions. Daftar yang tidak
cocok menggagalkan instalasi dan penemuan plugin alih-alih diam-diam fallback ke
path sumber. Jika Anda juga memublikasikan openclaw.setupEntry, gunakan
openclaw.runtimeSetupEntry untuk pasangan JavaScript hasil build-nya; file itu
wajib saat dideklarasikan.
{
"name": "@acme/openclaw-plugin",
"openclaw": {
"extensions": ["./src/index.ts"],
"runtimeExtensions": ["./dist/index.js"]
}
}
Plugin resmi
Paket npm milik OpenClaw selama migrasi
ClawHub adalah jalur distribusi utama untuk sebagian besar plugin. Rilis OpenClaw
terpaketkan saat ini sudah membundel banyak plugin resmi, sehingga plugin
tersebut tidak memerlukan instalasi npm terpisah dalam setup normal. Sampai
setiap plugin milik OpenClaw bermigrasi ke ClawHub, OpenClaw masih mengirimkan
beberapa paket plugin @openclaw/* di npm untuk instalasi lama/kustom dan alur
kerja npm langsung.
Jika npm melaporkan paket plugin @openclaw/* sebagai deprecated, versi paket
tersebut berasal dari rangkaian paket eksternal yang lebih lama. Gunakan plugin
bawaan dari OpenClaw saat ini atau checkout lokal sampai paket npm yang lebih
baru dipublikasikan.
| Plugin | Paket | Dokumentasi |
|---|---|---|
| BlueBubbles | @openclaw/bluebubbles |
BlueBubbles |
| Discord | @openclaw/discord |
Discord |
| Feishu | @openclaw/feishu |
Feishu |
| Matrix | @openclaw/matrix |
Matrix |
| Mattermost | @openclaw/mattermost |
Mattermost |
| Microsoft Teams | @openclaw/msteams |
Microsoft Teams |
| Nextcloud Talk | @openclaw/nextcloud-talk |
Nextcloud Talk |
| Nostr | @openclaw/nostr |
Nostr |
| Synology Chat | @openclaw/synology-chat |
Synology Chat |
| Tlon | @openclaw/tlon |
Tlon |
@openclaw/whatsapp |
||
| Zalo | @openclaw/zalo |
Zalo |
| Zalo Personal | @openclaw/zalouser |
Zalo Personal |
Inti (dikirim bersama OpenClaw)
Penyedia model (diaktifkan secara default)
anthropic, byteplus, cloudflare-ai-gateway, github-copilot, google,
huggingface, kilocode, kimi-coding, minimax, mistral, qwen,
moonshot, nvidia, openai, opencode, opencode-go, openrouter,
qianfan, synthetic, together, venice,
vercel-ai-gateway, volcengine, xiaomi, zai
Plugin memori
memory-core- pencarian memori bawaan (default melaluiplugins.slots.memory)memory-lancedb- memori jangka panjang berbasis LanceDB dengan recall/capture otomatis (aturplugins.slots.memory = "memory-lancedb")
Lihat Memory LanceDB untuk penyiapan embedding yang kompatibel dengan OpenAI, contoh Ollama, batas recall, dan pemecahan masalah.
Penyedia ucapan (diaktifkan secara default)
elevenlabs, microsoft
Lainnya
browser- plugin browser bawaan untuk alat browser, CLIopenclaw browser, metode gatewaybrowser.request, runtime browser, dan layanan kontrol browser default (diaktifkan secara default; nonaktifkan sebelum menggantinya)copilot-proxy- bridge VS Code Copilot Proxy (dinonaktifkan secara default)
Mencari plugin pihak ketiga? Lihat Plugin Komunitas.
Konfigurasi
{
plugins: {
enabled: true,
allow: ["voice-call"],
deny: ["untrusted-plugin"],
load: { paths: ["~/Projects/oss/voice-call-plugin"] },
entries: {
"voice-call": { enabled: true, config: { provider: "twilio" } },
},
},
}
| Bidang | Deskripsi |
|---|---|
enabled |
Toggle utama (default: true) |
allow |
Allowlist plugin (opsional) |
bundledDiscovery |
Mode penemuan plugin bawaan (allowlist secara default) |
deny |
Denylist plugin (opsional; deny menang) |
load.paths |
File/direktori plugin tambahan |
slots |
Pemilih slot eksklusif (mis. memory, contextEngine) |
entries.\<id\> |
Toggle + konfigurasi per plugin |
plugins.allow bersifat eksklusif. Saat nilainya tidak kosong, hanya plugin yang tercantum yang dapat dimuat atau mengekspos alat, meskipun tools.allow berisi "*" atau nama alat milik plugin tertentu. Jika allowlist alat mereferensikan alat plugin, tambahkan id plugin pemilik ke plugins.allow atau hapus plugins.allow; openclaw doctor memperingatkan bentuk ini.
plugins.bundledDiscovery default ke "allowlist" untuk konfigurasi baru, sehingga inventaris plugins.allow yang restriktif juga memblokir plugin penyedia bawaan yang dihilangkan, termasuk penemuan penyedia pencarian web runtime. Doctor memberi cap konfigurasi allowlist restriktif lama dengan "compat" selama migrasi agar upgrade mempertahankan perilaku penyedia bawaan lama sampai operator memilih mode yang lebih ketat. plugins.allow kosong tetap diperlakukan sebagai belum diatur/terbuka.
Perubahan konfigurasi yang dibuat melalui /plugins enable atau /plugins disable memicu pemuatan ulang plugin Gateway dalam proses. Giliran agen baru membangun ulang daftar alatnya dari registri plugin yang disegarkan. Operasi yang mengubah sumber seperti install, update, dan uninstall tetap me-restart proses Gateway karena modul plugin yang sudah diimpor tidak dapat diganti dengan aman di tempat.
openclaw plugins list adalah snapshot registri/konfigurasi plugin lokal. Plugin enabled di sana berarti registri yang dipersistenkan dan konfigurasi saat ini mengizinkan plugin untuk berpartisipasi. Itu tidak membuktikan bahwa Gateway jarak jauh yang sudah berjalan telah memuat ulang atau me-restart ke kode plugin yang sama. Pada penyiapan VPS/kontainer dengan proses wrapper, kirim restart atau penulisan yang memicu pemuatan ulang ke proses openclaw gateway run yang sebenarnya, atau gunakan openclaw gateway restart terhadap Gateway yang berjalan saat laporan pemuatan ulang gagal.
Status plugin: dinonaktifkan vs hilang vs tidak valid
- Dinonaktifkan: plugin ada tetapi aturan pengaktifan mematikannya. Konfigurasi dipertahankan.
- Hilang: konfigurasi mereferensikan id plugin yang tidak ditemukan oleh penemuan.
- Tidak valid: plugin ada tetapi konfigurasinya tidak cocok dengan skema yang dideklarasikan. Startup Gateway hanya melewati plugin tersebut;
openclaw doctor --fixdapat mengarantina entri yang tidak valid dengan menonaktifkannya dan menghapus payload konfigurasinya.
Penemuan dan presedensi
OpenClaw memindai plugin dalam urutan ini (kecocokan pertama menang):
Path konfigurasi
plugins.load.paths - path file atau direktori eksplisit. Path yang menunjuk kembali ke direktori plugin bawaan terpaket milik OpenClaw sendiri diabaikan; jalankan openclaw doctor --fix untuk menghapus alias usang tersebut.
Plugin workspace
\<workspace\>/.openclaw/<plugin-root>/*.ts dan \<workspace\>/.openclaw/<plugin-root>/*/index.ts.
Plugin global
~/.openclaw/<plugin-root>/*.ts dan ~/.openclaw/<plugin-root>/*/index.ts.
Plugin bawaan
Dikirim bersama OpenClaw. Banyak yang diaktifkan secara default (penyedia model, ucapan). Yang lain memerlukan pengaktifan eksplisit.
Instalasi terpaket dan image Docker biasanya menyelesaikan plugin bawaan dari pohon dist/extensions yang dikompilasi. Jika direktori sumber plugin bawaan di-bind-mount di atas path sumber terpaket yang cocok, misalnya /app/extensions/synology-chat, OpenClaw memperlakukan direktori sumber yang di-mount tersebut sebagai overlay sumber bawaan dan menemukannya sebelum bundle /app/dist/extensions/synology-chat terpaket. Ini menjaga loop kontainer maintainer tetap berfungsi tanpa mengalihkan setiap plugin bawaan kembali ke sumber TypeScript. Atur OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1 untuk memaksa bundle dist terpaket meskipun mount overlay sumber ada.
Aturan pengaktifan
plugins.enabled: falsemenonaktifkan semua plugin dan melewati pekerjaan penemuan/pemuatan pluginplugins.denyselalu menang atas allowplugins.entries.\<id\>.enabled: falsemenonaktifkan plugin tersebut- Plugin asal workspace dinonaktifkan secara default (harus diaktifkan secara eksplisit)
- Plugin bawaan mengikuti kumpulan default aktif bawaan kecuali ditimpa
- Slot eksklusif dapat memaksa pengaktifan plugin yang dipilih untuk slot tersebut
- Beberapa plugin bawaan opt-in diaktifkan otomatis saat konfigurasi menamai surface milik plugin, seperti ref model penyedia, konfigurasi kanal, atau runtime harness
- Konfigurasi plugin usang dipertahankan saat
plugins.enabled: falseaktif; aktifkan ulang plugin sebelum menjalankan pembersihan doctor jika Anda ingin id usang dihapus - Rute Codex keluarga OpenAI mempertahankan batas plugin terpisah:
openai-codex/*milik plugin OpenAI, sementara plugin app-server Codex bawaan dipilih olehagentRuntime.id: "codex"atau ref model lamacodex/*
Memecahkan masalah hook runtime
Jika plugin muncul di plugins list tetapi efek samping atau hook register(api) tidak berjalan dalam traffic chat langsung, periksa ini terlebih dahulu:
- Jalankan
openclaw gateway status --deep --require-rpcdan konfirmasikan URL Gateway aktif, profil, path konfigurasi, dan proses adalah yang sedang Anda edit. - Restart Gateway langsung setelah perubahan install/konfigurasi/kode plugin. Dalam kontainer wrapper, PID 1 mungkin hanya supervisor; restart atau kirim sinyal ke proses anak
openclaw gateway run. - Gunakan
openclaw plugins inspect <id> --runtime --jsonuntuk mengonfirmasi registrasi hook dan diagnostik. Hook percakapan non-bawaan sepertibefore_model_resolve,before_agent_reply,before_agent_run,llm_input,llm_output,before_agent_finalize, danagent_endmemerlukanplugins.entries.<id>.hooks.allowConversationAccess=true. - Untuk pengalihan model, utamakan
before_model_resolve. Ini berjalan sebelum resolusi model untuk giliran agen;llm_outputhanya berjalan setelah percobaan model menghasilkan output asisten. - Untuk bukti model sesi efektif, gunakan
openclaw sessionsatau surface sesi/status Gateway dan, saat men-debug payload penyedia, mulai Gateway dengan--raw-stream --raw-stream-path <path>.
Penyiapan alat plugin yang lambat
Jika giliran agen tampak tersendat saat menyiapkan alat, aktifkan logging trace dan periksa baris timing factory alat plugin:
openclaw config set logging.level trace
openclaw logs --follow
Cari:
[trace:plugin-tools] factory timings ...
Ringkasan mencantumkan total waktu factory dan factory alat plugin terlambat, termasuk id plugin, nama alat yang dideklarasikan, bentuk hasil, dan apakah alat tersebut opsional. Baris lambat dipromosikan menjadi peringatan saat satu factory membutuhkan setidaknya 1 dtk atau total persiapan factory alat plugin membutuhkan setidaknya 5 dtk.
OpenClaw menyimpan cache hasil factory alat plugin yang berhasil untuk resolusi berulang dengan konteks permintaan efektif yang sama. Kunci cache mencakup konfigurasi runtime efektif, workspace, id agen/sesi, kebijakan sandbox, pengaturan browser, konteks pengiriman, identitas peminta, dan status kepemilikan, sehingga factory yang bergantung pada bidang tepercaya tersebut dijalankan ulang saat konteks berubah.
Jika satu plugin mendominasi timing, periksa registrasi runtime-nya:
openclaw plugins inspect <plugin-id> --runtime --json
Lalu update, install ulang, atau nonaktifkan plugin tersebut. Penulis plugin sebaiknya memindahkan pemuatan dependensi yang mahal ke balik path eksekusi alat, bukan melakukannya di dalam factory alat.
Kepemilikan kanal atau alat duplikat
Gejala:
channel already registered: <channel-id> (<plugin-id>)channel setup already registered: <channel-id> (<plugin-id>)plugin tool name conflict (<plugin-id>): <tool-name>
Ini berarti lebih dari satu plugin yang diaktifkan mencoba memiliki kanal, alur penyiapan, atau nama alat yang sama. Penyebab paling umum adalah plugin kanal eksternal yang dipasang berdampingan dengan plugin bawaan yang kini menyediakan id kanal yang sama.
Langkah debug:
- Jalankan
openclaw plugins list --enabled --verboseuntuk melihat setiap plugin yang diaktifkan dan asalnya. - Jalankan
openclaw plugins inspect <id> --runtime --jsonuntuk setiap plugin yang dicurigai dan bandingkanchannels,channelConfigs,tools, dan diagnostik. - Jalankan
openclaw plugins registry --refreshsetelah memasang atau menghapus paket plugin agar metadata yang dipersistenkan mencerminkan instalasi saat ini. - Restart Gateway setelah perubahan install, registri, atau konfigurasi.
Opsi perbaikan:
- Jika satu plugin sengaja menggantikan yang lain untuk id kanal yang sama, plugin yang diutamakan harus mendeklarasikan
channelConfigs.<channel-id>.preferOverdengan id plugin berprioritas lebih rendah. Lihat /plugins/manifest#replacing-another-channel-plugin. - Jika duplikat terjadi tidak sengaja, nonaktifkan salah satu sisi dengan
plugins.entries.<plugin-id>.enabled: falseatau hapus instalasi plugin usang. - Jika Anda secara eksplisit mengaktifkan kedua plugin, OpenClaw mempertahankan permintaan itu dan melaporkan konflik. Pilih satu pemilik untuk kanal atau ganti nama alat milik plugin agar surface runtime tidak ambigu.
Slot plugin (kategori eksklusif)
Beberapa kategori bersifat eksklusif (hanya satu yang aktif pada satu waktu):
{
plugins: {
slots: {
memory: "memory-core", // or "none" to disable
contextEngine: "legacy", // or a plugin id
},
},
}
| Slot | Yang dikontrol | Default |
|---|---|---|
memory |
Plugin memori aktif | memory-core |
contextEngine |
Mesin konteks aktif | legacy (bawaan) |
Referensi CLI
openclaw plugins list # compact inventory
openclaw plugins list --enabled # only enabled plugins
openclaw plugins list --verbose # per-plugin detail lines
openclaw plugins list --json # machine-readable inventory
openclaw plugins search <query> # search ClawHub plugin catalog
openclaw plugins inspect <id> # static detail
openclaw plugins inspect <id> --runtime # registered hooks/tools/CLI/gateway methods
openclaw plugins inspect <id> --json # machine-readable
openclaw plugins inspect --all # fleet-wide table
openclaw plugins info <id> # inspect alias
openclaw plugins doctor # diagnostics
openclaw plugins registry # inspect persisted registry state
openclaw plugins registry --refresh # rebuild persisted registry
openclaw doctor --fix # repair plugin registry state
openclaw plugins install <package> # install from npm by default
openclaw plugins install clawhub:<pkg> # install from ClawHub only
openclaw plugins install npm:<pkg> # install from npm only
openclaw plugins install git:<repo> # install from git
openclaw plugins install git:<repo>@<ref> # install from git ref
openclaw plugins install <spec> --force # overwrite existing install
openclaw plugins install <path> # install from local path
openclaw plugins install -l <path> # link (no copy) for dev
openclaw plugins install <plugin> --marketplace <source>
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
openclaw plugins install <spec> --pin # record exact resolved npm spec
openclaw plugins install <spec> --dangerously-force-unsafe-install
openclaw plugins update <id-or-npm-spec> # update one plugin
openclaw plugins update <id-or-npm-spec> --dangerously-force-unsafe-install
openclaw plugins update --all # update all
openclaw plugins uninstall <id> # remove config and plugin index records
openclaw plugins uninstall <id> --keep-files
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json
# Verify runtime registrations after install.
openclaw plugins inspect <id> --runtime --json
# Run plugin-owned CLI commands directly from the OpenClaw root CLI.
openclaw <plugin-command> --help
openclaw plugins enable <id>
openclaw plugins disable <id>
Plugin bawaan dikirim bersama OpenClaw. Banyak yang diaktifkan secara default (misalnya penyedia model bawaan, penyedia ucapan bawaan, dan Plugin browser bawaan). Plugin bawaan lain masih memerlukan openclaw plugins enable <id>.
--force menimpa Plugin terpasang atau paket hook yang sudah ada di tempatnya. Gunakan openclaw plugins update <id-or-npm-spec> untuk peningkatan rutin Plugin npm yang dilacak. Ini tidak didukung dengan --link, yang menggunakan ulang jalur sumber alih-alih menyalin ke target pemasangan terkelola.
Ketika plugins.allow sudah ditetapkan, openclaw plugins install menambahkan id Plugin yang dipasang ke allowlist tersebut sebelum mengaktifkannya. Jika id Plugin yang sama ada di plugins.deny, pemasangan menghapus entri deny yang usang itu sehingga pemasangan eksplisit langsung dapat dimuat setelah restart.
OpenClaw mempertahankan registri Plugin lokal persisten sebagai model baca awal untuk inventaris Plugin, kepemilikan kontribusi, dan perencanaan startup. Alur pemasangan, pembaruan, pencopotan, pengaktifan, dan penonaktifan menyegarkan registri tersebut setelah mengubah status Plugin. File plugins/installs.json yang sama menyimpan metadata pemasangan tahan lama di installRecords tingkat atas dan metadata manifes yang dapat dibangun ulang di plugins. Jika registri hilang, usang, atau tidak valid, openclaw plugins registry --refresh membangun ulang tampilan manifesnya dari catatan pemasangan, kebijakan konfigurasi, dan metadata manifes/paket tanpa memuat modul runtime Plugin.
Dalam mode Nix (OPENCLAW_NIX_MODE=1), mutator siklus hidup Plugin dinonaktifkan. Kelola pilihan paket Plugin dan konfigurasi melalui sumber Nix untuk pemasangan tersebut; untuk nix-openclaw, mulai dengan Quick Start yang mengutamakan agent. openclaw plugins update <id-or-npm-spec> berlaku untuk pemasangan yang dilacak. Memberikan spesifikasi paket npm dengan dist-tag atau versi persis akan menyelesaikan nama paket kembali ke catatan Plugin yang dilacak dan mencatat spesifikasi baru untuk pembaruan mendatang. Memberikan nama paket tanpa versi memindahkan pemasangan yang dipin persis kembali ke lini rilis default registri. Jika Plugin npm yang terpasang sudah cocok dengan versi yang diselesaikan dan identitas artefak yang tercatat, OpenClaw melewati pembaruan tanpa mengunduh, memasang ulang, atau menulis ulang konfigurasi.
Ketika openclaw update berjalan pada kanal beta, catatan Plugin npm dan ClawHub lini default mencoba @beta terlebih dahulu dan kembali ke default/latest ketika tidak ada rilis beta Plugin. Versi persis dan tag eksplisit tetap dipin.
OpenClaw belum mengekspos kanal Plugin dukungan LTS atau bulanan. Pekerjaan lini dukungan bulanan yang direncanakan akan memerlukan tag npm dan ClawHub Plugin untuk mengikuti lini dukungan yang sama dengan paket inti, alih-alih diam-diam menggunakan latest.
--pin hanya untuk npm. Ini tidak didukung dengan --marketplace, karena pemasangan marketplace mempertahankan metadata sumber marketplace alih-alih spesifikasi npm.
--dangerously-force-unsafe-install adalah override darurat untuk positif palsu dari pemindai kode berbahaya bawaan. Ini memungkinkan pemasangan Plugin dan pembaruan Plugin berlanjut melewati temuan critical bawaan, tetapi tetap tidak melewati blok kebijakan before_install Plugin atau pemblokiran kegagalan pemindaian. Pemindaian pemasangan mengabaikan file dan direktori pengujian umum seperti tests/, __tests__/, *.test.*, dan *.spec.* agar tidak memblokir mock pengujian yang dipaketkan; entrypoint runtime Plugin yang dideklarasikan tetap dipindai meskipun menggunakan salah satu nama tersebut.
Flag CLI ini hanya berlaku untuk alur pemasangan/pembaruan Plugin. Pemasangan dependensi skill yang didukung Gateway menggunakan override permintaan dangerouslyForceUnsafeInstall yang sesuai, sedangkan openclaw skills install tetap menjadi alur unduh/pasang skill ClawHub yang terpisah.
Jika Plugin yang Anda terbitkan di ClawHub disembunyikan atau diblokir oleh pemindaian, buka dasbor ClawHub atau jalankan clawhub package rescan <name> untuk meminta ClawHub memeriksanya lagi. --dangerously-force-unsafe-install hanya memengaruhi pemasangan di mesin Anda sendiri; ini tidak meminta ClawHub memindai ulang Plugin atau membuat rilis yang diblokir menjadi publik.
Bundle yang kompatibel berpartisipasi dalam alur daftar/periksa/aktifkan/nonaktifkan Plugin yang sama. Dukungan runtime saat ini mencakup Skills bundle, command-skills Claude, default settings.json Claude, default .lsp.json Claude dan lspServers yang dideklarasikan manifes, command-skills Cursor, dan direktori hook Codex yang kompatibel.
openclaw plugins inspect <id> juga melaporkan kapabilitas bundle yang terdeteksi serta entri server MCP dan LSP yang didukung atau tidak didukung untuk Plugin berbasis bundle.
Sumber marketplace dapat berupa nama marketplace Claude yang dikenal dari ~/.claude/plugins/known_marketplaces.json, root marketplace lokal atau jalur marketplace.json, singkatan GitHub seperti owner/repo, URL repo GitHub, atau URL git. Untuk marketplace jarak jauh, entri Plugin harus tetap berada di dalam repo marketplace yang dikloning dan hanya menggunakan sumber jalur relatif.
Lihat referensi CLI openclaw plugins untuk detail lengkap.
Gambaran umum API Plugin
Plugin native mengekspor objek entri yang mengekspos register(api). Plugin lama mungkin masih menggunakan activate(api) sebagai alias lama, tetapi Plugin baru sebaiknya menggunakan register.
export default definePluginEntry({
id: "my-plugin",
name: "My Plugin",
register(api) {
api.registerProvider({
/* ... */
});
api.registerTool({
/* ... */
});
api.registerChannel({
/* ... */
});
},
});
OpenClaw memuat objek entri dan memanggil register(api) selama aktivasi Plugin. Loader masih kembali ke activate(api) untuk Plugin lama, tetapi Plugin bawaan dan Plugin eksternal baru sebaiknya memperlakukan register sebagai kontrak publik.
api.registrationMode memberi tahu Plugin mengapa entrinya sedang dimuat:
| Mode | Makna |
|---|---|
full |
Aktivasi runtime. Daftarkan tool, hook, layanan, perintah, rute, dan efek samping live lainnya. |
discovery |
Penemuan kapabilitas hanya-baca. Daftarkan penyedia dan metadata; kode entri Plugin tepercaya dapat dimuat, tetapi lewati efek samping live. |
setup-only |
Pemuatan metadata penyiapan kanal melalui entri penyiapan ringan. |
setup-runtime |
Pemuatan penyiapan kanal yang juga memerlukan entri runtime. |
cli-metadata |
Hanya pengumpulan metadata perintah CLI. |
Entri Plugin yang membuka soket, basis data, pekerja latar belakang, atau klien berumur panjang sebaiknya menjaga efek samping tersebut dengan api.registrationMode === "full". Muatan discovery di-cache terpisah dari muatan aktivasi dan tidak menggantikan registri Gateway yang berjalan. Discovery bersifat non-aktif, bukan bebas-impor: OpenClaw dapat mengevaluasi entri Plugin tepercaya atau modul Plugin kanal untuk membangun snapshot. Jaga level atas modul tetap ringan dan bebas efek samping, serta pindahkan klien jaringan, subprocess, listener, pembacaan kredensial, dan startup layanan ke balik jalur runtime penuh.
Metode registrasi umum:
| Metode | Yang didaftarkan |
|---|---|
registerProvider |
Penyedia model (LLM) |
registerChannel |
Kanal chat |
registerTool |
Tool agent |
registerHook / on(...) |
Hook siklus hidup |
registerSpeechProvider |
Text-to-speech / STT |
registerRealtimeTranscriptionProvider |
STT streaming |
registerRealtimeVoiceProvider |
Suara realtime dupleks |
registerMediaUnderstandingProvider |
Analisis gambar/audio |
registerImageGenerationProvider |
Pembuatan gambar |
registerMusicGenerationProvider |
Pembuatan musik |
registerVideoGenerationProvider |
Pembuatan video |
registerWebFetchProvider |
Penyedia fetch/scrape web |
registerWebSearchProvider |
Pencarian web |
registerHttpRoute |
Endpoint HTTP |
registerCommand / registerCli |
Perintah CLI |
registerContextEngine |
Mesin konteks |
registerService |
Layanan latar belakang |
Perilaku guard hook untuk hook siklus hidup bertipe:
before_tool_call:{ block: true }bersifat terminal; handler berprioritas lebih rendah dilewati.before_tool_call:{ block: false }adalah no-op dan tidak menghapus block sebelumnya.before_install:{ block: true }bersifat terminal; handler berprioritas lebih rendah dilewati.before_install:{ block: false }adalah no-op dan tidak menghapus block sebelumnya.message_sending:{ cancel: true }bersifat terminal; handler berprioritas lebih rendah dilewati.message_sending:{ cancel: false }adalah no-op dan tidak menghapus cancel sebelumnya.
Server aplikasi native Codex menjalankan peristiwa alat native Codex melalui bridge kembali ke permukaan hook ini. Plugin dapat memblokir alat native Codex melalui before_tool_call, mengamati hasil melalui after_tool_call, dan berpartisipasi dalam persetujuan PermissionRequest Codex. Bridge belum menulis ulang argumen alat native Codex. Batas dukungan runtime Codex yang tepat berada di kontrak dukungan harness Codex v1.
Untuk perilaku hook bertipe penuh, lihat ikhtisar SDK.
Terkait
- Membangun Plugin - buat Plugin Anda sendiri
- Bundel Plugin - kompatibilitas bundel Codex/Claude/Cursor
- Manifes Plugin - skema manifes
- Mendaftarkan alat - tambahkan alat agen dalam Plugin
- Internal Plugin - model kapabilitas dan pipeline pemuatan
- Plugin komunitas - daftar pihak ketiga