CLI-бекенди (резервне середовище виконання)
OpenClaw може запускати локальні AI CLI як лише текстовий резервний варіант, коли API-провайдери недоступні, обмежені за частотою запитів або тимчасово працюють некоректно. Це навмисно консервативний підхід:- Інструменти OpenClaw не вбудовуються напряму, але бекенди з
bundleMcp: trueможуть отримувати інструменти gateway через loopback-міст MCP. - Потокова передача JSONL для CLI, які це підтримують.
- Сесії підтримуються (тож наступні ходи залишаються узгодженими).
- Зображення можна передавати далі, якщо CLI приймає шляхи до зображень.
Швидкий старт для початківців
Ви можете використовувати Codex CLI без жодної конфігурації (вбудований плагін OpenAI реєструє типовий бекенд):agents.defaults.cliBackends.
Використання як резервного варіанта
Додайте CLI-бекенд до списку резервних варіантів, щоб він запускався лише тоді, коли основні моделі не працюють:- Якщо ви використовуєте
agents.defaults.models(allowlist), ви також маєте включити туди моделі CLI-бекенду. - Якщо основний провайдер не працює (автентифікація, ліміти запитів, тайм-аути), OpenClaw спробує CLI-бекенд наступним.
Огляд конфігурації
Усі CLI-бекенди знаходяться в:codex-cli, my-cli).
ID провайдера стає лівою частиною посилання на модель:
Приклад конфігурації
Як це працює
- Вибирає бекенд на основі префікса провайдера (
codex-cli/...). - Створює системний промпт із використанням того самого промпту OpenClaw і контексту робочого простору.
- Запускає CLI з id сесії (якщо підтримується), щоб історія залишалася узгодженою.
- Розбирає вивід (JSON або звичайний текст) і повертає фінальний текст.
- Зберігає id сесій для кожного бекенду, щоб наступні ходи повторно використовували ту саму CLI-сесію.
Вбудований бекенд Anthropic
claude-cli знову підтримується. Співробітники Anthropic
повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw вважає
використання claude -p санкціонованим для цієї інтеграції, якщо Anthropic не опублікує
нову політику.Сесії
- Якщо CLI підтримує сесії, задайте
sessionArg(наприклад,--session-id) абоsessionArgs(заповнювач{sessionId}), коли ID потрібно вставляти в кілька прапорців. - Якщо CLI використовує підкоманду відновлення з іншими прапорцями, задайте
resumeArgs(замінюєargsпід час відновлення) і, за потреби,resumeOutput(для відновлення не у форматі JSON). sessionMode:always: завжди передавати id сесії (новий UUID, якщо нічого не збережено).existing: передавати id сесії лише тоді, якщо його вже було збережено раніше.none: ніколи не передавати id сесії.
serialize: trueзберігає впорядкованість запусків в одній лінії.- Більшість CLI серіалізують роботу в межах однієї лінії провайдера.
- OpenClaw скидає повторне використання збереженої CLI-сесії, коли змінюється стан автентифікації бекенду, включно з повторним входом, ротацією токена або зміною облікових даних профілю автентифікації.
Зображення (передача далі)
Якщо ваша CLI приймає шляхи до зображень, задайтеimageArg:
imageArg, ці
шляхи передаються як аргументи CLI. Якщо imageArg відсутній, OpenClaw додає
шляхи до файлів у промпт (ін’єкція шляху), чого достатньо для CLI, які автоматично
завантажують локальні файли зі звичайних шляхів.
Входи / виходи
output: "json"(типово) намагається розібрати JSON і витягти текст + id сесії.- Для JSON-виводу Gemini CLI OpenClaw читає текст відповіді з
response, а використання — зstats, колиusageвідсутній або порожній. output: "jsonl"розбирає потоки JSONL (наприклад Codex CLI--json) і витягує фінальне повідомлення агента разом з ідентифікаторами сесії, якщо вони присутні.output: "text"трактує stdout як фінальну відповідь.
input: "arg"(типово) передає промпт як останній аргумент CLI.input: "stdin"надсилає промпт через stdin.- Якщо промпт дуже довгий і задано
maxPromptArgChars, використовується stdin.
Типові значення (належать плагіну)
Вбудований плагін OpenAI також реєструє типові значення дляcodex-cli:
command: "codex"args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]resumeArgs: ["exec","resume","{sessionId}","--color","never","--sandbox","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. - Дані про використання беруться з
stats, якщоusageвідсутній або порожній. stats.cachedнормалізується до OpenClawcacheRead.- Якщо
stats.inputвідсутній, OpenClaw виводить кількість вхідних токенів ізstats.input_tokens - stats.cached.
command).
Типові значення, що належать плагіну
Типові значення CLI-бекенду тепер є частиною поверхні плагіна:- Плагіни реєструють їх через
api.registerCliBackend(...). idбекенду стає префіксом провайдера в посиланнях на модель.- Конфігурація користувача в
agents.defaults.cliBackends.<id>як і раніше перевизначає типове значення плагіна. - Очищення конфігурації, специфічне для бекенду, залишається у власності плагіна через необов’язковий
хук
normalizeConfig.
Bundle MCP overlays
CLI-бекенди не отримують виклики інструментів OpenClaw напряму, але бекенд може увімкнути згенерований накладений MCP-конфіг ізbundleMcp: true.
Поточна вбудована поведінка:
claude-cli: згенерований strict MCP config filecodex-cli: inline config overrides дляmcp_serversgoogle-gemini-cli: згенерований Gemini system settings file
- запускає loopback HTTP MCP-сервер, який відкриває інструменти gateway для процесу CLI
- автентифікує міст за допомогою токена на сесію (
OPENCLAW_MCP_TOKEN) - обмежує доступ до інструментів поточною сесією, обліковим записом і контекстом каналу
- завантажує ввімкнені bundle-MCP-сервери для поточного робочого простору
- об’єднує їх із наявною формою MCP-конфігурації/налаштувань бекенду
- переписує конфігурацію запуску, використовуючи режим інтеграції, що належить бекенду, з відповідного розширення
Обмеження
- Немає прямих викликів інструментів 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 підтримує шляхи до файлів).