OpenClaw може запускати локальні AI CLI як текстовий резервний варіант, коли API-провайдери недоступні, обмежені лімітами або тимчасово працюють некоректно. Це навмисно консервативний підхід:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Інструменти OpenClaw не інʼєктуються напряму, але бекенди з
bundleMcp: trueможуть отримувати інструменти Gateway через міст local loopback MCP. - Потокове передавання JSONL для CLI, які його підтримують.
- Сесії підтримуються (тому наступні звернення залишаються звʼязними).
- Зображення можна передавати далі, якщо CLI приймає шляхи до зображень.
Швидкий старт для початківців
Ви можете використовувати Codex CLI без будь-якої конфігурації (вбудований plugin OpenAI реєструє стандартний бекенд):agents.defaults.cliBackends.
Використання як резервного варіанта
Додайте бекенд CLI до списку резервних варіантів, щоб він запускався лише тоді, коли основні моделі дають збій:- Якщо ви використовуєте
agents.defaults.models(список дозволених), вам також потрібно включити туди моделі бекенда CLI. - Якщо основний провайдер дає збій (автентифікація, ліміти запитів, тайм-аути), OpenClaw далі спробує бекенд CLI.
Огляд конфігурації
Усі бекенди CLI розміщуються в:codex-cli, my-cli).
Ідентифікатор провайдера стає лівою частиною вашого посилання на модель:
Приклад конфігурації
Як це працює
- Вибирає бекенд на основі префікса провайдера (
codex-cli/...). - Створює системний prompt з використанням того самого prompt OpenClaw і контексту робочої області.
- Виконує CLI з ідентифікатором сесії (якщо підтримується), щоб історія залишалася узгодженою.
Вбудований бекенд
claude-cliпідтримує процес Claude stdio активним для кожної сесії OpenClaw і надсилає наступні звернення через stream-json stdin. - Розбирає вивід (JSON або звичайний текст) і повертає фінальний текст.
- Зберігає ідентифікатори сесій для кожного бекенда, щоб наступні звернення повторно використовували ту саму сесію CLI.
Вбудований бекенд Anthropic
claude-cli знову підтримується. Співробітники Anthropic
повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw вважає
використання claude -p санкціонованим для цієї інтеграції, якщо Anthropic не опублікує
нову політику.codex-cli передає системний prompt OpenClaw через
перевизначення конфігурації Codex model_instructions_file (-c model_instructions_file="..."). Codex не надає прапорець у стилі Claude
--append-system-prompt, тому OpenClaw записує зібраний prompt у
тимчасовий файл для кожної нової сесії Codex CLI.
Вбудований бекенд Anthropic claude-cli отримує знімок Skills OpenClaw
двома способами: компактний каталог Skills OpenClaw у доданому системному prompt і
тимчасовий plugin Claude Code, переданий через --plugin-dir. Plugin містить
лише придатні Skills для цього агента/сесії, тому нативний резолвер Skills
Claude Code бачить той самий відфільтрований набір, який OpenClaw інакше рекламував би в
prompt. Перевизначення env/API key для Skills усе ще застосовуються OpenClaw до
середовища дочірнього процесу для запуску.
Claude CLI також має власний неінтерактивний режим дозволів. OpenClaw зіставляє його
з наявною політикою exec замість додавання специфічної для Claude конфігурації: коли
ефективно запитана політика exec є YOLO (tools.exec.security: "full" і
tools.exec.ask: "off"), OpenClaw додає --permission-mode bypassPermissions.
Налаштування agents.list[].tools.exec для конкретного агента перевизначають глобальні tools.exec для
цього агента. Щоб примусово встановити інший режим Claude, задайте явні необроблені аргументи бекенда,
такі як --permission-mode default або --permission-mode acceptEdits, у
agents.defaults.cliBackends.claude-cli.args і відповідні resumeArgs.
Вбудований бекенд Anthropic claude-cli також зіставляє рівні OpenClaw /think
із нативним прапорцем Claude Code --effort для рівнів, відмінних від off. minimal і
low зіставляються з low, adaptive і medium зіставляються з medium, а high,
xhigh і max зіставляються напряму. Інші бекенди CLI потребують, щоб їхній plugin-власник
оголосив еквівалентний argv-мапер, перш ніж /think зможе впливати на породжений CLI.
Перш ніж OpenClaw зможе використовувати вбудований бекенд claude-cli, сам Claude Code
уже має бути авторизований на тому самому хості:
agents.defaults.cliBackends.claude-cli.command лише тоді, коли бінарний файл claude
ще не доступний у PATH.
Сесії
- Якщо CLI підтримує сесії, задайте
sessionArg(наприклад,--session-id) абоsessionArgs(заповнювач{sessionId}), коли ID потрібно вставити в кілька прапорців. - Якщо CLI використовує підкоманду resume з іншими прапорцями, задайте
resumeArgs(замінюєargsпід час відновлення) і за потребиresumeOutput(для не-JSON відновлень). sessionMode:always: завжди надсилати ідентифікатор сесії (новий UUID, якщо жоден не збережено).existing: надсилати ідентифікатор сесії лише якщо його було збережено раніше.none: ніколи не надсилати ідентифікатор сесії.
claude-cliза замовчуванням використовуєliveSession: "claude-stdio",output: "jsonl", іinput: "stdin", щоб наступні звернення повторно використовували живий процес Claude, доки він активний. Тепер warm stdio є типовим, зокрема для користувацьких конфігурацій, які не задають транспортні поля. Якщо Gateway перезапускається або неактивний процес завершується, OpenClaw відновлюється зі збереженого ідентифікатора сесії Claude. Збережені ідентифікатори сесій перевіряються на наявність читабельного transcript проєкту перед відновленням, тому фантомні привʼязки очищаються зreason=transcript-missingзамість тихого запуску нової сесії Claude CLI через--resume.- Живі сесії Claude зберігають обмежені запобіжники виводу JSONL. Типові значення дозволяють до
8 MiB і 20,000 необроблених рядків JSONL за одне звернення. Звернення Claude з великою кількістю інструментів можуть підвищити
їх для кожного бекенда за допомогою
agents.defaults.cliBackends.claude-cli.reliability.outputLimits.maxTurnRawCharsіmaxTurnLines; OpenClaw обмежує ці налаштування до 64 MiB і 100,000 рядків. - Збережені сесії CLI є безперервністю, якою володіє провайдер. Неявне щоденне скидання сесії
їх не перериває;
/resetі явні політикиsession.resetусе ще переривають. - Нові сесії CLI зазвичай повторно засіваються лише з підсумку Compaction OpenClaw
плюс хвоста після Compaction. Щоб відновлювати короткі сесії, які стають недійсними
до Compaction, бекенд може явно ввімкнути
reseedFromRawTranscriptWhenUncompacted: true. OpenClaw усе одно утримує повторне засівання з необробленого transcript обмеженим і обмежує його безпечними інвалідаціями, як-от відсутні CLI transcript, зміни системного prompt/MCP або повторна спроба після session-expired; зміни профілю автентифікації чи епохи облікових даних ніколи не засівають повторно історію необробленого transcript.
serialize: trueзберігає порядок запусків в одній смузі.- Більшість CLI серіалізуються в одній смузі провайдера.
- OpenClaw відкидає повторне використання збереженої сесії CLI, коли вибрана ідентичність автентифікації змінюється, включно зі зміненим ідентифікатором профілю автентифікації, статичним API key, статичним token або ідентичністю облікового запису OAuth, коли CLI її надає. Ротація access і refresh token OAuth не перериває збережену сесію CLI. Якщо CLI не надає стабільний ідентифікатор облікового запису OAuth, OpenClaw дозволяє цьому CLI самостійно забезпечувати дозволи resume.
Прелюдія резервного варіанта із сесій claude-cli
Коли спробаclaude-cli переходить на не-CLI кандидата в
agents.defaults.model.fallbacks, OpenClaw засіває
наступну спробу контекстною прелюдією, отриманою з локального
JSONL transcript Claude Code у ~/.claude/projects/. Без цього засівання резервний
провайдер стартував би з нуля, оскільки власний transcript сесії OpenClaw порожній
для запусків claude-cli.
- Прелюдія надає перевагу найновішому підсумку
/compactабо маркеруcompact_boundary, а потім додає найновіші звернення після межі в межах бюджету символів. Звернення до межі відкидаються, оскільки підсумок уже їх представляє. - Блоки інструментів зводяться до компактних підказок
(tool call: name)і(tool result: …), щоб чесно дотримуватися бюджету prompt. Підсумок позначається(truncated), якщо він переповнюється. - Резервні переходи з
claude-cliнаclaude-cliу межах того самого провайдера покладаються на власний--resumeClaude і пропускають прелюдію. - Засівання повторно використовує наявну перевірку шляху до файлу сесії Claude, тому довільні шляхи не можуть бути прочитані.
Зображення (наскрізне передавання)
Якщо ваш CLI приймає шляхи до зображень, задайтеimageArg:
imageArg задано, ці
шляхи передаються як аргументи CLI. Якщо imageArg відсутній, OpenClaw додає
шляхи до файлів у prompt (інʼєкція шляху), чого достатньо для CLI, які автоматично
завантажують локальні файли зі звичайних шляхів.
Входи / виходи
output: "json"(типово) намагається розібрати JSON і витягти текст + ідентифікатор сесії.- Для JSON-виводу Gemini CLI OpenClaw читає текст відповіді з
responseі використання зі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. 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 переписує системний промпт і промпт користувача, передані до CLI. output
переписує потокові дельти асистента та розібраний фінальний текст, перш ніж OpenClaw обробить
власні керівні маркери й доставку в канал.
Для CLI, які виводять JSONL, сумісний із Claude Code stream-json, задайте
jsonlDialect: "claude-stream-json" у конфігурації цього бекенда.
Накладення пакетного MCP
Бекенди CLI не отримують виклики інструментів OpenClaw напряму, але бекенд може увімкнути згенероване накладення конфігурації MCP за допомогоюbundleMcp: true.
Поточна вбудована поведінка:
claude-cli: згенерований суворий файл конфігурації MCPcodex-cli: вбудовані перевизначення конфігурації дляmcp_servers; згенерований сервер loopback OpenClaw позначається режимом схвалення інструментів для кожного сервера Codex, щоб виклики MCP не могли зупинятися на локальних запитах схваленняgoogle-gemini-cli: згенерований файл системних налаштувань Gemini
- запускає loopback HTTP MCP-сервер, який надає інструменти Gateway процесу CLI
- автентифікує міст токеном для кожного сеансу (
OPENCLAW_MCP_TOKEN) - обмежує доступ до інструментів контекстом поточного сеансу, облікового запису та каналу
- завантажує ввімкнені сервери пакетного MCP для поточного робочого простору
- об’єднує їх з будь-якою наявною формою конфігурації/налаштувань MCP бекенда
- переписує конфігурацію запуску, використовуючи режим інтеграції, яким володіє бекенд, із власницького розширення
mcp.sessionIdleTtlMs мілісекунд простою (типово 10
хвилин; встановіть 0, щоб вимкнути). Одноразові вбудовані запуски, як-от перевірки автентифікації,
генерування slug і запити Active Memory на відкликання, очищаються наприкінці запуску, щоб дочірні процеси stdio
та потоки Streamable HTTP/SSE не жили довше за запуск.
Обмеження
- Без прямих викликів інструментів 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 підтримує шляхи до файлів).