CLI backends (thời gian chạy dự phòng)
OpenClaw có thể chạy AI CLI cục bộ như một phương án dự phòng chỉ văn bản khi các nhà cung cấp API bị gián đoạn, bị giới hạn tốc độ, hoặc tạm thời gặp sự cố. Điều này được thiết kế một cách thận trọng:- Công cụ bị vô hiệu hóa (không có cuộc gọi công cụ).
- Văn bản vào → văn bản ra (đáng tin cậy).
- Hỗ trợ phiên (để các lượt tiếp theo vẫn nhất quán).
- Hình ảnh có thể được truyền qua nếu CLI chấp nhận đường dẫn hình ảnh.
Hướng dẫn nhanh cho người mới bắt đầu
Bạn có thể sử dụng Claude Code CLI mà không cần cấu hình (OpenClaw có sẵn mặc định):Sử dụng như một phương án dự phòng
Thêm một CLI backend vào danh sách dự phòng để nó chỉ chạy khi các mô hình chính thất bại:- Nếu bạn sử dụng
agents.defaults.models(danh sách cho phép), bạn phải bao gồmclaude-cli/.... - Nếu nhà cung cấp chính thất bại (xác thực, giới hạn tốc độ, hết thời gian), OpenClaw sẽ thử CLI backend tiếp theo.
Tổng quan cấu hình
Tất cả CLI backends nằm dưới:claude-cli, my-cli).
Provider id trở thành phần bên trái của tham chiếu mô hình:
Ví dụ cấu hình
Cách hoạt động
- Chọn một backend dựa trên tiền tố nhà cung cấp (
claude-cli/...). - Xây dựng một hệ thống prompt sử dụng cùng prompt OpenClaw + ngữ cảnh workspace.
- Thực thi CLI với một session id (nếu được hỗ trợ) để lịch sử vẫn nhất quán.
- Phân tích đầu ra (JSON hoặc văn bản thuần) và trả về văn bản cuối cùng.
- Lưu trữ session ids cho mỗi backend, để các lượt tiếp theo tái sử dụng cùng một phiên CLI.
Phiên
- Nếu CLI hỗ trợ phiên, đặt
sessionArg(ví dụ:--session-id) hoặcsessionArgs(chỗ chèn{sessionId}) khi ID cần được chèn vào nhiều cờ. - Nếu CLI sử dụng một lệnh phụ resume với các cờ khác nhau, đặt
resumeArgs(thay thếargskhi tiếp tục) và tùy chọnresumeOutput(cho các lần tiếp tục không phải JSON). sessionMode:always: luôn gửi một session id (UUID mới nếu không có lưu trữ).existing: chỉ gửi một session id nếu đã lưu trữ trước đó.none: không bao giờ gửi một session id.
Hình ảnh (truyền qua)
Nếu CLI của bạn chấp nhận đường dẫn hình ảnh, đặtimageArg:
imageArg được đặt, các đường dẫn đó sẽ được truyền dưới dạng tham số CLI. Nếu imageArg bị thiếu, OpenClaw sẽ thêm các đường dẫn tệp vào prompt (chèn đường dẫn), đủ cho các CLI tự động tải tệp cục bộ từ các đường dẫn thuần (hành vi của Claude Code CLI).
Đầu vào / đầu ra
output: "json"(mặc định) cố gắng phân tích JSON và trích xuất văn bản + session id.output: "jsonl"phân tích các luồng JSONL (Codex CLI--json) và trích xuất thông điệp cuối cùng của agent cùng vớithread_idkhi có.output: "text"coi stdout là phản hồi cuối cùng.
input: "arg"(mặc định) truyền prompt dưới dạng tham số CLI cuối cùng.input: "stdin"gửi prompt qua stdin.- Nếu prompt rất dài và
maxPromptArgCharsđược đặt, stdin sẽ được sử dụng.
Mặc định (tích hợp sẵn)
OpenClaw có sẵn mặc định choclaude-cli:
command: "claude"args: ["-p", "--output-format", "json", "--permission-mode", "bypassPermissions"]resumeArgs: ["-p", "--output-format", "json", "--permission-mode", "bypassPermissions", "--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 tuyệt đối).
Hạn chế
- Không có công cụ OpenClaw (CLI backend không bao giờ nhận cuộc gọi công cụ). Một số CLI có thể vẫn chạy công cụ agent của riêng chúng.
- Không có streaming (đầu ra CLI được thu thập rồi trả về).
- Đầu ra có cấu trúc phụ thuộc vào định dạng JSON của CLI.
- Phiên Codex CLI tiếp tục qua đầu ra văn bản (không phải JSONL), ít có cấu trúc hơn so với lần chạy
--jsonban đầu. Phiên OpenClaw vẫn hoạt động bình thường.
Khắc phục sự cố
- CLI không tìm thấy: đặt
commandthành đường dẫn đầy đủ. - Sai tên mô hình: sử dụng
modelAliasesđể ánh xạprovider/model→ mô hình CLI. - Không có sự liên tục phiên: đảm bảo
sessionArgđược đặt vàsessionModekhông phảinone(Codex CLI hiện không thể tiếp tục với đầu ra JSON). - Hình ảnh bị bỏ qua: đặt
imageArg(và xác minh CLI hỗ trợ đường dẫn tệp).