Skip to main content
Pluginy zaplecza CLI umożliwiają OpenClaw wywoływanie lokalnego CLI AI jako zaplecza wnioskowania tekstowego. Zaplecze występuje jako prefiks dostawcy w odwołaniach do modeli:
Użyj zaplecza CLI, gdy integracja nadrzędna jest już udostępniona jako lokalne polecenie, gdy CLI zarządza lokalnym stanem logowania lub jako rozwiązanie awaryjne, gdy dostawcy API są niedostępni.
Jeśli usługa nadrzędna udostępnia standardowe API modelu HTTP, zamiast tego utwórz plugin dostawcy. Jeśli środowisko wykonawcze nadrzędne zarządza pełnymi sesjami agenta, zdarzeniami narzędzi, Compaction lub stanem zadań w tle, użyj środowiska agenta.

Za co odpowiada plugin

Plugin zaplecza CLI ma trzy kontrakty: Manifest zawiera metadane wykrywania: nie uruchamia CLI ani nie rejestruje zachowania środowiska wykonawczego. Zachowanie wykonawcze zaczyna się, gdy punkt wejścia pluginu wywoła api.registerCliBackend(...).

Minimalny plugin zaplecza

1

Utwórz metadane pakietu

package.json
Opublikowane pakiety muszą zawierać skompilowane pliki JavaScript środowiska wykonawczego. Jeśli źródłowym punktem wejścia jest ./src/index.ts, dodaj openclaw.runtimeExtensions wskazujące odpowiadający mu skompilowany plik JavaScript. Zobacz Punkty wejścia.
2

Zadeklaruj właściciela zaplecza

openclaw.plugin.json
cliBackends to lista właścicieli środowiska wykonawczego; umożliwia OpenClaw automatyczne ładowanie pluginu, gdy konfiguracja lub wybór modelu odwołuje się do acme-cli/....setup.cliBackends to powierzchnia konfiguracji oparta przede wszystkim na deskryptorach. Dodaj ją, gdy wykrywanie modeli, wdrażanie lub stan mają rozpoznawać zaplecze bez ładowania środowiska wykonawczego pluginu. Używaj requiresRuntime: false tylko wtedy, gdy te statyczne deskryptory są wystarczające do konfiguracji.
3

Zarejestruj zaplecze

index.ts
Identyfikator zaplecza musi odpowiadać wpisowi cliBackends w manifeście. Zarejestrowana wartość config jest tylko domyślna; konfiguracja użytkownika w agents.defaults.cliBackends.acme-cli jest z nią scalana w czasie działania i ma pierwszeństwo.

Struktura konfiguracji

CliBackendConfig opisuje sposób, w jaki OpenClaw ma uruchamiać i analizować CLI: Preferuj najmniejszą statyczną konfigurację zgodną z CLI. Dodawaj wywołania zwrotne pluginu tylko dla zachowania, które rzeczywiście należy do zaplecza.

Zaawansowane haki zaplecza

CliBackendPlugin może również definiować: Haki te powinny pozostawać własnością dostawcy. Nie dodawaj do rdzenia gałęzi specyficznych dla CLI, gdy hak zaplecza może wyrazić dane zachowanie. runtimeArtifact jest własnością pluginu i użytkownik nie może go nadpisać. Jest sprawdzany tylko wtedy, gdy aktywna tura wnioskowania tworzy lub ponownie weryfikuje potwierdzone uprawnienie konfiguracji; zwykłe uruchomienia CLI go nie wymagają. Zaplecze bez tej deklaracji nie może tworzyć potwierdzonego uprawnienia konfiguracji CLI. Deklaracja bundled-package-tree wskazuje dokładnego właściciela pliku package.json i wymaga, aby punktem wejścia pakietu było polecenie. OpenClaw oblicza skrót ograniczonego, kompletnego drzewa zainstalowanego pakietu, w tym zagnieżdżonych zależności, i bezpiecznie odrzuca dowiązania symboliczne przekierowujące poza drzewo, programy uruchamiające spoza zadeklarowanego pakietu, deklaracje wymaganych zależności zewnętrznych, zbyt duże drzewa oraz nieznane skrypty. Deklaruj to tylko wtedy, gdy drzewo zawiera kompletną implementację wnioskowania; opcjonalne integracje narzędzi nie zapewniają bezpieczeństwa zewnętrznemu grafowi implementacji. Jeśli to samo zaplecze dostarcza również samodzielny natywny plik wykonywalny, wymień jego kanoniczne nazwy bazowe w nativeExecutableNames. Inne natywne polecenia pozostają niezweryfikowane, nawet gdy użytkownik nadpisze polecenie zaplecza. ctx.executionMode ma wartość "agent" dla zwykłych tur oraz "side-question" dla tymczasowych wywołań /btw. Użyj go, gdy CLI wymaga innych jednorazowych flag, na przykład wyłączenia narzędzi natywnych, trwałości sesji lub zachowania przy wznawianiu dla BTW. Jeśli backend ma zwykle ustawienie nativeToolMode: "always-on", ale jego argumenty argv dla pytań pobocznych niezawodnie wyłączają te narzędzia, ustaw również sideQuestionToolMode: "disabled"; w przeciwnym razie OpenClaw bezpiecznie odmawia działania, gdy BTW wymaga uruchomienia CLI bez narzędzi. Ustaw nativeToolMode: "selectable" tylko wtedy, gdy resolveExecutionArgs może wyłączyć każde narzędzie natywne backendu dla pojedynczego uruchomienia. W takich ograniczonych uruchomieniach ctx.toolAvailability.native jest pustą krotką, a ctx.toolAvailability.mcp jest dokładną, izolowaną przez host listą dozwolonych MCP. Hook musi zastąpić kolidujące flagi narzędzi i zwrócić argv wymuszające obie wartości; OpenClaw wywołuje go raz z ostatecznym argv nowej lub wznawianej sesji i bezpiecznie odmawia działania, gdy backend nie może wymusić ograniczenia. Nazwy MCP w tym kontekście można bezpiecznie zatwierdzać automatycznie wyłącznie dlatego, że host wcześniej ograniczył wygenerowaną konfigurację MCP do tych serwerów i narzędzi.

ownsNativeCompaction: rezygnacja z Compaction OpenClaw

Jeśli Twój backend uruchamia agenta, który wykonuje Compaction własnego transkryptu, ustaw ownsNativeCompaction: true, aby awaryjny mechanizm podsumowujący OpenClaw nigdy nie działał na jego sesjach — cykl życia Compaction w CLI nie wykonuje żadnej operacji, a tura jest kontynuowana. claude-cli deklaruje tę opcję, ponieważ Claude Code wykonuje Compaction wewnętrznie, bez punktu końcowego warstwy pośredniczącej. Sesje natywnej warstwy pośredniczącej, takie jak Codex, są zamiast tego nadal kierowane do punktu końcowego Compaction tej warstwy. Deklaruj tę opcję tylko wtedy, gdy spełnione są wszystkie poniższe warunki; w przeciwnym razie odroczona sesja przekraczająca budżet może nadal go przekraczać lub stać się nieaktualna (OpenClaw już jej nie uratuje):
  • backend niezawodnie wykonuje Compaction własnego transkryptu lub ogranicza jego rozmiar, gdy zbliża się on do granicy okna;
  • utrwala sesję możliwą do wznowienia, dzięki czemu stan po Compaction zachowuje się między turami (na przykład --resume / --session-id);
  • nie jest to sesja Compaction natywnej warstwy pośredniczącej — sesje pasujące do agentHarnessId są zamiast tego kierowane do punktu końcowego tej warstwy.

Most narzędzi MCP

Backendy CLI domyślnie nie otrzymują narzędzi OpenClaw. Jeśli CLI może używać konfiguracji MCP, włącz tę funkcję jawnie:
Obsługiwane tryby mostu: Włączaj most tylko wtedy, gdy CLI rzeczywiście może go używać. Jeśli CLI ma własną wbudowaną warstwę narzędzi, której nie można wyłączyć, ustaw nativeToolMode: "always-on", aby OpenClaw mógł bezpiecznie odmówić działania, gdy wywołujący wymaga braku natywnych narzędzi. Jeśli może wyłączyć wszystkie narzędzia natywne dla każdego uruchomienia, użyj "selectable" wraz z opisaną powyżej umową resolveExecutionArgs.

Konfiguracja użytkownika

Użytkownicy mogą nadpisać dowolną wartość domyślną backendu:
Udokumentuj minimalne nadpisanie, którego użytkownicy prawdopodobnie będą potrzebować — zwykle tylko command, gdy plik wykonywalny znajduje się poza PATH.

Weryfikacja

W przypadku dołączonych Pluginów dodaj ukierunkowany test konstruktora i rejestracji konfiguracji, a następnie uruchom docelowy zestaw testów Pluginu:
W przypadku lokalnych lub zainstalowanych Pluginów zweryfikuj wykrywanie i jedno rzeczywiste uruchomienie modelu:
Jeśli backend obsługuje obrazy lub MCP, dodaj test dymny na żywo, który potwierdza te ścieżki przy użyciu rzeczywistego CLI. Nie polegaj na statycznej inspekcji działania promptów, obrazów, MCP ani wznawiania sesji.

Lista kontrolna

package.json zawiera openclaw.extensions oraz zbudowane wpisy środowiska wykonawczego dla opublikowanych pakietów
openclaw.plugin.json deklaruje cliBackends i świadomie dobrane activation.onStartup
setup.cliBackends jest obecne, gdy konfiguracja lub wykrywanie modeli powinny widzieć nieuruchomiony backend
api.registerCliBackend(...) używa tego samego identyfikatora backendu co manifest
Nadpisania użytkownika w agents.defaults.cliBackends.<id> nadal mają pierwszeństwo
Ustawienia sesji, promptu systemowego, obrazów i parsera danych wyjściowych odpowiadają rzeczywistej umowie CLI
Testy ukierunkowane i co najmniej jeden test dymny CLI na żywo potwierdzają ścieżkę backendu

Powiązane materiały