OpenClaw 可以在 API 供應商停機、 受到速率限制或暫時行為異常時,將 本機 AI CLI 作為 純文字備援 執行。這是有意採取的保守設計: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.
- OpenClaw 工具不會直接注入,但具有
bundleMcp: true的後端可以透過迴送 MCP 橋接接收 gateway 工具。 - 適用於支援的 CLI 的 JSONL 串流。
- 支援工作階段(因此後續回合會保持連貫)。
- 如果 CLI 接受圖片路徑,可以傳遞圖片。
適合初學者的快速開始
你可以 不需任何設定 使用 Codex CLI(內建的 OpenAI Plugin 會註冊預設後端):agents.defaults.cliBackends 底下明確參照該後端時,OpenClaw 現在會自動載入
擁有該後端的內建 Plugin。
作為備援使用
將 CLI 後端加入你的備援清單,使它只在主要模型失敗時執行:- 如果你使用
agents.defaults.models(允許清單),也必須在其中包含你的 CLI 後端模型。 - 如果主要供應商失敗(驗證、速率限制、逾時),OpenClaw 會 接著嘗試 CLI 後端。
設定概觀
所有 CLI 後端都位於:codex-cli、my-cli)。
供應商 ID 會成為模型參照的左側:
設定範例
運作方式
- 根據供應商前綴(
codex-cli/...)選取後端。 - 使用相同的 OpenClaw prompt + 工作區脈絡建構系統 prompt。
- 使用工作階段 ID(如果支援)執行 CLI,讓歷史保持一致。
內建的
claude-cli後端會為每個 OpenClaw 工作階段保留一個 Claude stdio 程序,並透過 stream-json stdin 傳送後續回合。 - 剖析輸出(JSON 或純文字)並回傳最終文字。
- 依後端持久保存工作階段 ID,因此後續回合會重用相同的 CLI 工作階段。
內建的 Anthropic
claude-cli 後端再次受到支援。Anthropic 員工
告訴我們 OpenClaw 風格的 Claude CLI 使用方式再次被允許,因此除非 Anthropic 發布
新的政策,OpenClaw 會將此整合中的
claude -p 使用方式視為已核准。codex-cli 後端會透過
Codex 的 model_instructions_file 設定覆寫(-c model_instructions_file="...")傳遞 OpenClaw 的系統 prompt。Codex 不公開 Claude 風格的
--append-system-prompt 旗標,因此 OpenClaw 會為每個新的 Codex CLI 工作階段將組合好的 prompt 寫入
暫存檔。
內建的 Anthropic claude-cli 後端會透過兩種方式接收 OpenClaw skills 快照:
附加系統 prompt 中精簡的 OpenClaw skills 目錄,以及
透過 --plugin-dir 傳入的暫存 Claude Code Plugin。該 Plugin
只包含該 agent/工作階段合格的 skills,因此 Claude Code 的原生 skill
解析器會看到與 OpenClaw 原本會在
prompt 中公告的相同篩選集合。Skill env/API key 覆寫仍會由 OpenClaw 套用到該次執行的
子程序環境。
Claude CLI 也有自己的非互動式權限模式。OpenClaw 會將它
對應到現有的 exec 政策,而不是加入 Claude 專用設定:當
有效請求的 exec 政策為 YOLO(tools.exec.security: "full" 且
tools.exec.ask: "off")時,OpenClaw 會加入 --permission-mode bypassPermissions。
每個 agent 的 agents.list[].tools.exec 設定會覆寫該 agent 的全域 tools.exec。
若要強制使用不同的 Claude 模式,請在
agents.defaults.cliBackends.claude-cli.args 和相符的 resumeArgs 底下設定明確的原始後端引數,
例如 --permission-mode default 或 --permission-mode acceptEdits。
在 OpenClaw 可以使用內建的 claude-cli 後端之前,Claude Code 本身
必須已在同一台主機上登入:
claude
二進位檔尚未位於 PATH 上時,才使用 agents.defaults.cliBackends.claude-cli.command。
工作階段
- 如果 CLI 支援工作階段,請在 ID 需要插入
多個旗標時設定
sessionArg(例如--session-id)或sessionArgs(placeholder{sessionId})。 - 如果 CLI 使用具有不同旗標的 resume 子命令,請設定
resumeArgs(恢復時取代args),並視需要設定resumeOutput(用於非 JSON 恢復)。 sessionMode:always:一律傳送工作階段 ID(若未儲存則使用新的 UUID)。existing:只有在先前已儲存工作階段 ID 時才傳送。none:永不傳送工作階段 ID。
claude-cli預設為liveSession: "claude-stdio"、output: "jsonl", 以及input: "stdin",因此後續回合會在即時 Claude 程序仍作用中時重用它。 Warm stdio 現在是預設值,也包含省略 transport 欄位的自訂設定。 如果 Gateway 重新啟動或閒置程序 結束,OpenClaw 會從儲存的 Claude 工作階段 ID 恢復。儲存的工作階段 ID 會在恢復前對照現有可讀的專案 transcript 驗證,因此 phantom 綁定會以reason=transcript-missing清除,而不是在--resume底下靜默啟動新的 Claude CLI 工作階段。- 儲存的 CLI 工作階段是供應商擁有的連續性。隱含的每日工作階段
重設不會切斷它們;
/reset和明確的session.reset政策仍會 這麼做。
serialize: true會保持同一 lane 的執行有序。- 大多數 CLI 會在單一供應商 lane 上序列化。
- 當選取的驗證身分改變時,OpenClaw 會放棄重用已儲存的 CLI 工作階段, 包括變更的驗證設定檔 ID、靜態 API key、靜態 token,或 CLI 有公開時的 OAuth 帳戶身分。OAuth 存取與 refresh token 輪替不會切斷已儲存的 CLI 工作階段。如果 CLI 未公開 穩定的 OAuth 帳戶 ID,OpenClaw 會讓該 CLI 強制執行恢復權限。
來自 claude-cli 工作階段的備援前奏
當claude-cli 嘗試故障轉移到
agents.defaults.model.fallbacks 中的非 CLI 候選項時,OpenClaw 會使用從
~/.claude/projects/ 的 Claude Code 本機
JSONL transcript 擷取的脈絡前奏來播種下一次嘗試。如果沒有這個種子,備援
供應商會冷啟動,因為 OpenClaw 自己的工作階段 transcript
對 claude-cli 執行是空的。
- 前奏會偏好最新的
/compact摘要或compact_boundary標記,然後在字元 預算內附加最近的邊界後回合。邊界前回合會被丟棄,因為摘要已經代表 它們。 - Tool 區塊會合併為精簡的
(tool call: name)和(tool result: …)提示,以誠實維持 prompt 預算。如果摘要 溢出,會標示為(truncated)。 - 同供應商的
claude-cli到claude-cli備援會依賴 Claude 自己的--resume並略過前奏。 - 該種子會重用現有的 Claude 工作階段檔案路徑驗證,因此 無法讀取任意路徑。
圖片(傳遞)
如果你的 CLI 接受圖片路徑,請設定imageArg:
imageArg,這些
路徑會作為 CLI 引數傳遞。如果缺少 imageArg,OpenClaw 會將
檔案路徑附加到 prompt(路徑注入),這對於會從純路徑自動
載入本機檔案的 CLI 已足夠。
輸入 / 輸出
output: "json"(預設)會嘗試剖析 JSON 並擷取文字 + 工作階段 ID。- 對於 Gemini CLI JSON 輸出,OpenClaw 會從
response讀取回覆文字,並在usage缺少或為空時 從stats讀取用量。 output: "jsonl"會剖析 JSONL 串流(例如 Codex CLI--json)並擷取最終 agent 訊息以及存在時的工作階段 識別碼。output: "text"會將 stdout 視為最終回應。
input: "arg"(預設)會將 prompt 作為最後一個 CLI 引數傳遞。input: "stdin"會透過 stdin 傳送 prompt。- 如果 prompt 很長且設定了
maxPromptArgChars,會使用 stdin。
預設值(Plugin 擁有)
內建的 OpenAI Plugin 也會為codex-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"]
PATH 上以 gemini 使用(brew install gemini-cli 或
npm install -g @google/gemini-cli)。
Gemini CLI JSON 注意事項:
- 回覆文字會從 JSON
response欄位讀取。 - 當
usage不存在或為空時,用量會退回使用stats。 stats.cached會正規化為 OpenClawcacheRead。- 如果缺少
stats.input,OpenClaw 會從stats.input_tokens - stats.cached推導輸入 token。
command 路徑)。
Plugin 擁有的預設值
CLI 後端預設值現在是 Plugin 介面的一部分:- Plugin 使用
api.registerCliBackend(...)註冊它們。 - 後端
id會成為模型參照中的供應商前綴。 agents.defaults.cliBackends.<id>中的使用者設定仍會覆寫 Plugin 預設值。- 後端專屬的設定清理會透過選用的
normalizeConfighook 保持由 Plugin 擁有。
input 會改寫傳遞給 CLI 的系統 prompt 和使用者 prompt。output
會在 OpenClaw 處理自己的控制標記和通道遞送之前,改寫串流的助理 delta 和剖析後的最終文字。
對於發出與 Claude Code stream-json 相容 JSONL 的 CLI,請在該後端的設定中設定
jsonlDialect: "claude-stream-json"。
Bundle MCP overlays
CLI 後端不會直接接收 OpenClaw 工具呼叫,但後端可以使用bundleMcp: true 選擇加入產生的 MCP 設定 overlay。
目前的 bundled 行為:
claude-cli:產生嚴格的 MCP 設定檔codex-cli:針對mcp_servers的 inline 設定覆寫;產生的 OpenClaw loopback 伺服器會標記 Codex 的每伺服器工具核准模式, 因此 MCP 呼叫不會因本機核准提示而停滯google-gemini-cli:產生 Gemini 系統設定檔
- 產生一個 loopback HTTP MCP 伺服器,將 gateway 工具暴露給 CLI 程序
- 使用每個工作階段的權杖(
OPENCLAW_MCP_TOKEN)驗證橋接 - 將工具存取範圍限制在目前工作階段、帳戶和通道情境
- 載入目前工作區啟用的 bundle-MCP 伺服器
- 將它們與任何現有後端 MCP 設定/設定形狀合併
- 使用擁有 extension 的後端自有整合模式改寫啟動設定
mcp.sessionIdleTtlMs 毫秒後回收(預設 10
分鐘;設定為 0 可停用)。一次性 embedded 執行,例如 auth probe、
slug 產生和 active-memory recall request,會在執行結束時清理,讓 stdio
子程序和 Streamable HTTP/SSE 串流不會比該次執行存活更久。
限制
- 沒有直接 OpenClaw 工具呼叫。 OpenClaw 不會將工具呼叫注入
CLI 後端協定。後端只有在選擇加入
bundleMcp: true時才會看到 gateway 工具。 - 串流因後端而異。 有些後端會串流 JSONL;其他則會緩衝到結束。
- 結構化輸出取決於 CLI 的 JSON 格式。
- Codex CLI 工作階段會透過文字輸出恢復(沒有 JSONL),這比初始
--json執行更不具結構。OpenClaw 工作階段仍會正常運作。
疑難排解
- 找不到 CLI:將
command設為完整路徑。 - 模型名稱錯誤:使用
modelAliases將provider/model對應到 CLI 模型。 - 沒有工作階段連續性:請確認已設定
sessionArg,且sessionMode不是none(Codex CLI 目前無法使用 JSON 輸出恢復)。 - 圖片遭忽略:設定
imageArg(並確認 CLI 支援檔案路徑)。