OpenClaw CLI Backends: Lokale KI als Fallback nutzen
Kennst du das? Du arbeitest konzentriert an einem Projekt, und plötzlich streikt dein KI-Provider. Die API ist überlastet oder antwortet nicht, und dein gesamter Workflow kommt zum Erliegen. Genau für solche Momente wurde OpenClaw mit seinen CLI-Backends entwickelt, um dir ein Sicherheitsnetz zu bieten.
OpenClaw ermöglicht es dir, lokale KI-CLIs als textbasiertes Fallback zu nutzen, wenn deine primären API-Dienste nicht erreichbar sind oder Ratenbegrenzungen erreichen. Dies ist bewusst konservativ gehalten:
- OpenClaw-Tools werden nicht direkt injiziert, aber Backends mit
bundleMcp: truekönnen Gateway-Tools über eine Loopback-MCP-Brücke empfangen. - JSONL-Streaming wird für CLIs unterstützt, die dies ermöglichen.
- Sessions werden unterstützt, damit Folgefragen kohärent bleiben.
- Bilder können durchgereicht werden, sofern die CLI Bildpfade akzeptiert.
Dies ist als Sicherheitsnetz gedacht, nicht als primärer Pfad. Nutze es, wenn du “immer funktionierende” Textantworten ohne Abhängigkeit von externen APIs benötigst. Wenn du eine vollständige Runtime mit ACP-Session-Kontrolle, Hintergrundaufgaben und persistenten Coding-Sessions suchst, verwende stattdessen ACP Agents.
Schneller Einstieg für Einsteiger
Abschnitt betitelt „Schneller Einstieg für Einsteiger“Du kannst die Codex CLI ohne jegliche Konfiguration verwenden, da das gebündelte OpenAI-Plugin ein Standard-Backend registriert:
openclaw agent --message "hi" --model codex-cli/gpt-5.4Falls dein Gateway unter launchd/systemd läuft und der PATH minimal ist, füge einfach den Befehlspfad hinzu:
{ agents: { defaults: { cliBackends: { "codex-cli": { command: "/opt/homebrew/bin/codex", }, }, }, },}Das war es schon. Keine Keys oder zusätzliche Auth-Konfiguration nötig, außer der CLI selbst.
Verwendung als Fallback
Abschnitt betitelt „Verwendung als Fallback“Füge ein CLI-Backend zu deiner Fallback-Liste hinzu, damit es nur dann einspringt, wenn primäre Modelle ausfallen:
{ agents: { defaults: { model: { primary: "anthropic/claude-opus-4-6", fallbacks: ["codex-cli/gpt-5.4"], }, models: { "anthropic/claude-opus-4-6": { alias: "Opus" }, "codex-cli/gpt-5.4": {}, }, }, },}Hinweise:
- Wenn du
agents.defaults.models(Allowlist) verwendest, musst du deine CLI-Backend-Modelle dort ebenfalls aufführen. - Wenn der primäre Provider ausfällt (Auth, Ratenbegrenzung, Timeouts), versucht OpenClaw als Nächstes das CLI-Backend.
Konfigurationsübersicht
Abschnitt betitelt „Konfigurationsübersicht“Alle CLI-Backends befinden sich unter:
agents.defaults.cliBackendsJeder Eintrag wird über eine Provider-ID (z. B. codex-cli, my-cli) identifiziert. Die Provider-ID bildet den linken Teil deiner Modell-Referenz:
<provider>/<model>Beispielkonfiguration
Abschnitt betitelt „Beispielkonfiguration“{ agents: { defaults: { cliBackends: { "codex-cli": { command: "/opt/homebrew/bin/codex", }, "my-cli": { command: "my-cli", args: ["--json"], output: "json", input: "arg", modelArg: "--model", modelAliases: { "claude-opus-4-6": "opus", "claude-sonnet-4-6": "sonnet", }, sessionArg: "--session", sessionMode: "existing", sessionIdFields: ["session_id", "conversation_id"], systemPromptArg: "--system", // Codex-style CLIs can point at a prompt file instead: // systemPromptFileConfigArg: "-c", // systemPromptFileConfigKey: "model_instructions_file", systemPromptWhen: "first", imageArg: "--image", imageMode: "repeat", serialize: true, }, }, }, },}Funktionsweise
Abschnitt betitelt „Funktionsweise“- Auswahl eines Backends basierend auf dem Provider-Präfix (
codex-cli/...). - Erstellung eines System-Prompts unter Verwendung des OpenClaw-Prompts und des Workspace-Kontexts.
- Ausführung der CLI mit einer Session-ID (falls unterstützt), damit die Historie konsistent bleibt.
- Parsen der Ausgabe (JSON oder reiner Text) und Rückgabe des finalen Textes.
- Persistenz der Session-IDs pro Backend, damit Folgeanfragen dieselbe CLI-Session wiederverwenden.
Sessions
Abschnitt betitelt „Sessions“- Wenn die CLI Sessions unterstützt, setze
sessionArg(z. B.--session-id) odersessionArgs(Platzhalter{sessionId}), wenn die ID in mehrere Flags eingefügt werden muss. - Wenn die CLI ein Resume-Subcommand mit anderen Flags verwendet, setze
resumeArgs(ersetztargsbeim Fortsetzen) und optionalresumeOutput(für Nicht-JSON-Resumes). sessionMode:always: Sendet immer eine Session-ID (neue UUID, falls keine gespeichert).existing: Sendet nur dann eine Session-ID, wenn zuvor eine gespeichert wurde.none: Sendet niemals eine Session-ID.
Bilder (Durchreichen)
Abschnitt betitelt „Bilder (Durchreichen)“Wenn deine CLI Bildpfade akzeptiert, setze imageArg:
imageArg: "--image",imageMode: "repeat"OpenClaw schreibt Base64-Bilder in temporäre Dateien. Wenn imageArg gesetzt ist, werden diese Pfade als CLI-Argumente übergeben. Fehlt imageArg, hängt OpenClaw die Dateipfade an den Prompt an (Pfad-Injektion), was für CLIs ausreicht, die lokale Dateien automatisch aus Pfaden laden.
Eingaben / Ausgaben
Abschnitt betitelt „Eingaben / Ausgaben“output: "json"(Standard) versucht, JSON zu parsen und Text sowie Session-ID zu extrahieren.- Für Gemini CLI JSON-Ausgabe liest OpenClaw den Antworttext aus
responseund die Nutzung ausstats, wennusagefehlt oder leer ist. output: "jsonl"parst JSONL-Streams (z. B. Codex CLI--json) und extrahiert die finale Agenten-Nachricht sowie Session-IDs, falls vorhanden.output: "text"behandelt stdout als finale Antwort.
Eingabemodi:
input: "arg"(Standard) übergibt den Prompt als letztes CLI-Argument.input: "stdin"sendet den Prompt über stdin.- Wenn der Prompt sehr lang ist und
maxPromptArgCharsgesetzt ist, wird stdin verwendet.
Standardwerte (Plugin-eigen)
Abschnitt betitelt „Standardwerte (Plugin-eigen)“Das gebündelte OpenAI-Plugin registriert ebenfalls einen Standard für codex-cli:
command: "codex"args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]resumeArgs: ["exec","resume","{sessionId}","-c","sandbox_mode=\"workspace-write\"","--skip-git-repo-check"]output: "jsonl"resumeOutput: "text"modelArg: "--model"imageArg: "--image"sessionMode: "existing"
Das gebündelte Google-Plugin registriert einen Standard für google-gemini-cli:
command: "gemini"args: ["--output-format", "json", "--prompt", "{prompt}"]resumeArgs: ["--resume", "{sessionId}", "--output-format", "json", "--prompt", "{prompt}"]imageArg: "@"imagePathScope: "workspace"modelArg: "--model"sessionMode: "existing"sessionIdFields: ["session_id", "sessionId"]
Plugin-eigene Standardwerte
Abschnitt betitelt „Plugin-eigene Standardwerte“CLI-Backend-Standardwerte sind nun Teil der Plugin-Oberfläche:
- Plugins registrieren diese mit
api.registerCliBackend(...). - Die Backend-
idwird zum Provider-Präfix in Modell-Referenzen. - Benutzerkonfiguration in
agents.defaults.cliBackends.<id>überschreibt weiterhin den Plugin-Standard.
Plugins, die kleine Kompatibilitäts-Shims für Prompts/Nachrichten benötigen, können bidirektionale Text-Transformationen deklarieren:
api.registerTextTransforms({ input: [ { from: /red basket/g, to: "blue basket" }, { from: /paper ticket/g, to: "digital ticket" }, { from: /left shelf/g, to: "right shelf" }, ], output: [ { from: /blue basket/g, to: "red basket" }, { from: /digital ticket/g, to: "paper ticket" }, { from: /right shelf/g, to: "left shelf" }, ],});Bundle MCP Overlays
Abschnitt betitelt „Bundle MCP Overlays“CLI-Backends erhalten keine direkten OpenClaw-Tool-Aufrufe, aber ein Backend kann sich mit bundleMcp: true für ein generiertes MCP-Konfigurations-Overlay entscheiden.
Aktuelles gebündeltes Verhalten:
claude-cli: generierte strikte MCP-Konfigurationsdatei.codex-cli: Inline-Konfigurations-Overrides fürmcp_servers.google-gemini-cli: generierte Gemini-Systemeinstellungsdatei.
Einschränkungen
Abschnitt betitelt „Einschränkungen“- Keine direkten OpenClaw-Tool-Aufrufe. Backends sehen Gateway-Tools nur, wenn sie
bundleMcp: trueaktivieren. - Streaming ist Backend-spezifisch. Manche Backends streamen JSONL, andere puffern bis zum Beenden.
- Strukturierte Ausgaben hängen vom JSON-Format der CLI ab.
- Codex CLI Sessions werden über Textausgabe fortgesetzt (kein JSONL), was weniger strukturiert ist als der initiale
--json-Durchlauf.
Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“- CLI nicht gefunden: Setze
commandauf einen vollständigen Pfad. - Falscher Modellname: Verwende
modelAliases, umprovider/modelauf das CLI-Modell abzubilden. - Keine Session-Kontinuität: Stelle sicher, dass
sessionArggesetzt ist undsessionModenichtnoneist. - Bilder ignoriert: Setze
imageArgund prüfe, ob die CLI Dateipfade unterstützt.
Brauchst du weitere Hilfe? Kontaktiere den AI Setup Assistant.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“OpenClaw Expert
Noch festgefahren?
Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.