Wann ein Harness verwendet werden sollte
Registrieren Sie einen Agent-Harness, wenn eine Modellfamilie ihre eigene native Session-Runtime hat und der normale OpenClaw-Provider-Transport die falsche Abstraktion ist. Beispiele:- ein nativer Coding-Agent-Server, der Threads und Compaction besitzt
- eine lokale CLI oder ein Daemon, der native Planungs-, Reasoning- und Tool-Ereignisse streamen muss
- eine Modell-Runtime, die zusätzlich zum OpenClaw-Session-Transkript ihre eigene Resume-ID benötigt
Was Core weiterhin besitzt
Bevor ein Harness ausgewählt wird, hat OpenClaw bereits Folgendes aufgelöst:- Provider und Modell
- Runtime-Auth-Status
- Thinking-Level und Kontextbudget
- die OpenClaw-Transkript-/Session-Datei
- Workspace, Sandbox und Tool-Richtlinie
- Channel-Reply-Callbacks und Streaming-Callbacks
- Modell-Fallback und Richtlinie für Live-Modellwechsel
params.runtimePlan, ein OpenClaw-eigenes
Richtlinienbündel für Runtime-Entscheidungen, die zwischen OpenClaw und nativen
Harnesses geteilt bleiben müssen:
runtimePlan.tools.normalize(...)undruntimePlan.tools.logDiagnostics(...)für Provider-bewusste Tool-Schema-RichtlinienruntimePlan.transcript.resolvePolicy(...)für Transkriptbereinigung und Richtlinien zur Reparatur von Tool-CallsruntimePlan.delivery.isSilentPayload(...)für gemeinsameNO_REPLY- und Medienunterdrückung bei der ZustellungruntimePlan.outcome.classifyRunResult(...)für die Klassifizierung von Modell-FallbacksruntimePlan.observabilityfür aufgelöste Provider-/Modell-/Harness-Metadaten
Harness registrieren
Import:openclaw/plugin-sdk/agent-harness
Auswahlrichtlinie
OpenClaw wählt einen Harness nach der Provider-/Modellauflösung aus:- Modellbezogene Runtime-Richtlinie gewinnt.
- Providerbezogene Runtime-Richtlinie kommt als Nächstes.
autofragt registrierte Harnesses, ob sie den aufgelösten Provider/das aufgelöste Modell unterstützen.- Wenn kein registrierter Harness passt, verwendet OpenClaw seine eingebettete Runtime.
auto wird der eingebettete Fallback
nur verwendet, wenn kein registrierter Plugin-Harness den aufgelösten
Provider/das aufgelöste Modell unterstützt. Sobald ein Plugin-Harness einen Lauf beansprucht hat, spielt OpenClaw
denselben Lauf nicht über eine andere Runtime erneut ab, weil das
Auth-/Runtime-Semantik ändern oder Seiteneffekte duplizieren kann.
Runtime-Pins für ganze Sessions und ganze Agenten werden von der Auswahl ignoriert. Dazu gehören
veraltete Session-Werte agentHarnessId, agents.defaults.agentRuntime,
agents.list[].agentRuntime und OPENCLAW_AGENT_RUNTIME. /status zeigt die
effektive Runtime, die aus der Provider-/Modellroute ausgewählt wurde.
Wenn der ausgewählte Harness überraschend ist, aktivieren Sie das Debug-Logging agents/harness und
prüfen Sie den strukturierten Gateway-Datensatz agent harness selected. Er enthält
die ausgewählte Harness-ID, den Auswahlgrund, die Runtime-/Fallback-Richtlinie und im
Modus auto das Support-Ergebnis jedes Plugin-Kandidaten.
Das gebündelte Codex-Plugin registriert codex als seine Harness-ID. Core behandelt diese
als gewöhnliche Plugin-Harness-ID; Codex-spezifische Aliasse gehören in das Plugin
oder in die Operator-Konfiguration, nicht in den gemeinsamen Runtime-Selector.
Provider- und Harness-Kopplung
Die meisten Harnesses sollten auch einen Provider registrieren. Der Provider macht Modellreferenzen, Auth-Status, Modellmetadaten und/model-Auswahl für den Rest von
OpenClaw sichtbar. Der Harness beansprucht diesen Provider dann in supports(...).
Das gebündelte Codex-Plugin folgt diesem Muster:
- bevorzugte Nutzermodellreferenzen:
openai/gpt-5.5 - Kompatibilitätsreferenzen: ältere
codex/gpt-*-Referenzen bleiben akzeptiert, neue Konfigurationen sollten sie aber nicht als normale Provider-/Modellreferenzen verwenden - Harness-ID:
codex - Auth: synthetische Provider-Verfügbarkeit, weil der Codex-Harness den nativen Codex-Login/die native Codex-Session besitzt
- App-Server-Anfrage: OpenClaw sendet die reine Modell-ID an Codex und lässt den Harness mit dem nativen App-Server-Protokoll sprechen
openai/gpt-*-Agentenreferenzen beim offiziellen
OpenAI-Provider wählen standardmäßig den Codex-Harness aus. Ältere codex/gpt-*-Referenzen
wählen weiterhin aus Kompatibilitätsgründen den Codex-Provider und -Harness aus.
Operator-Setup, Beispiele für Modellpräfixe und reine Codex-Konfigurationen finden Sie unter
Codex-Harness.
OpenClaw erfordert Codex-App-Server 0.125.0 oder neuer. Das Codex-Plugin prüft
den App-Server-Initialize-Handshake und blockiert ältere oder nicht versionierte Server, sodass
OpenClaw nur gegen die Protokolloberfläche läuft, mit der es getestet wurde. Die
Mindestversion 0.125.0 enthält die Unterstützung für native MCP-Hook-Payloads, die in
Codex 0.124.0 gelandet ist, während OpenClaw an die neuere getestete stabile Linie gebunden wird.
Tool-Result-Middleware
Gebündelte Plugins und explizit aktivierte installierte Plugins mit passenden Manifest-Verträgen können überapi.registerAgentToolResultMiddleware(...) Runtime-neutrale Tool-Result-Middleware
anhängen, wenn ihr Manifest die
zielgerichteten Runtime-IDs in contracts.agentToolResultMiddleware deklariert. Diese vertrauenswürdige
Schnittstelle ist für asynchrone Tool-Result-Transformationen gedacht, die ausgeführt werden müssen, bevor OpenClaw oder Codex
Tool-Ausgaben zurück in das Modell einspeist.
Ältere gebündelte Plugins können weiterhin
api.registerCodexAppServerExtensionFactory(...) für Middleware verwenden, die nur für den Codex-App-Server gilt,
aber neue Ergebnis-Transformationen sollten die Runtime-neutrale API verwenden.
Der nur für den eingebetteten Runner bestimmte Hook api.registerEmbeddedExtensionFactory(...) wurde entfernt;
eingebettete Tool-Result-Transformationen müssen Runtime-neutrale Middleware verwenden.
Klassifizierung terminaler Ergebnisse
Native Harnesses, die ihre eigene Protokollprojektion besitzen, könnenclassifyAgentHarnessTerminalOutcome(...) aus
openclaw/plugin-sdk/agent-harness-runtime verwenden, wenn ein abgeschlossener Lauf keinen
sichtbaren Assistant-Text erzeugt hat. Der Helper gibt empty, reasoning-only oder
planning-only zurück, sodass OpenClaws Fallback-Richtlinie entscheiden kann, ob mit einem
anderen Modell erneut versucht werden soll. planning-only erfordert das explizite Feld planText
des Harness; OpenClaw leitet es nicht aus Assistant-Prosa ab. Der Helper lässt absichtlich
Prompt-Fehler, laufende Turns und absichtliche stille Antworten wie
NO_REPLY unklassifiziert.
Agent-End-Seiteneffekte
Native Harnesses müssenrunAgentEndSideEffects(...) aus
openclaw/plugin-sdk/agent-harness-runtime aufrufen, nachdem sie einen Versuch abgeschlossen haben. Es
löst den portablen Hook agent_end und OpenClaws Research-Capture aus, ohne
interaktive Antworten zu verzögern. Verwenden Sie awaitAgentEndSideEffects(...) für lokale,
nicht interaktive Läufe, bei denen der Versuch nicht abgeschlossen werden darf, bis diese Seiteneffekte
beendet sind. Beide Helper akzeptieren dasselbe Payload { event, ctx } wie
runAgentHarnessAgentEndHook(...); ihre Fehler ändern das abgeschlossene
Versuchsergebnis nicht.
Nutzereingaben und Tool-Oberflächen
Native Harnesses, die eine Nutzereingabeanfrage auf Runtime-Ebene bereitstellen, sollten die Nutzereingabe-Helper ausopenclaw/plugin-sdk/agent-harness-runtime verwenden, um
den Prompt zu formatieren, ihn über OpenClaws blockierenden Antwortpfad zuzustellen und
Auswahl-/Freiformantworten zurück in die native Antwortform der Runtime zu normalisieren. Der
Helper hält die Channel-/TUI-Darstellung konsistent, während jeder Harness sein
eigenes Protokoll-Parsing und den Lifecycle ausstehender Anfragen behält.
Native Harnesses, die PI-ähnliches kompaktes Tool-Routing benötigen, sollten
createAgentHarnessToolSurfaceRuntime(...) aus
openclaw/plugin-sdk/agent-harness-tool-runtime verwenden. Es besitzt
Tool-Search-/Code-Mode-Steuerungsauswahl, schlanke Defaults für lokale Modelle,
Runtime-kompatible Schemafilterung, versteckte Katalogausführung, Verzeichnishydratisierung
und Katalogbereinigung. Harnesses besitzen weiterhin ihre SDK-spezifische Tool-Konvertierung
und den nativen Ausführungs-Callback.
Nativer Codex-Harness-Modus
Der gebündeltecodex-Harness ist der native Codex-Modus für eingebettete OpenClaw-
Agentenläufe. Aktivieren Sie zuerst das gebündelte codex-Plugin und nehmen Sie codex in
plugins.allow auf, wenn Ihre Konfiguration eine restriktive Allowlist verwendet. Native App-Server-
Konfigurationen sollten openai/gpt-* verwenden; OpenAI-Agentenläufe wählen standardmäßig den Codex-Harness
aus. Ältere Codex-Modellreferenzrouten sollten mit
openclaw doctor --fix repariert werden, und ältere codex/*-Modellreferenzen bleiben Kompatibilitäts-
Aliasse für den nativen Harness.
Wenn dieser Modus läuft, besitzt Codex die native Thread-ID, das Resume-Verhalten,
Compaction und die App-Server-Ausführung. OpenClaw besitzt weiterhin den Chat-Channel,
den sichtbaren Transkriptspiegel, die Tool-Richtlinie, Freigaben, Medienzustellung und Session-
Auswahl. Verwenden Sie Provider-/Modell-agentRuntime.id: "codex", wenn Sie nachweisen müssen,
dass nur der Codex-App-Server-Pfad den Lauf beanspruchen kann. Explizite Plugin-Runtimes
schlagen geschlossen fehl; Auswahlfehler des Codex-App-Servers und Runtime-Fehler werden nicht
über eine andere Runtime erneut versucht.
Runtime-Strenge
Standardmäßig verwendet OpenClaw die Provider-/Modell-Runtime-Richtlinieauto: registrierte
Plugin-Harnesses können ein Provider-/Modellpaar beanspruchen, und die eingebettete Runtime
verarbeitet den Lauf, wenn keines passt. OpenAI-Agentenreferenzen beim offiziellen OpenAI-Provider verwenden standardmäßig Codex.
Verwenden Sie eine explizite Provider-/Modell-Plugin-Runtime wie
agentRuntime.id: "codex", wenn eine fehlende Harness-Auswahl fehlschlagen soll,
statt über die eingebettete Runtime geroutet zu werden. Fehler ausgewählter Plugin-Harnesses
schlagen immer hart fehl. Dies blockiert kein explizites Provider-/Modell-agentRuntime.id: "openclaw".
Für reine Codex-Embedded-Läufe:
Native Sitzungen und Transcript-Spiegel
Ein Harness kann eine native Sitzungs-ID, Thread-ID oder ein daemonseitiges Resume-Token behalten. Halten Sie diese Bindung ausdrücklich mit der OpenClaw-Sitzung verknüpft, und spiegeln Sie für Benutzer sichtbare Assistenten-/Tool-Ausgaben weiterhin in das OpenClaw-Transcript. Das OpenClaw-Transcript bleibt die Kompatibilitätsschicht für:- kanal sichtbaren Sitzungsverlauf
- Transcript-Suche und -Indexierung
- Wechsel zurück zum integrierten OpenClaw-Harness in einem späteren Turn
- generisches
/new-,/reset- und Sitzungslöschverhalten
reset(...), damit OpenClaw sie
löschen kann, wenn die zugehörige OpenClaw-Sitzung zurückgesetzt wird.
Tool- und Medienergebnisse
Core erstellt die OpenClaw-Tool-Liste und übergibt sie an den vorbereiteten Versuch. Wenn ein Harness einen dynamischen Tool-Aufruf ausführt, geben Sie das Tool-Ergebnis über die Ergebnisstruktur des Harness zurück, statt selbst Kanalmedien zu senden. So bleiben Text-, Bild-, Video-, Musik-, TTS-, Genehmigungs- und Messaging-Tool-Ausgaben auf demselben Auslieferungspfad wie OpenClaw-gestützte Läufe.Aktuelle Einschränkungen
- Der öffentliche Importpfad ist generisch, aber einige Attempt-/Result-Typaliases tragen aus Kompatibilitätsgründen noch Legacy-Namen.
- Die Installation von Harnesses von Drittanbietern ist experimentell. Bevorzugen Sie Provider-Plugins, bis Sie eine native Sitzungs-Runtime benötigen.
- Harness-Wechsel werden turnübergreifend unterstützt. Wechseln Sie Harnesses nicht mitten in einem Turn, nachdem native Tools, Genehmigungen, Assistententext oder Nachrichtenversand begonnen haben.