chore(i18n): refresh uk translations
This commit is contained in:
parent
490e6b597c
commit
bfb0cd71db
@ -1,38 +1,38 @@
|
||||
---
|
||||
read_when:
|
||||
- Вам потрібен надійний резервний варіант, коли постачальники API дають збій
|
||||
- Ви запускаєте Codex CLI або інші локальні CLI для ШІ й хочете повторно використовувати їх
|
||||
- Ви хочете зрозуміти loopback-міст MCP для доступу до інструментів бекенда CLI
|
||||
summary: 'Бекенди CLI: локальний резервний варіант AI CLI з необов’язковим мостом інструментів MCP'
|
||||
- Ви запускаєте Codex CLI або інші локальні CLI зі ШІ та хочете повторно використовувати їх
|
||||
- Ви хочете зрозуміти loopback-міст MCP для доступу до інструментів бекенду CLI
|
||||
summary: 'Бекенди CLI: локальний резервний варіант CLI для ШІ з необов’язковим мостом інструментів MCP'
|
||||
title: Бекенди CLI
|
||||
x-i18n:
|
||||
generated_at: "2026-04-28T11:09:59Z"
|
||||
generated_at: "2026-05-02T08:25:28Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 438862ed127a823dcdedc4aacb77b2facb13caa08f7986ef8402833777b6574e
|
||||
source_hash: f343469d6a42dc6146196355dc2ba3feed045515c3d8446941b90971aadc9a16
|
||||
source_path: gateway/cli-backends.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw може запускати **локальні AI CLI** як **текстовий резервний варіант**, коли API-провайдери недоступні,
|
||||
мають обмеження частоти запитів або тимчасово працюють некоректно. Це навмисно консервативний підхід:
|
||||
обмежені за лімітом запитів або тимчасово працюють некоректно. Це навмисно консервативний підхід:
|
||||
|
||||
- **Інструменти OpenClaw не впроваджуються напряму**, але бекенди з `bundleMcp: true`
|
||||
можуть отримувати інструменти Gateway через loopback MCP-міст.
|
||||
- **Потокове передавання JSONL** для CLI, які це підтримують.
|
||||
- **Сесії підтримуються** (тому наступні звернення залишаються узгодженими).
|
||||
- **Зображення можна передавати далі**, якщо CLI приймає шляхи до зображень.
|
||||
- **Інструменти OpenClaw не ін’єктуються напряму**, але бекенди з `bundleMcp: true`
|
||||
можуть отримувати інструменти gateway через loopback MCP-міст.
|
||||
- **JSONL-стримінг** для CLI, які його підтримують.
|
||||
- **Сесії підтримуються** (тому подальші ходи залишаються узгодженими).
|
||||
- **Зображення можна передавати наскрізно**, якщо CLI приймає шляхи до зображень.
|
||||
|
||||
Це задумано як **запобіжний механізм**, а не основний шлях. Використовуйте його, коли
|
||||
Це розроблено як **запобіжний механізм**, а не як основний шлях. Використовуйте його, коли вам
|
||||
потрібні текстові відповіді, що «завжди працюють», без залежності від зовнішніх API.
|
||||
|
||||
Якщо вам потрібне повноцінне середовище запуску з керуванням сесіями ACP, фоновими завданнями,
|
||||
прив’язкою потоків/розмов і постійними зовнішніми сесіями кодування, використовуйте
|
||||
[Агенти ACP](/uk/tools/acp-agents). CLI-бекенди не є ACP.
|
||||
Якщо вам потрібне повноцінне середовище виконання harness із керуванням сесіями ACP, фоновими завданнями,
|
||||
прив’язкою потоків/розмов і постійними зовнішніми сесіями кодування, натомість використовуйте
|
||||
[ACP Agents](/uk/tools/acp-agents). CLI-бекенди не є ACP.
|
||||
|
||||
## Швидкий старт для початківців
|
||||
## Простий швидкий старт для початківців
|
||||
|
||||
Ви можете використовувати Codex CLI **без будь-якої конфігурації** (вбудований OpenAI plugin
|
||||
Ви можете використовувати Codex CLI **без жодної конфігурації** (вбудований OpenAI Plugin
|
||||
реєструє стандартний бекенд):
|
||||
|
||||
```bash
|
||||
@ -56,16 +56,16 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.5
|
||||
}
|
||||
```
|
||||
|
||||
Ось і все. Жодних ключів, жодної додаткової конфігурації автентифікації поза самим CLI не потрібно.
|
||||
Це все. Жодних ключів, жодної додаткової конфігурації автентифікації, окрім самого CLI, не потрібно.
|
||||
|
||||
Якщо ви використовуєте вбудований CLI-бекенд як **основного провайдера повідомлень** на
|
||||
хості gateway, OpenClaw тепер автоматично завантажує відповідний вбудований plugin, коли ваша конфігурація
|
||||
явно посилається на цей бекенд у model ref або в
|
||||
gateway-хості, OpenClaw тепер автоматично завантажує вбудований Plugin-власник, коли ваша конфігурація
|
||||
явно посилається на цей бекенд у посиланні на модель або в
|
||||
`agents.defaults.cliBackends`.
|
||||
|
||||
## Використання як резервного варіанта
|
||||
|
||||
Додайте CLI-бекенд до списку резервних варіантів, щоб він запускався лише тоді, коли основні моделі не працюють:
|
||||
Додайте CLI-бекенд до списку резервних варіантів, щоб він запускався лише тоді, коли основні моделі не спрацюють:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -86,8 +86,8 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.5
|
||||
|
||||
Примітки:
|
||||
|
||||
- Якщо ви використовуєте `agents.defaults.models` (список дозволених), потрібно також додати туди моделі вашого CLI-бекенда.
|
||||
- Якщо основний провайдер не спрацює (автентифікація, обмеження частоти, тайм-аути), OpenClaw
|
||||
- Якщо ви використовуєте `agents.defaults.models` (allowlist), ви також маєте включити туди моделі свого CLI-бекенда.
|
||||
- Якщо основний провайдер не спрацює (автентифікація, ліміти запитів, тайм-аути), OpenClaw
|
||||
спробує CLI-бекенд наступним.
|
||||
|
||||
## Огляд конфігурації
|
||||
@ -98,8 +98,8 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.5
|
||||
agents.defaults.cliBackends
|
||||
```
|
||||
|
||||
Ключем кожного запису є **ідентифікатор провайдера** (наприклад, `codex-cli`, `my-cli`).
|
||||
Ідентифікатор провайдера стає лівою частиною вашого model ref:
|
||||
Кожен запис має ключ у вигляді **ідентифікатора провайдера** (наприклад, `codex-cli`, `my-cli`).
|
||||
Ідентифікатор провайдера стає лівою частиною вашого посилання на модель:
|
||||
|
||||
```
|
||||
<provider>/<model>
|
||||
@ -150,43 +150,43 @@ agents.defaults.cliBackends
|
||||
1. **Вибирає бекенд** на основі префікса провайдера (`codex-cli/...`).
|
||||
2. **Створює системний промпт** з використанням того самого промпта OpenClaw і контексту workspace.
|
||||
3. **Виконує CLI** з ідентифікатором сесії (якщо підтримується), щоб історія залишалася узгодженою.
|
||||
Вбудований бекенд `claude-cli` підтримує живий процес Claude stdio для кожної
|
||||
сесії OpenClaw і надсилає наступні звернення через stream-json stdin.
|
||||
4. **Аналізує вивід** (JSON або звичайний текст) і повертає фінальний текст.
|
||||
5. **Зберігає ідентифікатори сесій** для кожного бекенда, щоб наступні звернення повторно використовували ту саму CLI-сесію.
|
||||
Вбудований бекенд `claude-cli` підтримує процес Claude stdio активним для кожної
|
||||
сесії OpenClaw і надсилає подальші ходи через stream-json stdin.
|
||||
4. **Розбирає вивід** (JSON або звичайний текст) і повертає фінальний текст.
|
||||
5. **Зберігає ідентифікатори сесій** для кожного бекенда, щоб подальші ходи повторно використовували ту саму CLI-сесію.
|
||||
|
||||
<Note>
|
||||
Вбудований Anthropic-бекенд `claude-cli` знову підтримується. Працівники Anthropic
|
||||
Вбудований бекенд Anthropic `claude-cli` знову підтримується. Співробітники Anthropic
|
||||
повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw вважає
|
||||
використання `claude -p` санкціонованим для цієї інтеграції, доки Anthropic не опублікує
|
||||
використання `claude -p` санкціонованим для цієї інтеграції, якщо Anthropic не опублікує
|
||||
нову політику.
|
||||
</Note>
|
||||
|
||||
Вбудований OpenAI-бекенд `codex-cli` передає системний промпт OpenClaw через
|
||||
Вбудований бекенд OpenAI `codex-cli` передає системний промпт OpenClaw через
|
||||
перевизначення конфігурації Codex `model_instructions_file` (`-c
|
||||
model_instructions_file="..."`). Codex не надає прапорця у стилі Claude
|
||||
model_instructions_file="..."`). Codex не надає прапор у стилі Claude
|
||||
`--append-system-prompt`, тому OpenClaw записує зібраний промпт у
|
||||
тимчасовий файл для кожної нової сесії Codex CLI.
|
||||
|
||||
Вбудований Anthropic-бекенд `claude-cli` отримує знімок skills OpenClaw
|
||||
двома способами: компактний каталог skills OpenClaw у доданому системному промпті та
|
||||
тимчасовий plugin Claude Code, переданий через `--plugin-dir`. Plugin містить
|
||||
лише придатні skills для цього агента/сесії, тому нативний розпізнавач skills Claude Code
|
||||
бачить той самий відфільтрований набір, який OpenClaw інакше оголошував би в
|
||||
промпті. Перевизначення env/API-ключів skill і надалі застосовуються OpenClaw до
|
||||
Вбудований бекенд Anthropic `claude-cli` отримує знімок Skills OpenClaw
|
||||
двома способами: компактний каталог Skills OpenClaw у доданому системному промпті та
|
||||
тимчасовий Claude Code Plugin, переданий із `--plugin-dir`. Plugin містить
|
||||
лише придатні Skills для цього агента/сесії, тому нативний резолвер Skills Claude Code
|
||||
бачить той самий відфільтрований набір, який OpenClaw інакше оголосив би в
|
||||
промпті. Перевизначення env/API-ключів Skills OpenClaw все одно застосовує до
|
||||
середовища дочірнього процесу для запуску.
|
||||
|
||||
Claude CLI також має власний неінтерактивний режим дозволів. OpenClaw зіставляє його
|
||||
з наявною політикою exec замість додавання специфічної для Claude конфігурації: коли
|
||||
ефективна запитана політика exec є YOLO (`tools.exec.security: "full"` і
|
||||
Claude CLI також має власний неінтерактивний режим дозволів. OpenClaw відображає його
|
||||
на наявну політику виконання замість додавання специфічної для Claude конфігурації: коли
|
||||
ефективна запитана політика виконання є 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`.
|
||||
цього агента. Щоб примусово задати інший режим Claude, встановіть явні сирі аргументи бекенда,
|
||||
наприклад `--permission-mode default` або `--permission-mode acceptEdits` у
|
||||
`agents.defaults.cliBackends.claude-cli.args` і відповідних `resumeArgs`.
|
||||
|
||||
Перш ніж OpenClaw зможе використовувати вбудований бекенд `claude-cli`, сам Claude Code
|
||||
має вже бути залогінений на тому самому хості:
|
||||
уже має бути авторизований на тому самому хості:
|
||||
|
||||
```bash
|
||||
claude auth login
|
||||
@ -200,55 +200,60 @@ openclaw models auth login --provider anthropic --method cli --set-default
|
||||
## Сесії
|
||||
|
||||
- Якщо CLI підтримує сесії, задайте `sessionArg` (наприклад, `--session-id`) або
|
||||
`sessionArgs` (заповнювач `{sessionId}`), коли ID потрібно вставити
|
||||
в кілька прапорців.
|
||||
- Якщо CLI використовує **підкоманду відновлення** з іншими прапорцями, задайте
|
||||
`resumeArgs` (замінює `args` під час відновлення) і, за потреби, `resumeOutput`
|
||||
(для відновлень не в JSON).
|
||||
`sessionArgs` (placeholder `{sessionId}`), коли ідентифікатор потрібно вставити
|
||||
в кілька прапорів.
|
||||
- Якщо CLI використовує **підкоманду відновлення** з іншими прапорами, задайте
|
||||
`resumeArgs` (замінює `args` під час відновлення) і за потреби `resumeOutput`
|
||||
(для відновлень не у форматі JSON).
|
||||
- `sessionMode`:
|
||||
- `always`: завжди надсилати ідентифікатор сесії (новий UUID, якщо нічого не збережено).
|
||||
- `existing`: надсилати ідентифікатор сесії лише якщо його вже було збережено раніше.
|
||||
- `always`: завжди надсилати ідентифікатор сесії (новий UUID, якщо збереженого немає).
|
||||
- `existing`: надсилати ідентифікатор сесії лише якщо його було збережено раніше.
|
||||
- `none`: ніколи не надсилати ідентифікатор сесії.
|
||||
- Для `claude-cli` стандартно встановлено `liveSession: "claude-stdio"`, `output: "jsonl"`,
|
||||
і `input: "stdin"`, щоб наступні звернення повторно використовували живий процес Claude, доки
|
||||
він активний. Теплий stdio тепер є типовим, зокрема для користувацьких конфігурацій,
|
||||
які не задають transport-поля. Якщо Gateway перезапускається або idle-процес
|
||||
- `claude-cli` за замовчуванням використовує `liveSession: "claude-stdio"`, `output: "jsonl"`,
|
||||
і `input: "stdin"`, щоб подальші ходи повторно використовували активний live-процес Claude.
|
||||
Теплий stdio тепер є стандартом, зокрема для користувацьких конфігурацій,
|
||||
які не вказують транспортні поля. Якщо Gateway перезапускається або idle-процес
|
||||
завершується, OpenClaw відновлюється зі збереженого ідентифікатора сесії Claude. Збережені
|
||||
ідентифікатори сесій перевіряються на наявність уже читабельного transcript проєкту перед
|
||||
ідентифікатори сесій перевіряються щодо наявного читабельного project transcript перед
|
||||
відновленням, тому фантомні прив’язки очищаються з `reason=transcript-missing`
|
||||
замість тихого запуску нової сесії Claude CLI з `--resume`.
|
||||
- Збережені CLI-сесії є безперервністю, що належить провайдеру. Неявне щоденне скидання сесії
|
||||
їх не обриває; `/reset` і явні політики `session.reset` усе ще
|
||||
це роблять.
|
||||
замість мовчазного старту нової сесії Claude CLI під `--resume`.
|
||||
- Live-сесії 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` усе ще
|
||||
діють.
|
||||
|
||||
Примітки щодо серіалізації:
|
||||
|
||||
- `serialize: true` зберігає порядок запусків у тій самій смузі.
|
||||
- Більшість CLI серіалізуються в одній смузі провайдера.
|
||||
- OpenClaw скидає повторне використання збереженої CLI-сесії, коли вибрана автентифікаційна ідентичність змінюється,
|
||||
зокрема змінюється id auth profile, статичний API-ключ, статичний token або OAuth
|
||||
account identity, якщо CLI її надає. Ротація OAuth access і refresh token
|
||||
не обриває збережену CLI-сесію. Якщо CLI не надає
|
||||
стабільний OAuth account id, OpenClaw дозволяє цьому CLI самостійно забезпечувати дозволи відновлення.
|
||||
- `serialize: true` зберігає впорядкованість запусків у тому самому lane.
|
||||
- Більшість CLI серіалізуються в одному lane провайдера.
|
||||
- OpenClaw відкидає повторне використання збереженої CLI-сесії, коли змінюється вибрана автентифікаційна ідентичність,
|
||||
зокрема змінений ідентифікатор auth profile, статичний API-ключ, статичний токен або ідентичність OAuth-акаунта,
|
||||
якщо CLI її надає. Ротація OAuth access і refresh token не перериває збережену CLI-сесію. Якщо CLI не надає
|
||||
стабільний ідентифікатор OAuth-акаунта, OpenClaw дозволяє цьому CLI самостійно застосовувати дозволи відновлення.
|
||||
|
||||
## Початковий контекст резервного варіанта із сесій claude-cli
|
||||
## Резервний prelude із сесій claude-cli
|
||||
|
||||
Коли спроба `claude-cli` перемикається на не-CLI кандидата в
|
||||
[`agents.defaults.model.fallbacks`](/uk/concepts/model-failover), OpenClaw засіває
|
||||
наступну спробу початковим контекстом, зібраним із локального
|
||||
JSONL transcript Claude Code у `~/.claude/projects/`. Без цього засівання резервний
|
||||
провайдер стартував би з нуля, бо власний transcript сесії OpenClaw порожній
|
||||
Коли спроба `claude-cli` переходить на резервного кандидата, що не є CLI, у
|
||||
[`agents.defaults.model.fallbacks`](/uk/concepts/model-failover), OpenClaw ініціалізує
|
||||
наступну спробу контекстним prelude, отриманим із локального
|
||||
JSONL-транскрипту Claude Code в `~/.claude/projects/`. Без цього seed резервний
|
||||
провайдер стартував би з порожнього контексту, оскільки власний транскрипт сесії OpenClaw порожній
|
||||
для запусків `claude-cli`.
|
||||
|
||||
- Початковий контекст надає перевагу найновішому підсумку `/compact` або маркеру `compact_boundary`,
|
||||
а потім додає найостанніші звернення після межі в межах бюджету символів.
|
||||
Звернення до межі відкидаються, бо підсумок уже їх представляє.
|
||||
- Блоки інструментів згортаються до компактних підказок `(tool call: name)` і
|
||||
`(tool result: …)`, щоб чесно вкладатися в бюджет промпта. Підсумок
|
||||
позначається `(truncated)`, якщо він переповнюється.
|
||||
- Резервні переходи з `claude-cli` на `claude-cli` у того самого провайдера покладаються на власний
|
||||
`--resume` Claude і пропускають початковий контекст.
|
||||
- Засівання повторно використовує наявну перевірку шляху до session-file Claude, тому
|
||||
- Prelude віддає перевагу найновішому резюме `/compact` або маркеру `compact_boundary`,
|
||||
а потім додає найостанніші ходи після boundary у межах бюджету символів.
|
||||
Ходи до boundary відкидаються, бо резюме вже їх представляє.
|
||||
- Tool blocks згортаються до компактних підказок `(tool call: name)` і
|
||||
`(tool result: …)`, щоб чесно утримувати бюджет промпта. Резюме
|
||||
позначається як `(truncated)`, якщо воно переповнюється.
|
||||
- Резервні переходи з `claude-cli` на `claude-cli` у межах того самого провайдера покладаються на власний
|
||||
`--resume` Claude і пропускають prelude.
|
||||
- Seed повторно використовує наявну валідацію шляху до session-file Claude, тому
|
||||
довільні шляхи не можуть бути прочитані.
|
||||
|
||||
## Зображення (наскрізне передавання)
|
||||
@ -260,29 +265,29 @@ imageArg: "--image",
|
||||
imageMode: "repeat"
|
||||
```
|
||||
|
||||
OpenClaw записуватиме base64-зображення в тимчасові файли. Якщо `imageArg` задано, ці
|
||||
OpenClaw записуватиме base64-зображення у тимчасові файли. Якщо `imageArg` задано, ці
|
||||
шляхи передаються як аргументи CLI. Якщо `imageArg` відсутній, OpenClaw додає
|
||||
шляхи файлів до промпта (ін’єкція шляхів), чого достатньо для CLI, які автоматично
|
||||
шляхи до файлів у промпт (ін’єкція шляху), чого достатньо для 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 як фінальну відповідь.
|
||||
|
||||
Режими входу:
|
||||
Режими введення:
|
||||
|
||||
- `input: "arg"` (стандартно) передає промпт як останній аргумент CLI.
|
||||
- `input: "arg"` (за замовчуванням) передає промпт як останній аргумент CLI.
|
||||
- `input: "stdin"` надсилає промпт через stdin.
|
||||
- Якщо промпт дуже довгий і задано `maxPromptArgChars`, використовується stdin.
|
||||
- Якщо промпт дуже довгий і `maxPromptArgChars` задано, використовується stdin.
|
||||
|
||||
## Типові значення (належать plugin)
|
||||
## Стандартні значення (належать Plugin)
|
||||
|
||||
Вбудований OpenAI plugin також реєструє типові значення для `codex-cli`:
|
||||
Вбудований OpenAI Plugin також реєструє стандартні значення для `codex-cli`:
|
||||
|
||||
- `command: "codex"`
|
||||
- `args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]`
|
||||
@ -293,7 +298,7 @@ OpenClaw записуватиме base64-зображення в тимчасо
|
||||
- `imageArg: "--image"`
|
||||
- `sessionMode: "existing"`
|
||||
|
||||
Вбудований Google plugin також реєструє типові значення для `google-gemini-cli`:
|
||||
Вбудований Google Plugin також реєструє стандартні значення для `google-gemini-cli`:
|
||||
|
||||
- `command: "gemini"`
|
||||
- `args: ["--output-format", "json", "--prompt", "{prompt}"]`
|
||||
@ -311,25 +316,25 @@ OpenClaw записуватиме base64-зображення в тимчасо
|
||||
Примітки щодо JSON Gemini CLI:
|
||||
|
||||
- Текст відповіді читається з JSON-поля `response`.
|
||||
- Використання відкочується до `stats`, коли `usage` відсутнє або порожнє.
|
||||
- Usage використовує fallback до `stats`, коли `usage` відсутній або порожній.
|
||||
- `stats.cached` нормалізується в OpenClaw `cacheRead`.
|
||||
- Якщо `stats.input` відсутнє, OpenClaw виводить вхідні токени з
|
||||
- Якщо `stats.input` відсутній, OpenClaw виводить input tokens із
|
||||
`stats.input_tokens - stats.cached`.
|
||||
|
||||
Перевизначайте лише за потреби (поширений випадок: абсолютний шлях `command`).
|
||||
|
||||
## Типові значення, що належать Plugin
|
||||
## Стандартні значення, що належать Plugin
|
||||
|
||||
Типові значення CLI-бекендів тепер є частиною поверхні plugin:
|
||||
Стандартні значення CLI-бекендів тепер є частиною поверхні Plugin:
|
||||
|
||||
- Plugins реєструють їх через `api.registerCliBackend(...)`.
|
||||
- `id` бекенда стає префіксом провайдера в model refs.
|
||||
- Користувацька конфігурація в `agents.defaults.cliBackends.<id>` усе ще перевизначає типове значення plugin.
|
||||
- Очищення конфігурації, специфічне для бекенда, залишається у власності plugin через необов’язковий
|
||||
хук `normalizeConfig`.
|
||||
- Plugins реєструють їх за допомогою `api.registerCliBackend(...)`.
|
||||
- Backend `id` стає префіксом провайдера в посиланнях на моделі.
|
||||
- Конфігурація користувача в `agents.defaults.cliBackends.<id>` досі перевизначає стандартне значення Plugin.
|
||||
- Очищення конфігурації, специфічної для backend, залишається у власності Plugin через необов’язковий hook
|
||||
`normalizeConfig`.
|
||||
|
||||
Plugin-и, яким потрібні невеликі сумісні прокладки для промптів/повідомлень, можуть оголошувати
|
||||
двонапрямні текстові перетворення без заміни провайдера або бекенда CLI:
|
||||
Plugins, яким потрібні невеликі шими сумісності prompt/message, можуть оголошувати
|
||||
двонапрямні текстові перетворення без заміни провайдера або CLI backend:
|
||||
|
||||
```typescript
|
||||
api.registerTextTransforms({
|
||||
@ -346,65 +351,65 @@ api.registerTextTransforms({
|
||||
});
|
||||
```
|
||||
|
||||
`input` переписує системний промпт і користувацький промпт, передані до CLI. `output`
|
||||
переписує потокові дельти асистента та розібраний фінальний текст перед тим, як OpenClaw обробить
|
||||
`input` переписує системний prompt і prompt користувача, передані до CLI. `output`
|
||||
переписує потокові дельти помічника та розібраний фінальний текст до того, як OpenClaw обробить
|
||||
власні керівні маркери й доставку в канал.
|
||||
|
||||
Для CLI, які виводять JSONL, сумісний із Claude Code stream-json, встановіть
|
||||
`jsonlDialect: "claude-stream-json"` у конфігурації цього бекенда.
|
||||
Для CLI, що виводять JSONL, сумісний із Claude Code stream-json, задайте
|
||||
`jsonlDialect: "claude-stream-json"` у конфігурації цього backend.
|
||||
|
||||
## Оверлеї Bundle MCP
|
||||
## Об’єднання MCP-накладень
|
||||
|
||||
Бекенди CLI **не** отримують виклики інструментів OpenClaw напряму, але бекенд може
|
||||
увімкнути згенерований оверлей конфігурації MCP за допомогою `bundleMcp: true`.
|
||||
CLI backends **не** отримують виклики інструментів OpenClaw напряму, але backend може
|
||||
увімкнути згенероване накладення конфігурації MCP за допомогою `bundleMcp: true`.
|
||||
|
||||
Поточна вбудована поведінка:
|
||||
|
||||
- `claude-cli`: згенерований строгий файл конфігурації MCP
|
||||
- `claude-cli`: згенерований файл суворої конфігурації MCP
|
||||
- `codex-cli`: вбудовані перевизначення конфігурації для `mcp_servers`; згенерований
|
||||
сервер зворотного інтерфейсу OpenClaw позначено режимом схвалення інструментів Codex для кожного сервера,
|
||||
щоб виклики MCP не могли зупинятися на локальних запитах схвалення
|
||||
OpenClaw loopback server позначено режимом схвалення інструментів на рівні сервера Codex,
|
||||
щоб MCP-виклики не могли зупинитися на локальних запитах схвалення
|
||||
- `google-gemini-cli`: згенерований файл системних налаштувань Gemini
|
||||
|
||||
Коли bundle MCP увімкнено, OpenClaw:
|
||||
Коли об’єднання MCP увімкнено, OpenClaw:
|
||||
|
||||
- запускає HTTP MCP-сервер зворотного інтерфейсу, який надає інструменти Gateway процесу CLI
|
||||
- автентифікує міст за допомогою токена для кожного сеансу (`OPENCLAW_MCP_TOKEN`)
|
||||
- запускає loopback HTTP MCP server, який відкриває gateway tools для процесу CLI
|
||||
- автентифікує міст за допомогою токена на сеанс (`OPENCLAW_MCP_TOKEN`)
|
||||
- обмежує доступ до інструментів поточним сеансом, обліковим записом і контекстом каналу
|
||||
- завантажує увімкнені сервери bundle-MCP для поточного робочого простору
|
||||
- об’єднує їх із будь-якою наявною формою конфігурації/налаштувань MCP бекенда
|
||||
- переписує конфігурацію запуску, використовуючи режим інтеграції, що належить бекенду, з власницького розширення
|
||||
- завантажує увімкнені bundle-MCP servers для поточного workspace
|
||||
- об’єднує їх із будь-якою наявною формою backend MCP config/settings
|
||||
- переписує конфігурацію запуску, використовуючи режим інтеграції, що належить backend, із власницького Plugin
|
||||
|
||||
Якщо сервери MCP не увімкнено, OpenClaw все одно впроваджує строгу конфігурацію, коли
|
||||
бекенд вмикає bundle MCP, щоб фонові запуски залишалися ізольованими.
|
||||
Якщо MCP servers не ввімкнено, OpenClaw все одно впроваджує сувору конфігурацію, коли
|
||||
backend вмикає bundle MCP, щоб фонові запуски залишалися ізольованими.
|
||||
|
||||
Сеансові вбудовані середовища виконання MCP кешуються для повторного використання в межах сеансу, а потім
|
||||
очищаються після `mcp.sessionIdleTtlMs` мілісекунд простою (типово 10
|
||||
хвилин; встановіть `0`, щоб вимкнути). Одноразові вбудовані запуски, як-от проби автентифікації,
|
||||
генерація slug і запити пригадування active-memory, очищуються наприкінці запуску, щоб дочірні процеси stdio
|
||||
та потоки Streamable HTTP/SSE не жили довше за запуск.
|
||||
Сеансові вбудовані MCP runtimes кешуються для повторного використання в межах сеансу, а потім
|
||||
очищаються після `mcp.sessionIdleTtlMs` мілісекунд простою (за замовчуванням 10
|
||||
хвилин; задайте `0`, щоб вимкнути). Одноразові вбудовані запуски, як-от auth probes,
|
||||
slug generation і active-memory recall request cleanup, завершуються наприкінці запуску, щоб stdio
|
||||
children і Streamable HTTP/SSE streams не жили довше за сам запуск.
|
||||
|
||||
## Обмеження
|
||||
|
||||
- **Немає прямих викликів інструментів OpenClaw.** OpenClaw не впроваджує виклики інструментів у
|
||||
протокол бекенда CLI. Бекенди бачать інструменти Gateway лише тоді, коли вони вмикають
|
||||
протокол CLI backend. Backends бачать gateway tools лише тоді, коли вмикають
|
||||
`bundleMcp: true`.
|
||||
- **Потокове передавання залежить від бекенда.** Деякі бекенди передають JSONL потоково; інші буферизують
|
||||
- **Streaming залежить від backend.** Деякі backends транслюють 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` не дорівнює
|
||||
`none` (Codex CLI наразі не може відновлюватися з JSON-виводом).
|
||||
- **Зображення ігноруються**: встановіть `imageArg` (і перевірте, що CLI підтримує шляхи до файлів).
|
||||
- **Немає безперервності сеансу**: переконайтеся, що `sessionArg` задано, а `sessionMode` не є
|
||||
`none` (Codex CLI наразі не може поновлюватися з JSON-виводом).
|
||||
- **Зображення ігноруються**: задайте `imageArg` (і перевірте, що CLI підтримує шляхи до файлів).
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Runbook Gateway](/uk/gateway)
|
||||
- [Gateway runbook](/uk/gateway)
|
||||
- [Локальні моделі](/uk/gateway/local-models)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user