From 751ffc91ac7c0fe1849ef3baffcfd3fe471e0e4c Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Fri, 24 Apr 2026 15:23:57 +0000 Subject: [PATCH] chore(i18n): refresh id translations --- docs/id/cli/plugins.md | 218 +++++---------- docs/id/concepts/model-providers.md | 409 ++++++++++++++-------------- docs/id/pi.md | 294 ++++++++++---------- docs/id/providers/deepseek.md | 30 +- docs/id/tools/plugin.md | 233 +++++++++------- 5 files changed, 568 insertions(+), 616 deletions(-) diff --git a/docs/id/cli/plugins.md b/docs/id/cli/plugins.md index ad26f2e3f..5cd742650 100644 --- a/docs/id/cli/plugins.md +++ b/docs/id/cli/plugins.md @@ -1,28 +1,28 @@ --- read_when: - - Anda ingin memasang atau mengelola Plugin Gateway atau bundle yang kompatibel + - Anda ingin menginstal atau mengelola Plugin Gateway atau bundel yang kompatibel - Anda ingin men-debug kegagalan pemuatan Plugin -summary: Referensi CLI untuk `openclaw plugins` (daftar, instal, marketplace, uninstall, aktifkan/nonaktifkan, doctor) +summary: Referensi CLI untuk `openclaw plugins` (list, install, marketplace, uninstall, enable/nonaktifkan, doctor) title: Plugin x-i18n: - generated_at: "2026-04-24T09:02:29Z" + generated_at: "2026-04-24T15:22:12Z" model: gpt-5.4 provider: openai - source_hash: 35ef8f54c64ea52d7618a0ef8b90d3d75841a27ae4cd689b4ca8e0cfdcddc408 + source_hash: bc693d5e3bc49057e1a108ba65a4dcb3bb662c00229e6fa38a0335afba8240e5 source_path: cli/plugins.md workflow: 15 --- # `openclaw plugins` -Kelola Plugin Gateway, paket hook, dan bundle yang kompatibel. +Kelola Plugin Gateway, paket hook, dan bundel yang kompatibel. Terkait: - Sistem Plugin: [Plugin](/id/tools/plugin) -- Kompatibilitas bundle: [Bundle Plugin](/id/plugins/bundles) -- Manifest + skema Plugin: [Manifest Plugin](/id/plugins/manifest) -- Hardening keamanan: [Keamanan](/id/gateway/security) +- Kompatibilitas bundel: [Bundel Plugin](/id/plugins/bundles) +- Manifes + skema Plugin: [Manifes Plugin](/id/plugins/manifest) +- Penguatan keamanan: [Keamanan](/id/gateway/security) ## Perintah @@ -46,25 +46,19 @@ openclaw plugins marketplace list openclaw plugins marketplace list --json ``` -Plugin bawaan dikirim bersama OpenClaw. Beberapa diaktifkan secara default (misalnya -provider model bawaan, provider speech bawaan, dan Plugin browser -bawaan); yang lain memerlukan `plugins enable`. +Plugin bawaan disertakan bersama OpenClaw. Sebagian diaktifkan secara default (misalnya penyedia model bawaan, penyedia ucapan bawaan, dan plugin browser bawaan); yang lain memerlukan `plugins enable`. -Plugin native OpenClaw harus menyertakan `openclaw.plugin.json` dengan JSON -Schema inline (`configSchema`, meskipun kosong). Bundle yang kompatibel menggunakan -manifest bundle mereka sendiri. +Plugin OpenClaw native harus menyertakan `openclaw.plugin.json` dengan JSON Schema inline (`configSchema`, meskipun kosong). Bundel yang kompatibel menggunakan manifes bundelnya sendiri. -`plugins list` menampilkan `Format: openclaw` atau `Format: bundle`. Output -verbose list/info juga menampilkan subtipe bundle (`codex`, `claude`, atau `cursor`) ditambah -kapabilitas bundle yang terdeteksi. +`plugins list` menampilkan `Format: openclaw` atau `Format: bundle`. Keluaran list/info verbose juga menampilkan subtipe bundel (`codex`, `claude`, atau `cursor`) beserta kapabilitas bundel yang terdeteksi. ### Instal ```bash -openclaw plugins install # ClawHub dulu, lalu npm +openclaw plugins install # ClawHub terlebih dahulu, lalu npm openclaw plugins install clawhub: # hanya ClawHub openclaw plugins install --force # timpa instalasi yang ada -openclaw plugins install --pin # pin versi +openclaw plugins install --pin # sematkan versi openclaw plugins install --dangerously-force-unsafe-install openclaw plugins install # path lokal openclaw plugins install @ # marketplace @@ -72,88 +66,57 @@ openclaw plugins install --marketplace # marketplace (eksplisit openclaw plugins install --marketplace https://github.com// ``` -Nama package polos diperiksa ke ClawHub terlebih dahulu, lalu npm. Catatan keamanan: -perlakukan pemasangan Plugin seperti menjalankan kode. Utamakan versi yang dipin. +Nama paket polos diperiksa di ClawHub terlebih dahulu, lalu npm. Catatan keamanan: perlakukan instalasi plugin seperti menjalankan kode. Sebaiknya gunakan versi yang disematkan. -Jika section `plugins` Anda didukung oleh `$include` file tunggal, `plugins install/update/enable/disable/uninstall` menulis ke file yang di-include tersebut dan membiarkan `openclaw.json` tidak tersentuh. Include root, array include, dan include dengan override saudara gagal tertutup alih-alih diratakan. Lihat [Include config](/id/gateway/configuration) untuk bentuk yang didukung. +Jika bagian `plugins` Anda didukung oleh satu-file `$include`, `plugins install/update/enable/disable/uninstall` akan menulis ke file yang di-include tersebut dan membiarkan `openclaw.json` tetap tidak berubah. Include root, array include, dan include dengan override saudara akan gagal tertutup alih-alih diratakan. Lihat [Config includes](/id/gateway/configuration) untuk bentuk yang didukung. -Jika konfigurasi tidak valid, `plugins install` biasanya gagal tertutup dan menyuruh Anda -menjalankan `openclaw doctor --fix` terlebih dahulu. Satu-satunya pengecualian yang didokumentasikan adalah jalur pemulihan Plugin bawaan yang sempit -untuk Plugin yang secara eksplisit memilih -`openclaw.install.allowInvalidConfigRecovery`. +Jika config tidak valid, `plugins install` biasanya gagal tertutup dan memberi tahu Anda untuk menjalankan `openclaw doctor --fix` terlebih dahulu. Satu-satunya pengecualian yang didokumentasikan adalah jalur pemulihan plugin bawaan yang sempit untuk plugin yang secara eksplisit ikut serta dalam `openclaw.install.allowInvalidConfigRecovery`. -`--force` menggunakan kembali target instalasi yang ada dan menimpa Plugin -atau paket hook yang sudah terpasang di tempat. Gunakan saat Anda sengaja memasang ulang -id yang sama dari path lokal baru, arsip, package ClawHub, atau artefak npm. -Untuk upgrade rutin Plugin npm yang sudah dilacak, utamakan -`openclaw plugins update `. +`--force` menggunakan kembali target instalasi yang ada dan menimpa plugin atau paket hook yang sudah terinstal langsung di tempatnya. Gunakan saat Anda memang sengaja menginstal ulang id yang sama dari path lokal, arsip, paket ClawHub, atau artefak npm yang baru. Untuk peningkatan rutin plugin npm yang sudah dilacak, sebaiknya gunakan `openclaw plugins update `. -Jika Anda menjalankan `plugins install` untuk id Plugin yang sudah terpasang, OpenClaw -berhenti dan mengarahkan Anda ke `plugins update ` untuk upgrade normal, -atau ke `plugins install --force` saat Anda benar-benar ingin menimpa -instalasi saat ini dari sumber berbeda. +Jika Anda menjalankan `plugins install` untuk id plugin yang sudah terinstal, OpenClaw akan berhenti dan mengarahkan Anda ke `plugins update ` untuk peningkatan normal, atau ke `plugins install --force` bila Anda benar-benar ingin menimpa instalasi saat ini dari sumber yang berbeda. -`--pin` hanya berlaku untuk pemasangan npm. Ini tidak didukung dengan `--marketplace`, -karena pemasangan marketplace menyimpan metadata sumber marketplace, bukan -spec npm. +`--pin` hanya berlaku untuk instalasi npm. Opsi ini tidak didukung bersama `--marketplace`, karena instalasi marketplace menyimpan metadata sumber marketplace, bukan spesifikasi npm. -`--dangerously-force-unsafe-install` adalah opsi break-glass untuk false positive -dalam pemindai kode berbahaya bawaan. Opsi ini memungkinkan pemasangan tetap berlanjut bahkan -ketika pemindai bawaan melaporkan temuan `critical`, tetapi **tidak** -melewati blok kebijakan hook `before_install` Plugin dan **tidak** melewati kegagalan pemindaian. +`--dangerously-force-unsafe-install` adalah opsi darurat untuk false positive pada pemindai kode berbahaya bawaan. Opsi ini memungkinkan instalasi tetap berlanjut bahkan saat pemindai bawaan melaporkan temuan `critical`, tetapi **tidak** melewati blok kebijakan hook `before_install` plugin dan **tidak** melewati kegagalan pemindaian. -Flag CLI ini berlaku untuk alur install/update Plugin. Pemasangan dependensi Skills -yang didukung gateway menggunakan override permintaan `dangerouslyForceUnsafeInstall` yang sesuai, sedangkan `openclaw skills install` tetap merupakan alur unduh/pasang Skills ClawHub -yang terpisah. +Flag CLI ini berlaku untuk alur install/update plugin. Instalasi dependensi skill yang didukung Gateway menggunakan override permintaan `dangerouslyForceUnsafeInstall` yang sesuai, sedangkan `openclaw skills install` tetap merupakan alur unduh/install skill ClawHub yang terpisah. -`plugins install` juga merupakan permukaan instalasi untuk paket hook yang mengekspos -`openclaw.hooks` di `package.json`. Gunakan `openclaw hooks` untuk visibilitas hook -yang difilter dan pengaktifan per-hook, bukan untuk pemasangan package. +`plugins install` juga merupakan permukaan instalasi untuk paket hook yang mengekspos `openclaw.hooks` di `package.json`. Gunakan `openclaw hooks` untuk visibilitas hook yang difilter dan pengaktifan per hook, bukan untuk instalasi paket. -Spec npm bersifat **hanya registry** (nama package + opsional **versi persis** atau -**dist-tag**). Spec git/URL/file dan rentang semver ditolak. Pemasangan dependensi -berjalan dengan `--ignore-scripts` demi keamanan. +Spesifikasi npm bersifat **hanya registry** (nama paket + **versi exact** opsional atau **dist-tag**). Spesifikasi git/URL/file dan rentang semver akan ditolak. Instalasi dependensi dijalankan dengan `--ignore-scripts` demi keamanan. -Spec polos dan `@latest` tetap berada di jalur stabil. Jika npm menyelesaikan salah -satunya ke prerelease, OpenClaw berhenti dan meminta Anda untuk memilih secara eksplisit dengan -tag prerelease seperti `@beta`/`@rc` atau versi prerelease persis seperti -`@1.2.3-beta.4`. +Spesifikasi polos dan `@latest` tetap mengikuti jalur stabil. Jika npm menyelesaikan salah satunya ke prerelease, OpenClaw akan berhenti dan meminta Anda untuk secara eksplisit ikut serta dengan tag prerelease seperti `@beta`/`@rc` atau versi prerelease exact seperti `@1.2.3-beta.4`. -Jika spec install polos cocok dengan id Plugin bawaan (misalnya `diffs`), OpenClaw -memasang Plugin bawaan secara langsung. Untuk memasang package npm dengan nama -yang sama, gunakan spec scoped eksplisit (misalnya `@scope/diffs`). +Jika spesifikasi instalasi polos cocok dengan id plugin bawaan (misalnya `diffs`), OpenClaw akan langsung menginstal plugin bawaan tersebut. Untuk menginstal paket npm dengan nama yang sama, gunakan spesifikasi scoped yang eksplisit (misalnya `@scope/diffs`). Arsip yang didukung: `.zip`, `.tgz`, `.tar.gz`, `.tar`. -Pemasangan marketplace Claude juga didukung. +Instalasi marketplace Claude juga didukung. -Pemasangan ClawHub menggunakan locator eksplisit `clawhub:`: +Instalasi ClawHub menggunakan locator `clawhub:` yang eksplisit: ```bash openclaw plugins install clawhub:openclaw-codex-app-server openclaw plugins install clawhub:openclaw-codex-app-server@1.2.3 ``` -OpenClaw sekarang juga memprioritaskan ClawHub untuk spec Plugin aman-npm polos. OpenClaw hanya -fallback ke npm jika ClawHub tidak memiliki package atau versi tersebut: +OpenClaw kini juga lebih mengutamakan ClawHub untuk spesifikasi plugin aman-npm yang polos. OpenClaw hanya kembali ke npm jika ClawHub tidak memiliki paket atau versi tersebut: ```bash openclaw plugins install openclaw-codex-app-server ``` -OpenClaw mengunduh arsip package dari ClawHub, memeriksa kompatibilitas -API Plugin / gateway minimum yang diiklankan, lalu memasangnya melalui jalur -arsip normal. Instalasi yang tercatat mempertahankan metadata sumber ClawHub untuk pembaruan berikutnya. +OpenClaw mengunduh arsip paket dari ClawHub, memeriksa kompatibilitas plugin API / gateway minimum yang diiklankan, lalu menginstalnya melalui jalur arsip normal. Instalasi yang tercatat menyimpan metadata sumber ClawHub untuk pembaruan berikutnya. -Gunakan singkatan `plugin@marketplace` ketika nama marketplace ada di -cache registry lokal Claude di `~/.claude/plugins/known_marketplaces.json`: +Gunakan singkatan `plugin@marketplace` saat nama marketplace ada di cache registry lokal Claude di `~/.claude/plugins/known_marketplaces.json`: ```bash openclaw plugins marketplace list openclaw plugins install @ ``` -Gunakan `--marketplace` saat Anda ingin memberikan sumber marketplace secara eksplisit: +Gunakan `--marketplace` saat Anda ingin meneruskan sumber marketplace secara eksplisit: ```bash openclaw plugins install --marketplace @@ -170,24 +133,18 @@ Sumber marketplace dapat berupa: - URL repo GitHub seperti `https://github.com/owner/repo` - URL git -Untuk marketplace jarak jauh yang dimuat dari GitHub atau git, entri Plugin harus tetap -berada di dalam repo marketplace yang di-clone. OpenClaw menerima sumber path relatif dari -repo tersebut dan menolak HTTP(S), path absolut, git, GitHub, serta sumber Plugin non-path lain dari manifest jarak jauh. +Untuk marketplace jarak jauh yang dimuat dari GitHub atau git, entri plugin harus tetap berada di dalam repo marketplace yang di-clone. OpenClaw menerima sumber path relatif dari repo tersebut dan menolak HTTP(S), absolute-path, git, GitHub, dan sumber plugin non-path lain dari manifes jarak jauh. -Untuk path dan arsip lokal, OpenClaw mendeteksi otomatis: +Untuk path lokal dan arsip, OpenClaw mendeteksi secara otomatis: -- Plugin native OpenClaw (`openclaw.plugin.json`) -- bundle kompatibel Codex (`.codex-plugin/plugin.json`) -- bundle kompatibel Claude (`.claude-plugin/plugin.json` atau tata letak komponen Claude default) -- bundle kompatibel Cursor (`.cursor-plugin/plugin.json`) +- plugin OpenClaw native (`openclaw.plugin.json`) +- bundel kompatibel Codex (`.codex-plugin/plugin.json`) +- bundel kompatibel Claude (`.claude-plugin/plugin.json` atau tata letak komponen Claude default) +- bundel kompatibel Cursor (`.cursor-plugin/plugin.json`) -Bundle yang kompatibel dipasang ke root Plugin normal dan ikut serta dalam -alur list/info/enable/disable yang sama. Saat ini, Skills bundle, command-Skills Claude, default `settings.json` Claude, default Claude `.lsp.json` / -`lspServers` yang dideklarasikan manifest, command-Skills Cursor, dan direktori hook Codex -yang kompatibel didukung; kapabilitas bundle terdeteksi lainnya -ditampilkan dalam diagnostik/info tetapi belum dihubungkan ke eksekusi runtime. +Bundel yang kompatibel diinstal ke root plugin normal dan mengikuti alur list/info/enable/disable yang sama. Saat ini, Skills bundel, command-skills Claude, default Claude `settings.json`, default Claude `.lsp.json` / `lspServers` yang dideklarasikan di manifes, command-skills Cursor, dan direktori hook Codex yang kompatibel didukung; kapabilitas bundel lain yang terdeteksi ditampilkan dalam diagnostik/info tetapi belum terhubung ke eksekusi runtime. -### Daftar +### List ```bash openclaw plugins list @@ -196,24 +153,27 @@ openclaw plugins list --verbose openclaw plugins list --json ``` -Gunakan `--enabled` untuk menampilkan hanya Plugin yang dimuat. Gunakan `--verbose` untuk beralih dari -tampilan tabel ke baris detail per-Plugin dengan metadata sumber/asal/versi/aktivasi. -Gunakan `--json` untuk inventaris yang dapat dibaca mesin ditambah diagnostik -registry. +Gunakan `--enabled` untuk hanya menampilkan plugin yang dimuat. Gunakan `--verbose` untuk beralih dari tampilan tabel ke baris detail per plugin dengan metadata source/origin/version/activation. Gunakan `--json` untuk inventaris yang dapat dibaca mesin beserta diagnostik registry. -Gunakan `--link` agar tidak menyalin direktori lokal (menambahkannya ke `plugins.load.paths`): +`plugins list` menjalankan discovery dari environment CLI dan config saat ini. Ini berguna untuk memeriksa apakah suatu plugin diaktifkan/dapat dimuat, tetapi ini bukan probe runtime langsung dari proses Gateway yang sudah berjalan. Setelah mengubah kode plugin, pengaktifan, kebijakan hook, atau `plugins.load.paths`, mulai ulang Gateway yang melayani channel tersebut sebelum mengharapkan kode `register(api)` atau hook baru berjalan. Untuk deployment jarak jauh/container, pastikan Anda memulai ulang child `openclaw gateway run` yang sebenarnya, bukan hanya proses pembungkus. + +Untuk debugging hook runtime: + +- `openclaw plugins inspect --json` menampilkan hook yang terdaftar dan diagnostik dari proses inspeksi dengan modul dimuat. +- `openclaw gateway status --deep --require-rpc` mengonfirmasi Gateway yang dapat dijangkau, petunjuk service/process, path config, dan kesehatan RPC. +- Hook percakapan non-bawaan (`llm_input`, `llm_output`, `agent_end`) memerlukan `plugins.entries..hooks.allowConversationAccess=true`. + +Gunakan `--link` agar direktori lokal tidak disalin (menambahkan ke `plugins.load.paths`): ```bash openclaw plugins install -l ./my-plugin ``` -`--force` tidak didukung dengan `--link` karena instalasi tertaut menggunakan kembali -path sumber alih-alih menyalin ke target instalasi terkelola. +`--force` tidak didukung bersama `--link` karena instalasi tertaut menggunakan kembali path sumber alih-alih menyalin ke target instalasi terkelola. -Gunakan `--pin` pada pemasangan npm untuk menyimpan spec persis yang diselesaikan (`name@version`) di -`plugins.installs` sambil mempertahankan perilaku default tanpa pin. +Gunakan `--pin` pada instalasi npm untuk menyimpan spesifikasi exact yang telah diselesaikan (`name@version`) di `plugins.installs` sambil mempertahankan perilaku default tanpa penyematan. -### Uninstall +### Copot instalasi ```bash openclaw plugins uninstall @@ -221,17 +181,13 @@ openclaw plugins uninstall --dry-run openclaw plugins uninstall --keep-files ``` -`uninstall` menghapus catatan Plugin dari `plugins.entries`, `plugins.installs`, -allowlist Plugin, dan entri `plugins.load.paths` yang tertaut jika berlaku. -Untuk Plugin Active Memory, slot memori direset ke `memory-core`. +`uninstall` menghapus catatan plugin dari `plugins.entries`, `plugins.installs`, allowlist plugin, dan entri `plugins.load.paths` yang tertaut bila berlaku. Untuk plugin Active Memory, slot memori direset ke `memory-core`. -Secara default, uninstall juga menghapus direktori instalasi Plugin di bawah -root Plugin state-dir yang aktif. Gunakan -`--keep-files` untuk mempertahankan file di disk. +Secara default, uninstall juga menghapus direktori instalasi plugin di bawah root plugin state-dir yang aktif. Gunakan `--keep-files` untuk mempertahankan file di disk. `--keep-config` didukung sebagai alias usang untuk `--keep-files`. -### Update +### Pembaruan ```bash openclaw plugins update @@ -241,35 +197,19 @@ openclaw plugins update @openclaw/voice-call@beta openclaw plugins update openclaw-codex-app-server --dangerously-force-unsafe-install ``` -Pembaruan berlaku untuk instalasi terlacak di `plugins.installs` dan instalasi paket hook terlacak di `hooks.internal.installs`. +Pembaruan diterapkan pada instalasi yang dilacak di `plugins.installs` dan instalasi hook-pack yang dilacak di `hooks.internal.installs`. -Saat Anda memberikan id Plugin, OpenClaw menggunakan kembali spec instalasi yang tercatat untuk -Plugin tersebut. Ini berarti dist-tag yang sebelumnya disimpan seperti `@beta` dan versi persis yang dipin -tetap digunakan pada eksekusi `update ` berikutnya. +Saat Anda memberikan id plugin, OpenClaw menggunakan kembali spesifikasi instalasi yang tercatat untuk plugin tersebut. Artinya, dist-tag yang sebelumnya disimpan seperti `@beta` dan versi exact yang disematkan akan terus digunakan pada eksekusi `update ` berikutnya. -Untuk pemasangan npm, Anda juga dapat memberikan spec package npm eksplisit dengan dist-tag -atau versi persis. OpenClaw menyelesaikan nama package tersebut kembali ke catatan Plugin yang dilacak, -memperbarui Plugin yang terpasang, dan mencatat spec npm baru untuk pembaruan berbasis id di masa depan. +Untuk instalasi npm, Anda juga dapat memberikan spesifikasi paket npm yang eksplisit dengan dist-tag atau versi exact. OpenClaw menyelesaikan nama paket itu kembali ke catatan plugin yang dilacak, memperbarui plugin yang terinstal tersebut, dan mencatat spesifikasi npm baru untuk pembaruan berbasis id di masa mendatang. -Memberikan nama package npm tanpa versi atau tag juga akan diselesaikan kembali ke -catatan Plugin yang dilacak. Gunakan ini saat sebuah Plugin dipin ke versi persis dan -Anda ingin memindahkannya kembali ke jalur rilis default registry. +Meneruskan nama paket npm tanpa versi atau tag juga akan diselesaikan kembali ke catatan plugin yang dilacak. Gunakan ini saat sebuah plugin disematkan ke versi exact dan Anda ingin memindahkannya kembali ke jalur rilis default registry. -Sebelum pembaruan npm langsung, OpenClaw memeriksa versi package terpasang terhadap -metadata registry npm. Jika versi terpasang dan identitas artefak yang tercatat -sudah cocok dengan target yang diselesaikan, pembaruan dilewati tanpa -mengunduh, memasang ulang, atau menulis ulang `openclaw.json`. +Sebelum pembaruan npm langsung, OpenClaw memeriksa versi paket yang terinstal terhadap metadata registry npm. Jika versi yang terinstal dan identitas artefak yang tercatat sudah cocok dengan target yang diselesaikan, pembaruan akan dilewati tanpa mengunduh, menginstal ulang, atau menulis ulang `openclaw.json`. -Saat hash integritas yang disimpan ada dan hash artefak yang diambil berubah, -OpenClaw memperlakukannya sebagai drift artefak npm. Perintah interaktif -`openclaw plugins update` mencetak hash yang diharapkan dan aktual lalu meminta -konfirmasi sebelum melanjutkan. Pembantu pembaruan non-interaktif gagal tertutup -kecuali pemanggil memberikan kebijakan kelanjutan eksplisit. +Saat hash integritas yang tersimpan ada dan hash artefak yang diambil berubah, OpenClaw memperlakukan hal itu sebagai drift artefak npm. Perintah interaktif `openclaw plugins update` mencetak hash yang diharapkan dan yang sebenarnya lalu meminta konfirmasi sebelum melanjutkan. Helper pembaruan non-interaktif gagal tertutup kecuali pemanggil menyediakan kebijakan kelanjutan yang eksplisit. -`--dangerously-force-unsafe-install` juga tersedia pada `plugins update` sebagai -override break-glass untuk false positive pemindaian kode berbahaya bawaan selama -pembaruan Plugin. Ini tetap tidak melewati blok kebijakan `before_install` Plugin -atau pemblokiran kegagalan pemindaian, dan hanya berlaku untuk pembaruan Plugin, bukan pembaruan paket hook. +`--dangerously-force-unsafe-install` juga tersedia pada `plugins update` sebagai override darurat untuk false positive pemindaian kode berbahaya bawaan selama pembaruan plugin. Opsi ini tetap tidak melewati blok kebijakan `before_install` plugin atau pemblokiran kegagalan pemindaian, dan hanya berlaku untuk pembaruan plugin, bukan pembaruan hook-pack. ### Inspect @@ -278,25 +218,20 @@ openclaw plugins inspect openclaw plugins inspect --json ``` -Introspeksi mendalam untuk satu Plugin. Menampilkan identitas, status muat, sumber, -kapabilitas terdaftar, hook, alat, perintah, layanan, metode gateway, -rute HTTP, flag kebijakan, diagnostik, metadata instalasi, kapabilitas bundle, -dan dukungan MCP atau LSP server apa pun yang terdeteksi. +Introspeksi mendalam untuk satu plugin. Menampilkan identitas, status muat, sumber, kapabilitas yang terdaftar, hook, tool, perintah, layanan, metode gateway, rute HTTP, flag kebijakan, diagnostik, metadata instalasi, kapabilitas bundel, serta dukungan server MCP atau LSP yang terdeteksi. -Setiap Plugin diklasifikasikan berdasarkan apa yang benar-benar didaftarkannya saat runtime: +Setiap plugin diklasifikasikan berdasarkan apa yang benar-benar didaftarkannya saat runtime: -- **plain-capability** — satu jenis kapabilitas (misalnya Plugin khusus provider) -- **hybrid-capability** — beberapa jenis kapabilitas (misalnya teks + speech + gambar) +- **plain-capability** — satu jenis kapabilitas (misalnya plugin khusus provider) +- **hybrid-capability** — beberapa jenis kapabilitas (misalnya teks + ucapan + gambar) - **hook-only** — hanya hook, tanpa kapabilitas atau permukaan -- **non-capability** — alat/perintah/layanan tetapi tanpa kapabilitas +- **non-capability** — tool/perintah/layanan tetapi tanpa kapabilitas Lihat [Bentuk Plugin](/id/plugins/architecture#plugin-shapes) untuk informasi lebih lanjut tentang model kapabilitas. -Flag `--json` mengeluarkan laporan yang dapat dibaca mesin dan cocok untuk scripting serta -audit. +Flag `--json` menghasilkan laporan yang dapat dibaca mesin dan cocok untuk scripting serta audit. -`inspect --all` merender tabel seluruh armada dengan kolom bentuk, jenis kapabilitas, -pemberitahuan kompatibilitas, kapabilitas bundle, dan ringkasan hook. +`inspect --all` merender tabel seluruh armada dengan bentuk, jenis kapabilitas, pemberitahuan kompatibilitas, kapabilitas bundel, dan kolom ringkasan hook. `info` adalah alias untuk `inspect`. @@ -306,13 +241,9 @@ pemberitahuan kompatibilitas, kapabilitas bundle, dan ringkasan hook. openclaw plugins doctor ``` -`doctor` melaporkan error pemuatan Plugin, diagnostik manifest/discovery, dan -pemberitahuan kompatibilitas. Ketika semuanya bersih, output-nya adalah `No plugin issues -detected.` +`doctor` melaporkan kesalahan pemuatan plugin, diagnostik manifes/discovery, dan pemberitahuan kompatibilitas. Saat semuanya bersih, perintah ini mencetak `Tidak ada masalah plugin yang terdeteksi.` -Untuk kegagalan bentuk modul seperti ekspor `register`/`activate` yang hilang, jalankan ulang -dengan `OPENCLAW_PLUGIN_LOAD_DEBUG=1` untuk menyertakan ringkasan bentuk ekspor ringkas di -output diagnostik. +Untuk kegagalan bentuk modul seperti ekspor `register`/`activate` yang hilang, jalankan ulang dengan `OPENCLAW_PLUGIN_LOAD_DEBUG=1` untuk menyertakan ringkasan bentuk ekspor yang ringkas dalam keluaran diagnostik. ### Marketplace @@ -321,13 +252,10 @@ openclaw plugins marketplace list openclaw plugins marketplace list --json ``` -Daftar marketplace menerima path marketplace lokal, path `marketplace.json`, singkatan -GitHub seperti `owner/repo`, URL repo GitHub, atau URL git. `--json` -mencetak label sumber yang diselesaikan plus manifest marketplace yang di-parse dan -entri Plugin. +Daftar marketplace menerima path marketplace lokal, path `marketplace.json`, singkatan GitHub seperti `owner/repo`, URL repo GitHub, atau URL git. `--json` mencetak label sumber yang diselesaikan beserta manifes marketplace yang diurai dan entri plugin. ## Terkait - [Referensi CLI](/id/cli) -- [Membangun Plugin](/id/plugins/building-plugins) +- [Membangun plugin](/id/plugins/building-plugins) - [Plugin komunitas](/id/plugins/community) diff --git a/docs/id/concepts/model-providers.md b/docs/id/concepts/model-providers.md index 286b0b41d..cb90d43d3 100644 --- a/docs/id/concepts/model-providers.md +++ b/docs/id/concepts/model-providers.md @@ -1,90 +1,88 @@ --- read_when: - - Anda memerlukan referensi penyiapan model per provider - - Anda menginginkan contoh konfigurasi atau perintah onboarding CLI untuk provider model -summary: Ikhtisar provider model dengan contoh konfigurasi + alur CLI -title: Provider model + - Anda memerlukan referensi penyiapan model per penyedia + - Anda menginginkan contoh konfigurasi atau perintah onboarding CLI untuk penyedia model +summary: Ikhtisar penyedia model dengan contoh konfigurasi + alur CLI +title: Penyedia model x-i18n: - generated_at: "2026-04-24T09:04:38Z" + generated_at: "2026-04-24T15:22:17Z" model: gpt-5.4 provider: openai - source_hash: ac9bf48897446576d8bc339b340295691741a589863bb57b379c17a5519bffd7 + source_hash: 79258cb26fae7926c65b6fe0db938c7b5736a540b33bc24c1fad5ad706ac8204 source_path: concepts/model-providers.md workflow: 15 --- -Halaman ini membahas **provider LLM/model** (bukan kanal chat seperti WhatsApp/Telegram). +Halaman ini membahas **penyedia LLM/model** (bukan channel chat seperti WhatsApp/Telegram). Untuk aturan pemilihan model, lihat [/concepts/models](/id/concepts/models). ## Aturan cepat - Referensi model menggunakan `provider/model` (contoh: `opencode/claude-opus-4-6`). -- `agents.defaults.models` bertindak sebagai allowlist jika diatur. +- `agents.defaults.models` berfungsi sebagai allowlist saat disetel. - Pembantu CLI: `openclaw onboard`, `openclaw models list`, `openclaw models set `. - `models.providers.*.models[].contextWindow` adalah metadata model native; `contextTokens` adalah batas runtime efektif. -- Aturan fallback, probe cooldown, dan persistensi override sesi: [Failover model](/id/concepts/model-failover). -- Rute keluarga OpenAI bersifat spesifik prefix: `openai/` menggunakan provider API key OpenAI langsung di Pi, `openai-codex/` menggunakan OAuth Codex di Pi, dan `openai/` plus `agents.defaults.embeddedHarness.runtime: "codex"` menggunakan harness app-server Codex native. Lihat [OpenAI](/id/providers/openai) - dan [Codex harness](/id/plugins/codex-harness). -- Plugin auto-enable mengikuti batas yang sama: `openai-codex/` milik - Plugin OpenAI, sedangkan Plugin Codex diaktifkan oleh - `embeddedHarness.runtime: "codex"` atau referensi legacy `codex/`. +- Aturan fallback, probe cooldown, dan persistensi override sesi: [Model failover](/id/concepts/model-failover). +- Rute keluarga OpenAI bersifat spesifik-prefiks: `openai/` menggunakan penyedia kunci API OpenAI langsung di PI, `openai-codex/` menggunakan OAuth Codex di PI, dan `openai/` plus `agents.defaults.embeddedHarness.runtime: "codex"` menggunakan harness app-server Codex native. Lihat [OpenAI](/id/providers/openai) dan [Codex harness](/id/plugins/codex-harness). +- Auto-enable Plugin mengikuti batas yang sama: `openai-codex/` milik Plugin OpenAI, sedangkan Plugin Codex diaktifkan oleh `embeddedHarness.runtime: "codex"` atau referensi lama `codex/`. - GPT-5.5 saat ini tersedia melalui rute subscription/OAuth: - `openai-codex/gpt-5.5` di Pi atau `openai/gpt-5.5` dengan harness app-server - Codex. Rute API key langsung untuk `openai/gpt-5.5` didukung setelah - OpenAI mengaktifkan GPT-5.5 pada API publik; sampai saat itu gunakan model yang + `openai-codex/gpt-5.5` di PI atau `openai/gpt-5.5` dengan harness app-server + Codex. Rute kunci API langsung untuk `openai/gpt-5.5` didukung setelah + OpenAI mengaktifkan GPT-5.5 di API publik; sampai saat itu gunakan model yang diaktifkan API seperti `openai/gpt-5.4` untuk penyiapan `OPENAI_API_KEY`. -## Perilaku provider yang dimiliki Plugin +## Perilaku penyedia yang dimiliki Plugin -Sebagian besar logika khusus provider berada di Plugin provider (`registerProvider(...)`) sementara OpenClaw mempertahankan loop inferensi generik. Plugin memiliki onboarding, katalog model, pemetaan env-var auth, normalisasi transport/konfigurasi, pembersihan skema alat, klasifikasi failover, refresh OAuth, pelaporan penggunaan, profil thinking/reasoning, dan lainnya. +Sebagian besar logika khusus penyedia berada di Plugin penyedia (`registerProvider(...)`) sementara OpenClaw mempertahankan loop inferensi generik. Plugin menangani onboarding, katalog model, pemetaan env var autentikasi, normalisasi transport/konfigurasi, pembersihan skema tool, klasifikasi failover, refresh OAuth, pelaporan penggunaan, profil thinking/reasoning, dan lainnya. -Daftar lengkap hook provider-SDK dan contoh Plugin bawaan ada di [Plugin provider](/id/plugins/sdk-provider-plugins). Provider yang memerlukan executor permintaan kustom sepenuhnya adalah permukaan ekstensi terpisah yang lebih dalam. +Daftar lengkap hook SDK penyedia dan contoh Plugin bawaan ada di [Provider plugins](/id/plugins/sdk-provider-plugins). Penyedia yang memerlukan eksekutor permintaan kustom sepenuhnya adalah permukaan ekstensi terpisah yang lebih dalam. -`capabilities` runtime provider adalah metadata runner bersama (keluarga provider, kekhasan transkrip/tooling, petunjuk transport/cache). Ini tidak sama dengan [model kapabilitas publik](/id/plugins/architecture#public-capability-model), yang menjelaskan apa yang didaftarkan Plugin (inferensi teks, speech, dll.). +Runtime `capabilities` penyedia adalah metadata runner bersama (keluarga penyedia, kekhasan transkrip/tooling, petunjuk transport/cache). Ini tidak sama dengan [public capability model](/id/plugins/architecture#public-capability-model), yang menjelaskan apa yang didaftarkan Plugin (inferensi teks, suara, dan sebagainya). -## Rotasi API key +## Rotasi kunci API -- Mendukung rotasi provider generik untuk provider tertentu. -- Konfigurasikan beberapa key melalui: - - `OPENCLAW_LIVE__KEY` (satu override live, prioritas tertinggi) +- Mendukung rotasi penyedia generik untuk penyedia tertentu. +- Konfigurasikan beberapa kunci melalui: + - `OPENCLAW_LIVE__KEY` (override live tunggal, prioritas tertinggi) - `_API_KEYS` (daftar dipisahkan koma atau titik koma) - - `_API_KEY` (key utama) - - `_API_KEY_*` (daftar bernomor, misalnya `_API_KEY_1`) -- Untuk provider Google, `GOOGLE_API_KEY` juga disertakan sebagai fallback. -- Urutan pemilihan key mempertahankan prioritas dan menghapus duplikasi nilai. -- Permintaan diulang dengan key berikutnya hanya pada respons rate-limit (misalnya `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many + - `_API_KEY` (kunci utama) + - `_API_KEY_*` (daftar bernomor, mis. `_API_KEY_1`) +- Untuk penyedia Google, `GOOGLE_API_KEY` juga disertakan sebagai fallback. +- Urutan pemilihan kunci mempertahankan prioritas dan menghapus duplikasi nilai. +- Permintaan dicoba ulang dengan kunci berikutnya hanya pada respons rate limit (misalnya + `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded`, atau pesan batas penggunaan berkala). -- Kegagalan non-rate-limit langsung gagal; rotasi key tidak dicoba. -- Saat semua kandidat key gagal, error final dikembalikan dari percobaan terakhir. +- Kegagalan non-rate-limit langsung gagal; tidak ada rotasi kunci yang dicoba. +- Saat semua kunci kandidat gagal, error akhir dikembalikan dari percobaan terakhir. -## Provider bawaan (katalog pi-ai) +## Penyedia bawaan (katalog pi-ai) -OpenClaw dikirim dengan katalog pi‑ai. Provider ini tidak memerlukan -konfigurasi `models.providers`; cukup atur auth + pilih model. +OpenClaw disertai dengan katalog pi‑ai. Penyedia ini **tidak** +memerlukan konfigurasi `models.providers`; cukup setel autentikasi + pilih model. ### OpenAI -- Provider: `openai` -- Auth: `OPENAI_API_KEY` -- Rotasi opsional: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, ditambah `OPENCLAW_LIVE_OPENAI_KEY` (satu override) +- Penyedia: `openai` +- Autentikasi: `OPENAI_API_KEY` +- Rotasi opsional: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, ditambah `OPENCLAW_LIVE_OPENAI_KEY` (override tunggal) - Contoh model: `openai/gpt-5.4`, `openai/gpt-5.4-mini` -- Dukungan API langsung GPT-5.5 sudah siap di sini setelah OpenAI mengekspos GPT-5.5 pada API +- Dukungan API langsung GPT-5.5 sudah siap untuk masa depan di sini setelah OpenAI mengekspos GPT-5.5 di API - CLI: `openclaw onboard --auth-choice openai-api-key` -- Transport default adalah `auto` (WebSocket lebih dulu, fallback SSE) +- Transport default adalah `auto` (WebSocket terlebih dahulu, fallback SSE) - Override per model melalui `agents.defaults.models["openai/"].params.transport` (`"sse"`, `"websocket"`, atau `"auto"`) - Warm-up WebSocket OpenAI Responses default-nya aktif melalui `params.openaiWsWarmup` (`true`/`false`) -- Priority processing OpenAI dapat diaktifkan melalui `agents.defaults.models["openai/"].params.serviceTier` -- `/fast` dan `params.fastMode` memetakan permintaan `openai/*` Responses langsung ke `service_tier=priority` pada `api.openai.com` +- Pemrosesan prioritas OpenAI dapat diaktifkan melalui `agents.defaults.models["openai/"].params.serviceTier` +- `/fast` dan `params.fastMode` memetakan permintaan Responses `openai/*` langsung ke `service_tier=priority` di `api.openai.com` - Gunakan `params.serviceTier` saat Anda menginginkan tier eksplisit alih-alih toggle `/fast` bersama - Header atribusi OpenClaw tersembunyi (`originator`, `version`, - `User-Agent`) hanya berlaku pada trafik OpenAI native ke `api.openai.com`, bukan - proxy generik yang kompatibel dengan OpenAI + `User-Agent`) hanya diterapkan pada trafik OpenAI native ke `api.openai.com`, bukan + proxy kompatibel OpenAI generik - Rute OpenAI native juga mempertahankan `store` Responses, petunjuk prompt-cache, dan - pembentukan payload reasoning-compat OpenAI; rute proxy tidak -- `openai/gpt-5.3-codex-spark` sengaja disembunyikan di OpenClaw karena permintaan API OpenAI langsung menolaknya dan katalog Codex saat ini tidak mengeksposnya + pembentukan payload kompatibilitas reasoning OpenAI; rute proxy tidak +- `openai/gpt-5.3-codex-spark` sengaja disembunyikan di OpenClaw karena permintaan API OpenAI live menolaknya dan katalog Codex saat ini tidak mengeksposnya ```json5 { @@ -94,14 +92,14 @@ konfigurasi `models.providers`; cukup atur auth + pilih model. ### Anthropic -- Provider: `anthropic` -- Auth: `ANTHROPIC_API_KEY` -- Rotasi opsional: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, ditambah `OPENCLAW_LIVE_ANTHROPIC_KEY` (satu override) +- Penyedia: `anthropic` +- Autentikasi: `ANTHROPIC_API_KEY` +- Rotasi opsional: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, ditambah `OPENCLAW_LIVE_ANTHROPIC_KEY` (override tunggal) - Contoh model: `anthropic/claude-opus-4-6` - CLI: `openclaw onboard --auth-choice apiKey` -- Permintaan Anthropic publik langsung mendukung toggle `/fast` bersama dan `params.fastMode`, termasuk trafik yang diautentikasi API key dan OAuth yang dikirim ke `api.anthropic.com`; OpenClaw memetakannya ke Anthropic `service_tier` (`auto` vs `standard_only`) -- Catatan Anthropic: staf Anthropic memberi tahu kami bahwa penggunaan Claude CLI gaya OpenClaw diizinkan lagi, sehingga OpenClaw memperlakukan penggunaan ulang Claude CLI dan `claude -p` sebagai disetujui untuk integrasi ini kecuali Anthropic menerbitkan kebijakan baru. -- Setup-token Anthropic tetap tersedia sebagai jalur token OpenClaw yang didukung, tetapi OpenClaw sekarang lebih memilih penggunaan ulang Claude CLI dan `claude -p` jika tersedia. +- Permintaan Anthropic publik langsung mendukung toggle `/fast` bersama dan `params.fastMode`, termasuk trafik terautentikasi kunci API dan OAuth yang dikirim ke `api.anthropic.com`; OpenClaw memetakannya ke `service_tier` Anthropic (`auto` vs `standard_only`) +- Catatan Anthropic: staf Anthropic memberi tahu kami bahwa penggunaan Claude CLI gaya OpenClaw kembali diizinkan, jadi OpenClaw memperlakukan penggunaan ulang Claude CLI dan penggunaan `claude -p` sebagai hal yang disetujui untuk integrasi ini kecuali Anthropic menerbitkan kebijakan baru. +- Token penyiapan Anthropic tetap tersedia sebagai jalur token OpenClaw yang didukung, tetapi OpenClaw sekarang lebih memilih penggunaan ulang Claude CLI dan `claude -p` bila tersedia. ```json5 { @@ -111,25 +109,24 @@ konfigurasi `models.providers`; cukup atur auth + pilih model. ### OpenAI Codex OAuth -- Provider: `openai-codex` -- Auth: OAuth (ChatGPT) -- Referensi model Pi: `openai-codex/gpt-5.5` +- Penyedia: `openai-codex` +- Autentikasi: OAuth (ChatGPT) +- Referensi model PI: `openai-codex/gpt-5.5` - Referensi harness app-server Codex native: `openai/gpt-5.5` dengan `agents.defaults.embeddedHarness.runtime: "codex"` -- Referensi model legacy: `codex/gpt-*` -- Batas Plugin: `openai-codex/*` memuat Plugin OpenAI; Plugin app-server - Codex native hanya dipilih oleh runtime Codex harness atau referensi - legacy `codex/*`. +- Referensi model lama: `codex/gpt-*` +- Batas Plugin: `openai-codex/*` memuat Plugin OpenAI; Plugin app-server Codex native dipilih hanya oleh runtime harness Codex atau referensi + `codex/*` lama. - CLI: `openclaw onboard --auth-choice openai-codex` atau `openclaw models auth login --provider openai-codex` -- Transport default adalah `auto` (WebSocket lebih dulu, fallback SSE) -- Override per model Pi melalui `agents.defaults.models["openai-codex/"].params.transport` (`"sse"`, `"websocket"`, atau `"auto"`) +- Transport default adalah `auto` (WebSocket terlebih dahulu, fallback SSE) +- Override per model PI melalui `agents.defaults.models["openai-codex/"].params.transport` (`"sse"`, `"websocket"`, atau `"auto"`) - `params.serviceTier` juga diteruskan pada permintaan Responses Codex native (`chatgpt.com/backend-api`) - Header atribusi OpenClaw tersembunyi (`originator`, `version`, `User-Agent`) hanya dilampirkan pada trafik Codex native ke - `chatgpt.com/backend-api`, bukan proxy generik yang kompatibel dengan OpenAI + `chatgpt.com/backend-api`, bukan proxy kompatibel OpenAI generik - Berbagi toggle `/fast` dan konfigurasi `params.fastMode` yang sama seperti `openai/*` langsung; OpenClaw memetakannya ke `service_tier=priority` - `openai-codex/gpt-5.5` mempertahankan `contextWindow = 1000000` native dan runtime default `contextTokens = 272000`; override batas runtime dengan `models.providers.openai-codex.models[].contextTokens` -- Catatan kebijakan: OpenAI Codex OAuth secara eksplisit didukung untuk alat/alur kerja eksternal seperti OpenClaw. -- Akses GPT-5.5 saat ini menggunakan rute OAuth/subscription ini sampai OpenAI mengaktifkan GPT-5.5 pada API publik. +- Catatan kebijakan: OpenAI Codex OAuth secara eksplisit didukung untuk tool/alur kerja eksternal seperti OpenClaw. +- Akses GPT-5.5 saat ini menggunakan rute OAuth/subscription ini sampai OpenAI mengaktifkan GPT-5.5 di API publik. ```json5 { @@ -149,17 +146,17 @@ konfigurasi `models.providers`; cukup atur auth + pilih model. } ``` -### Opsi hosted bergaya subscription lainnya +### Opsi host bergaya subscription lainnya -- [Qwen Cloud](/id/providers/qwen): permukaan provider Qwen Cloud plus Alibaba DashScope dan pemetaan endpoint Coding Plan -- [MiniMax](/id/providers/minimax): akses OAuth atau API key MiniMax Coding Plan +- [Qwen Cloud](/id/providers/qwen): permukaan penyedia Qwen Cloud plus pemetaan endpoint Alibaba DashScope dan Coding Plan +- [MiniMax](/id/providers/minimax): akses OAuth atau kunci API MiniMax Coding Plan - [GLM Models](/id/providers/glm): endpoint Z.AI Coding Plan atau API umum ### OpenCode -- Auth: `OPENCODE_API_KEY` (atau `OPENCODE_ZEN_API_KEY`) -- Provider runtime Zen: `opencode` -- Provider runtime Go: `opencode-go` +- Autentikasi: `OPENCODE_API_KEY` (atau `OPENCODE_ZEN_API_KEY`) +- Penyedia runtime Zen: `opencode` +- Penyedia runtime Go: `opencode-go` - Contoh model: `opencode/claude-opus-4-6`, `opencode-go/kimi-k2.5` - CLI: `openclaw onboard --auth-choice opencode-zen` atau `openclaw onboard --auth-choice opencode-go` @@ -169,23 +166,23 @@ konfigurasi `models.providers`; cukup atur auth + pilih model. } ``` -### Google Gemini (API key) +### Google Gemini (kunci API) -- Provider: `google` -- Auth: `GEMINI_API_KEY` -- Rotasi opsional: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, fallback `GOOGLE_API_KEY`, dan `OPENCLAW_LIVE_GEMINI_KEY` (satu override) +- Penyedia: `google` +- Autentikasi: `GEMINI_API_KEY` +- Rotasi opsional: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, fallback `GOOGLE_API_KEY`, dan `OPENCLAW_LIVE_GEMINI_KEY` (override tunggal) - Contoh model: `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview` -- Kompatibilitas: konfigurasi OpenClaw legacy yang menggunakan `google/gemini-3.1-flash-preview` dinormalisasi menjadi `google/gemini-3-flash-preview` +- Kompatibilitas: konfigurasi OpenClaw lama yang menggunakan `google/gemini-3.1-flash-preview` dinormalisasi menjadi `google/gemini-3-flash-preview` - CLI: `openclaw onboard --auth-choice gemini-api-key` - Eksekusi Gemini langsung juga menerima `agents.defaults.models["google/"].params.cachedContent` - (atau legacy `cached_content`) untuk meneruskan handle native provider - `cachedContents/...`; cache hit Gemini muncul sebagai OpenClaw `cacheRead` + (atau `cached_content` lama) untuk meneruskan handle + `cachedContents/...` native penyedia; cache hit Gemini muncul sebagai `cacheRead` OpenClaw ### Google Vertex dan Gemini CLI -- Provider: `google-vertex`, `google-gemini-cli` -- Auth: Vertex menggunakan gcloud ADC; Gemini CLI menggunakan alur OAuth-nya -- Perhatian: OAuth Gemini CLI di OpenClaw adalah integrasi tidak resmi. Beberapa pengguna melaporkan pembatasan akun Google setelah menggunakan klien pihak ketiga. Tinjau ketentuan Google dan gunakan akun non-kritis jika Anda memilih untuk melanjutkan. +- Penyedia: `google-vertex`, `google-gemini-cli` +- Autentikasi: Vertex menggunakan gcloud ADC; Gemini CLI menggunakan alur OAuth-nya +- Peringatan: OAuth Gemini CLI di OpenClaw adalah integrasi tidak resmi. Beberapa pengguna melaporkan pembatasan akun Google setelah menggunakan klien pihak ketiga. Tinjau ketentuan Google dan gunakan akun nonkritis jika Anda memilih untuk melanjutkan. - OAuth Gemini CLI dikirim sebagai bagian dari Plugin `google` bawaan. - Instal Gemini CLI terlebih dahulu: - `brew install gemini-cli` @@ -194,15 +191,15 @@ konfigurasi `models.providers`; cukup atur auth + pilih model. - Login: `openclaw models auth login --provider google-gemini-cli --set-default` - Model default: `google-gemini-cli/gemini-3-flash-preview` - Catatan: Anda **tidak** menempelkan client id atau secret ke `openclaw.json`. Alur login CLI menyimpan - token di profil auth pada host gateway. - - Jika permintaan gagal setelah login, atur `GOOGLE_CLOUD_PROJECT` atau `GOOGLE_CLOUD_PROJECT_ID` pada host gateway. - - Balasan JSON Gemini CLI di-parse dari `response`; penggunaan fallback ke - `stats`, dengan `stats.cached` dinormalisasi menjadi OpenClaw `cacheRead`. + token dalam profil auth di host gateway. + - Jika permintaan gagal setelah login, setel `GOOGLE_CLOUD_PROJECT` atau `GOOGLE_CLOUD_PROJECT_ID` di host gateway. + - Balasan JSON Gemini CLI diparse dari `response`; penggunaan fallback ke + `stats`, dengan `stats.cached` dinormalisasi menjadi `cacheRead` OpenClaw. ### Z.AI (GLM) -- Provider: `zai` -- Auth: `ZAI_API_KEY` +- Penyedia: `zai` +- Autentikasi: `ZAI_API_KEY` - Contoh model: `zai/glm-5.1` - CLI: `openclaw onboard --auth-choice zai-api-key` - Alias: `z.ai/*` dan `z-ai/*` dinormalisasi menjadi `zai/*` @@ -210,83 +207,84 @@ konfigurasi `models.providers`; cukup atur auth + pilih model. ### Vercel AI Gateway -- Provider: `vercel-ai-gateway` -- Auth: `AI_GATEWAY_API_KEY` +- Penyedia: `vercel-ai-gateway` +- Autentikasi: `AI_GATEWAY_API_KEY` - Contoh model: `vercel-ai-gateway/anthropic/claude-opus-4.6`, `vercel-ai-gateway/moonshotai/kimi-k2.6` - CLI: `openclaw onboard --auth-choice ai-gateway-api-key` ### Kilo Gateway -- Provider: `kilocode` -- Auth: `KILOCODE_API_KEY` +- Penyedia: `kilocode` +- Autentikasi: `KILOCODE_API_KEY` - Contoh model: `kilocode/kilo/auto` - CLI: `openclaw onboard --auth-choice kilocode-api-key` -- Base URL: `https://api.kilo.ai/api/gateway/` -- Katalog fallback statis dikirim dengan `kilocode/kilo/auto`; discovery langsung +- URL dasar: `https://api.kilo.ai/api/gateway/` +- Katalog fallback statis menyertakan `kilocode/kilo/auto`; penemuan live `https://api.kilo.ai/api/gateway/models` dapat memperluas katalog runtime lebih lanjut. -- Perutean upstream pasti di balik `kilocode/kilo/auto` dimiliki oleh Kilo Gateway, - bukan di-hard-code di OpenClaw. +- Routing upstream yang tepat di balik `kilocode/kilo/auto` dimiliki oleh Kilo Gateway, + bukan di-hardcode di OpenClaw. Lihat [/providers/kilocode](/id/providers/kilocode) untuk detail penyiapan. -### Plugin provider bawaan lainnya +### Plugin penyedia bawaan lainnya -| Provider | Id | Env auth | Contoh model | -| ----------------------- | -------------------------------- | ------------------------------------------------------------ | ---------------------------------------------- | -| BytePlus | `byteplus` / `byteplus-plan` | `BYTEPLUS_API_KEY` | `byteplus-plan/ark-code-latest` | -| Cerebras | `cerebras` | `CEREBRAS_API_KEY` | `cerebras/zai-glm-4.7` | -| Cloudflare AI Gateway | `cloudflare-ai-gateway` | `CLOUDFLARE_AI_GATEWAY_API_KEY` | — | -| GitHub Copilot | `github-copilot` | `COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN` | — | -| Groq | `groq` | `GROQ_API_KEY` | — | -| Hugging Face Inference | `huggingface` | `HUGGINGFACE_HUB_TOKEN` atau `HF_TOKEN` | `huggingface/deepseek-ai/DeepSeek-R1` | -| Kilo Gateway | `kilocode` | `KILOCODE_API_KEY` | `kilocode/kilo/auto` | -| Kimi Coding | `kimi` | `KIMI_API_KEY` atau `KIMICODE_API_KEY` | `kimi/kimi-code` | -| MiniMax | `minimax` / `minimax-portal` | `MINIMAX_API_KEY` / `MINIMAX_OAUTH_TOKEN` | `minimax/MiniMax-M2.7` | -| Mistral | `mistral` | `MISTRAL_API_KEY` | `mistral/mistral-large-latest` | -| Moonshot | `moonshot` | `MOONSHOT_API_KEY` | `moonshot/kimi-k2.6` | +| Penyedia | Id | Env autentikasi | Contoh model | +| ----------------------- | -------------------------------- | ------------------------------------------------------------ | ----------------------------------------------- | +| BytePlus | `byteplus` / `byteplus-plan` | `BYTEPLUS_API_KEY` | `byteplus-plan/ark-code-latest` | +| Cerebras | `cerebras` | `CEREBRAS_API_KEY` | `cerebras/zai-glm-4.7` | +| Cloudflare AI Gateway | `cloudflare-ai-gateway` | `CLOUDFLARE_AI_GATEWAY_API_KEY` | — | +| DeepSeek | `deepseek` | `DEEPSEEK_API_KEY` | `deepseek/deepseek-v4-flash` | +| GitHub Copilot | `github-copilot` | `COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN` | — | +| Groq | `groq` | `GROQ_API_KEY` | — | +| Hugging Face Inference | `huggingface` | `HUGGINGFACE_HUB_TOKEN` atau `HF_TOKEN` | `huggingface/deepseek-ai/DeepSeek-R1` | +| Kilo Gateway | `kilocode` | `KILOCODE_API_KEY` | `kilocode/kilo/auto` | +| Kimi Coding | `kimi` | `KIMI_API_KEY` atau `KIMICODE_API_KEY` | `kimi/kimi-code` | +| MiniMax | `minimax` / `minimax-portal` | `MINIMAX_API_KEY` / `MINIMAX_OAUTH_TOKEN` | `minimax/MiniMax-M2.7` | +| Mistral | `mistral` | `MISTRAL_API_KEY` | `mistral/mistral-large-latest` | +| Moonshot | `moonshot` | `MOONSHOT_API_KEY` | `moonshot/kimi-k2.6` | | NVIDIA | `nvidia` | `NVIDIA_API_KEY` | `nvidia/nvidia/llama-3.1-nemotron-70b-instruct` | -| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/auto` | -| Qianfan | `qianfan` | `QIANFAN_API_KEY` | `qianfan/deepseek-v3.2` | -| Qwen Cloud | `qwen` | `QWEN_API_KEY` / `MODELSTUDIO_API_KEY` / `DASHSCOPE_API_KEY` | `qwen/qwen3.5-plus` | -| StepFun | `stepfun` / `stepfun-plan` | `STEPFUN_API_KEY` | `stepfun/step-3.5-flash` | -| Together | `together` | `TOGETHER_API_KEY` | `together/moonshotai/Kimi-K2.5` | -| Venice | `venice` | `VENICE_API_KEY` | — | -| Vercel AI Gateway | `vercel-ai-gateway` | `AI_GATEWAY_API_KEY` | `vercel-ai-gateway/anthropic/claude-opus-4.6` | -| Volcano Engine (Doubao) | `volcengine` / `volcengine-plan` | `VOLCANO_ENGINE_API_KEY` | `volcengine-plan/ark-code-latest` | -| xAI | `xai` | `XAI_API_KEY` | `xai/grok-4` | -| Xiaomi | `xiaomi` | `XIAOMI_API_KEY` | `xiaomi/mimo-v2-flash` | +| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/auto` | +| Qianfan | `qianfan` | `QIANFAN_API_KEY` | `qianfan/deepseek-v3.2` | +| Qwen Cloud | `qwen` | `QWEN_API_KEY` / `MODELSTUDIO_API_KEY` / `DASHSCOPE_API_KEY` | `qwen/qwen3.5-plus` | +| StepFun | `stepfun` / `stepfun-plan` | `STEPFUN_API_KEY` | `stepfun/step-3.5-flash` | +| Together | `together` | `TOGETHER_API_KEY` | `together/moonshotai/Kimi-K2.5` | +| Venice | `venice` | `VENICE_API_KEY` | — | +| Vercel AI Gateway | `vercel-ai-gateway` | `AI_GATEWAY_API_KEY` | `vercel-ai-gateway/anthropic/claude-opus-4.6` | +| Volcano Engine (Doubao) | `volcengine` / `volcengine-plan` | `VOLCANO_ENGINE_API_KEY` | `volcengine-plan/ark-code-latest` | +| xAI | `xai` | `XAI_API_KEY` | `xai/grok-4` | +| Xiaomi | `xiaomi` | `XIAOMI_API_KEY` | `xiaomi/mimo-v2-flash` | -Hal-hal khusus yang perlu diketahui: +Hal penting yang perlu diketahui: -- **OpenRouter** menerapkan header atribusi aplikasinya dan penanda Anthropic `cache_control` hanya pada rute `openrouter.ai` yang terverifikasi. Sebagai jalur bergaya proxy yang kompatibel dengan OpenAI, OpenRouter melewati pembentukan khusus OpenAI native (`serviceTier`, Responses `store`, petunjuk prompt-cache, OpenAI reasoning-compat). Referensi berbasis Gemini tetap mempertahankan sanitasi thought-signature proxy-Gemini saja. -- **Kilo Gateway** referensi berbasis Gemini mengikuti jalur sanitasi proxy-Gemini yang sama; `kilocode/kilo/auto` dan referensi lain yang tidak mendukung proxy-reasoning melewati injeksi reasoning proxy. -- **MiniMax** onboarding API key menulis definisi model M2.7 eksplisit dengan `input: ["text", "image"]`; katalog bawaan mempertahankan referensi chat hanya-teks sampai konfigurasi itu dimaterialisasi. -- **xAI** menggunakan jalur xAI Responses. `/fast` atau `params.fastMode: true` menulis ulang `grok-3`, `grok-3-mini`, `grok-4`, dan `grok-4-0709` ke varian `*-fast` mereka. `tool_stream` aktif secara default; nonaktifkan melalui `agents.defaults.models["xai/"].params.tool_stream=false`. -- **Cerebras** model GLM menggunakan `zai-glm-4.7` / `zai-glm-4.6`; base URL yang kompatibel dengan OpenAI adalah `https://api.cerebras.ai/v1`. +- **OpenRouter** menerapkan header atribusi app dan penanda Anthropic `cache_control` hanya pada rute `openrouter.ai` yang terverifikasi. Sebagai jalur proxy bergaya kompatibel OpenAI, ia melewati pembentukan khusus OpenAI native (`serviceTier`, Responses `store`, petunjuk prompt-cache, kompatibilitas reasoning OpenAI). Referensi berbasis Gemini tetap menggunakan sanitasi thought-signature proxy-Gemini saja. +- **Kilo Gateway** referensi berbasis Gemini mengikuti jalur sanitasi proxy-Gemini yang sama; `kilocode/kilo/auto` dan referensi lain yang tidak mendukung proxy-reasoning melewati injeksi proxy reasoning. +- **MiniMax** onboarding kunci API menulis definisi model M2.7 eksplisit dengan `input: ["text", "image"]`; katalog bawaan mempertahankan referensi chat sebagai text-only sampai konfigurasi itu dimaterialisasi. +- **xAI** menggunakan jalur xAI Responses. `/fast` atau `params.fastMode: true` menulis ulang `grok-3`, `grok-3-mini`, `grok-4`, dan `grok-4-0709` ke varian `*-fast` masing-masing. `tool_stream` aktif secara default; nonaktifkan melalui `agents.defaults.models["xai/"].params.tool_stream=false`. +- **Cerebras** model GLM menggunakan `zai-glm-4.7` / `zai-glm-4.6`; URL dasar kompatibel OpenAI adalah `https://api.cerebras.ai/v1`. -## Provider melalui `models.providers` (kustom/base URL) +## Penyedia melalui `models.providers` (kustom/URL dasar) -Gunakan `models.providers` (atau `models.json`) untuk menambahkan provider +Gunakan `models.providers` (atau `models.json`) untuk menambahkan penyedia **kustom** atau proxy yang kompatibel dengan OpenAI/Anthropic. -Banyak Plugin provider bawaan di bawah ini sudah memublikasikan katalog default. +Banyak Plugin penyedia bawaan di bawah ini sudah menerbitkan katalog default. Gunakan entri `models.providers.` eksplisit hanya saat Anda ingin mengganti -default base URL, header, atau daftar model. +URL dasar default, header, atau daftar model. ### Moonshot AI (Kimi) -Moonshot dikirim sebagai Plugin provider bawaan. Gunakan provider bawaan secara -default, dan tambahkan entri `models.providers.moonshot` eksplisit hanya ketika Anda -perlu mengganti base URL atau metadata model: +Moonshot dikirim sebagai Plugin penyedia bawaan. Gunakan penyedia bawaan secara +default, dan tambahkan entri `models.providers.moonshot` eksplisit hanya saat Anda +perlu mengganti URL dasar atau metadata model: -- Provider: `moonshot` -- Auth: `MOONSHOT_API_KEY` +- Penyedia: `moonshot` +- Autentikasi: `MOONSHOT_API_KEY` - Contoh model: `moonshot/kimi-k2.6` - CLI: `openclaw onboard --auth-choice moonshot-api-key` atau `openclaw onboard --auth-choice moonshot-api-key-cn` -ID model Kimi K2: +Id model Kimi K2: [//]: # "moonshot-kimi-k2-model-refs:start" @@ -319,10 +317,10 @@ ID model Kimi K2: ### Kimi Coding -Kimi Coding menggunakan endpoint Moonshot AI yang kompatibel dengan Anthropic: +Kimi Coding menggunakan endpoint kompatibel Anthropic milik Moonshot AI: -- Provider: `kimi` -- Auth: `KIMI_API_KEY` +- Penyedia: `kimi` +- Autentikasi: `KIMI_API_KEY` - Contoh model: `kimi/kimi-code` ```json5 @@ -334,14 +332,14 @@ Kimi Coding menggunakan endpoint Moonshot AI yang kompatibel dengan Anthropic: } ``` -`kimi/k2p5` legacy tetap diterima sebagai id model kompatibilitas. +`kimi/k2p5` lama tetap diterima sebagai id model kompatibilitas. ### Volcano Engine (Doubao) -Volcano Engine (火山引擎) menyediakan akses ke Doubao dan model lain di Tiongkok. +Volcano Engine (火山引擎) menyediakan akses ke Doubao dan model lain di China. -- Provider: `volcengine` (coding: `volcengine-plan`) -- Auth: `VOLCANO_ENGINE_API_KEY` +- Penyedia: `volcengine` (coding: `volcengine-plan`) +- Autentikasi: `VOLCANO_ENGINE_API_KEY` - Contoh model: `volcengine-plan/ark-code-latest` - CLI: `openclaw onboard --auth-choice volcengine-api-key` @@ -353,13 +351,13 @@ Volcano Engine (火山引擎) menyediakan akses ke Doubao dan model lain di Tion } ``` -Onboarding default ke permukaan coding, tetapi katalog umum `volcengine/*` -juga didaftarkan pada saat yang sama. +Onboarding secara default menggunakan permukaan coding, tetapi katalog umum `volcengine/*` +didaftarkan pada saat yang sama. -Dalam pemilih model onboarding/configure, pilihan auth Volcengine memprioritaskan kedua -baris `volcengine/*` dan `volcengine-plan/*`. Jika model-model tersebut belum dimuat, -OpenClaw fallback ke katalog tanpa filter alih-alih menampilkan pemilih -bercakupan provider yang kosong. +Dalam picker model onboarding/configure, pilihan autentikasi Volcengine memprioritaskan kedua +baris `volcengine/*` dan `volcengine-plan/*`. Jika model tersebut belum dimuat, +OpenClaw fallback ke katalog tanpa filter alih-alih menampilkan picker +bercakupan penyedia yang kosong. Model yang tersedia: @@ -381,8 +379,8 @@ Model coding (`volcengine-plan`): BytePlus ARK menyediakan akses ke model yang sama seperti Volcano Engine untuk pengguna internasional. -- Provider: `byteplus` (coding: `byteplus-plan`) -- Auth: `BYTEPLUS_API_KEY` +- Penyedia: `byteplus` (coding: `byteplus-plan`) +- Autentikasi: `BYTEPLUS_API_KEY` - Contoh model: `byteplus-plan/ark-code-latest` - CLI: `openclaw onboard --auth-choice byteplus-api-key` @@ -394,13 +392,13 @@ BytePlus ARK menyediakan akses ke model yang sama seperti Volcano Engine untuk p } ``` -Onboarding default ke permukaan coding, tetapi katalog umum `byteplus/*` -juga didaftarkan pada saat yang sama. +Onboarding secara default menggunakan permukaan coding, tetapi katalog umum `byteplus/*` +didaftarkan pada saat yang sama. -Dalam pemilih model onboarding/configure, pilihan auth BytePlus memprioritaskan kedua -baris `byteplus/*` dan `byteplus-plan/*`. Jika model-model tersebut belum dimuat, -OpenClaw fallback ke katalog tanpa filter alih-alih menampilkan pemilih -bercakupan provider yang kosong. +Dalam picker model onboarding/configure, pilihan autentikasi BytePlus memprioritaskan kedua +baris `byteplus/*` dan `byteplus-plan/*`. Jika model tersebut belum dimuat, +OpenClaw fallback ke katalog tanpa filter alih-alih menampilkan picker +bercakupan penyedia yang kosong. Model yang tersedia: @@ -418,10 +416,10 @@ Model coding (`byteplus-plan`): ### Synthetic -Synthetic menyediakan model yang kompatibel dengan Anthropic di balik provider `synthetic`: +Synthetic menyediakan model kompatibel Anthropic di balik penyedia `synthetic`: -- Provider: `synthetic` -- Auth: `SYNTHETIC_API_KEY` +- Penyedia: `synthetic` +- Autentikasi: `SYNTHETIC_API_KEY` - Contoh model: `synthetic/hf:MiniMaxAI/MiniMax-M2.5` - CLI: `openclaw onboard --auth-choice synthetic-api-key` @@ -450,33 +448,33 @@ MiniMax dikonfigurasi melalui `models.providers` karena menggunakan endpoint kus - MiniMax OAuth (Global): `--auth-choice minimax-global-oauth` - MiniMax OAuth (CN): `--auth-choice minimax-cn-oauth` -- MiniMax API key (Global): `--auth-choice minimax-global-api` -- MiniMax API key (CN): `--auth-choice minimax-cn-api` -- Auth: `MINIMAX_API_KEY` untuk `minimax`; `MINIMAX_OAUTH_TOKEN` atau +- Kunci API MiniMax (Global): `--auth-choice minimax-global-api` +- Kunci API MiniMax (CN): `--auth-choice minimax-cn-api` +- Autentikasi: `MINIMAX_API_KEY` untuk `minimax`; `MINIMAX_OAUTH_TOKEN` atau `MINIMAX_API_KEY` untuk `minimax-portal` Lihat [/providers/minimax](/id/providers/minimax) untuk detail penyiapan, opsi model, dan cuplikan konfigurasi. -Pada jalur streaming yang kompatibel dengan Anthropic milik MiniMax, OpenClaw menonaktifkan thinking secara -default kecuali Anda mengaturnya secara eksplisit, dan `/fast on` menulis ulang +Pada jalur streaming kompatibel Anthropic milik MiniMax, OpenClaw menonaktifkan thinking secara +default kecuali Anda menyetelnya secara eksplisit, dan `/fast on` menulis ulang `MiniMax-M2.7` menjadi `MiniMax-M2.7-highspeed`. -Pemisahan kapabilitas milik Plugin: +Pemisahan capability yang dimiliki Plugin: -- Default teks/chat tetap pada `minimax/MiniMax-M2.7` +- Default teks/chat tetap di `minimax/MiniMax-M2.7` - Pembuatan gambar adalah `minimax/image-01` atau `minimax-portal/image-01` -- Pemahaman gambar adalah `MiniMax-VL-01` milik Plugin pada kedua jalur auth MiniMax -- Pencarian web tetap pada id provider `minimax` +- Pemahaman gambar adalah `MiniMax-VL-01` milik Plugin pada kedua jalur autentikasi MiniMax +- Pencarian web tetap pada id penyedia `minimax` ### LM Studio -LM Studio dikirim sebagai Plugin provider bawaan yang menggunakan API native: +LM Studio dikirim sebagai Plugin penyedia bawaan yang menggunakan API native: -- Provider: `lmstudio` -- Auth: `LM_API_TOKEN` -- Default base URL inferensi: `http://localhost:1234/v1` +- Penyedia: `lmstudio` +- Autentikasi: `LM_API_TOKEN` +- URL dasar inferensi default: `http://localhost:1234/v1` -Lalu atur model (ganti dengan salah satu ID yang dikembalikan oleh `http://localhost:1234/api/v1/models`): +Lalu setel model (ganti dengan salah satu id yang dikembalikan oleh `http://localhost:1234/api/v1/models`): ```json5 { @@ -486,16 +484,16 @@ Lalu atur model (ganti dengan salah satu ID yang dikembalikan oleh `http://local } ``` -OpenClaw menggunakan `/api/v1/models` dan `/api/v1/models/load` native milik LM Studio +OpenClaw menggunakan `/api/v1/models` dan `/api/v1/models/load` native LM Studio untuk discovery + auto-load, dengan `/v1/chat/completions` untuk inferensi secara default. Lihat [/providers/lmstudio](/id/providers/lmstudio) untuk penyiapan dan pemecahan masalah. ### Ollama -Ollama dikirim sebagai Plugin provider bawaan dan menggunakan API native Ollama: +Ollama dikirim sebagai Plugin penyedia bawaan dan menggunakan API native Ollama: -- Provider: `ollama` -- Auth: Tidak diperlukan (server lokal) +- Penyedia: `ollama` +- Autentikasi: Tidak diperlukan (server lokal) - Contoh model: `ollama/llama3.3` - Instalasi: [https://ollama.com/download](https://ollama.com/download) @@ -512,27 +510,27 @@ ollama pull llama3.3 } ``` -Ollama dideteksi secara lokal di `http://127.0.0.1:11434` saat Anda memilih ikut dengan -`OLLAMA_API_KEY`, dan Plugin provider bawaan menambahkan Ollama langsung ke -`openclaw onboard` dan pemilih model. Lihat [/providers/ollama](/id/providers/ollama) +Ollama dideteksi secara lokal di `http://127.0.0.1:11434` saat Anda melakukan opt-in dengan +`OLLAMA_API_KEY`, dan Plugin penyedia bawaan menambahkan Ollama langsung ke +`openclaw onboard` dan picker model. Lihat [/providers/ollama](/id/providers/ollama) untuk onboarding, mode cloud/lokal, dan konfigurasi kustom. ### vLLM -vLLM dikirim sebagai Plugin provider bawaan untuk server lokal/self-hosted yang -kompatibel dengan OpenAI: +vLLM dikirim sebagai Plugin penyedia bawaan untuk server +kompatibel OpenAI lokal/self-hosted: -- Provider: `vllm` -- Auth: Opsional (tergantung server Anda) -- Default base URL: `http://127.0.0.1:8000/v1` +- Penyedia: `vllm` +- Autentikasi: Opsional (tergantung server Anda) +- URL dasar default: `http://127.0.0.1:8000/v1` -Untuk ikut serta dalam auto-discovery secara lokal (nilai apa pun berfungsi jika server Anda tidak menegakkan auth): +Untuk melakukan opt-in ke auto-discovery secara lokal (nilai apa pun berfungsi jika server Anda tidak menerapkan autentikasi): ```bash export VLLM_API_KEY="vllm-local" ``` -Lalu atur model (ganti dengan salah satu ID yang dikembalikan oleh `/v1/models`): +Lalu setel model (ganti dengan salah satu id yang dikembalikan oleh `/v1/models`): ```json5 { @@ -546,21 +544,21 @@ Lihat [/providers/vllm](/id/providers/vllm) untuk detail. ### SGLang -SGLang dikirim sebagai Plugin provider bawaan untuk server self-hosted cepat -yang kompatibel dengan OpenAI: +SGLang dikirim sebagai Plugin penyedia bawaan untuk server +kompatibel OpenAI self-hosted yang cepat: -- Provider: `sglang` -- Auth: Opsional (tergantung server Anda) -- Default base URL: `http://127.0.0.1:30000/v1` +- Penyedia: `sglang` +- Autentikasi: Opsional (tergantung server Anda) +- URL dasar default: `http://127.0.0.1:30000/v1` -Untuk ikut serta dalam auto-discovery secara lokal (nilai apa pun berfungsi jika server Anda tidak -menegakkan auth): +Untuk melakukan opt-in ke auto-discovery secara lokal (nilai apa pun berfungsi jika server Anda tidak +menerapkan autentikasi): ```bash export SGLANG_API_KEY="sglang-local" ``` -Lalu atur model (ganti dengan salah satu ID yang dikembalikan oleh `/v1/models`): +Lalu setel model (ganti dengan salah satu id yang dikembalikan oleh `/v1/models`): ```json5 { @@ -574,14 +572,14 @@ Lihat [/providers/sglang](/id/providers/sglang) untuk detail. ### Proxy lokal (LM Studio, vLLM, LiteLLM, dll.) -Contoh (kompatibel dengan OpenAI): +Contoh (kompatibel OpenAI): ```json5 { agents: { defaults: { model: { primary: "lmstudio/my-local-model" }, - models: { "lmstudio/my-local-model": { alias: "Local" } }, + models: { "lmstudio/my-local-model": { alias: "Lokal" } }, }, }, models: { @@ -593,7 +591,7 @@ Contoh (kompatibel dengan OpenAI): models: [ { id: "my-local-model", - name: "Local Model", + name: "Model Lokal", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, @@ -609,19 +607,20 @@ Contoh (kompatibel dengan OpenAI): Catatan: -- Untuk provider kustom, `reasoning`, `input`, `cost`, `contextWindow`, dan `maxTokens` bersifat opsional. +- Untuk penyedia kustom, `reasoning`, `input`, `cost`, `contextWindow`, dan `maxTokens` bersifat opsional. Jika dihilangkan, OpenClaw default ke: - `reasoning: false` - `input: ["text"]` - `cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }` - `contextWindow: 200000` - `maxTokens: 8192` -- Disarankan: atur nilai eksplisit yang sesuai dengan batas proxy/model Anda. -- Untuk `api: "openai-completions"` pada endpoint non-native (setiap `baseUrl` yang tidak kosong yang host-nya bukan `api.openai.com`), OpenClaw memaksa `compat.supportsDeveloperRole: false` untuk menghindari error provider 400 untuk role `developer` yang tidak didukung. +- Disarankan: setel nilai eksplisit yang sesuai dengan batas proxy/model Anda. +- Untuk `api: "openai-completions"` pada endpoint non-native (setiap `baseUrl` tidak kosong yang host-nya bukan `api.openai.com`), OpenClaw memaksa `compat.supportsDeveloperRole: false` untuk menghindari error 400 penyedia untuk role `developer` yang tidak didukung. - Rute kompatibel OpenAI bergaya proxy juga melewati pembentukan permintaan khusus OpenAI native: - tidak ada `service_tier`, tidak ada Responses `store`, tidak ada petunjuk prompt-cache, tidak ada - pembentukan payload reasoning-compat OpenAI, dan tidak ada header atribusi OpenClaw tersembunyi. -- Jika `baseUrl` kosong/dihilangkan, OpenClaw mempertahankan perilaku OpenAI default (yang diselesaikan ke `api.openai.com`). + tanpa `service_tier`, tanpa Responses `store`, tanpa petunjuk prompt-cache, tanpa + pembentukan payload kompatibilitas reasoning OpenAI, dan tanpa header atribusi + OpenClaw tersembunyi. +- Jika `baseUrl` kosong/tidak diisi, OpenClaw mempertahankan perilaku OpenAI default (yang di-resolve ke `api.openai.com`). - Demi keamanan, `compat.supportsDeveloperRole: true` yang eksplisit tetap dioverride pada endpoint `openai-completions` non-native. ## Contoh CLI @@ -638,5 +637,5 @@ Lihat juga: [/gateway/configuration](/id/gateway/configuration) untuk contoh kon - [Models](/id/concepts/models) — konfigurasi model dan alias - [Model Failover](/id/concepts/model-failover) — rantai fallback dan perilaku retry -- [Referensi Konfigurasi](/id/gateway/config-agents#agent-defaults) — kunci konfigurasi model -- [Providers](/id/providers) — panduan penyiapan per provider +- [Configuration Reference](/id/gateway/config-agents#agent-defaults) — kunci konfigurasi model +- [Providers](/id/providers) — panduan penyiapan per penyedia diff --git a/docs/id/pi.md b/docs/id/pi.md index 8046e4251..fa904e6ba 100644 --- a/docs/id/pi.md +++ b/docs/id/pi.md @@ -1,100 +1,100 @@ --- read_when: - Memahami desain integrasi SDK Pi di OpenClaw - - Memodifikasi siklus hidup sesi agen, tooling, atau wiring provider untuk Pi -summary: Arsitektur integrasi agen Pi tertanam OpenClaw dan siklus hidup sesi + - Memodifikasi siklus hidup sesi agen, tooling, atau pengkabelan penyedia untuk Pi +summary: Arsitektur integrasi agen Pi tersemat OpenClaw dan siklus hidup sesi title: Arsitektur integrasi Pi x-i18n: - generated_at: "2026-04-24T09:16:09Z" + generated_at: "2026-04-24T15:22:13Z" model: gpt-5.4 provider: openai - source_hash: 3c0c490cad121a65d557a72887ea619a7d0cff34a62220752214185c9148dc0b + source_hash: 0c0b019ff6d35f6fdcd57b56edd1945e62a96bb4b34e312d7fb0c627f01287f1 source_path: pi.md workflow: 15 --- -Dokumen ini menjelaskan bagaimana OpenClaw berintegrasi dengan [pi-coding-agent](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent) dan package saudaranya (`pi-ai`, `pi-agent-core`, `pi-tui`) untuk mendukung kapabilitas agen AI-nya. +Dokumen ini menjelaskan bagaimana OpenClaw terintegrasi dengan [pi-coding-agent](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent) dan paket saudaranya (`pi-ai`, `pi-agent-core`, `pi-tui`) untuk mendukung kapabilitas agen AI-nya. -## Ikhtisar +## Gambaran umum -OpenClaw menggunakan SDK pi untuk menanamkan agen coding AI ke dalam arsitektur gateway pesan. Alih-alih memunculkan pi sebagai subprocess atau menggunakan mode RPC, OpenClaw langsung mengimpor dan menginstansiasi `AgentSession` milik pi melalui `createAgentSession()`. Pendekatan tertanam ini menyediakan: +OpenClaw menggunakan SDK pi untuk menanamkan agen coding AI ke dalam arsitektur Gateway perpesanannya. Alih-alih menjalankan pi sebagai subproses atau menggunakan mode RPC, OpenClaw secara langsung mengimpor dan menginstansiasi `AgentSession` milik pi melalui `createAgentSession()`. Pendekatan tersemat ini menyediakan: - Kontrol penuh atas siklus hidup sesi dan penanganan peristiwa -- Injeksi alat kustom (pesan, sandbox, tindakan khusus kanal) -- Kustomisasi system prompt per kanal/konteks -- Persistensi sesi dengan dukungan branching/Compaction +- Injeksi tool kustom (perpesanan, sandbox, tindakan khusus channel) +- Kustomisasi prompt sistem per channel/konteks +- Persistensi sesi dengan dukungan percabangan/Compaction - Rotasi profil auth multi-akun dengan failover -- Peralihan model agnostik provider +- Peralihan model yang agnostik penyedia -## Dependensi package +## Dependensi Paket ```json { - "@mariozechner/pi-agent-core": "0.68.1", - "@mariozechner/pi-ai": "0.68.1", - "@mariozechner/pi-coding-agent": "0.68.1", - "@mariozechner/pi-tui": "0.68.1" + "@mariozechner/pi-agent-core": "0.70.2", + "@mariozechner/pi-ai": "0.70.2", + "@mariozechner/pi-coding-agent": "0.70.2", + "@mariozechner/pi-tui": "0.70.2" } ``` -| Package | Tujuan | -| ----------------- | ------------------------------------------------------------------------------------------------------ | -| `pi-ai` | Abstraksi LLM inti: `Model`, `streamSimple`, tipe pesan, API provider | -| `pi-agent-core` | Loop agen, eksekusi alat, tipe `AgentMessage` | -| `pi-coding-agent` | SDK tingkat tinggi: `createAgentSession`, `SessionManager`, `AuthStorage`, `ModelRegistry`, alat bawaan | -| `pi-tui` | Komponen UI terminal (digunakan dalam mode TUI lokal OpenClaw) | +| Paket | Tujuan | +| ----------------- | ------------------------------------------------------------------------------------------------------- | +| `pi-ai` | Abstraksi LLM inti: `Model`, `streamSimple`, jenis pesan, API penyedia | +| `pi-agent-core` | Loop agen, eksekusi tool, jenis `AgentMessage` | +| `pi-coding-agent` | SDK tingkat tinggi: `createAgentSession`, `SessionManager`, `AuthStorage`, `ModelRegistry`, tool bawaan | +| `pi-tui` | Komponen UI terminal (digunakan dalam mode TUI lokal OpenClaw) | -## Struktur file +## Struktur File ``` src/agents/ -├── pi-embedded-runner.ts # Re-export dari pi-embedded-runner/ +├── pi-embedded-runner.ts # Mengekspor ulang dari pi-embedded-runner/ ├── pi-embedded-runner/ │ ├── run.ts # Entri utama: runEmbeddedPiAgent() │ ├── run/ -│ │ ├── attempt.ts # Logika percobaan tunggal dengan penyiapan sesi +│ │ ├── attempt.ts # Logika satu percobaan dengan penyiapan sesi │ │ ├── params.ts # Tipe RunEmbeddedPiAgentParams -│ │ ├── payloads.ts # Membangun payload respons dari hasil eksekusi +│ │ ├── payloads.ts # Membangun payload respons dari hasil run │ │ ├── images.ts # Injeksi gambar model vision │ │ └── types.ts # EmbeddedRunAttemptResult -│ ├── abort.ts # Deteksi error abort +│ ├── abort.ts # Deteksi galat abort │ ├── cache-ttl.ts # Pelacakan TTL cache untuk pruning konteks │ ├── compact.ts # Logika Compaction manual/otomatis -│ ├── extensions.ts # Muat ekstensi pi untuk eksekusi tertanam -│ ├── extra-params.ts # Parameter stream khusus provider +│ ├── extensions.ts # Memuat ekstensi pi untuk run tersemat +│ ├── extra-params.ts # Parameter stream khusus penyedia │ ├── google.ts # Perbaikan urutan giliran Google/Gemini -│ ├── history.ts # Batas riwayat (DM vs grup) -│ ├── lanes.ts # Lane perintah sesi/global +│ ├── history.ts # Pembatasan riwayat (DM vs grup) +│ ├── lanes.ts # Lajur perintah sesi/global │ ├── logger.ts # Logger subsistem │ ├── model.ts # Resolusi model melalui ModelRegistry -│ ├── runs.ts # Pelacakan eksekusi aktif, abort, antrean -│ ├── sandbox-info.ts # Info sandbox untuk system prompt -│ ├── session-manager-cache.ts # Caching instance SessionManager +│ ├── runs.ts # Pelacakan run aktif, abort, antrean +│ ├── sandbox-info.ts # Informasi sandbox untuk prompt sistem +│ ├── session-manager-cache.ts # Cache instance SessionManager │ ├── session-manager-init.ts # Inisialisasi file sesi -│ ├── system-prompt.ts # Builder system prompt -│ ├── tool-split.ts # Membagi alat menjadi builtIn vs custom +│ ├── system-prompt.ts # Builder prompt sistem +│ ├── tool-split.ts # Memisahkan tool menjadi builtIn vs kustom │ ├── types.ts # EmbeddedPiAgentMeta, EmbeddedPiRunResult -│ └── utils.ts # Pemetaan ThinkLevel, deskripsi error +│ └── utils.ts # Pemetaan ThinkLevel, deskripsi galat ├── pi-embedded-subscribe.ts # Langganan/pengiriman peristiwa sesi ├── pi-embedded-subscribe.types.ts # SubscribeEmbeddedPiSessionParams ├── pi-embedded-subscribe.handlers.ts # Pabrik handler peristiwa ├── pi-embedded-subscribe.handlers.lifecycle.ts ├── pi-embedded-subscribe.handlers.types.ts -├── pi-embedded-block-chunker.ts # Chunking balasan blok streaming -├── pi-embedded-messaging.ts # Pelacakan pengiriman alat pesan -├── pi-embedded-helpers.ts # Klasifikasi error, validasi giliran +├── pi-embedded-block-chunker.ts # Pemotongan blok balasan streaming +├── pi-embedded-messaging.ts # Pelacakan pengiriman tool perpesanan +├── pi-embedded-helpers.ts # Klasifikasi galat, validasi giliran ├── pi-embedded-helpers/ # Modul helper ├── pi-embedded-utils.ts # Utilitas pemformatan ├── pi-tools.ts # createOpenClawCodingTools() -├── pi-tools.abort.ts # Pembungkus AbortSignal untuk alat -├── pi-tools.policy.ts # Kebijakan allowlist/denylist alat -├── pi-tools.read.ts # Kustomisasi alat read -├── pi-tools.schema.ts # Normalisasi skema alat +├── pi-tools.abort.ts # Pembungkusan AbortSignal untuk tool +├── pi-tools.policy.ts # Kebijakan allowlist/denylist tool +├── pi-tools.read.ts # Kustomisasi tool baca +├── pi-tools.schema.ts # Normalisasi skema tool ├── pi-tools.types.ts # Alias tipe AnyAgentTool ├── pi-tool-definition-adapter.ts # Adapter AgentTool -> ToolDefinition -├── pi-settings.ts # Override settings +├── pi-settings.ts # Override pengaturan ├── pi-hooks/ # Hook pi kustom -│ ├── compaction-safeguard.ts # Ekstensi safeguard +│ ├── compaction-safeguard.ts # Ekstensi pengaman │ ├── compaction-safeguard-runtime.ts │ ├── context-pruning.ts # Ekstensi pruning konteks Cache-TTL │ └── context-pruning/ @@ -107,20 +107,20 @@ src/agents/ ├── failover-error.ts # Kelas FailoverError ├── defaults.ts # DEFAULT_PROVIDER, DEFAULT_MODEL ├── system-prompt.ts # buildAgentSystemPrompt() -├── system-prompt-params.ts # Resolusi parameter system prompt +├── system-prompt-params.ts # Resolusi parameter prompt sistem ├── system-prompt-report.ts # Pembuatan laporan debug -├── tool-summaries.ts # Ringkasan deskripsi alat -├── tool-policy.ts # Resolusi kebijakan alat +├── tool-summaries.ts # Ringkasan deskripsi tool +├── tool-policy.ts # Resolusi kebijakan tool ├── transcript-policy.ts # Kebijakan validasi transkrip -├── skills.ts # Snapshot skill/pembuatan prompt +├── skills.ts # Snapshot Skills/pembuatan prompt ├── skills/ # Subsistem skill ├── sandbox.ts # Resolusi konteks sandbox ├── sandbox/ # Subsistem sandbox -├── channel-tools.ts # Injeksi alat khusus kanal -├── openclaw-tools.ts # Alat khusus OpenClaw -├── bash-tools.ts # alat exec/process -├── apply-patch.ts # alat apply_patch (OpenAI) -├── tools/ # Implementasi alat individual +├── channel-tools.ts # Injeksi tool khusus channel +├── openclaw-tools.ts # Tool khusus OpenClaw +├── bash-tools.ts # Tool exec/process +├── apply-patch.ts # tool apply_patch (OpenAI) +├── tools/ # Implementasi tool individual │ ├── browser-tool.ts │ ├── canvas-tool.ts │ ├── cron-tool.ts @@ -134,19 +134,18 @@ src/agents/ └── ... ``` -Runtime tindakan pesan khusus kanal sekarang berada di direktori ekstensi -milik Plugin, bukan di bawah `src/agents/tools`, misalnya: +Runtime tindakan pesan khusus channel sekarang berada di direktori ekstensi milik Plugin, bukan lagi di bawah `src/agents/tools`, misalnya: - file runtime tindakan Plugin Discord - file runtime tindakan Plugin Slack - file runtime tindakan Plugin Telegram - file runtime tindakan Plugin WhatsApp -## Alur integrasi inti +## Alur Integrasi Inti -### 1. Menjalankan agen tertanam +### 1. Menjalankan Agen Tersemat -Titik masuk utama adalah `runEmbeddedPiAgent()` di `pi-embedded-runner/run.ts`: +Titik masuk utamanya adalah `runEmbeddedPiAgent()` di `pi-embedded-runner/run.ts`: ```typescript import { runEmbeddedPiAgent } from "./agents/pi-embedded-runner.js"; @@ -168,9 +167,9 @@ const result = await runEmbeddedPiAgent({ }); ``` -### 2. Pembuatan sesi +### 2. Pembuatan Sesi -Di dalam `runEmbeddedAttempt()` (dipanggil oleh `runEmbeddedPiAgent()`), SDK pi digunakan: +Di dalam `runEmbeddedAttempt()` (yang dipanggil oleh `runEmbeddedPiAgent()`), SDK pi digunakan: ```typescript import { @@ -205,7 +204,7 @@ const { session } = await createAgentSession({ applySystemPromptOverrideToSession(session, systemPromptOverride); ``` -### 3. Langganan peristiwa +### 3. Langganan Peristiwa `subscribeEmbeddedPiSession()` berlangganan ke peristiwa `AgentSession` milik pi: @@ -224,9 +223,9 @@ const subscription = subscribeEmbeddedPiSession({ }); ``` -Peristiwa yang ditangani meliputi: +Peristiwa yang ditangani mencakup: -- `message_start` / `message_end` / `message_update` (streaming teks/thinking) +- `message_start` / `message_end` / `message_update` (teks/penalaran streaming) - `tool_execution_start` / `tool_execution_update` / `tool_execution_end` - `turn_start` / `turn_end` - `agent_start` / `agent_end` @@ -240,27 +239,25 @@ Setelah penyiapan, sesi diberi prompt: await session.prompt(effectivePrompt, { images: imageResult.images }); ``` -SDK menangani loop agen penuh: mengirim ke LLM, mengeksekusi pemanggilan alat, dan melakukan streaming respons. +SDK menangani loop agen secara penuh: mengirim ke LLM, mengeksekusi pemanggilan tool, dan menayangkan respons secara streaming. -Injeksi gambar bersifat lokal terhadap prompt: OpenClaw memuat referensi gambar dari prompt saat ini dan -meneruskannya melalui `images` hanya untuk giliran itu. OpenClaw tidak memindai ulang giliran riwayat lama -untuk menyisipkan ulang payload gambar. +Injeksi gambar bersifat lokal terhadap prompt: OpenClaw memuat referensi gambar dari prompt saat ini dan meneruskannya melalui `images` hanya untuk giliran tersebut. OpenClaw tidak memindai ulang giliran riwayat lama untuk menginjeksi ulang payload gambar. -## Arsitektur alat +## Arsitektur Tool -### Pipeline alat +### Pipeline Tool -1. **Alat dasar**: `codingTools` milik pi (read, bash, edit, write) -2. **Pengganti kustom**: OpenClaw mengganti bash dengan `exec`/`process`, menyesuaikan read/edit/write untuk sandbox -3. **Alat OpenClaw**: messaging, browser, canvas, sessions, Cron, gateway, dll. -4. **Alat kanal**: alat tindakan khusus Discord/Telegram/Slack/WhatsApp -5. **Pemfilteran kebijakan**: alat difilter berdasarkan profil, provider, agen, grup, dan kebijakan sandbox -6. **Normalisasi skema**: skema dibersihkan untuk kekhasan Gemini/OpenAI -7. **Pembungkus AbortSignal**: alat dibungkus agar menghormati sinyal abort +1. **Tool Dasar**: `codingTools` milik pi (read, bash, edit, write) +2. **Penggantian Kustom**: OpenClaw mengganti bash dengan `exec`/`process`, serta menyesuaikan read/edit/write untuk sandbox +3. **Tool OpenClaw**: perpesanan, browser, canvas, sesi, Cron, Gateway, dan lainnya +4. **Tool Channel**: tool tindakan khusus Discord/Telegram/Slack/WhatsApp +5. **Pemfilteran Kebijakan**: tool difilter berdasarkan kebijakan profil, penyedia, agen, grup, sandbox +6. **Normalisasi Skema**: skema dibersihkan untuk keanehan Gemini/OpenAI +7. **Pembungkusan AbortSignal**: tool dibungkus agar mematuhi sinyal abort -### Adapter definisi alat +### Adapter Definisi Tool -`AgentTool` milik pi-agent-core memiliki signature `execute` yang berbeda dari `ToolDefinition` milik pi-coding-agent. Adapter di `pi-tool-definition-adapter.ts` menjembatani ini: +`AgentTool` milik pi-agent-core memiliki signature `execute` yang berbeda dari `ToolDefinition` milik pi-coding-agent. Adapter di `pi-tool-definition-adapter.ts` menjembatani hal ini: ```typescript export function toToolDefinitions(tools: AnyAgentTool[]): ToolDefinition[] { @@ -277,24 +274,24 @@ export function toToolDefinitions(tools: AnyAgentTool[]): ToolDefinition[] { } ``` -### Strategi pemisahan alat +### Strategi Pemisahan Tool -`splitSdkTools()` meneruskan semua alat melalui `customTools`: +`splitSdkTools()` meneruskan semua tool melalui `customTools`: ```typescript export function splitSdkTools(options: { tools: AnyAgentTool[]; sandboxEnabled: boolean }) { return { - builtInTools: [], // Kosong. Kami override semuanya + builtInTools: [], // Kosong. Kami menimpa semuanya customTools: toToolDefinitions(options.tools), }; } ``` -Ini memastikan pemfilteran kebijakan OpenClaw, integrasi sandbox, dan kumpulan alat yang diperluas tetap konsisten di seluruh provider. +Ini memastikan pemfilteran kebijakan, integrasi sandbox, dan kumpulan tool yang diperluas milik OpenClaw tetap konsisten di seluruh penyedia. -## Konstruksi system prompt +## Konstruksi Prompt Sistem -System prompt dibangun di `buildAgentSystemPrompt()` (`system-prompt.ts`). Fungsi ini merakit prompt penuh dengan bagian-bagian termasuk Tooling, Tool Call Style, guardrail Safety, referensi CLI OpenClaw, Skills, Docs, Workspace, Sandbox, Messaging, Reply Tags, Voice, Silent Replies, Heartbeats, metadata Runtime, ditambah Memory dan Reactions saat diaktifkan, serta file konteks opsional dan konten system prompt tambahan. Bagian-bagian ini dipangkas untuk mode prompt minimal yang digunakan oleh subagen. +Prompt sistem dibangun di `buildAgentSystemPrompt()` (`system-prompt.ts`). Fungsi ini merakit prompt lengkap dengan bagian-bagian termasuk Tooling, Gaya Pemanggilan Tool, guardrail keamanan, referensi CLI OpenClaw, Skills, Dokumen, Workspace, Sandbox, Perpesanan, Tag Balasan, Suara, Balasan Senyap, Heartbeat, metadata runtime, serta Memory dan Reaksi saat diaktifkan, dan file konteks opsional serta konten prompt sistem tambahan. Bagian-bagian ini dipangkas untuk mode prompt minimal yang digunakan oleh subagen. Prompt diterapkan setelah pembuatan sesi melalui `applySystemPromptOverrideToSession()`: @@ -303,21 +300,21 @@ const systemPromptOverride = createSystemPromptOverride(appendPrompt); applySystemPromptOverrideToSession(session, systemPromptOverride); ``` -## Manajemen sesi +## Manajemen Sesi -### File sesi +### File Sesi -Sesi adalah file JSONL dengan struktur tree (penghubung id/parentId). `SessionManager` milik Pi menangani persistensi: +Sesi adalah file JSONL dengan struktur pohon (tautan id/parentId). `SessionManager` milik Pi menangani persistensi: ```typescript const sessionManager = SessionManager.open(params.sessionFile); ``` -OpenClaw membungkus ini dengan `guardSessionManager()` untuk keamanan hasil alat. +OpenClaw membungkus ini dengan `guardSessionManager()` untuk keamanan hasil tool. -### Caching sesi +### Cache Sesi -`session-manager-cache.ts` melakukan cache instance SessionManager untuk menghindari parsing file berulang: +`session-manager-cache.ts` menyimpan cache instance `SessionManager` untuk menghindari parsing file berulang: ```typescript await prewarmSessionFile(params.sessionFile); @@ -325,18 +322,13 @@ sessionManager = SessionManager.open(params.sessionFile); trackSessionManagerAccess(params.sessionFile); ``` -### Pembatasan riwayat +### Pembatasan Riwayat -`limitHistoryTurns()` memangkas riwayat percakapan berdasarkan jenis kanal (DM vs grup). +`limitHistoryTurns()` memangkas riwayat percakapan berdasarkan jenis channel (DM vs grup). ### Compaction -Auto-Compaction dipicu saat konteks meluap. Tanda umum overflow -mencakup `request_too_large`, `context length exceeded`, `input exceeds the -maximum number of tokens`, `input token count exceeds the maximum number of -input tokens`, `input is too long for the model`, dan `ollama error: context -length exceeded`. `compactEmbeddedPiSessionDirect()` menangani -Compaction manual: +Compaction otomatis dipicu saat konteks meluap. Tanda tangan luapan yang umum mencakup `request_too_large`, `context length exceeded`, `input exceeds the maximum number of tokens`, `input token count exceeds the maximum number of input tokens`, `input is too long for the model`, dan `ollama error: context length exceeded`. `compactEmbeddedPiSessionDirect()` menangani Compaction manual: ```typescript const compactResult = await compactEmbeddedPiSessionDirect({ @@ -344,25 +336,25 @@ const compactResult = await compactEmbeddedPiSessionDirect({ }); ``` -## Autentikasi & resolusi model +## Auth & Resolusi Model -### Profil auth +### Profil Auth -OpenClaw memelihara penyimpanan profil auth dengan beberapa API key per provider: +OpenClaw memelihara penyimpanan profil auth dengan beberapa API key per penyedia: ```typescript const authStore = ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false }); const profileOrder = resolveAuthProfileOrder({ cfg, store: authStore, provider, preferredProfile }); ``` -Profil berotasi saat terjadi kegagalan dengan pelacakan cooldown: +Profil dirotasi saat terjadi kegagalan dengan pelacakan cooldown: ```typescript await markAuthProfileFailure({ store, profileId, reason, cfg, agentDir }); const rotated = await advanceAuthProfile(); ``` -### Resolusi model +### Resolusi Model ```typescript import { resolveModel } from "./pi-embedded-runner/model.js"; @@ -374,7 +366,7 @@ const { model, error, authStorage, modelRegistry } = resolveModel( config, ); -// Menggunakan ModelRegistry dan AuthStorage milik pi +// Menggunakan ModelRegistry dan AuthStorage milik Pi authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey); ``` @@ -398,9 +390,9 @@ if (fallbackConfigured && isFailoverErrorMessage(errorText)) { OpenClaw memuat ekstensi Pi kustom untuk perilaku khusus: -### Safeguard Compaction +### Pengaman Compaction -`src/agents/pi-hooks/compaction-safeguard.ts` menambahkan guardrail ke Compaction, termasuk penganggaran token adaptif plus ringkasan kegagalan alat dan operasi file: +`src/agents/pi-hooks/compaction-safeguard.ts` menambahkan guardrail ke Compaction, termasuk penganggaran token adaptif serta ringkasan kegagalan tool dan operasi file: ```typescript if (resolveCompactionMode(params.cfg) === "safeguard") { @@ -409,7 +401,7 @@ if (resolveCompactionMode(params.cfg) === "safeguard") { } ``` -### Pruning konteks +### Pruning Konteks `src/agents/pi-hooks/context-pruning.ts` mengimplementasikan pruning konteks berbasis cache-TTL: @@ -425,53 +417,53 @@ if (cfg?.agents?.defaults?.contextPruning?.mode === "cache-ttl") { } ``` -## Streaming & balasan blok +## Streaming & Balasan Blok -### Chunking blok +### Pemotongan Blok -`EmbeddedBlockChunker` mengelola streaming teks menjadi blok balasan terpisah: +`EmbeddedBlockChunker` mengelola teks streaming menjadi blok balasan yang terpisah: ```typescript const blockChunker = blockChunking ? new EmbeddedBlockChunker(blockChunking) : null; ``` -### Penghapusan tag thinking/final +### Penghapusan Tag Thinking/Final Output streaming diproses untuk menghapus blok ``/`` dan mengekstrak konten ``: ```typescript const stripBlockTags = (text: string, state: { thinking: boolean; final: boolean }) => { // Hapus konten ... - // Jika enforceFinalTag, kembalikan hanya konten ... + // Jika enforceFinalTag, hanya kembalikan konten ... }; ``` -### Directive balasan +### Direktif Balasan -Directive balasan seperti `[[media:url]]`, `[[voice]]`, `[[reply:id]]` diurai dan diekstrak: +Direktif balasan seperti `[[media:url]]`, `[[voice]]`, `[[reply:id]]` diurai dan diekstrak: ```typescript const { text: cleanedText, mediaUrls, audioAsVoice, replyToId } = consumeReplyDirectives(chunk); ``` -## Penanganan error +## Penanganan Galat -### Klasifikasi error +### Klasifikasi Galat -`pi-embedded-helpers.ts` mengklasifikasikan error untuk penanganan yang sesuai: +`pi-embedded-helpers.ts` mengklasifikasikan galat untuk penanganan yang sesuai: ```typescript isContextOverflowError(errorText) // Konteks terlalu besar isCompactionFailureError(errorText) // Compaction gagal isAuthAssistantError(lastAssistant) // Kegagalan auth -isRateLimitAssistantError(...) // Terkena rate limit +isRateLimitAssistantError(...) // Terbatas oleh rate limit isFailoverAssistantError(...) // Harus failover classifyFailoverReason(errorText) // "auth" | "rate_limit" | "quota" | "timeout" | ... ``` -### Fallback tingkat thinking +### Fallback Tingkat Thinking -Jika tingkat thinking tidak didukung, digunakan fallback: +Jika tingkat thinking tidak didukung, sistem akan fallback: ```typescript const fallbackThinking = pickFallbackThinkingLevel({ @@ -484,9 +476,9 @@ if (fallbackThinking) { } ``` -## Integrasi sandbox +## Integrasi Sandbox -Saat mode sandbox diaktifkan, alat dan path dibatasi: +Saat mode sandbox diaktifkan, tool dan path dibatasi: ```typescript const sandbox = await resolveSandboxContext({ @@ -496,28 +488,28 @@ const sandbox = await resolveSandboxContext({ }); if (sandboxRoot) { - // Gunakan alat read/edit/write yang di-sandbox + // Gunakan tool read/edit/write tersandbox // Exec berjalan di container // Browser menggunakan URL bridge } ``` -## Penanganan khusus provider +## Penanganan Khusus Penyedia ### Anthropic -- Scrubbing magic string refusal -- Validasi giliran untuk peran berurutan -- Validasi parameter alat Pi upstream yang ketat +- Pembersihan magic string penolakan +- Validasi giliran untuk peran yang berurutan +- Validasi parameter tool Pi upstream yang ketat ### Google/Gemini -- Sanitasi skema alat milik Plugin +- Sanitasi skema tool milik Plugin ### OpenAI -- Alat `apply_patch` untuk model Codex -- Penanganan downgrade tingkat thinking +- tool `apply_patch` untuk model Codex +- Penanganan penurunan tingkat thinking ## Integrasi TUI @@ -528,29 +520,29 @@ OpenClaw juga memiliki mode TUI lokal yang menggunakan komponen pi-tui secara la import { ... } from "@mariozechner/pi-tui"; ``` -Ini menyediakan pengalaman terminal interaktif yang mirip dengan mode native pi. +Ini menyediakan pengalaman terminal interaktif yang serupa dengan mode native Pi. -## Perbedaan utama dari Pi CLI +## Perbedaan Utama dari CLI Pi -| Aspek | Pi CLI | OpenClaw Embedded | +| Aspek | CLI Pi | OpenClaw Tersemat | | --------------- | ----------------------- | --------------------------------------------------------------------------------------------- | -| Invocation | perintah `pi` / RPC | SDK melalui `createAgentSession()` | -| Alat | alat coding default | kumpulan alat OpenClaw kustom | -| System prompt | `AGENTS.md` + prompt | dinamis per kanal/konteks | -| Penyimpanan sesi | `~/.pi/agent/sessions/` | `~/.openclaw/agents//sessions/` (atau `$OPENCLAW_STATE_DIR/agents//sessions/`) | -| Auth | satu kredensial | multi-profil dengan rotasi | -| Ekstensi | dimuat dari disk | programatik + path disk | -| Penanganan peristiwa | rendering TUI | berbasis callback (`onBlockReply`, dll.) | +| Pemanggilan | perintah `pi` / RPC | SDK melalui `createAgentSession()` | +| Tool | Tool coding default | Suite tool OpenClaw kustom | +| Prompt sistem | AGENTS.md + prompt | Dinamis per channel/konteks | +| Penyimpanan sesi| `~/.pi/agent/sessions/` | `~/.openclaw/agents//sessions/` (atau `$OPENCLAW_STATE_DIR/agents//sessions/`) | +| Auth | Kredensial tunggal | Multi-profil dengan rotasi | +| Ekstensi | Dimuat dari disk | Jalur terprogram + jalur disk | +| Penanganan peristiwa | Perenderan TUI | Berbasis callback (`onBlockReply`, dll.) | -## Pertimbangan masa depan +## Pertimbangan Mendatang -Area yang berpotensi untuk dikerjakan ulang: +Area untuk potensi pengerjaan ulang: -1. **Penyelarasan signature alat**: Saat ini melakukan adaptasi antara signature pi-agent-core dan pi-coding-agent +1. **Penyelarasan signature tool**: Saat ini mengadaptasi antara signature pi-agent-core dan pi-coding-agent 2. **Pembungkusan session manager**: `guardSessionManager` menambah keamanan tetapi meningkatkan kompleksitas -3. **Pemuatan ekstensi**: Dapat menggunakan `ResourceLoader` milik pi secara lebih langsung -4. **Kompleksitas handler streaming**: `subscribeEmbeddedPiSession` sudah membesar -5. **Kekhasan provider**: Banyak codepath khusus provider yang berpotensi dapat ditangani oleh pi +3. **Pemuatan ekstensi**: Dapat menggunakan `ResourceLoader` milik Pi secara lebih langsung +4. **Kompleksitas handler streaming**: `subscribeEmbeddedPiSession` telah berkembang besar +5. **Keanehan penyedia**: Banyak codepath khusus penyedia yang berpotensi dapat ditangani oleh Pi ## Pengujian @@ -568,13 +560,13 @@ Cakupan integrasi Pi mencakup suite berikut: - `src/agents/pi-settings.test.ts` - `src/agents/pi-hooks/**/*.test.ts` -Live/opt-in: +Live/opsional: - `src/agents/pi-embedded-runner-extraparams.live.test.ts` (aktifkan `OPENCLAW_LIVE_TEST=1`) -Untuk perintah eksekusi saat ini, lihat [Alur kerja Pengembangan Pi](/id/pi-dev). +Untuk perintah run saat ini, lihat [Alur kerja pengembangan Pi](/id/pi-dev). ## Terkait - [Alur kerja pengembangan Pi](/id/pi-dev) -- [Ikhtisar instalasi](/id/install) +- [Gambaran umum instalasi](/id/install) diff --git a/docs/id/providers/deepseek.md b/docs/id/providers/deepseek.md index 0e5054bae..86fc60be1 100644 --- a/docs/id/providers/deepseek.md +++ b/docs/id/providers/deepseek.md @@ -1,19 +1,19 @@ --- read_when: - Anda ingin menggunakan DeepSeek dengan OpenClaw - - Anda memerlukan var env kunci API atau pilihan autentikasi CLI -summary: Penyiapan DeepSeek (auth + pemilihan model) + - Anda memerlukan variabel env kunci API atau pilihan autentikasi CLI +summary: Penyiapan DeepSeek (autentikasi + pemilihan model) title: DeepSeek x-i18n: - generated_at: "2026-04-24T09:22:40Z" + generated_at: "2026-04-24T15:22:11Z" model: gpt-5.4 provider: openai - source_hash: ead407c67c05bd8700db1cba36defdd9d47bdc9a071c76a07c4b4fb82f6b80e2 + source_hash: 5b0d2345c72328e14351d71c5784204dc6ed9dc922f919b6adfac394001c3261 source_path: providers/deepseek.md workflow: 15 --- -[DeepSeek](https://www.deepseek.com) menyediakan model AI yang canggih dengan API yang kompatibel dengan OpenAI. +[DeepSeek](https://www.deepseek.com) menyediakan model AI yang andal dengan API yang kompatibel dengan OpenAI. | Properti | Nilai | | -------- | -------------------------- | @@ -33,7 +33,7 @@ x-i18n: openclaw onboard --auth-choice deepseek-api-key ``` - Ini akan meminta kunci API Anda dan menetapkan `deepseek/deepseek-chat` sebagai model default. + Ini akan meminta kunci API Anda dan menetapkan `deepseek/deepseek-v4-flash` sebagai model default. @@ -45,7 +45,7 @@ x-i18n: - Untuk instalasi yang discript atau tanpa antarmuka, teruskan semua flag secara langsung: + Untuk instalasi berskrip atau headless, teruskan semua flag secara langsung: ```bash openclaw onboard --non-interactive \ @@ -67,13 +67,17 @@ tersedia untuk proses tersebut (misalnya, di `~/.openclaw/.env` atau melalui ## Katalog bawaan -| Referensi model | Nama | Input | Konteks | Output maks | Catatan | -| ---------------------------- | ----------------- | ----- | ------- | ---------- | ------------------------------------------------- | -| `deepseek/deepseek-chat` | DeepSeek Chat | text | 131,072 | 8,192 | Model default; permukaan DeepSeek V3.2 non-thinking | -| `deepseek/deepseek-reasoner` | DeepSeek Reasoner | text | 131,072 | 65,536 | Permukaan V3.2 dengan kemampuan penalaran | +| Referensi model | Nama | Input | Konteks | Output maks | Catatan | +| ---------------------------- | ----------------- | ----- | --------- | ---------- | ------------------------------------------ | +| `deepseek/deepseek-v4-flash` | DeepSeek V4 Flash | text | 1,000,000 | 384,000 | Model default; permukaan V4 yang mendukung thinking | +| `deepseek/deepseek-v4-pro` | DeepSeek V4 Pro | text | 1,000,000 | 384,000 | Permukaan V4 yang mendukung thinking | +| `deepseek/deepseek-chat` | DeepSeek Chat | text | 131,072 | 8,192 | Permukaan non-thinking DeepSeek V3.2 | +| `deepseek/deepseek-reasoner` | DeepSeek Reasoner | text | 131,072 | 65,536 | Permukaan V3.2 dengan reasoning | -Kedua model bawaan saat ini mengiklankan kompatibilitas penggunaan streaming dalam source. +Model V4 mendukung kontrol `thinking` milik DeepSeek. OpenClaw juga memutar ulang +`reasoning_content` DeepSeek pada giliran lanjutan sehingga sesi thinking dengan pemanggilan tool +dapat berlanjut. ## Contoh konfigurasi @@ -83,7 +87,7 @@ Kedua model bawaan saat ini mengiklankan kompatibilitas penggunaan streaming dal env: { DEEPSEEK_API_KEY: "sk-..." }, agents: { defaults: { - model: { primary: "deepseek/deepseek-chat" }, + model: { primary: "deepseek/deepseek-v4-flash" }, }, }, } diff --git a/docs/id/tools/plugin.md b/docs/id/tools/plugin.md index 001afa093..45c2ae2e4 100644 --- a/docs/id/tools/plugin.md +++ b/docs/id/tools/plugin.md @@ -1,25 +1,25 @@ --- read_when: - - Menginstal atau mengonfigurasi Plugin - - Memahami aturan penemuan dan pemuatan Plugin - - Bekerja dengan bundel Plugin yang kompatibel dengan Codex/Claude + - Menginstal atau mengonfigurasi plugin + - Memahami aturan penemuan dan pemuatan plugin + - Bekerja dengan bundel plugin yang kompatibel dengan Codex/Claude sidebarTitle: Install and Configure summary: Instal, konfigurasikan, dan kelola Plugin OpenClaw title: Plugin x-i18n: - generated_at: "2026-04-24T09:32:25Z" + generated_at: "2026-04-24T15:22:14Z" model: gpt-5.4 provider: openai - source_hash: 83ab1218d6677ad518a4991ca546d55eed9648e1fa92b76b7433ecd5df569e28 + source_hash: 947bb7ffc13280fd63f79bb68cb18a37c6614144b91a83afd38e5ac3c5187aed source_path: tools/plugin.md workflow: 15 --- Plugin memperluas OpenClaw dengan kemampuan baru: channel, penyedia model, harness agen, alat, Skills, ucapan, transkripsi realtime, suara realtime, -pemahaman media, pembuatan gambar, pembuatan video, pengambilan web, pencarian web, -dan banyak lagi. Beberapa plugin bersifat **inti** (disertakan dengan OpenClaw), yang lain -bersifat **eksternal** (dipublikasikan di npm oleh komunitas). +pemahaman media, pembuatan gambar, pembuatan video, web fetch, pencarian web, +dan lainnya. Beberapa plugin bersifat **core** (dikirim bersama OpenClaw), yang lain +bersifat **external** (dipublikasikan di npm oleh komunitas). ## Mulai cepat @@ -35,7 +35,7 @@ bersifat **eksternal** (dipublikasikan di npm oleh komunitas). # Dari npm openclaw plugins install @openclaw/voice-call - # Dari direktori lokal atau arsip + # Dari direktori atau arsip lokal openclaw plugins install ./my-plugin openclaw plugins install ./my-plugin.tgz ``` @@ -47,12 +47,12 @@ bersifat **eksternal** (dipublikasikan di npm oleh komunitas). openclaw gateway restart ``` - Lalu konfigurasi di bawah `plugins.entries.\.config` dalam file konfigurasi Anda. + Lalu konfigurasikan di bawah `plugins.entries.\.config` dalam file konfigurasi Anda. -Jika Anda lebih suka kontrol native-chat, aktifkan `commands.plugins: true` dan gunakan: +Jika Anda lebih memilih kontrol yang native untuk chat, aktifkan `commands.plugins: true` dan gunakan: ```text /plugin install clawhub:@openclaw/voice-call @@ -60,19 +60,17 @@ Jika Anda lebih suka kontrol native-chat, aktifkan `commands.plugins: true` dan /plugin enable voice-call ``` -Jalur instalasi menggunakan resolver yang sama seperti CLI: path/arsip lokal, `clawhub:` -eksplisit, atau spesifikasi paket tanpa awalan (ClawHub terlebih dahulu, lalu fallback ke npm). +Jalur instalasi menggunakan resolver yang sama dengan CLI: path/arsip lokal, `clawhub:` eksplisit, atau spesifikasi paket biasa (ClawHub terlebih dahulu, lalu fallback ke 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 serta pada +Jika konfigurasi tidak valid, instalasi biasanya gagal secara tertutup dan mengarahkan Anda ke +`openclaw doctor --fix`. Satu-satunya pengecualian pemulihan adalah jalur penginstalan ulang +plugin bawaan yang sempit untuk plugin yang memilih ikut serta dalam `openclaw.install.allowInvalidConfigRecovery`. -Instalasi OpenClaw yang dipaketkan tidak secara eager menginstal seluruh pohon dependensi -runtime setiap plugin bawaan. Saat plugin bawaan milik OpenClaw aktif dari -konfigurasi plugin, konfigurasi channel lama, atau manifest yang diaktifkan secara default, startup -hanya memperbaiki dependensi runtime yang dideklarasikan oleh plugin tersebut sebelum mengimpornya. -Plugin eksternal dan path muat kustom tetap harus diinstal melalui +Instalasi OpenClaw yang dipaketkan tidak secara eager menginstal seluruh pohon dependensi runtime dari setiap plugin bawaan. +Saat plugin bawaan milik OpenClaw aktif dari konfigurasi plugin, konfigurasi channel lama, atau manifest yang aktif secara default, +startup hanya memperbaiki dependensi runtime yang dideklarasikan oleh plugin itu sebelum mengimpornya. +Plugin external dan path pemuatan kustom tetap harus diinstal melalui `openclaw plugins install`. ## Jenis plugin @@ -81,13 +79,13 @@ OpenClaw mengenali dua format plugin: | Format | Cara kerjanya | Contoh | | ---------- | ------------------------------------------------------------------ | ------------------------------------------------------ | -| **Native** | `openclaw.plugin.json` + modul runtime; dijalankan dalam proses | Plugin resmi, paket npm komunitas | +| **Native** | `openclaw.plugin.json` + modul runtime; dieksekusi dalam proses | Plugin resmi, paket npm komunitas | | **Bundle** | Tata letak yang kompatibel dengan Codex/Claude/Cursor; dipetakan ke fitur OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` | -Keduanya muncul di `openclaw plugins list`. Lihat [Plugin Bundles](/id/plugins/bundles) untuk detail bundle. +Keduanya muncul di `openclaw plugins list`. Lihat [Bundel Plugin](/id/plugins/bundles) untuk detail bundel. -Jika Anda menulis plugin native, mulai dengan [Building Plugins](/id/plugins/building-plugins) -dan [Plugin SDK Overview](/id/plugins/sdk-overview). +Jika Anda menulis plugin native, mulai dari [Membangun Plugin](/id/plugins/building-plugins) +dan [Ikhtisar Plugin SDK](/id/plugins/sdk-overview). ## Plugin resmi @@ -102,7 +100,7 @@ dan [Plugin SDK Overview](/id/plugins/sdk-overview). | Zalo | `@openclaw/zalo` | [Zalo](/id/channels/zalo) | | Zalo Personal | `@openclaw/zalouser` | [Zalo Personal](/id/plugins/zalouser) | -### Inti (disertakan dengan OpenClaw) +### Core (dikirim bersama OpenClaw) @@ -115,7 +113,7 @@ dan [Plugin SDK Overview](/id/plugins/sdk-overview). - `memory-core` — pencarian memori bawaan (default melalui `plugins.slots.memory`) - - `memory-lancedb` — memori jangka panjang install-on-demand dengan auto-recall/capture (atur `plugins.slots.memory = "memory-lancedb"`) + - `memory-lancedb` — memori jangka panjang install-on-demand dengan recall/capture otomatis (atur `plugins.slots.memory = "memory-lancedb"`) @@ -124,11 +122,11 @@ dan [Plugin SDK Overview](/id/plugins/sdk-overview). - `browser` — plugin browser bawaan untuk alat browser, CLI `openclaw browser`, metode gateway `browser.request`, runtime browser, dan layanan kontrol browser default (diaktifkan secara default; nonaktifkan sebelum menggantinya) - - `copilot-proxy` — bridge VS Code Copilot Proxy (dinonaktifkan secara default) + - `copilot-proxy` — jembatan Proxy VS Code Copilot (dinonaktifkan secara default) -Mencari plugin pihak ketiga? Lihat [Community Plugins](/id/plugins/community). +Mencari plugin pihak ketiga? Lihat [Plugin Komunitas](/id/plugins/community). ## Konfigurasi @@ -146,32 +144,43 @@ Mencari plugin pihak ketiga? Lihat [Community Plugins](/id/plugins/community). } ``` -| Bidang | Deskripsi | -| --------------- | -------------------------------------------------------- | -| `enabled` | Toggle utama (default: `true`) | -| `allow` | Daftar izin plugin (opsional) | -| `deny` | Daftar tolak plugin (opsional; tolak menang) | -| `load.paths` | File/direktori plugin tambahan | -| `slots` | Pemilih slot eksklusif (mis. `memory`, `contextEngine`) | -| `entries.\` | Toggle per-plugin + konfigurasi | +| Field | Deskripsi | +| ---------------- | --------------------------------------------------------- | +| `enabled` | Toggle utama (default: `true`) | +| `allow` | Daftar izin plugin (opsional) | +| `deny` | Daftar blokir plugin (opsional; deny menang) | +| `load.paths` | File/direktori plugin tambahan | +| `slots` | Pemilih slot eksklusif (mis. `memory`, `contextEngine`) | +| `entries.\` | Toggle + konfigurasi per plugin | -Perubahan konfigurasi **memerlukan restart gateway**. Jika Gateway berjalan dengan -watch konfigurasi + restart dalam proses diaktifkan (jalur default `openclaw gateway`), -restart tersebut biasanya dilakukan secara otomatis sesaat setelah penulisan konfigurasi diterapkan. +Perubahan konfigurasi **memerlukan restart gateway**. Jika Gateway berjalan dengan config +watch + restart dalam proses diaktifkan (jalur default `openclaw gateway`), restart +tersebut biasanya dilakukan secara otomatis sesaat setelah penulisan konfigurasi selesai. +Tidak ada jalur hot-reload yang didukung untuk kode runtime plugin native atau hook +siklus hidup; restart proses Gateway yang melayani channel live sebelum +mengharapkan kode `register(api)` yang diperbarui, hook `api.on(...)`, alat, layanan, atau +hook penyedia/runtime berjalan. + +`openclaw plugins list` adalah snapshot CLI/konfigurasi lokal. Plugin `loaded` di sana +berarti plugin dapat ditemukan dan dimuat dari konfigurasi/file yang terlihat oleh +pemanggilan CLI tersebut. Itu tidak membuktikan bahwa child Gateway remote yang sudah berjalan +telah di-restart ke kode plugin yang sama. Pada setup VPS/container dengan proses pembungkus, +kirim restart ke proses `openclaw gateway run` yang sebenarnya, atau gunakan +`openclaw gateway restart` terhadap Gateway yang sedang berjalan. - **Disabled**: plugin ada tetapi aturan pengaktifan menonaktifkannya. Konfigurasi dipertahankan. - - **Missing**: konfigurasi mereferensikan id plugin yang tidak ditemukan oleh discovery. + - **Missing**: konfigurasi mereferensikan ID plugin yang tidak ditemukan oleh discovery. - **Invalid**: plugin ada tetapi konfigurasinya tidak cocok dengan skema yang dideklarasikan. -## Penemuan dan prioritas +## Discovery dan prioritas -OpenClaw memindai plugin dalam urutan ini (kecocokan pertama yang menang): +OpenClaw memindai plugin dalam urutan ini (kecocokan pertama menang): - `plugins.load.paths` — file atau path direktori eksplisit. + `plugins.load.paths` — path file atau direktori eksplisit. @@ -183,7 +192,7 @@ OpenClaw memindai plugin dalam urutan ini (kecocokan pertama yang menang): - Disertakan dengan OpenClaw. Banyak yang diaktifkan secara default (penyedia model, ucapan). + Dikirim bersama OpenClaw. Banyak yang diaktifkan secara default (penyedia model, ucapan). Yang lain memerlukan pengaktifan eksplisit. @@ -194,16 +203,36 @@ OpenClaw memindai plugin dalam urutan ini (kecocokan pertama yang menang): - `plugins.deny` selalu menang atas allow - `plugins.entries.\.enabled: false` menonaktifkan plugin tersebut - Plugin yang berasal dari workspace **dinonaktifkan secara default** (harus diaktifkan secara eksplisit) -- Plugin bawaan mengikuti set default-on bawaan kecuali jika dioverride -- Slot eksklusif dapat memaksa plugin yang dipilih untuk slot itu menjadi aktif -- Beberapa plugin bawaan opt-in diaktifkan secara otomatis saat konfigurasi menamai - permukaan milik plugin, seperti referensi model penyedia, konfigurasi channel, atau runtime - harness +- Plugin bawaan mengikuti kumpulan default-on bawaan kecuali ditimpa +- Slot eksklusif dapat memaksa mengaktifkan plugin yang dipilih untuk slot tersebut +- Beberapa plugin bawaan opt-in diaktifkan secara otomatis ketika konfigurasi menamai surface milik plugin, + seperti referensi model penyedia, konfigurasi channel, atau runtime harness - Rute Codex keluarga OpenAI mempertahankan batas plugin yang terpisah: - `openai-codex/*` milik plugin OpenAI, sedangkan plugin app-server Codex - bawaan dipilih oleh `embeddedHarness.runtime: "codex"` atau referensi model lama + `openai-codex/*` milik plugin OpenAI, sedangkan plugin app-server Codex bawaan + dipilih oleh `embeddedHarness.runtime: "codex"` atau referensi model lama `codex/*` +## Pemecahan Masalah Hook Runtime + +Jika plugin muncul di `plugins list` tetapi efek samping `register(api)` atau hook +tidak berjalan dalam lalu lintas chat live, periksa ini terlebih dahulu: + +- Jalankan `openclaw gateway status --deep --require-rpc` dan konfirmasi URL + Gateway aktif, profil, path konfigurasi, dan proses adalah yang sedang Anda edit. +- Restart Gateway live setelah perubahan instalasi/konfigurasi/kode plugin. Dalam + container pembungkus, PID 1 mungkin hanya supervisor; restart atau kirim sinyal ke proses child + `openclaw gateway run`. +- Gunakan `openclaw plugins inspect --json` untuk mengonfirmasi registrasi hook dan + diagnostik. Hook percakapan non-bawaan seperti `llm_input`, + `llm_output`, dan `agent_end` memerlukan + `plugins.entries..hooks.allowConversationAccess=true`. +- Untuk pergantian model, utamakan `before_model_resolve`. Hook ini berjalan sebelum resolusi model + untuk giliran agen; `llm_output` hanya berjalan setelah percobaan model + menghasilkan output asisten. +- Untuk bukti model sesi yang efektif, gunakan `openclaw sessions` atau surface + sesi/status Gateway dan, saat men-debug payload penyedia, mulai + Gateway dengan `--raw-stream --raw-stream-path `. + ## Slot plugin (kategori eksklusif) Beberapa kategori bersifat eksklusif (hanya satu yang aktif pada satu waktu): @@ -219,10 +248,10 @@ Beberapa kategori bersifat eksklusif (hanya satu yang aktif pada satu waktu): } ``` -| Slot | Yang dikendalikan | Default | -| --------------- | ---------------------- | ------------------- | -| `memory` | Plugin Active Memory | `memory-core` | -| `contextEngine` | Mesin konteks aktif | `legacy` (bawaan) | +| Slot | Yang dikendalikan | Default | +| --------------- | --------------------- | ------------------- | +| `memory` | Plugin Active Memory | `memory-core` | +| `contextEngine` | Mesin konteks aktif | `legacy` (bawaan) | ## Referensi CLI @@ -241,10 +270,10 @@ openclaw plugins install # instal (ClawHub terlebih dahulu, la openclaw plugins install clawhub: # instal hanya dari ClawHub openclaw plugins install --force # timpa instalasi yang ada openclaw plugins install # instal dari path lokal -openclaw plugins install -l # link (tanpa copy) untuk pengembangan +openclaw plugins install -l # tautkan (tanpa menyalin) untuk pengembangan openclaw plugins install --marketplace openclaw plugins install --marketplace https://github.com// -openclaw plugins install --pin # catat spesifikasi npm hasil resolve yang persis +openclaw plugins install --pin # catat spesifikasi npm hasil resolusi yang tepat openclaw plugins install --dangerously-force-unsafe-install openclaw plugins update # perbarui satu plugin openclaw plugins update --dangerously-force-unsafe-install @@ -258,50 +287,50 @@ openclaw plugins enable openclaw plugins disable ``` -Plugin bawaan disertakan dengan OpenClaw. Banyak yang diaktifkan secara default (misalnya +Plugin bawaan dikirim bersama OpenClaw. Banyak yang diaktifkan secara default (misalnya penyedia model bawaan, penyedia ucapan bawaan, dan plugin browser bawaan). Plugin bawaan lainnya tetap memerlukan `openclaw plugins enable `. -`--force` menimpa plugin atau paket hook yang sudah terinstal di tempat yang sama. Gunakan -`openclaw plugins update ` untuk upgrade rutin plugin npm yang terlacak. -Ini tidak didukung dengan `--link`, yang menggunakan ulang path sumber +`--force` menimpa plugin atau paket hook yang sudah terinstal di tempat. Gunakan +`openclaw plugins update ` untuk upgrade rutin plugin npm +yang dilacak. Opsi ini tidak didukung dengan `--link`, yang menggunakan ulang path sumber alih-alih menyalin ke target instalasi terkelola. -Saat `plugins.allow` sudah disetel, `openclaw plugins install` menambahkan id plugin yang -diinstal ke daftar izin tersebut sebelum mengaktifkannya, sehingga instalasi dapat -langsung dimuat setelah restart. +Saat `plugins.allow` sudah diatur, `openclaw plugins install` menambahkan +ID plugin yang diinstal ke daftar izin tersebut sebelum mengaktifkannya, sehingga instalasi +langsung dapat dimuat setelah restart. -`openclaw plugins update ` berlaku untuk instalasi yang terlacak. Memberikan -spesifikasi paket npm dengan dist-tag atau versi persis akan me-resolve nama paket -kembali ke catatan plugin yang terlacak dan mencatat spesifikasi baru untuk pembaruan berikutnya. -Memberikan nama paket tanpa versi memindahkan instalasi exact pinned kembali ke -jalur rilis default registry. Jika plugin npm yang terinstal sudah cocok -dengan versi hasil resolve dan identitas artefak yang tercatat, OpenClaw melewati pembaruan +`openclaw plugins update ` berlaku untuk instalasi yang dilacak. Memberikan +spesifikasi paket npm dengan dist-tag atau versi yang tepat akan menyelesaikan nama paket +kembali ke catatan plugin yang dilacak dan mencatat spesifikasi baru untuk pembaruan mendatang. +Memberikan nama paket tanpa versi memindahkan instalasi pin tepat kembali ke +jalur rilis default registri. Jika plugin npm yang terinstal sudah cocok +dengan versi hasil resolusi dan identitas artefak yang tercatat, OpenClaw melewati pembaruan tanpa mengunduh, menginstal ulang, atau menulis ulang konfigurasi. -`--pin` hanya untuk npm. Ini tidak didukung dengan `--marketplace`, karena +`--pin` hanya untuk npm. Opsi ini tidak didukung dengan `--marketplace`, karena instalasi marketplace menyimpan metadata sumber marketplace alih-alih spesifikasi npm. `--dangerously-force-unsafe-install` adalah override break-glass untuk false -positive dari pemindai kode berbahaya bawaan. Ini memungkinkan instalasi plugin -dan pembaruan plugin tetap berjalan melewati temuan bawaan `critical`, tetapi tetap +positive dari pemindai kode berbahaya bawaan. Opsi ini memungkinkan instalasi plugin +dan pembaruan plugin untuk tetap berjalan melewati temuan bawaan `critical`, tetapi tetap tidak melewati blok kebijakan plugin `before_install` atau pemblokiran kegagalan pemindaian. -Flag CLI ini hanya berlaku untuk alur instal/update plugin. Instalasi dependensi skill +Flag CLI ini hanya berlaku untuk alur instalasi/pembaruan plugin. Instalasi dependensi skill yang didukung Gateway menggunakan override permintaan `dangerouslyForceUnsafeInstall` yang sesuai, -sedangkan `openclaw skills install` tetap menjadi alur unduh/instal skill ClawHub yang terpisah. +sementara `openclaw skills install` tetap menjadi alur unduh/instal skill ClawHub yang terpisah. -Bundle yang kompatibel berpartisipasi dalam alur list/inspect/enable/disable plugin yang sama. Dukungan runtime saat ini mencakup bundle skills, command-skills Claude, +Bundel yang kompatibel berpartisipasi dalam alur list/inspect/enable/disable plugin yang sama. +Dukungan runtime saat ini mencakup skill bundel, command-skills Claude, default Claude `settings.json`, default Claude `.lsp.json` dan `lspServers` -yang dideklarasikan dalam manifest, command-skills Cursor, dan direktori hook -Codex yang kompatibel. +yang dideklarasikan manifest, command-skills Cursor, dan direktori hook Codex yang kompatibel. -`openclaw plugins inspect ` juga melaporkan kemampuan bundle yang terdeteksi serta -entri server MCP dan LSP yang didukung atau tidak didukung untuk plugin yang didukung bundle. +`openclaw plugins inspect ` juga melaporkan kemampuan bundel yang terdeteksi serta +entri server MCP dan LSP yang didukung atau tidak didukung untuk plugin berbasis bundel. Sumber marketplace dapat berupa nama known-marketplace Claude dari -`~/.claude/plugins/known_marketplaces.json`, root marketplace lokal atau path -`marketplace.json`, shorthand GitHub seperti `owner/repo`, URL repo GitHub, +`~/.claude/plugins/known_marketplaces.json`, root marketplace lokal atau +path `marketplace.json`, singkatan GitHub seperti `owner/repo`, URL repo GitHub, atau URL git. Untuk marketplace remote, entri plugin harus tetap berada di dalam repo marketplace yang dikloning dan hanya menggunakan sumber path relatif. @@ -309,8 +338,8 @@ Lihat [referensi CLI `openclaw plugins`](/id/cli/plugins) untuk detail lengkap. ## Ikhtisar 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 +Plugin native mengekspor objek entri yang mengekspos `register(api)`. Plugin +lama mungkin masih menggunakan `activate(api)` sebagai alias lama, tetapi plugin baru harus menggunakan `register`. ```typescript @@ -332,13 +361,13 @@ export default definePluginEntry({ ``` OpenClaw memuat objek entri dan memanggil `register(api)` selama aktivasi -plugin. Loader masih melakukan fallback ke `activate(api)` untuk plugin lama, -tetapi plugin bawaan dan plugin eksternal baru harus memperlakukan `register` sebagai +plugin. Loader masih fallback ke `activate(api)` untuk plugin lama, +tetapi plugin bawaan dan plugin external baru harus memperlakukan `register` sebagai kontrak publik. -Metode pendaftaran umum: +Metode pendaftaran yang umum: -| Metode | Yang didaftarkan | +| Method | Yang didaftarkan | | --------------------------------------- | --------------------------- | | `registerProvider` | Penyedia model (LLM) | | `registerChannel` | Channel chat | @@ -351,7 +380,7 @@ Metode pendaftaran umum: | `registerImageGenerationProvider` | Pembuatan gambar | | `registerMusicGenerationProvider` | Pembuatan musik | | `registerVideoGenerationProvider` | Pembuatan video | -| `registerWebFetchProvider` | Penyedia fetch / scrape web | +| `registerWebFetchProvider` | Penyedia web fetch / scrape | | `registerWebSearchProvider` | Pencarian web | | `registerHttpRoute` | Endpoint HTTP | | `registerCommand` / `registerCli` | Perintah CLI | @@ -360,20 +389,20 @@ Metode pendaftaran umum: Perilaku guard hook untuk hook siklus hidup bertipe: -- `before_tool_call`: `{ block: true }` bersifat terminal; handler dengan prioritas lebih rendah dilewati. -- `before_tool_call`: `{ block: false }` adalah no-op dan tidak menghapus block yang lebih awal. -- `before_install`: `{ block: true }` bersifat terminal; handler dengan prioritas lebih rendah dilewati. -- `before_install`: `{ block: false }` adalah no-op dan tidak menghapus block yang lebih awal. -- `message_sending`: `{ cancel: true }` bersifat terminal; handler dengan prioritas lebih rendah dilewati. -- `message_sending`: `{ cancel: false }` adalah no-op dan tidak menghapus cancel yang lebih awal. +- `before_tool_call`: `{ block: true }` bersifat terminal; handler prioritas lebih rendah dilewati. +- `before_tool_call`: `{ block: false }` adalah no-op dan tidak menghapus blok sebelumnya. +- `before_install`: `{ block: true }` bersifat terminal; handler prioritas lebih rendah dilewati. +- `before_install`: `{ block: false }` adalah no-op dan tidak menghapus blok sebelumnya. +- `message_sending`: `{ cancel: true }` bersifat terminal; handler prioritas lebih rendah dilewati. +- `message_sending`: `{ cancel: false }` adalah no-op dan tidak menghapus cancel sebelumnya. Untuk perilaku hook bertipe lengkap, lihat [Ikhtisar SDK](/id/plugins/sdk-overview#hook-decision-semantics). ## Terkait -- [Building Plugins](/id/plugins/building-plugins) — buat plugin Anda sendiri -- [Plugin Bundles](/id/plugins/bundles) — kompatibilitas bundle Codex/Claude/Cursor -- [Plugin Manifest](/id/plugins/manifest) — skema manifest -- [Registering Tools](/id/plugins/building-plugins#registering-agent-tools) — tambahkan alat agen dalam plugin -- [Plugin Internals](/id/plugins/architecture) — model kapabilitas dan pipeline pemuatan -- [Community Plugins](/id/plugins/community) — daftar pihak ketiga +- [Membangun Plugin](/id/plugins/building-plugins) — buat plugin Anda sendiri +- [Bundel Plugin](/id/plugins/bundles) — kompatibilitas bundel Codex/Claude/Cursor +- [Manifest Plugin](/id/plugins/manifest) — skema manifest +- [Mendaftarkan Alat](/id/plugins/building-plugins#registering-agent-tools) — tambahkan alat agen dalam plugin +- [Internal Plugin](/id/plugins/architecture) — model kapabilitas dan pipeline pemuatan +- [Plugin Komunitas](/id/plugins/community) — daftar pihak ketiga