chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-16 16:35:23 +00:00
parent fc94e38d61
commit bd8c0a8cd2

View File

@ -1,47 +1,47 @@
---
read_when:
- Вам потрібен надійний резервний варіант, коли постачальники API зазнають збою
- Ви запускаєте Codex CLI або інші локальні AI CLI й хочете використовувати їх повторно
- Ви хочете зрозуміти міст local loopback MCP для доступу CLI-бекенду до інструментів
summary: 'Бекенди CLI: локальний резервний варіант AI CLI з необов’язковим мостом інструментів MCP'
- Вам потрібен надійний резервний варіант, коли API-провайдери не працюють.
- Ви використовуєте Codex CLI або інші локальні AI CLI і хочете використовувати їх повторно.
- Ви хочете зрозуміти міст MCP local loopback для доступу інструментів до бекенду CLI.
summary: 'Бекенди CLI: локальний резервний CLI для AI з необов’язковим мостом інструментів MCP'
title: Бекенди CLI
x-i18n:
generated_at: "2026-04-16T15:44:38Z"
generated_at: "2026-04-16T16:34:17Z"
model: gpt-5.4
provider: openai
source_hash: 0fff1d783dc49e97739fd322cd5762f5a5b9f239886b6cf1495b715a511e8c82
source_hash: 381273532a8622bc4628000a6fb999712b12af08faade2b5f2b7ac4cc7d23efe
source_path: gateway/cli-backends.md
workflow: 15
---
# CLI-бекенди (резервне середовище виконання)
# Бекенди CLI (резервне середовище виконання)
OpenClaw може запускати **локальні AI CLI** як **лише текстовий резервний варіант**, коли постачальники API недоступні,
обмежують частоту запитів або тимчасово працюють некоректно. Це навмисно зроблено консервативно:
OpenClaw може запускати **локальні AI CLI** як **резервний варіант лише для тексту**, коли API-провайдери недоступні,
обмежені за частотою запитів або тимчасово працюють некоректно. Це навмисно консервативний режим:
- **Інструменти OpenClaw не впроваджуються безпосередньо**, але бекенди з `bundleMcp: true`
можуть отримувати інструменти Gateway через loopback-міст MCP.
- **JSONL-стримінг** для CLI, які це підтримують.
- **Сеанси підтримуються** (тому наступні ходи залишаються узгодженими).
- **Інструменти OpenClaw не інжектуються напряму**, але бекенди з `bundleMcp: true`
можуть отримувати інструменти gateway через міст MCP local loopback.
- **Потокова передача JSONL** для CLI, які її підтримують.
- **Сесії підтримуються** (тож наступні ходи залишаються узгодженими).
- **Зображення можна передавати далі**, якщо CLI приймає шляхи до зображень.
Це задумано як **страхувальний механізм**, а не як основний шлях. Використовуйте це, коли
вам потрібні текстові відповіді у стилі «завжди працює» без залежності від зовнішніх API.
Це задумано як **страхувальний механізм**, а не як основний шлях. Використовуйте це, коли вам
потрібні текстові відповіді у стилі «завжди працює» без залежності від зовнішніх API.
Якщо вам потрібне повне середовище виконання з керуванням сеансами ACP, фоновими завданнями,
прив’язкою до потоку/розмови та постійними зовнішніми сеансами кодування, використовуйте
[ACP Agents](/uk/tools/acp-agents). CLI-бекенди — це не ACP.
Якщо вам потрібне повноцінне середовище виконання harness із керуванням сесіями ACP, фоновими завданнями,
прив’язкою до потоку/розмови та постійними зовнішніми coding sessions, використовуйте
[ACP Agents](/uk/tools/acp-agents). Бекенди CLI — це не ACP.
## Швидкий старт для початківців
Ви можете використовувати Codex CLI **без жодної конфігурації** (вбудований плагін OpenAI
реєструє бекенд за замовчуванням):
реєструє стандартний бекенд):
```bash
openclaw agent --message "hi" --model codex-cli/gpt-5.4
```
Якщо ваш Gateway працює під launchd/systemd і PATH мінімальний, додайте лише
Якщо ваш gateway працює під launchd/systemd і `PATH` мінімальний, додайте лише
шлях до команди:
```json5
@ -58,16 +58,16 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.4
}
```
От і все. Жодних ключів і жодної додаткової конфігурації автентифікації, окрім самої CLI, не потрібно.
І все. Жодних ключів, жодної додаткової конфігурації автентифікації, окрім самої CLI.
Якщо ви використовуєте вбудований CLI-бекенд як **основного постачальника повідомлень** на
хості Gateway, OpenClaw тепер автоматично завантажує відповідний вбудований Plugin, коли ваша конфігурація
явно посилається на цей бекенд у model ref або в
Якщо ви використовуєте вбудований бекенд CLI як **основного провайдера повідомлень** на
хості gateway, OpenClaw тепер автоматично завантажує відповідний вбудований Plugin, коли ваша конфігурація
явно посилається на цей бекенд у посиланні на модель або в
`agents.defaults.cliBackends`.
## Використання як резервного варіанта
## Використання як резервного варіанту
Додайте CLI-бекенд до списку резервних варіантів, щоб він запускався лише тоді, коли основні моделі не спрацьовують:
Додайте бекенд CLI до списку резервних, щоб він запускався лише тоді, коли основні моделі не працюють:
```json5
{
@ -88,20 +88,20 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.4
Примітки:
- Якщо ви використовуєте `agents.defaults.models` (allowlist), ви також маєте включити туди моделі вашого CLI-бекенду.
- Якщо основний постачальник не спрацьовує (автентифікація, ліміти частоти, тайм-аути), OpenClaw
спробує CLI-бекенд наступним.
- Якщо ви використовуєте `agents.defaults.models` (allowlist), ви також маєте включити туди моделі вашого бекенду CLI.
- Якщо основний провайдер не працює (автентифікація, обмеження частоти запитів, тайм-аути), OpenClaw
спробує використати бекенд CLI далі.
## Огляд конфігурації
Усі CLI-бекенди знаходяться тут:
Усі бекенди CLI знаходяться в:
```
agents.defaults.cliBackends
```
Кожен запис має ключ у вигляді **ідентифікатора постачальника** (наприклад, `codex-cli`, `my-cli`).
Ідентифікатор постачальника стає лівою частиною вашого model ref:
Кожен запис має ключ у вигляді **ідентифікатора провайдера** (наприклад, `codex-cli`, `my-cli`).
Ідентифікатор провайдера стає лівою частиною посилання на модель:
```
<provider>/<model>
@ -131,7 +131,7 @@ agents.defaults.cliBackends
sessionMode: "existing",
sessionIdFields: ["session_id", "conversation_id"],
systemPromptArg: "--system",
// CLI у стилі Codex можуть натомість вказувати на файл промпту:
// CLI у стилі Codex можуть натомість вказувати на файл prompt:
// systemPromptFileConfigArg: "-c",
// systemPromptFileConfigKey: "model_instructions_file",
systemPromptWhen: "first",
@ -147,53 +147,52 @@ agents.defaults.cliBackends
## Як це працює
1. **Вибирає бекенд** на основі префікса постачальника (`codex-cli/...`).
2. **Формує системний промпт** з використанням того самого промпту OpenClaw і контексту робочого простору.
3. **Виконує CLI** з ідентифікатором сеансу (якщо підтримується), щоб історія залишалася узгодженою.
4. **Розбирає вихідні дані** (JSON або звичайний текст) і повертає фінальний текст.
5. **Зберігає ідентифікатори сеансів** для кожного бекенду, щоб наступні ходи повторно використовували той самий сеанс CLI.
1. **Вибирає бекенд** на основі префікса провайдера (`codex-cli/...`).
2. **Формує system prompt** з використанням того самого prompt OpenClaw і контексту workspace.
3. **Виконує CLI** з ідентифікатором сесії (якщо підтримується), щоб історія залишалася узгодженою.
4. **Розбирає вивід** (JSON або звичайний текст) і повертає фінальний текст.
5. **Зберігає ідентифікатори сесій** для кожного бекенду, щоб наступні запити повторно використовували ту саму CLI-сесію.
<Note>
Вбудований бекенд Anthropic `claude-cli` знову підтримується. Співробітники Anthropic
повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тож OpenClaw вважає
використання `claude -p` санкціонованим для цієї інтеграції, якщо Anthropic не опублікує
повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw розглядає
використання `claude -p` як санкціоноване для цієї інтеграції, якщо Anthropic не опублікує
нову політику.
</Note>
Вбудований бекенд OpenAI `codex-cli` передає системний промпт OpenClaw через
Вбудований бекенд OpenAI `codex-cli` передає system prompt OpenClaw через
перевизначення конфігурації `model_instructions_file` у Codex (`-c
model_instructions_file="..."`). Codex не надає прапорця
у стилі Claude `--append-system-prompt`, тож OpenClaw записує зібраний промпт у
тимчасовий файл для кожного нового сеансу Codex CLI.
model_instructions_file="..."`). Codex не надає прапора у стилі Claude
`--append-system-prompt`, тому OpenClaw записує зібраний prompt у
тимчасовий файл для кожної нової сесії Codex CLI.
Вбудований бекенд Anthropic `claude-cli` отримує знімок Skills OpenClaw
двома способами: компактний каталог Skills OpenClaw у доданому системному промпті та
тимчасовий Plugin Claude Code, переданий через `--plugin-dir`. Plugin містить
лише ті Skills, які дозволені для цього агента/сеансу, тож вбудований резолвер Skills у Claude Code
бачить той самий відфільтрований набір, який OpenClaw інакше рекламував би в промпті.
Перевизначення env/API-ключів для 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 використовує **підкоманду відновлення** з іншими прапорцями, задайте
`resumeArgs` (замінює `args` під час відновлення) і, за потреби, `resumeOutput`
(для відновлення не через JSON).
- Якщо CLI підтримує сесії, задайте `sessionArg` (наприклад, `--session-id`) або
`sessionArgs` плейсхолдером `{sessionId}`), коли ID потрібно вставити
в кілька прапорів.
- Якщо CLI використовує **підкоманду resume** з іншими прапорами, задайте
`resumeArgs` (замінює `args` під час відновлення) і за потреби `resumeOutput`
(для відновлення без JSON).
- `sessionMode`:
- `always`: завжди надсилає ідентифікатор сеансу (новий UUID, якщо жодного не збережено).
- `existing`: надсилає ідентифікатор сеансу, лише якщо його було збережено раніше.
- `none`: ніколи не надсилає ідентифікатор сеансу.
- `always`: завжди надсилати ідентифікатор сесії (новий UUID, якщо нічого не збережено).
- `existing`: надсилати ідентифікатор сесії лише якщо його вже було збережено.
- `none`: ніколи не надсилати ідентифікатор сесії.
Примітки щодо серіалізації:
- `serialize: true` зберігає впорядкованість запусків у межах однієї смуги.
- Більшість CLI серіалізують виконання в одній смузі постачальника.
- OpenClaw скидає повторне використання збереженого CLI-сеансу, коли змінюється стан автентифікації бекенду, зокрема після повторного входу, ротації токена або зміни облікових даних профілю автентифікації.
- `serialize: true` зберігає впорядкованість запусків на одній смузі.
- Більшість CLI серіалізуються в межах однієї смуги провайдера.
- OpenClaw скидає повторне використання збереженої CLI-сесії, коли змінюється стан автентифікації бекенду, зокрема під час повторного входу, ротації токена або зміни облікових даних профілю автентифікації.
## Зображення (передавання далі)
## Зображення (pass-through)
Якщо ваша CLI приймає шляхи до зображень, задайте `imageArg`:
@ -202,40 +201,40 @@ imageArg: "--image",
imageMode: "repeat"
```
OpenClaw записує зображення base64 у тимчасові файли. Якщо задано `imageArg`, ці
OpenClaw записуватиме base64-зображення у тимчасові файли. Якщо `imageArg` задано, ці
шляхи передаються як аргументи CLI. Якщо `imageArg` відсутній, OpenClaw додає
шляхи до файлів у промпт (ін’єкція шляху), чого достатньо для CLI, які автоматично
шляхи до файлів у prompt (інжекція шляху), чого достатньо для CLI, які автоматично
завантажують локальні файли зі звичайних шляхів.
## Входи / виходи
- `output: "json"` (типово) намагається розібрати JSON і витягти текст + ідентифікатор сеансу.
- `output: "json"` (типово) намагається розібрати JSON і витягти текст + ідентифікатор сесії.
- Для JSON-виводу Gemini CLI OpenClaw читає текст відповіді з `response`, а
використання — зі `stats`, коли `usage` відсутній або порожній.
- `output: "jsonl"` розбирає потоки JSONL (наприклад, Codex CLI `--json`) і витягує фінальне повідомлення агента та ідентифікатори сеансу,
usage — з `stats`, коли `usage` відсутній або порожній.
- `output: "jsonl"` розбирає потоки JSONL (наприклад, Codex CLI `--json`) і витягує фінальне повідомлення агента та ідентифікатори сесії,
якщо вони присутні.
- `output: "text"` трактує stdout як фінальну відповідь.
- `output: "text"` обробляє stdout як фінальну відповідь.
Режими введення:
- `input: "arg"` (типово) передає промпт як останній аргумент CLI.
- `input: "stdin"` надсилає промпт через stdin.
- Якщо промпт дуже довгий і задано `maxPromptArgChars`, використовується stdin.
- `input: "arg"` (типово) передає prompt як останній аргумент CLI.
- `input: "stdin"` надсилає prompt через stdin.
- Якщо prompt дуже довгий і задано `maxPromptArgChars`, використовується stdin.
## Значення за замовчуванням (належать Plugin)
## Типові значення (належать Plugin)
Вбудований Plugin OpenAI також реєструє значення за замовчуванням для `codex-cli`:
Вбудований Plugin OpenAI також реєструє типові значення для `codex-cli`:
- `command: "codex"`
- `args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]`
- `resumeArgs: ["exec","resume","{sessionId}","--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"`
Вбудований Plugin Google також реєструє значення за замовчуванням для `google-gemini-cli`:
Вбудований Plugin Google також реєструє типові значення для `google-gemini-cli`:
- `command: "gemini"`
- `args: ["--output-format", "json", "--prompt", "{prompt}"]`
@ -246,32 +245,32 @@ OpenClaw записує зображення base64 у тимчасові фай
- `sessionMode: "existing"`
- `sessionIdFields: ["session_id", "sessionId"]`
Передумова: локальний Gemini CLI має бути встановлений і доступний як
Передумова: локальна Gemini CLI має бути встановлена й доступна як
`gemini` у `PATH` (`brew install gemini-cli` або
`npm install -g @google/gemini-cli`).
Примітки щодо Gemini CLI JSON:
Примітки щодо JSON Gemini CLI:
- Текст відповіді читається з поля JSON `response`.
- Дані про використання беруться зі `stats`, якщо `usage` відсутній або порожній.
- `stats.cached` нормалізується до OpenClaw `cacheRead`.
- Якщо `stats.input` відсутній, OpenClaw виводить кількість вхідних токенів із
- Usage береться з `stats`, якщо `usage` відсутній або порожній.
- `stats.cached` нормалізується в OpenClaw `cacheRead`.
- Якщо `stats.input` відсутній, OpenClaw обчислює вхідні токени з
`stats.input_tokens - stats.cached`.
Перевизначайте лише за потреби (поширений випадок: абсолютний шлях `command`).
Перевизначайте лише за потреби (типовий випадок: абсолютний шлях `command`).
## Значення за замовчуванням, що належать Plugin
## Типові значення, що належать Plugin
Типові значення CLI-бекендів тепер є частиною поверхні Plugin:
Типові значення бекенду CLI тепер є частиною поверхні Plugin:
- Plugins реєструють їх через `api.registerCliBackend(...)`.
- `id` бекенду стає префіксом постачальника в model ref.
- Конфігурація користувача в `agents.defaults.cliBackends.<id>` як і раніше перевизначає значення Plugin за замовчуванням.
- Очищення конфігурації, специфічне для бекенду, як і раніше належить Plugin через необов’язковий
- `id` бекенду стає префіксом провайдера в посиланнях на модель.
- Конфігурація користувача в `agents.defaults.cliBackends.<id>` як і раніше перевизначає типове значення Plugin.
- Очищення конфігурації, специфічне для бекенду, залишається відповідальністю Plugin через необов’язковий
хук `normalizeConfig`.
Plugins, яким потрібні невеликі шими сумісності для промптів/повідомлень, можуть оголошувати
двонапрямлені текстові перетворення без заміни постачальника або CLI-бекенду:
Plugins, яким потрібні невеликі compatibility shims для prompt/повідомлень, можуть оголошувати
двонапрямні текстові перетворення без заміни провайдера або бекенду CLI:
```typescript
api.registerTextTransforms({
@ -288,52 +287,52 @@ api.registerTextTransforms({
});
```
`input` переписує системний промпт і користувацький промпт, передані до CLI. `output`
переписує стримінгові дельти асистента та розібраний фінальний текст до того, як OpenClaw обробить
власні керівні маркери та доставку каналом.
`input` переписує system prompt і prompt користувача, що передаються до CLI. `output`
переписує потокові дельти помічника і розібраний фінальний текст до того, як OpenClaw обробить
власні службові маркери та доставку в канал.
Для CLI, які виводять JSONL, сумісний із Claude Code stream-json, встановіть
Для CLI, які видають JSONL, сумісний із Claude Code stream-json, задайте
`jsonlDialect: "claude-stream-json"` у конфігурації цього бекенду.
## Накладки bundle MCP
## Bundle MCP overlays
CLI-бекенди **не** отримують виклики інструментів OpenClaw безпосередньо, але бекенд може
увімкнути згенеровану накладку конфігурації MCP через `bundleMcp: true`.
Бекенди CLI **не** отримують виклики інструментів OpenClaw напряму, але бекенд може
увімкнути згенерований MCP config overlay через `bundleMcp: true`.
Поточна вбудована поведінка:
- `claude-cli`: згенерований строгий конфігураційний файл MCP
- `claude-cli`: згенерований строгий файл конфігурації MCP
- `codex-cli`: вбудовані перевизначення конфігурації для `mcp_servers`
- `google-gemini-cli`: згенерований файл системних налаштувань Gemini
Коли bundle MCP увімкнено, OpenClaw:
- запускає loopback HTTP MCP-сервер, який відкриває інструменти Gateway для процесу CLI
- автентифікує міст за допомогою токена для кожного сеансу (`OPENCLAW_MCP_TOKEN`)
- обмежує доступ до інструментів поточним сеансом, обліковим записом і контекстом каналу
- завантажує увімкнені bundle-MCP-сервери для поточного робочого простору
- об’єднує їх із будь-якою наявною формою конфігурації/налаштувань MCP цього бекенду
- переписує конфігурацію запуску за допомогою режиму інтеграції, який належить бекенду у відповідному розширенні
- запускає loopback HTTP MCP-сервер, який надає інструменти gateway процесу CLI
- автентифікує міст за допомогою токена на сесію (`OPENCLAW_MCP_TOKEN`)
- обмежує доступ до інструментів поточною сесією, обліковим записом і контекстом каналу
- завантажує увімкнені bundle-MCP сервери для поточного workspace
- об’єднує їх з будь-якою наявною формою MCP-конфігурації/налаштувань бекенду
- переписує конфігурацію запуску, використовуючи режим інтеграції, що належить бекенду, з відповідного extension
Якщо жоден MCP-сервер не увімкнено, OpenClaw все одно впроваджує строгий конфіг, коли
Якщо жодного MCP-сервера не увімкнено, OpenClaw усе одно інжектує строгу конфігурацію, коли
бекенд увімкнув bundle MCP, щоб фонові запуски залишалися ізольованими.
## Обмеження
- **Немає прямих викликів інструментів OpenClaw.** OpenClaw не впроваджує виклики інструментів у
протокол CLI-бекенду. Бекенди бачать інструменти Gateway лише тоді, коли в них увімкнено
- **Немає прямих викликів інструментів OpenClaw.** OpenClaw не інжектує виклики інструментів у
протокол бекенду CLI. Бекенди бачать інструменти gateway лише коли вони увімкнули
`bundleMcp: true`.
- **Стримінг залежить від бекенду.** Деякі бекенди передають JSONL потоком; інші буферизують
- **Потокова передача залежить від бекенду.** Деякі бекенди передають JSONL потоково, інші буферизують
до завершення.
- **Структуровані вихідні дані** залежать від JSON-формату CLI.
- **Сеанси Codex CLI** відновлюються через текстовий вивід (без JSONL), що є
менш структурованим, ніж початковий запуск `--json`. Сеанси OpenClaw при цьому все одно працюють
- **Структуровані виходи** залежать від JSON-формату CLI.
- **Сесії Codex CLI** відновлюються через текстовий вивід (без JSONL), що менш
структуровано, ніж початковий запуск `--json`. Сесії OpenClaw при цьому все одно працюють
нормально.
## Усунення несправностей
## Усунення неполадок
- **CLI не знайдено**: задайте для `command` повний шлях.
- **CLI не знайдено**: задайте `command` як повний шлях.
- **Неправильна назва моделі**: використовуйте `modelAliases`, щоб зіставити `provider/model` → модель CLI.
- **Немає безперервності сеансу**: переконайтеся, що задано `sessionArg` і `sessionMode` не має значення
- **Немає безперервності сесії**: переконайтеся, що задано `sessionArg` і `sessionMode` не дорівнює
`none` (Codex CLI наразі не може відновлюватися з JSON-виводом).
- **Зображення ігноруються**: задайте `imageArg` (і перевірте, що CLI підтримує шляхи до файлів).
- **Зображення ігноруються**: задайте `imageArg` (і переконайтеся, що CLI підтримує шляхи до файлів).