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 ветви в ядро, если поведение можно выразить через хук серверной части. prepareExecution(ctx) получает ctx.contextTokenBudget — эффективный лимит токенов, выбранный для запуска. Серверные части, самостоятельно выполняющие нативную Compaction, могут преобразовать этот бюджет в свой контракт запуска CLI. runtimeArtifact принадлежит плагину и не может быть переопределён пользователем. Он проверяется только тогда, когда рабочий цикл инференса создаёт или повторно проверяет подтверждённые полномочия настройки; обычные запуски CLI не требуют его. Бэкенд без этого объявления не может создавать подтверждённые полномочия настройки CLI. Объявление bundled-package-tree указывает точного владельца package.json и требует, чтобы точкой входа пакета была команда. OpenClaw хеширует ограниченное полное дерево установленного пакета, включая вложенные зависимости, и блокирует выполнение при перенаправляющих символических ссылках, запускателях за пределами объявленного пакета, объявлениях обязательных внешних зависимостей, слишком больших деревьях и неизвестных скриптах. Объявляйте это только тогда, когда дерево содержит полную реализацию инференса; необязательные интеграции инструментов не делают внешний граф реализации безопасным. Если тот же бэкенд также поставляет самодостаточный нативный исполняемый файл, перечислите его канонические базовые имена в nativeExecutableNames. Другие нативные команды остаются неподтверждёнными, даже когда пользователь переопределяет команду бэкенда. ctx.executionMode имеет значение "agent" для обычных циклов и "side-question" для эфемерных вызовов /btw. Используйте его, когда CLI требуются другие одноразовые флаги, например для отключения нативных инструментов, сохранения сеанса или возобновления работы для BTW. Если у бэкенда обычно есть nativeToolMode: "always-on", но его аргументы командной строки для побочного вопроса надёжно отключают эти инструменты, также задайте sideQuestionToolMode: "disabled"; иначе OpenClaw блокирует выполнение, когда для BTW требуется запуск CLI без инструментов. Задавайте nativeToolMode: "selectable" только тогда, когда resolveExecutionArgs может отключить все нативные инструменты бэкенда для отдельного запуска. Для таких ограниченных запусков ctx.toolAvailability.native является пустым кортежем, а ctx.toolAvailability.mcp — точным списком разрешённых MCP с изоляцией на стороне хоста. Хук должен заменять конфликтующие флаги инструментов и возвращать аргументы командной строки, обеспечивающие оба значения; OpenClaw вызывает его один раз с окончательными аргументами нового или возобновляемого запуска и блокирует выполнение, если бэкенд не может обеспечить соблюдение ограничения. Имена MCP в этом контексте можно безопасно подтверждать автоматически только потому, что хост уже ограничил создаваемую конфигурацию MCP этими серверами и инструментами.

ownsNativeCompaction: отказ от Compaction OpenClaw

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

Мост инструментов MCP

По умолчанию бэкенды CLI не получают инструменты OpenClaw. Если CLI может использовать конфигурацию MCP, включите эту возможность явно:
Поддерживаемые режимы моста: Включайте мост только тогда, когда CLI действительно может его использовать. Если у CLI есть собственный встроенный слой инструментов, который нельзя отключить, задайте nativeToolMode: "always-on", чтобы OpenClaw мог блокировать выполнение, когда вызывающей стороне требуется отсутствие нативных инструментов. Если CLI может отключить все нативные инструменты для отдельного запуска, используйте "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 подтверждают путь бэкенда

Связанные материалы