Skip to main content
CLI-Backend-Plugins ermöglichen OpenClaw, eine lokale KI-CLI als Backend für Textinferenz aufzurufen. Das Backend erscheint als Provider-Präfix in Modellreferenzen:
Verwenden Sie ein CLI-Backend, wenn die vorgelagerte Integration bereits als lokaler Befehl verfügbar ist, wenn die CLI den lokalen Anmeldestatus verwaltet oder als Ausweichlösung, wenn API- Provider nicht verfügbar sind.
Wenn der vorgelagerte Dienst eine normale HTTP-Modell-API bereitstellt, schreiben Sie stattdessen ein Provider-Plugin. Wenn die vorgelagerte Laufzeit vollständige Agentensitzungen, Tool-Ereignisse, Compaction oder den Status von Hintergrundaufgaben verwaltet, verwenden Sie ein Agent-Harness.

Verantwortungsbereich des Plugins

Ein CLI-Backend-Plugin hat drei Verträge: Das Manifest enthält Metadaten für die Erkennung: Es führt die CLI nicht aus und registriert kein Laufzeitverhalten. Das Laufzeitverhalten beginnt, wenn der Plugin-Einstiegspunkt api.registerCliBackend(...) aufruft.

Minimales Backend-Plugin

1

Paketmetadaten erstellen

package.json
Veröffentlichte Pakete müssen erstellte JavaScript-Laufzeitdateien enthalten. Wenn Ihr Quell- Einstiegspunkt ./src/index.ts ist, fügen Sie openclaw.runtimeExtensions hinzu, das auf die erstellte JavaScript-Entsprechung verweist. Siehe Einstiegspunkte.
2

Backend-Zuständigkeit deklarieren

openclaw.plugin.json
cliBackends ist die Liste der Laufzeitzuständigkeiten; dadurch kann OpenClaw das Plugin automatisch laden, wenn die Modellauswahl oder agentRuntime.id acme-cli erwähnt.setup.cliBackends ist die deskriptorbasierte Einrichtungsoberfläche. Fügen Sie sie hinzu, wenn Modellerkennung, Onboarding oder Status das Backend erkennen sollen, ohne die Plugin-Laufzeit zu laden. Verwenden Sie requiresRuntime: false nur, wenn diese statischen Deskriptoren für die Einrichtung ausreichen.
3

Backend registrieren

index.ts
Die Backend-ID muss mit dem Manifest-Eintrag cliBackends übereinstimmen. Der registrierte Adapter ist maßgeblicher Plugin-Code; die OpenClaw-Konfiguration wählt das Backend aus, schreibt dessen Befehlsvertrag jedoch nicht um.

Konfigurationsstruktur

CliBackendConfig beschreibt, wie OpenClaw die CLI starten und analysieren soll. Das ausgearbeitete Beispiel oben verwendet absichtlich dieselben Befehls-, Fortsetzungs-, JSONL-, Modellalias-, Sitzungs-, Bild- und Watchdog-Felder wie der mitgelieferte Adapter google-gemini-cli: Bevorzugen Sie die kleinste statische Konfiguration, die zur CLI passt. Fügen Sie Plugin-Callbacks nur für Verhalten hinzu, das tatsächlich zum Backend gehört.

Erweiterte Backend-Hooks

CliBackendPlugin kann außerdem Folgendes definieren: Belassen Sie diese Hooks in der Zuständigkeit des Providers. Fügen Sie dem Kern keine CLI-spezifischen Verzweigungen hinzu, wenn ein Backend-Hook das Verhalten ausdrücken kann. prepareExecution(ctx) empfängt ctx.contextTokenBudget, das für den Lauf ausgewählte effektive Token- Limit. Backends mit eigener nativer Compaction können dieses Budget ihrem CLI-spezifischen Startvertrag zuordnen. runtimeArtifact gehört dem Plugin. Es wird nur herangezogen, wenn ein Live-Inferenzdurchlauf verifizierte Einrichtungsautorität erzeugt oder erneut validiert; normale CLI-Läufe benötigen es nicht. Ein Backend ohne diese Deklaration kann keine verifizierte CLI-Einrichtungsautorität erzeugen. Eine bundled-package-tree-Deklaration benennt den exakten package.json-Eigentümer und verlangt, dass der Paket-Einstiegspunkt der Befehl ist. OpenClaw hasht den begrenzten, vollständigen installierten Paketbaum einschließlich verschachtelter Abhängigkeiten und bricht bei umleitenden Symlinks, Startern außerhalb des deklarierten Pakets, Deklarationen erforderlicher externer Abhängigkeiten, übergroßen Bäumen und unbekannten Skripten sicher ab. Deklarieren Sie dies nur, wenn dieser Baum die vollständige Inferenzimplementierung enthält; optionale Tool-Integrationen machen einen externen Implementierungsgraphen nicht sicher. Wenn dasselbe Backend auch eine eigenständige native ausführbare Datei bereitstellt, führen Sie deren kanonische Basisnamen in nativeExecutableNames auf. Andere native Befehle bleiben unverifiziert. ctx.executionMode ist "agent" für normale Durchläufe und "side-question" für flüchtige /btw-Aufrufe. Verwenden Sie es, wenn die CLI andere Einmal-Flags benötigt, etwa zum Deaktivieren nativer Tools, der Sitzungspersistenz oder des Fortsetzungsverhaltens für BTW. Wenn ein Backend normalerweise nativeToolMode: "always-on" hat, seine Argumentliste für Nebenfragen diese Tools jedoch zuverlässig deaktiviert, setzen Sie außerdem sideQuestionToolMode: "disabled"; andernfalls bricht OpenClaw sicher ab, wenn BTW einen CLI-Lauf ohne Tools erfordert. Setzen Sie nativeToolMode: "selectable" nur, wenn das Backend jedes backend-native Tool für einen einzelnen Lauf deaktivieren kann. Eingeschränkte Läufe erhalten einen kanonischen Vertrag: ctx.toolAvailability.native ist die exakte backend-native Liste und ctx.toolAvailability.openClaw ist die exakte Liste der OpenClaw-Toolnamen. Der Host beschränkt die erzeugte MCP-Konfiguration und Berechtigung unabhängig auf diese OpenClaw-Liste; Plugins dürfen sie im Core weder übersetzen noch Transportpräfixe hinzufügen. Deklarieren Sie, wie das Backend diesen Vertrag durchsetzt:
  • toolAvailabilityEnforcement: "execution-args" erfordert resolveExecutionArgs. Der Hook muss widersprüchliche Tool-Flags ersetzen, Anpassungsoberflächen deaktivieren, die außerhalb der ausgewählten Tools Code ausführen können, und durchsetzende Argumente sowohl für neue als auch für fortgesetzte Läufe zurückgeben.
  • toolAvailabilityEnforcement: "prepare-execution" erfordert prepareExecution. Der Hook muss eine exakte Richtlinie pro Lauf bereitstellen und toolAvailabilityEnforced: true zurückgeben; eine fehlende Bestätigung führt zum sicheren Abbruch, und OpenClaw bereinigt die bereitgestellten Ressourcen vor dem Start.
Laufzeitbegrenzungen wie Cron-toolsAllow werden von OpenClaw normalisiert und nach Gruppen erweitert, bevor dieser Vertrag erstellt wird. Native Tools werden deaktiviert, und ein Backend ohne vollständig deklarierten Durchsetzungspfad schlägt vor der Ausführung fehl. Plugins, die gegen v2026.7.2-beta.1 bis v2026.7.2-beta.3 erstellt wurden, können weiterhin die veraltete Projektion des Transportnamens ctx.toolAvailability.mcp lesen und dürfen toolAvailabilityEnforcement auslassen, wenn ein auswählbares Backend resolveExecutionArgs implementiert. OpenClaw erkennt diesen veröffentlichten Beta-Pfad anhand der erforderlichen openclaw.build.openclawVersion-Metadaten des Plugin-Pakets und behält ihn bis einschließlich der 2026.8.x-Linie bei. Neue und aktualisierte Plugins sollten kanonische ctx.toolAvailability.openClaw-Namen verwenden und toolAvailabilityEnforcement: "execution-args" ausdrücklich deklarieren; der Beta- Kompatibilitätspfad soll nach diesem Zeitraum entfernt werden.

ownsNativeCompaction: OpenClaw-Compaction deaktivieren

Wenn Ihr Backend einen Agenten ausführt, der sein eigenes Transkript komprimiert, setzen Sie ownsNativeCompaction: true, damit OpenClaws absichernde Zusammenfassung niemals auf dessen Sitzungen angewendet wird – der CLI-Compaction-Lebenszyklus führt keine Aktion aus und der Durchlauf wird fortgesetzt. claude-cli deklariert dies, weil Claude Code intern ohne Harness-Endpunkt komprimiert. Native Harness-Sitzungen wie Codex werden stattdessen weiterhin an ihren Harness-Compaction-Endpunkt weitergeleitet. Deklarieren Sie dies nur, wenn alle folgenden Bedingungen erfüllt sind, andernfalls kann eine verzögerte Sitzung, die das Budget überschreitet, weiterhin über dem Budget bleiben oder veralten (OpenClaw rettet sie nicht mehr):
  • das Backend komprimiert oder begrenzt sein eigenes Transkript zuverlässig, wenn es sich seinem Fenster nähert;
  • es speichert eine fortsetzbare Sitzung, sodass der komprimierte Zustand über mehrere Durchläufe hinweg erhalten bleibt (zum Beispiel --resume / --session-id);
  • es handelt sich nicht um eine native Harness-Compaction-Sitzung – übereinstimmende agentHarnessId- Sitzungen werden stattdessen an den Harness-Endpunkt weitergeleitet.

MCP-Tool-Bridge

CLI-Backends erhalten standardmäßig keine OpenClaw-Tools. Wenn die CLI eine MCP-Konfiguration verwenden kann, aktivieren Sie dies ausdrücklich:
Unterstützte Bridge-Modi: Aktivieren Sie die Bridge nur, wenn die CLI sie tatsächlich verwenden kann. Wenn die CLI eine eigene integrierte Tool-Schicht hat, die nicht deaktiviert werden kann, setzen Sie nativeToolMode: "always-on", damit OpenClaw sicher abbrechen kann, wenn ein Aufrufer keine nativen Tools verlangt. Wenn sie jedes native Tool pro Lauf deaktivieren kann, verwenden Sie "selectable" mit dem oben beschriebenen resolveExecutionArgs-Vertrag.

Backend auswählen

Benutzer wählen ein eigenständiges Backend über dessen Modellreferenz-Präfix aus. Ein Backend, das ein kanonisches modelProvider deklariert, kann stattdessen über das agentRuntime.id dieses Provider-Modells ausgewählt werden. Die Adaptermechanik verbleibt im Plugin:
Speichern Sie Anmeldedaten in OpenClaw-Authentifizierungsprofilen oder in Plugin-eigener Konfiguration. Stellen Sie sicher, dass der registrierte Befehl im PATH des Gateway-Dienstes verfügbar ist; Bereitstellungen, die einen anderen Pfad oder eine andere Argumentliste benötigen, sollten die Plugin-Registrierung ändern oder umschließen.

Verifizierung

Fügen Sie für gebündelte Plugins einen fokussierten Test für den Builder und die Einrichtungsregistrierung hinzu und führen Sie anschließend die gezielte Testspur des Plugins aus:
Verifizieren Sie bei lokalen oder installierten Plugins die Erkennung und einen echten Modelllauf:
Wenn das Backend Bilder oder MCP unterstützt, fügen Sie einen Live-Smoke-Test hinzu, der diese Pfade mit der echten CLI nachweist. Verlassen Sie sich für Prompt-, Bild-, MCP- oder Sitzungsfortsetzungsverhalten nicht auf statische Prüfung.

Checkliste

package.json enthält openclaw.extensions und erstellte Laufzeiteinträge für veröffentlichte Pakete
openclaw.plugin.json deklariert cliBackends und bewusst gewählte activation.onStartup
setup.cliBackends ist vorhanden, wenn Einrichtung oder Modellerkennung das Backend im kalten Zustand erkennen sollen
api.registerCliBackend(...) verwendet dieselbe Backend-ID wie das Manifest
Das Backend-Modellpräfix oder das modellbezogene agentRuntime.id wählt die Registrierung aus
Einstellungen für Sitzung, System-Prompt, Bilder und Ausgabeparser entsprechen dem tatsächlichen CLI-Vertrag
Gezielte Tests und mindestens ein Live-CLI-Smoke-Test weisen den Backend-Pfad nach

Verwandte Themen