Бекенди CLI (резервне середовище виконання)
OpenClaw може запускати локальні AI CLI як резервний варіант лише для тексту, коли API-провайдери недоступні, обмежені за частотою запитів або тимчасово працюють некоректно. Це навмисно консервативний режим:- Інструменти OpenClaw не інжектуються напряму, але бекенди з
bundleMcp: trueможуть отримувати інструменти gateway через міст MCP local loopback. - Потокова передача JSONL для CLI, які її підтримують.
- Сесії підтримуються (тож наступні ходи залишаються узгодженими).
- Зображення можна передавати далі, якщо CLI приймає шляхи до зображень.
Швидкий старт для початківців
Ви можете використовувати Codex CLI без жодної конфігурації (вбудований плагін OpenAI реєструє стандартний бекенд):PATH мінімальний, додайте лише
шлях до команди:
agents.defaults.cliBackends.
Використання як резервного варіанту
Додайте бекенд CLI до списку резервних, щоб він запускався лише тоді, коли основні моделі не працюють:- Якщо ви використовуєте
agents.defaults.models(allowlist), ви також маєте включити туди моделі вашого бекенду CLI. - Якщо основний провайдер не працює (автентифікація, обмеження частоти запитів, тайм-аути), OpenClaw спробує використати бекенд CLI далі.
Огляд конфігурації
Усі бекенди CLI знаходяться в:codex-cli, my-cli).
Ідентифікатор провайдера стає лівою частиною посилання на модель:
Приклад конфігурації
Як це працює
- Вибирає бекенд на основі префікса провайдера (
codex-cli/...). - Формує system prompt з використанням того самого prompt OpenClaw і контексту workspace.
- Виконує CLI з ідентифікатором сесії (якщо підтримується), щоб історія залишалася узгодженою.
- Розбирає вивід (JSON або звичайний текст) і повертає фінальний текст.
- Зберігає ідентифікатори сесій для кожного бекенду, щоб наступні запити повторно використовували ту саму CLI-сесію.
Вбудований бекенд Anthropic
claude-cli знову підтримується. Співробітники Anthropic
повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw розглядає
використання claude -p як санкціоноване для цієї інтеграції, якщо Anthropic не опублікує
нову політику.codex-cli передає system prompt OpenClaw через
перевизначення конфігурації model_instructions_file у Codex (-c model_instructions_file="..."). Codex не надає прапора у стилі Claude
--append-system-prompt, тому OpenClaw записує зібраний prompt у
тимчасовий файл для кожної нової сесії Codex CLI.
Вбудований бекенд Anthropic claude-cli отримує знімок Skills OpenClaw
двома способами: компактний каталог Skills OpenClaw у доданому system prompt і
тимчасовий плагін Claude Code, переданий через --plugin-dir. Плагін містить
лише ті Skills, які дозволені для цього агента/сесії, тому вбудований
механізм визначення skill у Claude Code бачить той самий відфільтрований набір, який OpenClaw інакше рекламував би в prompt.
Перевизначення skill env/API key, як і раніше, застосовуються OpenClaw до середовища дочірнього процесу під час запуску.
Сесії
- Якщо CLI підтримує сесії, задайте
sessionArg(наприклад,--session-id) абоsessionArgs(з плейсхолдером{sessionId}), коли ID потрібно вставити в кілька прапорів. - Якщо CLI використовує підкоманду resume з іншими прапорами, задайте
resumeArgs(замінюєargsпід час відновлення) і за потребиresumeOutput(для відновлення без JSON). sessionMode:always: завжди надсилати ідентифікатор сесії (новий UUID, якщо нічого не збережено).existing: надсилати ідентифікатор сесії лише якщо його вже було збережено.none: ніколи не надсилати ідентифікатор сесії.
serialize: trueзберігає впорядкованість запусків на одній смузі.- Більшість CLI серіалізуються в межах однієї смуги провайдера.
- OpenClaw скидає повторне використання збереженої CLI-сесії, коли змінюється стан автентифікації бекенду, зокрема під час повторного входу, ротації токена або зміни облікових даних профілю автентифікації.
Зображення (pass-through)
Якщо ваша CLI приймає шляхи до зображень, задайтеimageArg:
imageArg задано, ці
шляхи передаються як аргументи CLI. Якщо imageArg відсутній, OpenClaw додає
шляхи до файлів у prompt (інжекція шляху), чого достатньо для CLI, які автоматично
завантажують локальні файли зі звичайних шляхів.
Входи / виходи
output: "json"(типово) намагається розібрати JSON і витягти текст + ідентифікатор сесії.- Для JSON-виводу Gemini CLI OpenClaw читає текст відповіді з
response, а usage — зstats, колиusageвідсутній або порожній. output: "jsonl"розбирає потоки JSONL (наприклад, Codex CLI--json) і витягує фінальне повідомлення агента та ідентифікатори сесії, якщо вони присутні.output: "text"обробляє stdout як фінальну відповідь.
input: "arg"(типово) передає prompt як останній аргумент CLI.input: "stdin"надсилає prompt через stdin.- Якщо prompt дуже довгий і задано
maxPromptArgChars, використовується stdin.
Типові значення (належать Plugin)
Вбудований Plugin OpenAI також реєструє типові значення для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"]
gemini у PATH (brew install gemini-cli або
npm install -g @google/gemini-cli).
Примітки щодо JSON Gemini CLI:
- Текст відповіді читається з поля JSON
response. - Usage береться з
stats, якщоusageвідсутній або порожній. stats.cachedнормалізується в OpenClawcacheRead.- Якщо
stats.inputвідсутній, OpenClaw обчислює вхідні токени зstats.input_tokens - stats.cached.
command).
Типові значення, що належать Plugin
Типові значення бекенду CLI тепер є частиною поверхні Plugin:- Plugins реєструють їх через
api.registerCliBackend(...). idбекенду стає префіксом провайдера в посиланнях на модель.- Конфігурація користувача в
agents.defaults.cliBackends.<id>як і раніше перевизначає типове значення Plugin. - Очищення конфігурації, специфічне для бекенду, залишається відповідальністю Plugin через необов’язковий
хук
normalizeConfig.
input переписує system prompt і prompt користувача, що передаються до CLI. output
переписує потокові дельти помічника і розібраний фінальний текст до того, як OpenClaw обробить
власні службові маркери та доставку в канал.
Для CLI, які видають JSONL, сумісний із Claude Code stream-json, задайте
jsonlDialect: "claude-stream-json" у конфігурації цього бекенду.
Bundle MCP overlays
Бекенди CLI не отримують виклики інструментів OpenClaw напряму, але бекенд може увімкнути згенерований MCP config overlay черезbundleMcp: true.
Поточна вбудована поведінка:
claude-cli: згенерований строгий файл конфігурації MCPcodex-cli: вбудовані перевизначення конфігурації дляmcp_serversgoogle-gemini-cli: згенерований файл системних налаштувань Gemini
- запускає loopback HTTP MCP-сервер, який надає інструменти gateway процесу CLI
- автентифікує міст за допомогою токена на сесію (
OPENCLAW_MCP_TOKEN) - обмежує доступ до інструментів поточною сесією, обліковим записом і контекстом каналу
- завантажує увімкнені bundle-MCP сервери для поточного workspace
- об’єднує їх з будь-якою наявною формою MCP-конфігурації/налаштувань бекенду
- переписує конфігурацію запуску, використовуючи режим інтеграції, що належить бекенду, з відповідного extension
Обмеження
- Немає прямих викликів інструментів OpenClaw. OpenClaw не інжектує виклики інструментів у
протокол бекенду CLI. Бекенди бачать інструменти gateway лише коли вони увімкнули
bundleMcp: true. - Потокова передача залежить від бекенду. Деякі бекенди передають JSONL потоково, інші буферизують до завершення.
- Структуровані виходи залежать від JSON-формату CLI.
- Сесії Codex CLI відновлюються через текстовий вивід (без JSONL), що менш
структуровано, ніж початковий запуск
--json. Сесії OpenClaw при цьому все одно працюють нормально.
Усунення неполадок
- CLI не знайдено: задайте
commandяк повний шлях. - Неправильна назва моделі: використовуйте
modelAliases, щоб зіставитиprovider/model→ модель CLI. - Немає безперервності сесії: переконайтеся, що задано
sessionArgіsessionModeне дорівнюєnone(Codex CLI наразі не може відновлюватися з JSON-виводом). - Зображення ігноруються: задайте
imageArg(і переконайтеся, що CLI підтримує шляхи до файлів).