Якщо зовнішній сервіс надає звичайний HTTP API моделей, натомість створіть
плагін провайдера. Якщо зовнішнє
середовище виконання керує повними сеансами агента, подіями інструментів, Compaction або станом
фонових завдань, використовуйте обв’язку агента.
За що відповідає плагін
Плагін серверної частини CLI має три контракти:
Маніфест — це метадані виявлення: він не виконує CLI та не реєструє
поведінку середовища виконання. Поведінка середовища виконання починається, коли точка входу плагіна викликає
api.registerCliBackend(...).
Мінімальний плагін серверної частини
1
Створіть метадані пакета
package.json
./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.
Перевірка
Для вбудованих плагінів додайте цільовий тест для побудовника та реєстрації налаштування, а потім запустіть цільовий набір тестів плагіна:Контрольний список
package.json містить openclaw.extensions і зібрані точки входу середовища виконання для опублікованих пакетівopenclaw.plugin.json оголошує cliBackends і навмисне налаштований activation.onStartupsetup.cliBackends наявний, коли налаштування або виявлення моделей має бачити бекенд до його запускуapi.registerCliBackend(...) використовує той самий ідентифікатор бекенду, що й маніфестКористувацькі перевизначення в
agents.defaults.cliBackends.<id> і надалі мають пріоритетНалаштування сеансу, системного запиту, зображень і аналізатора виводу відповідають фактичному контракту CLI
Цільові тести та принаймні одна перевірка працездатності реального CLI підтверджують шлях бекенду
Пов’язані матеріали
- Бекенди CLI — конфігурація користувача та поведінка середовища виконання
- Створення плагінів — основи пакетів і маніфестів
- Огляд SDK плагінів — довідник API реєстрації
- Маніфест плагіна —
cliBackendsі дескриптори налаштування - Середовище виконання агента — повноцінні зовнішні середовища виконання агентів