CLI backends(回退运行时)
当 API providers 宕机、限流或短暂异常时,OpenClaw 可运行本地 AI CLI 作为纯文本回退。此路径刻意保守:- 禁用工具(不调用工具)。
- 文本输入 → 文本输出(可靠)。
- 支持会话(保证连续对话)。
- 可传递图片(若 CLI 支持图片路径)。
新手快速开始
Claude Code CLI 可零配置使用(OpenClaw 内置默认):作为回退使用
将 CLI backend 加入回退列表,使其仅在主模型失败时运行:- 若使用
agents.defaults.models(allowlist),必须包含claude-cli/...。 - 主 provider 失败(认证、限流、超时)时,OpenClaw 会转用 CLI backend。
配置概览
所有 CLI backends 位于:claude-cli、my-cli)。
该 provider id 作为模型引用左侧:
配置示例
工作原理
- 基于 provider 前缀选择 backend(
claude-cli/...)。 - 使用同一 OpenClaw prompt + workspace 上下文构建 system prompt。
- 若支持会话,调用 CLI 并传入 session id 以保持历史一致。
- 解析 CLI 输出(JSON 或文本),返回最终文本。
- 每个 backend 维持自身的 session id,后续复用同一 CLI 会话。
会话
- 若 CLI 支持会话,设置
sessionArg(如--session-id)或sessionArgs(在多个 flag 中插入{sessionId})。 - 若 CLI 使用resume 子命令且 flags 不同,设置
resumeArgs(恢复时替代args)并可选resumeOutput(用于非 JSON resume)。 sessionMode:always:总是发送 session id(若无则新建 UUID)。existing:仅在已存储 session id 时发送。none:从不发送 session id。
图片(直通)
若 CLI 接受图片路径,设置imageArg:
imageArg,这些路径会作为 CLI 参数传递。
若缺少 imageArg,OpenClaw 会把路径追加到 prompt(路径注入),对能从纯路径自动加载本地文件的 CLI 也足够(Claude Code CLI 行为)。
输入 / 输出
output: "json"(默认)解析 JSON 并提取文本 + session id。output: "jsonl"解析 JSONL 流(Codex CLI--json),提取最后一条 agent 消息与thread_id(若有)。output: "text"将 stdout 作为最终响应。
input: "arg"(默认)将 prompt 作为最后一个 CLI 参数。input: "stdin"通过 stdin 发送 prompt。- 若 prompt 很长且设置了
maxPromptArgChars,则改用 stdin。
默认值(内置)
OpenClaw 内置claude-cli 默认值:
command: "claude"args: ["-p", "--output-format", "json", "--dangerously-skip-permissions"]resumeArgs: ["-p", "--output-format", "json", "--dangerously-skip-permissions", "--resume", "{sessionId}"]modelArg: "--model"systemPromptArg: "--append-system-prompt"sessionArg: "--session-id"systemPromptWhen: "first"sessionMode: "always"
codex-cli 默认值:
command: "codex"args: ["exec","--json","--color","never","--sandbox","read-only","--skip-git-repo-check"]resumeArgs: ["exec","resume","{sessionId}","--color","never","--sandbox","read-only","--skip-git-repo-check"]output: "jsonl"resumeOutput: "text"modelArg: "--model"imageArg: "--image"sessionMode: "existing"
command 绝对路径)。
限制
- 无 OpenClaw 工具(CLI backend 从不接收工具调用)。部分 CLI 可能仍运行自身 agent 工具。
- 无 streaming(CLI 输出收集后一次返回)。
- 结构化输出取决于 CLI 的 JSON 格式。
- Codex CLI 会话恢复使用文本输出(无 JSONL),结构性弱于初次
--json运行,但 OpenClaw 会话仍正常。
排查
- 找不到 CLI:将
command设置为完整路径。 - 模型名不匹配:使用
modelAliases将provider/model映射到 CLI 模型名。 - 会话不连续:确保设置
sessionArg且sessionMode非none(Codex CLI 目前无法以 JSON 输出恢复)。 - 图片被忽略:设置
imageArg(并确认 CLI 支持文件路径)。