OpenClaw dapat menjalankan CLI AI lokal sebagai fallback hanya teks saat penyedia API sedang tidak aktif, dibatasi laju, atau sementara berperilaku tidak semestinya. Ini sengaja dibuat konservatif:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Tool OpenClaw tidak disuntikkan secara langsung, tetapi backend dengan
bundleMcp: truedapat menerima tool gateway melalui jembatan MCP loopback. - Streaming JSONL untuk CLI yang mendukungnya.
- Sesi didukung (sehingga giliran lanjutan 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 berjalan saat model utama gagal:- Jika Anda menggunakan
agents.defaults.models(allowlist), Anda juga harus menyertakan model backend CLI Anda di sana. - Jika penyedia utama gagal (auth, batas laju, timeout), OpenClaw akan mencoba backend CLI berikutnya.
Ringkasan konfigurasi
Semua backend CLI berada di bawah:codex-cli, my-cli).
Id penyedia menjadi sisi kiri ref model Anda:
Contoh konfigurasi
Cara kerjanya
- Memilih backend berdasarkan prefiks penyedia (
codex-cli/...). - Membangun prompt sistem menggunakan prompt OpenClaw + konteks workspace yang sama.
- Menjalankan CLI dengan id sesi (jika didukung) agar riwayat tetap konsisten.
Backend
claude-clibawaan mempertahankan proses stdio Claude tetap hidup per sesi OpenClaw dan mengirim giliran lanjutan melalui stdin stream-json. - Mengurai output (JSON atau teks biasa) dan mengembalikan teks akhir.
- Menyimpan id sesi secara persisten per backend, sehingga lanjutan memakai ulang sesi CLI yang sama.
Backend Anthropic
claude-cli bawaan didukung lagi. Staf Anthropic
memberi tahu kami bahwa penggunaan Claude CLI bergaya OpenClaw diizinkan lagi, sehingga OpenClaw memperlakukan
penggunaan claude -p sebagai disetujui untuk integrasi ini kecuali Anthropic menerbitkan
kebijakan baru.codex-cli bawaan meneruskan prompt sistem OpenClaw melalui
override konfigurasi model_instructions_file milik Codex (-c model_instructions_file="..."). Codex tidak mengekspos flag bergaya Claude
--append-system-prompt, sehingga OpenClaw menulis prompt yang sudah dirakit ke
file sementara untuk setiap sesi Codex CLI baru.
Backend Anthropic claude-cli bawaan menerima snapshot Skills OpenClaw
dengan dua cara: katalog Skills OpenClaw ringkas dalam prompt sistem yang ditambahkan, 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 seperti yang sebaliknya akan diiklankan OpenClaw dalam
prompt. Override env/API key Skill tetap diterapkan oleh OpenClaw ke
lingkungan proses anak untuk eksekusi tersebut.
Claude CLI juga memiliki mode izin noninteraktifnya sendiri. OpenClaw memetakannya
ke kebijakan exec yang ada alih-alih menambahkan konfigurasi khusus Claude: saat
kebijakan exec efektif yang diminta adalah YOLO (tools.exec.security: "full" dan
tools.exec.ask: "off"), OpenClaw menambahkan --permission-mode bypassPermissions.
Pengaturan agents.list[].tools.exec per agen menimpa tools.exec global untuk
agen tersebut. Untuk memaksa mode Claude yang berbeda, tetapkan arg backend mentah eksplisit
seperti --permission-mode default atau --permission-mode acceptEdits di bawah
agents.defaults.cliBackends.claude-cli.args dan resumeArgs yang cocok.
Backend Anthropic claude-cli bawaan juga memetakan level /think OpenClaw
ke flag native --effort Claude Code untuk level selain off. minimal dan
low dipetakan ke low, adaptive dan medium dipetakan ke medium, dan high,
xhigh, serta max dipetakan secara langsung. Backend CLI lain memerlukan plugin pemiliknya untuk
mendeklarasikan pemetaan argv yang setara sebelum /think dapat memengaruhi CLI yang dijalankan.
Sebelum OpenClaw dapat menggunakan backend claude-cli bawaan, Claude Code sendiri
harus sudah login di host yang sama:
agents.defaults.cliBackends.claude-cli.command hanya saat binary claude
belum ada di PATH.
Sesi
- Jika CLI mendukung sesi, tetapkan
sessionArg(mis.--session-id) atausessionArgs(placeholder{sessionId}) saat ID perlu disisipkan ke beberapa flag. - Jika CLI menggunakan subperintah resume dengan flag berbeda, tetapkan
resumeArgs(menggantikanargssaat melanjutkan) dan opsionalresumeOutput(untuk resume non-JSON). sessionMode:always: selalu kirim id sesi (UUID baru jika belum ada yang disimpan).existing: hanya kirim id sesi jika sebelumnya sudah ada yang disimpan.none: jangan pernah kirim id sesi.
claude-clidefault keliveSession: "claude-stdio",output: "jsonl", daninput: "stdin"sehingga giliran lanjutan memakai ulang proses Claude langsung saat proses itu aktif. Stdio hangat sekarang menjadi default, termasuk untuk konfigurasi kustom yang menghilangkan field transport. Jika Gateway dimulai ulang atau proses idle keluar, OpenClaw melanjutkan dari id sesi Claude yang disimpan. Id sesi yang disimpan diverifikasi terhadap transcript proyek yang ada dan dapat dibaca sebelum resume, sehingga binding semu dibersihkan denganreason=transcript-missingalih-alih diam-diam memulai sesi Claude CLI baru di bawah--resume.- Sesi live Claude mempertahankan guard output JSONL terbatas. Default mengizinkan hingga
8 MiB dan 20.000 baris JSONL mentah per giliran. Giliran Claude yang banyak menggunakan tool dapat menaikkannya
per backend dengan
agents.defaults.cliBackends.claude-cli.reliability.outputLimits.maxTurnRawCharsdanmaxTurnLines; OpenClaw membatasi pengaturan tersebut ke 64 MiB dan 100.000 baris. - Sesi CLI tersimpan adalah kontinuitas milik penyedia. Reset sesi harian implisit
tidak memutuskannya;
/resetdan kebijakansession.reseteksplisit tetap melakukannya. - Sesi CLI baru biasanya hanya disemai ulang dari ringkasan Compaction OpenClaw
ditambah ekor pasca-Compaction. Untuk memulihkan sesi singkat yang dibuat tidak valid
sebelum Compaction, backend dapat ikut serta dengan
reseedFromRawTranscriptWhenUncompacted: true. OpenClaw tetap menjaga reseed transcript mentah tetap terbatas dan membatasinya pada invalidasi aman seperti transcript CLI yang hilang, perubahan system-prompt/MCP, atau percobaan ulang session-expired; perubahan profil auth atau credential-epoch tidak pernah menyemai ulang riwayat transcript mentah.
serialize: truemenjaga eksekusi pada lane yang sama tetap berurutan.- Sebagian besar CLI melakukan serialisasi pada satu lane penyedia.
- OpenClaw membatalkan penggunaan ulang sesi CLI tersimpan saat identitas auth yang dipilih berubah, termasuk id profil auth, API key statis, token statis, atau identitas akun OAuth yang berubah saat CLI mengeksposnya. Rotasi token akses dan refresh OAuth tidak memutus sesi CLI tersimpan. Jika CLI tidak mengekspos id akun OAuth yang stabil, OpenClaw membiarkan CLI tersebut menegakkan izin resume.
Prelude fallback dari sesi claude-cli
Saat upayaclaude-cli gagal lalu berpindah ke kandidat non-CLI dalam
agents.defaults.model.fallbacks, OpenClaw menyemai
upaya berikutnya dengan prelude konteks yang dipanen dari transcript JSONL lokal Claude Code
di ~/.claude/projects/. Tanpa seed ini, penyedia fallback
akan mulai dingin karena transcript sesi milik OpenClaw sendiri kosong
untuk eksekusi claude-cli.
- Prelude mengutamakan ringkasan
/compactatau markercompact_boundaryterbaru, lalu menambahkan giliran pasca-boundary terbaru hingga batas karakter. Giliran pra-boundary dibuang karena ringkasan sudah mewakilinya. - Blok tool digabung menjadi petunjuk ringkas
(tool call: name)dan(tool result: …)untuk menjaga anggaran prompt tetap jujur. Ringkasan diberi label(truncated)jika melampaui batas. - Fallback
claude-clikeclaude-clipada penyedia yang sama mengandalkan--resumemilik Claude sendiri dan melewati prelude. - Seed memakai ulang validasi path file sesi Claude yang ada, sehingga path sembarang tidak dapat dibaca.
Gambar (pass-through)
Jika CLI Anda menerima path gambar, tetapkanimageArg:
imageArg ditetapkan, path tersebut
diteruskan sebagai arg CLI. Jika imageArg tidak ada, OpenClaw menambahkan
path file ke prompt (injeksi path), yang cukup untuk CLI yang secara otomatis
memuat file lokal dari path biasa.
Input / output
output: "json"(default) mencoba mengurai JSON dan mengekstrak teks + id sesi.- Untuk output JSON Gemini CLI, OpenClaw membaca teks balasan dari
responsedan penggunaan daristatssaatusagehilang atau kosong. output: "jsonl"mengurai stream JSONL (misalnya Codex CLI--json) dan mengekstrak pesan agen akhir beserta pengenal sesi jika ada.output: "text"memperlakukan stdout sebagai respons akhir.
input: "arg"(default) meneruskan prompt sebagai arg CLI terakhir.input: "stdin"mengirim prompt melalui stdin.- Jika prompt sangat panjang dan
maxPromptArgCharsditetapkan, stdin digunakan.
Default (milik 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 kolom JSON
response. - Penggunaan fallback ke
statssaatusagetidak ada atau kosong. stats.cacheddinormalisasi menjadicacheReadOpenClaw.- Jika
stats.inputtidak ada, OpenClaw menurunkan token input daristats.input_tokens - stats.cached.
command absolut).
Default milik Plugin
Default backend CLI kini menjadi bagian dari permukaan Plugin:- Plugin mendaftarkannya dengan
api.registerCliBackend(...). idbackend menjadi prefiks penyedia dalam ref model.- Konfigurasi pengguna di
agents.defaults.cliBackends.<id>tetap menimpa default Plugin. - Pembersihan konfigurasi spesifik backend tetap dimiliki Plugin melalui hook
normalizeConfigopsional.
input menulis ulang prompt sistem dan prompt pengguna yang diteruskan ke CLI. output
menulis ulang delta asisten yang dialirkan dan teks akhir yang diurai sebelum OpenClaw menangani
penanda kontrolnya sendiri dan pengiriman kanal.
Untuk CLI yang memancarkan JSONL yang kompatibel dengan Claude Code stream-json, tetapkan
jsonlDialect: "claude-stream-json" pada konfigurasi backend tersebut.
Overlay MCP bundel
Backend CLI tidak menerima pemanggilan alat OpenClaw secara langsung, tetapi sebuah backend dapat memilih ikut serta dalam overlay konfigurasi MCP yang dihasilkan denganbundleMcp: true.
Perilaku bundel saat ini:
claude-cli: file konfigurasi MCP ketat yang dihasilkancodex-cli: penimpaan konfigurasi inline untukmcp_servers; server loopback OpenClaw yang dihasilkan ditandai dengan mode persetujuan alat per-server Codex sehingga panggilan MCP tidak dapat tertahan pada prompt persetujuan lokalgoogle-gemini-cli: file pengaturan sistem Gemini yang dihasilkan
- memunculkan server MCP HTTP loopback yang mengekspos alat Gateway ke proses CLI
- mengautentikasi bridge dengan token per sesi (
OPENCLAW_MCP_TOKEN) - membatasi akses alat ke konteks sesi, akun, dan kanal saat ini
- memuat server bundle-MCP yang diaktifkan untuk workspace saat ini
- menggabungkannya dengan bentuk konfigurasi/pengaturan MCP backend yang sudah ada
- menulis ulang konfigurasi peluncuran menggunakan mode integrasi milik backend dari ekstensi pemilik
mcp.sessionIdleTtlMs milidetik waktu idle (default 10
menit; tetapkan 0 untuk menonaktifkan). Proses sekali jalan yang disematkan seperti probe auth,
pembuatan slug, dan permintaan recall active-memory membersihkan saat run berakhir sehingga
anak stdio dan stream Streamable HTTP/SSE tidak tetap hidup setelah run.
Batasan
- Tidak ada pemanggilan alat OpenClaw langsung. OpenClaw tidak menyuntikkan pemanggilan alat ke dalam
protokol backend CLI. Backend hanya melihat alat Gateway saat mereka memilih ikut serta dalam
bundleMcp: true. - Streaming bersifat spesifik backend. Beberapa backend mengalirkan JSONL; yang lain melakukan buffer hingga keluar.
- Output terstruktur bergantung pada format JSON CLI.
- Sesi Codex CLI dilanjutkan melalui output teks (tanpa JSONL), yang kurang
terstruktur dibandingkan run awal
--json. Sesi OpenClaw tetap bekerja secara normal.
Pemecahan Masalah
- CLI tidak ditemukan: tetapkan
commandke path lengkap. - Nama model salah: gunakan
modelAliasesuntuk memetakanprovider/model→ model CLI. - Tidak ada kesinambungan sesi: pastikan
sessionArgditetapkan dansessionModebukannone(Codex CLI saat ini tidak dapat dilanjutkan dengan output JSON). - Gambar diabaikan: tetapkan
imageArg(dan verifikasi bahwa CLI mendukung path file).