Jika layanan upstream mengekspos API model HTTP biasa, tulis
Plugin provider sebagai gantinya. Jika runtime
upstream memiliki sesi agen lengkap, peristiwa tool, Compaction, atau status
tugas latar belakang, gunakan harness agen.
Yang dimiliki Plugin
Plugin backend CLI memiliki tiga kontrak:| Kontrak | File | Tujuan |
|---|---|---|
| Entri paket | package.json | Mengarahkan OpenClaw ke modul runtime Plugin |
| Kepemilikan manifest | openclaw.plugin.json | Mendeklarasikan id backend sebelum runtime dimuat |
| Registrasi runtime | index.ts | Memanggil api.registerCliBackend(...) dengan default perintah |
api.registerCliBackend(...).
Plugin backend minimal
Create package metadata
package.json
./src/index.ts, tambahkan
openclaw.runtimeExtensions yang menunjuk ke peer JavaScript hasil build.
Lihat Titik entri.Declare backend ownership
openclaw.plugin.json
cliBackends adalah daftar kepemilikan runtime. Ini memungkinkan OpenClaw
memuat Plugin secara otomatis ketika konfigurasi atau pemilihan model
menyebut acme-cli/....setup.cliBackends adalah permukaan setup berbasis descriptor terlebih
dahulu. Tambahkan ini ketika discovery model, onboarding, atau status perlu
mengenali backend tanpa memuat runtime Plugin. Gunakan requiresRuntime: false hanya ketika descriptor statis tersebut cukup untuk setup.Bentuk konfigurasi
CliBackendConfig menjelaskan bagaimana OpenClaw harus meluncurkan dan
mengurai CLI:
| Field | Use |
|---|---|
command | Nama binary atau path perintah absolut |
args | argv dasar untuk run baru |
resumeArgs | argv alternatif untuk sesi yang dilanjutkan; mendukung {sessionId} |
output / resumeOutput | Parser: json, jsonl, atau text |
input | Transport prompt: arg atau stdin |
modelArg | Flag yang digunakan sebelum id model |
modelAliases | Memetakan id model OpenClaw ke id native CLI |
sessionArg / sessionArgs | Cara meneruskan id sesi |
sessionMode | always, existing, atau none |
sessionIdFields | Field JSON yang dibaca OpenClaw dari output CLI |
systemPromptArg / systemPromptFileArg | Transport system prompt |
systemPromptWhen | first, always, atau never |
imageArg / imageMode | Dukungan path gambar |
serialize | Menjaga run backend yang sama tetap berurutan |
reliability.watchdog | Penyetelan timeout tanpa output |
Hook backend lanjutan
CliBackendPlugin juga dapat mendefinisikan:
| Hook | Use |
|---|---|
normalizeConfig(config, context) | Menulis ulang konfigurasi pengguna lama setelah penggabungan |
resolveExecutionArgs(ctx) | Menambahkan flag berbasis request seperti effort berpikir atau isolasi pertanyaan sampingan |
prepareExecution(ctx) | Membuat bridge autentikasi atau konfigurasi sementara sebelum peluncuran |
transformSystemPrompt(ctx) | Menerapkan transformasi system prompt khusus CLI terakhir |
textTransforms | Penggantian prompt/output dua arah |
defaultAuthProfileId | Mengutamakan profil autentikasi OpenClaw tertentu |
authEpochMode | Menentukan bagaimana perubahan autentikasi membatalkan sesi CLI tersimpan |
nativeToolMode | Mendeklarasikan apakah CLI memiliki tool native yang selalu aktif |
sideQuestionToolMode | Mendeklarasikan tool native yang dinonaktifkan untuk pertanyaan sampingan /btw |
bundleMcp / bundleMcpMode | Ikut menggunakan bridge tool MCP local loopback milik OpenClaw |
ownsNativeCompaction | Backend memiliki Compaction sendiri - OpenClaw menundanya |
ctx.executionMode bernilai "agent" untuk giliran normal dan
"side-question" untuk panggilan /btw sementara. Gunakan ini ketika CLI
memerlukan flag sekali pakai yang berbeda, seperti menonaktifkan tool native,
persistensi sesi, atau perilaku resume untuk BTW. Jika backend biasanya memiliki
nativeToolMode: "always-on" tetapi argv pertanyaan sampingannya secara andal
menonaktifkan tool tersebut, tetapkan juga sideQuestionToolMode: "disabled";
jika tidak, OpenClaw akan gagal tertutup ketika BTW memerlukan run CLI tanpa
tool.
ownsNativeCompaction: memilih keluar dari Compaction OpenClaw
Jika backend Anda menjalankan agen yang memadatkan transkripnya sendiri,
tetapkan ownsNativeCompaction: true agar summarizer pengaman OpenClaw tidak
pernah berjalan terhadap sesinya - siklus hidup Compaction CLI mengembalikan
no-op dan giliran berlanjut. claude-cli mendeklarasikannya karena Claude Code
melakukan Compaction secara internal tanpa endpoint harness. Sesi native-harness
seperti Codex tetap diarahkan ke endpoint Compaction harness-nya.
Deklarasikan hanya ketika semua hal berikut berlaku, atau sesi tertunda yang
melebihi anggaran dapat tetap melebihi anggaran / menjadi usang (OpenClaw tidak
lagi menyelamatkannya):
- backend secara andal melakukan Compaction atau membatasi transkripnya sendiri saat mendekati jendelanya;
- backend mempertahankan sesi yang dapat dilanjutkan agar status yang telah dipadatkan bertahan lintas giliran
(mis.
--resume/--session-id); - ini bukan sesi Compaction native-harness - sesi yang cocok dengan
agentHarnessIddiarahkan ke endpoint harness sebagai gantinya.
Bridge tool MCP
Backend CLI tidak menerima tool OpenClaw secara default. Jika CLI dapat mengonsumsi konfigurasi MCP, aktifkan secara eksplisit:| Mode | Use |
|---|---|
claude-config-file | CLI yang menerima file konfigurasi MCP |
codex-config-overrides | CLI yang menerima override konfigurasi pada argv |
gemini-system-settings | CLI yang membaca pengaturan MCP dari direktori pengaturan sistemnya |
nativeToolMode: "always-on" agar OpenClaw dapat gagal tertutup ketika pemanggil
memerlukan tanpa tool native.
Konfigurasi pengguna
Pengguna dapat mengganti default backend apa pun:command ketika binary berada di luar PATH.
Verifikasi
Untuk Plugin bawaan, tambahkan pengujian terfokus pada builder dan registrasi setup, lalu jalankan lane pengujian yang ditargetkan untuk Plugin tersebut:Checklist
package.json memiliki openclaw.extensions dan entri runtime yang dibangun untuk paket yang dipublikasikanopenclaw.plugin.json mendeklarasikan cliBackends dan activation.onStartup yang disengajasetup.cliBackends ada ketika setup/discovery model harus melihat backend dalam kondisi coldapi.registerCliBackend(...) menggunakan id backend yang sama dengan manifestOverride pengguna di bawah
agents.defaults.cliBackends.<id> tetap menangPengaturan sesi, system prompt, gambar, dan parser output cocok dengan kontrak CLI nyata
Pengujian yang ditargetkan dan setidaknya satu smoke CLI langsung membuktikan jalur backend
Terkait
- Backend CLI - konfigurasi pengguna dan perilaku runtime
- Membangun Plugin - dasar-dasar paket dan manifest
- Ikhtisar SDK Plugin - referensi API registrasi
- Manifest Plugin -
cliBackendsdan deskriptor setup - Harness agen - runtime agen eksternal lengkap