Backend CLI (runtime fallback)
OpenClaw dapat menjalankan CLI AI lokal sebagai fallback khusus teks saat penyedia API sedang tidak tersedia, terkena rate limit, atau sementara bermasalah. Pendekatan ini sengaja dibuat konservatif:- Alat OpenClaw tidak disuntikkan secara langsung, tetapi backend dengan
bundleMcp: truedapat menerima alat gateway melalui bridge MCP local loopback. - Streaming JSONL untuk CLI yang mendukungnya.
- Sesi didukung (agar giliran tindak lanjut tetap koheren).
- Gambar dapat diteruskan jika CLI menerima path gambar.
Mulai cepat yang ramah pemula
Anda dapat menggunakan Codex CLI tanpa konfigurasi apa pun (Plugin OpenAI bawaan mendaftarkan backend default):agents.defaults.cliBackends.
Menggunakannya sebagai fallback
Tambahkan backend CLI ke daftar fallback Anda agar hanya dijalankan saat model utama gagal:- Jika Anda menggunakan
agents.defaults.models(allowlist), Anda juga harus menyertakan model backend CLI di sana. - Jika penyedia utama gagal (autentikasi, rate limit, timeout), OpenClaw akan mencoba backend CLI berikutnya.
Ikhtisar konfigurasi
Semua backend CLI berada di bawah:codex-cli, my-cli).
Id penyedia menjadi sisi kiri model ref Anda:
Contoh konfigurasi
Cara kerjanya
- Memilih backend berdasarkan prefiks penyedia (
codex-cli/...). - Membangun system prompt menggunakan prompt OpenClaw yang sama + konteks workspace.
- Menjalankan CLI dengan id sesi (jika didukung) agar riwayat tetap konsisten.
- Mem-parsing output (JSON atau teks biasa) dan mengembalikan teks akhir.
- Menyimpan id sesi per backend, sehingga tindak lanjut menggunakan kembali sesi CLI yang sama.
Backend
claude-cli Anthropic bawaan kembali didukung. Staf Anthropic
memberi tahu kami bahwa penggunaan Claude CLI bergaya OpenClaw kembali diizinkan, sehingga OpenClaw memperlakukan penggunaan
claude -p sebagai penggunaan yang disetujui untuk integrasi ini kecuali Anthropic menerbitkan
kebijakan baru.codex-cli OpenAI bawaan meneruskan system prompt OpenClaw melalui
override konfigurasi model_instructions_file Codex (-c model_instructions_file="..."). Codex tidak menyediakan flag
--append-system-prompt seperti Claude, sehingga OpenClaw menulis prompt yang dirangkai ke sebuah
file sementara untuk setiap sesi Codex CLI baru.
Backend claude-cli Anthropic bawaan menerima snapshot Skills OpenClaw
dengan dua cara: katalog Skills OpenClaw ringkas di appended system prompt, dan
Plugin Claude Code sementara yang diteruskan dengan --plugin-dir. Plugin tersebut hanya berisi
Skills yang memenuhi syarat untuk agen/sesi itu, sehingga resolver skill native Claude Code melihat set terfilter yang sama
yang seharusnya akan diiklankan OpenClaw dalam prompt. Override env/API key Skill tetap diterapkan oleh OpenClaw ke environment proses anak untuk eksekusi tersebut.
Sesi
- Jika CLI mendukung sesi, atur
sessionArg(misalnya--session-id) atausessionArgs(placeholder{sessionId}) saat ID perlu disisipkan ke beberapa flag. - Jika CLI menggunakan subperintah resume dengan flag yang berbeda, atur
resumeArgs(menggantikanargssaat melanjutkan) dan secara opsionalresumeOutput(untuk resume non-JSON). sessionMode:always: selalu kirim id sesi (UUID baru jika belum ada yang tersimpan).existing: hanya kirim id sesi jika sebelumnya sudah tersimpan.none: jangan pernah kirim id sesi.
serialize: truemenjaga urutan eksekusi pada lane yang sama.- Sebagian besar CLI melakukan serialisasi pada satu lane penyedia.
- OpenClaw membuang penggunaan ulang sesi CLI yang tersimpan saat status autentikasi backend berubah, termasuk login ulang, rotasi token, atau perubahan kredensial profil autentikasi.
Gambar (pass-through)
Jika CLI Anda menerima path gambar, aturimageArg:
imageArg diatur, path tersebut
diteruskan sebagai argumen CLI. Jika imageArg tidak ada, OpenClaw menambahkan
path file ke prompt (path injection), yang cukup untuk CLI yang otomatis
memuat file lokal dari path biasa.
Input / output
output: "json"(default) mencoba mem-parsing JSON dan mengekstrak teks + id sesi.- Untuk output JSON Gemini CLI, OpenClaw membaca teks balasan dari
responsedan penggunaan daristatssaatusagetidak ada atau kosong. output: "jsonl"mem-parsing stream JSONL (misalnya Codex CLI--json) dan mengekstrak pesan agen akhir serta pengenal sesi jika ada.output: "text"memperlakukan stdout sebagai respons akhir.
input: "arg"(default) meneruskan prompt sebagai argumen CLI terakhir.input: "stdin"mengirim prompt melalui stdin.- Jika prompt sangat panjang dan
maxPromptArgCharsdiatur, stdin digunakan.
Default (dimiliki Plugin)
Plugin OpenAI bawaan juga mendaftarkan default untukcodex-cli:
command: "codex"args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]resumeArgs: ["exec","resume","{sessionId}","-c","sandbox_mode=\"workspace-write\"","--skip-git-repo-check"]output: "jsonl"resumeOutput: "text"modelArg: "--model"imageArg: "--image"sessionMode: "existing"
google-gemini-cli:
command: "gemini"args: ["--output-format", "json", "--prompt", "{prompt}"]resumeArgs: ["--resume", "{sessionId}", "--output-format", "json", "--prompt", "{prompt}"]imageArg: "@"imagePathScope: "workspace"modelArg: "--model"sessionMode: "existing"sessionIdFields: ["session_id", "sessionId"]
gemini di PATH (brew install gemini-cli atau
npm install -g @google/gemini-cli).
Catatan JSON Gemini CLI:
- Teks balasan dibaca dari field JSON
response. - Penggunaan fallback ke
statssaatusagetidak ada atau kosong. stats.cacheddinormalisasi menjadi OpenClawcacheRead.- Jika
stats.inputtidak ada, OpenClaw menurunkan token input daristats.input_tokens - stats.cached.
command absolut).
Default yang dimiliki Plugin
Default backend CLI kini menjadi bagian dari permukaan Plugin:- Plugin mendaftarkannya dengan
api.registerCliBackend(...). idbackend menjadi prefiks penyedia dalam model ref.- Konfigurasi pengguna di
agents.defaults.cliBackends.<id>tetap menimpa default Plugin. - Pembersihan konfigurasi khusus backend tetap dimiliki Plugin melalui hook
normalizeConfigopsional.
input menulis ulang system prompt dan prompt pengguna yang diteruskan ke CLI. output
menulis ulang delta asisten yang di-streaming dan teks akhir yang sudah di-parse sebelum OpenClaw menangani
marker kontrolnya sendiri dan pengiriman kanal.
Untuk CLI yang mengeluarkan JSONL yang kompatibel dengan Claude Code stream-json, atur
jsonlDialect: "claude-stream-json" pada konfigurasi backend tersebut.
Overlay bundle MCP
Backend CLI tidak menerima pemanggilan alat OpenClaw secara langsung, tetapi backend dapat ikut serta dalam overlay konfigurasi MCP yang dihasilkan denganbundleMcp: true.
Perilaku bawaan saat ini:
claude-cli: file konfigurasi MCP strict yang dihasilkancodex-cli: override konfigurasi inline untukmcp_serversgoogle-gemini-cli: file pengaturan sistem Gemini yang dihasilkan
- menjalankan server MCP HTTP local loopback yang mengekspos alat gateway ke proses CLI
- mengautentikasi bridge dengan token per sesi (
OPENCLAW_MCP_TOKEN) - membatasi akses alat ke sesi, akun, dan konteks kanal saat ini
- memuat server bundle-MCP yang diaktifkan untuk workspace saat ini
- menggabungkannya dengan bentuk konfigurasi/pengaturan MCP backend yang ada
- menulis ulang konfigurasi peluncuran menggunakan mode integrasi milik backend dari extension pemilik
Keterbatasan
- Tidak ada pemanggilan alat OpenClaw secara langsung. OpenClaw tidak menyuntikkan pemanggilan alat ke
protokol backend CLI. Backend hanya melihat alat gateway saat mereka ikut serta dalam
bundleMcp: true. - Streaming bersifat spesifik backend. Beberapa backend melakukan stream JSONL; yang lain menahan buffer hingga keluar.
- Output terstruktur bergantung pada format JSON milik CLI.
- Sesi Codex CLI dilanjutkan melalui output teks (tanpa JSONL), yang kurang
terstruktur dibanding eksekusi awal
--json. Sesi OpenClaw tetap bekerja secara normal.
Pemecahan masalah
- CLI tidak ditemukan: atur
commandke path lengkap. - Nama model salah: gunakan
modelAliasesuntuk memetakanprovider/model→ model CLI. - Tidak ada kesinambungan sesi: pastikan
sessionArgdiatur dansessionModebukannone(Codex CLI saat ini tidak dapat melanjutkan dengan output JSON). - Gambar diabaikan: atur
imageArg(dan verifikasi CLI mendukung path file).