CLI-бэкенды (резервная среда выполнения)
OpenClaw может запускать локальные AI CLI как текстовый резервный вариант, когда провайдеры API недоступны, ограничены по скорости или временно работают некорректно. Это намеренно консервативный режим:- Инструменты отключены (без вызовов инструментов).
- Текст на вход → текст на выход (надёжно).
- Сеансы поддерживаются (поэтому последующие реплики остаются связными).
- Изображения могут передаваться при условии, что CLI принимает пути к изображениям.
Быстрый старт для начинающих
Вы можете использовать Claude Code CLI без какой-либо конфигурации (OpenClaw поставляется со встроенным значением по умолчанию):Использование в качестве резервного варианта
Добавьте CLI-бэкенд в список резервных, чтобы он использовался только при сбое основных моделей:- Если вы используете
agents.defaults.models(список разрешённых), необходимо включитьclaude-cli/.... - Если основной провайдер не отвечает (аутентификация, лимиты, тайм-ауты), OpenClaw попробует CLI-бэкенд следующим.
Обзор конфигурации
Все CLI-бэкенды находятся в:claude-cli, my-cli).
Идентификатор провайдера становится левой частью ссылки на модель:
Пример конфигурации
Как это работает
- Выбирает бэкенд по префиксу провайдера (
claude-cli/...). - Формирует системный prompt с использованием того же prompt OpenClaw + контекста рабочего пространства.
- Выполняет CLI с идентификатором сеанса (если поддерживается), чтобы история оставалась согласованной.
- Разбирает вывод (JSON или обычный текст) и возвращает финальный текст.
- Сохраняет идентификаторы сеансов для каждого бэкенда, чтобы последующие запросы переиспользовали тот же сеанс CLI.
Сеансы
- Если CLI поддерживает сеансы, установите
sessionArg(например,--session-id) илиsessionArgs(заглушка{sessionId}), когда идентификатор нужно подставлять в несколько флагов. - Если CLI использует подкоманду возобновления с другими флагами, установите
resumeArgs(заменяетargsпри возобновлении) и при необходимостиresumeOutput(для возобновлений без JSON). sessionMode:always: всегда отправлять идентификатор сеанса (новый UUID, если ничего не сохранено).existing: отправлять идентификатор сеанса только если он был сохранён ранее.none: никогда не отправлять идентификатор сеанса.
Изображения (сквозная передача)
Если ваш CLI принимает пути к изображениям, установитеimageArg:
imageArg,
эти пути передаются как аргументы CLI. Если imageArg отсутствует, OpenClaw
добавляет пути к файлам в prompt (инъекция пути), чего достаточно для CLI,
которые автоматически загружают локальные файлы по обычным путям (поведение Claude Code CLI).
Ввод / вывод
output: "json"(по умолчанию) пытается разобрать JSON и извлечь текст + идентификатор сеанса.output: "jsonl"разбирает потоки JSONL (Codex CLI--json) и извлекает последнее сообщение агента, а такжеthread_idпри наличии.output: "text"рассматривает stdout как финальный ответ.
input: "arg"(по умолчанию) передаёт prompt как последний аргумент CLI.input: "stdin"отправляет prompt через stdin.- Если 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-бэкенд никогда не получает вызовы инструментов). Некоторые CLI всё же могут запускать собственные агентные инструменты.
- Без потоковой передачи (вывод CLI собирается целиком, затем возвращается).
- Структурированные выводы зависят от JSON-формата CLI.
- Сеансы Codex CLI возобновляются через текстовый вывод (без JSONL), что менее
структурировано, чем первоначальный запуск
--json. Сеансы OpenClaw при этом продолжают работать нормально.
Устранение неполадок
- CLI не найден: задайте
commandкак полный путь. - Неверное имя модели: используйте
modelAliasesдля сопоставленияprovider/model→ модель CLI. - Нет непрерывности сеанса: убедитесь, что задан
sessionArgи чтоsessionModeне равенnone(Codex CLI в настоящее время не может возобновляться с JSON-выводом). - Изображения игнорируются: установите
imageArg(и убедитесь, что CLI поддерживает пути к файлам).