Skip to main content
Плагіни серверної частини CLI дають змогу OpenClaw викликати локальний CLI ШІ як серверну частину текстового інференсу. Серверна частина відображається як префікс провайдера в посиланнях на моделі:
Використовуйте серверну частину CLI, коли інтеграція з зовнішньою системою вже доступна як локальна команда, коли CLI керує локальним станом входу або як резервний варіант, коли API провайдерів недоступні.
Якщо зовнішній сервіс надає звичайний HTTP API моделей, натомість створіть плагін провайдера. Якщо зовнішнє середовище виконання керує повними сеансами агента, подіями інструментів, Compaction або станом фонових завдань, використовуйте обв’язку агента.

За що відповідає плагін

Плагін серверної частини CLI має три контракти: Маніфест — це метадані виявлення: він не виконує CLI та не реєструє поведінку середовища виконання. Поведінка середовища виконання починається, коли точка входу плагіна викликає api.registerCliBackend(...).

Мінімальний плагін серверної частини

1

Створіть метадані пакета

package.json
Опубліковані пакети мають містити зібрані JavaScript-файли середовища виконання. Якщо ваша вихідна точка входу — ./src/index.ts, додайте openclaw.runtimeExtensions, що вказує на відповідний зібраний JavaScript-файл. Див. Точки входу.
2

Оголосіть належність серверної частини

openclaw.plugin.json
cliBackends — це список належності середовища виконання; він дає змогу OpenClaw автоматично завантажувати плагін, коли конфігурація або вибір моделі містить acme-cli/....setup.cliBackends — це поверхня налаштування, що насамперед використовує дескриптори. Додайте її, коли виявлення моделей, початкове налаштування або стан мають розпізнавати серверну частину без завантаження середовища виконання плагіна. Використовуйте requiresRuntime: false, лише коли цих статичних дескрипторів достатньо для налаштування.
3

Зареєструйте серверну частину

index.ts
Ідентифікатор серверної частини має відповідати запису cliBackends у маніфесті. Зареєстрований config — лише значення за замовчуванням; користувацька конфігурація в agents.defaults.cliBackends.acme-cli об’єднується з ним під час виконання.

Структура конфігурації

CliBackendConfig описує, як OpenClaw має запускати й аналізувати CLI: Віддавайте перевагу найменшій статичній конфігурації, що відповідає CLI. Додавайте зворотні виклики плагіна лише для поведінки, яка справді належить серверній частині.

Розширені перехоплювачі серверної частини

CliBackendPlugin також може визначати: Залишайте ці перехоплювачі у власності провайдера. Не додавайте до ядра гілки, специфічні для CLI, коли перехоплювач серверної частини може виразити таку поведінку. runtimeArtifact належить плагіну й не може бути перевизначений користувачем. Він використовується лише коли активний хід інференсу створює або повторно перевіряє підтверджене право на налаштування; звичайні запуски CLI його не потребують. Серверна частина без цього оголошення не може створювати підтверджене право на налаштування CLI. Оголошення bundled-package-tree визначає точного власника package.json і вимагає, щоб точкою входу пакета була команда. OpenClaw хешує обмежене повне дерево встановленого пакета, включно з вкладеними залежностями, і припиняє роботу в разі перенаправлювальних символічних посилань, засобів запуску поза оголошеним пакетом, оголошень обов’язкових зовнішніх залежностей, завеликих дерев і невідомих скриптів. Оголошуйте це лише тоді, коли це дерево містить повну реалізацію інференсу; необов’язкові інтеграції інструментів не роблять зовнішній граф реалізації безпечним. Якщо та сама серверна частина також постачає самодостатній нативний виконуваний файл, перелічіть його канонічні базові назви в nativeExecutableNames. Інші нативні команди залишаються непідтвердженими, навіть коли користувач перевизначає команду серверної частини. ctx.executionMode має значення "agent" для звичайних ходів і "side-question" для ефемерних викликів /btw. Використовуйте його, коли CLI потребує інших одноразових прапорців, наприклад для вимкнення вбудованих інструментів, збереження сеансу або поведінки відновлення для BTW. Якщо бекенд зазвичай має nativeToolMode: "always-on", але його argv для побічного запитання надійно вимикає ці інструменти, також установіть sideQuestionToolMode: "disabled"; інакше OpenClaw безпечно завершує роботу з відмовою, коли BTW потребує запуску CLI без інструментів. Установлюйте nativeToolMode: "selectable" лише тоді, коли resolveExecutionArgs може вимкнути кожен вбудований інструмент бекенду для окремого запуску. Для таких обмежених запусків ctx.toolAvailability.native є порожнім кортежем, а ctx.toolAvailability.mcp — точним ізольованим на рівні хоста списком дозволених MCP. Хук має замінити конфліктні прапорці інструментів і повернути argv, який забезпечує обидва значення; OpenClaw викликає його один раз з остаточним argv нового запуску або відновлення та безпечно завершує роботу з відмовою, коли бекенд не може забезпечити це обмеження. Імена MCP у цьому контексті можна безпечно автоматично схвалювати лише тому, що хост уже обмежив згенеровану конфігурацію MCP цими серверами та інструментами.

ownsNativeCompaction: відмова від Compaction у OpenClaw

Якщо ваш бекенд запускає агента, який ущільнює власну історію взаємодії, установіть ownsNativeCompaction: true, щоб запобіжний засіб підсумовування OpenClaw ніколи не запускався для його сеансів — життєвий цикл Compaction у CLI повертає відсутність дії, і хід продовжується. claude-cli оголошує це, оскільки Claude Code виконує Compaction внутрішньо без кінцевої точки середовища виконання. Натомість сеанси з нативним середовищем виконання, як-от Codex, і далі спрямовуються до кінцевої точки Compaction свого середовища виконання. Оголошуйте це лише тоді, коли виконуються всі наведені нижче умови, інакше відкладений сеанс із перевищеним бюджетом може залишитися понад бюджет або застаріти (OpenClaw більше не відновлюватиме його):
  • бекенд надійно ущільнює або обмежує власну історію взаємодії в міру наближення до межі свого вікна;
  • він зберігає сеанс, який можна відновити, щоб ущільнений стан зберігався між ходами (наприклад, --resume / --session-id);
  • це не сеанс Compaction із нативним середовищем виконання — сеанси з відповідним agentHarnessId натомість спрямовуються до кінцевої точки середовища виконання.

Міст інструментів MCP

Бекенди CLI типово не отримують інструменти OpenClaw. Якщо CLI може використовувати конфігурацію MCP, явно ввімкніть цю можливість:
Підтримувані режими мосту: Вмикайте міст лише тоді, коли CLI справді може його використовувати. Якщо CLI має власний вбудований рівень інструментів, який неможливо вимкнути, установіть nativeToolMode: "always-on", щоб OpenClaw міг безпечно завершити роботу з відмовою, коли викликач вимагає відсутності вбудованих інструментів. Якщо він може вимкнути всі вбудовані інструменти для кожного окремого запуску, використовуйте "selectable" із контрактом resolveExecutionArgs, наведеним вище.

Конфігурація користувача

Користувачі можуть перевизначити будь-яке типове значення бекенду:
Документуйте мінімальне перевизначення, яке, ймовірно, знадобиться користувачам — зазвичай лише command, коли виконуваний файл розташований поза PATH.

Перевірка

Для вбудованих плагінів додайте цільовий тест для побудовника та реєстрації налаштування, а потім запустіть цільовий набір тестів плагіна:
Для локальних або встановлених плагінів перевірте виявлення та один реальний запуск моделі:
Якщо бекенд підтримує зображення або MCP, додайте перевірку працездатності в реальному середовищі, яка підтверджує ці шляхи за допомогою справжнього CLI. Не покладайтеся на статичну перевірку поведінки запитів, зображень, MCP або відновлення сеансу.

Контрольний список

package.json містить openclaw.extensions і зібрані точки входу середовища виконання для опублікованих пакетів
openclaw.plugin.json оголошує cliBackends і навмисне налаштований activation.onStartup
setup.cliBackends наявний, коли налаштування або виявлення моделей має бачити бекенд до його запуску
api.registerCliBackend(...) використовує той самий ідентифікатор бекенду, що й маніфест
Користувацькі перевизначення в agents.defaults.cliBackends.<id> і надалі мають пріоритет
Налаштування сеансу, системного запиту, зображень і аналізатора виводу відповідають фактичному контракту CLI
Цільові тести та принаймні одна перевірка працездатності реального CLI підтверджують шлях бекенду

Пов’язані матеріали