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
./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
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
agentHarnessIdsą 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:
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: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:Lista kontrolna
package.json zawiera openclaw.extensions oraz zbudowane wpisy środowiska wykonawczego dla opublikowanych pakietówopenclaw.plugin.json deklaruje cliBackends i świadomie dobrane activation.onStartupsetup.cliBackends jest obecne, gdy konfiguracja lub wykrywanie modeli powinny widzieć nieuruchomiony backendapi.registerCliBackend(...) używa tego samego identyfikatora backendu co manifestNadpisania użytkownika w
agents.defaults.cliBackends.<id> nadal mają pierwszeństwoUstawienia 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
- Backendy CLI — konfiguracja użytkownika i działanie środowiska wykonawczego
- Tworzenie Pluginów — podstawy pakietów i manifestów
- Omówienie SDK Pluginów — dokumentacja API rejestracji
- Manifest Pluginu —
cliBackendsi deskryptory konfiguracji - Warstwa pośrednicząca agenta — kompletne zewnętrzne środowiska wykonawcze agentów