agent harness は、準備済みの OpenClaw agent の 1 ターンを実行する低レベルの executor です。 これは model provider でも、channel でも、tool registry でもありません。 ユーザー向けのメンタルモデルについては、Agent runtimes を参照してください。 この surface は、同梱または信頼済みの native Plugin にのみ使用してください。この contract はまだ実験的です。parameter type が意図的に現在の embedded runner を反映しているためです。Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
harness を使う場面
model family が独自の native session runtime を持ち、通常の OpenClaw provider transport が適切な抽象化ではない場合に、agent harness を登録します。 例:- thread と compaction を所有する native coding-agent server
- native plan/reasoning/tool event を stream する必要がある local CLI または daemon
- OpenClaw session transcript に加えて独自の resume id を必要とする model runtime
core が引き続き所有するもの
harness が選択される前に、OpenClaw はすでに以下を解決しています。- provider と model
- runtime auth state
- thinking level と context budget
- OpenClaw transcript/session file
- workspace、sandbox、tool policy
- channel reply callback と streaming callback
- model fallback と live model switching policy
params.runtimePlan も含まれます。
- provider-aware tool schema policy 用の
runtimePlan.tools.normalize(...)とruntimePlan.tools.logDiagnostics(...) - transcript sanitization と tool-call repair policy 用の
runtimePlan.transcript.resolvePolicy(...) - 共有
NO_REPLYと media delivery suppression 用のruntimePlan.delivery.isSilentPayload(...) - model fallback classification 用の
runtimePlan.outcome.classifyRunResult(...) - 解決済み provider/model/harness metadata 用の
runtimePlan.observability
harness を登録する
Import:openclaw/plugin-sdk/agent-harness
選択 policy
OpenClaw は provider/model 解決後に harness を選択します。- model-scoped runtime policy が優先されます。
- 次に provider-scoped runtime policy が続きます。
autoは、登録済み harness に対して、解決済みの provider/model を support するかを問い合わせます。- 一致する登録済み harness がない場合、PI fallback が disabled でない限り OpenClaw は PI を使用します。
auto mode では、PI fallback は、解決済み provider/model を support する登録済み Plugin harness がない場合にのみ使用されます。Plugin harness が run を claim した後、OpenClaw はその同じターンを PI 経由で replay しません。これは auth/runtime semantics を変えたり side effect を重複させたりする可能性があるためです。
whole-session と whole-agent の runtime pin は selection では無視されます。これには古い session agentHarnessId 値、agents.defaults.agentRuntime、agents.list[].agentRuntime、OPENCLAW_AGENT_RUNTIME が含まれます。/status は provider/model route から選択された effective runtime を表示します。
選択された harness が予想外の場合は、agents/harness debug logging を有効にし、gateway の structured agent harness selected record を確認してください。これには、選択された harness id、selection reason、runtime/fallback policy、そして auto mode では各 Plugin candidate の support result が含まれます。
同梱の Codex Plugin は codex を harness id として登録します。core はそれを通常の Plugin harness id として扱います。Codex-specific alias は Plugin または operator config に属し、shared runtime selector には属しません。
Provider と harness の組み合わせ
ほとんどの harness は provider も登録するべきです。provider は model ref、auth status、model metadata、/model selection を OpenClaw の他の部分から見えるようにします。harness はその後、supports(...) でその provider を claim します。
同梱の Codex Plugin はこの pattern に従います。
- 推奨される user model ref:
openai/gpt-5.5 - compatibility ref: legacy
codex/gpt-*ref は引き続き受け入れられますが、新しい config では通常の provider/model ref として使用すべきではありません - harness id:
codex - auth: synthetic provider availability。Codex harness が native Codex login/session を所有するためです
- app-server request: OpenClaw は bare model id を Codex に送信し、harness に native app-server protocol と通信させます
openai/gpt-* agent ref はデフォルトで Codex harness を選択します。古い codex/gpt-* ref も compatibility のために Codex provider と harness を引き続き選択します。
operator setup、model prefix example、Codex-only config については、Codex Harness を参照してください。
OpenClaw には Codex app-server 0.125.0 以降が必要です。Codex Plugin は app-server initialize handshake を確認し、古い server または version のない server をブロックします。これにより、OpenClaw は test 済みの protocol surface に対してのみ実行されます。0.125.0 floor には Codex 0.124.0 で入った native MCP hook payload support が含まれ、同時に OpenClaw をより新しい test 済み stable line に pin します。
Tool-result middleware
同梱 Plugin は、manifest がcontracts.agentToolResultMiddleware で対象 runtime id を宣言している場合、api.registerAgentToolResultMiddleware(...) を通じて runtime-neutral tool-result middleware を attach できます。この信頼済み seam は、PI または Codex が tool output を model に戻す前に実行する必要がある async tool-result transform 用です。
legacy bundled Plugin は Codex app-server-only middleware 用に引き続き api.registerCodexAppServerExtensionFactory(...) を使用できますが、新しい result transform は runtime-neutral API を使用するべきです。
Pi-only の api.registerEmbeddedExtensionFactory(...) hook は削除されました。Pi tool-result transform は runtime-neutral middleware を使用する必要があります。
Terminal outcome classification
独自の protocol projection を所有する native harness は、完了したターンが visible assistant text を生成しなかった場合に、openclaw/plugin-sdk/agent-harness-runtime の classifyAgentHarnessTerminalOutcome(...) を使用できます。この helper は empty、reasoning-only、または planning-only を返し、OpenClaw の fallback policy が別の model で retry するかを判断できるようにします。prompt error、in-flight turn、NO_REPLY などの意図的な silent reply は意図的に unclassified のままにします。
Native Codex harness mode
同梱のcodex harness は、embedded OpenClaw agent turn 用の native Codex mode です。まず同梱の codex Plugin を有効にし、config が restrictive allowlist を使用している場合は plugins.allow に codex を含めます。native app-server config は openai/gpt-* を使用するべきです。OpenAI agent turn はデフォルトで Codex harness を選択します。legacy openai-codex/* route は openclaw doctor --fix で repair するべきで、legacy codex/* model ref は native harness の compatibility alias として残ります。
この mode の実行時、Codex は native thread id、resume behavior、compaction、app-server execution を所有します。OpenClaw は引き続き chat channel、visible transcript mirror、tool policy、approval、media delivery、session selection を所有します。Codex app-server path だけが run を claim できることを証明する必要がある場合は、provider/model agentRuntime.id: "codex" を使用してください。明示的な Plugin runtime は fail closed します。Codex app-server selection failure と runtime failure は PI 経由で retry されません。
Runtime strictness
デフォルトでは、OpenClaw はauto provider/model runtime policy を使用します。登録済み Plugin harness は provider/model pair を claim でき、一致するものがない場合は PI がターンを処理します。official OpenAI provider 上の OpenAI agent ref はデフォルトで Codex になります。harness selection が missing の場合に PI 経由で route するのではなく fail させる必要がある場合は、agentRuntime.id: "codex" のような明示的な provider/model Plugin runtime を使用してください。選択された Plugin harness failure は常に hard failure になります。これは明示的な provider/model agentRuntime.id: "pi" をブロックしません。
Codex-only embedded run の場合:
Native session と transcript mirror
harness は native session id、thread id、または daemon-side resume token を保持できます。その binding を OpenClaw session と明示的に関連付け、user-visible assistant/tool output を OpenClaw transcript に mirror し続けてください。 OpenClaw transcript は、以下の compatibility layer であり続けます。- channel-visible session history
- transcript search と indexing
- 後続ターンで組み込み PI harness に戻すこと
- generic
/new、/reset、session deletion behavior
reset(...) を実装してください。
Tool と media result
core は OpenClaw tool list を構築し、それを準備済み attempt に渡します。harness が dynamic tool call を実行する場合は、channel media を自分で送信するのではなく、harness result shape を通じて tool result を返してください。 これにより、text、image、video、music、TTS、approval、messaging-tool output が、PI-backed run と同じ delivery path に維持されます。現在の制限
- public import path は generic ですが、一部の attempt/result type alias は compatibility のためにまだ
Pi名を持っています。 - third-party harness installation は実験的です。native session runtime が必要になるまでは provider Plugin を推奨します。
- harness switching はターン間で support されています。native tool、approval、assistant text、または message send が開始された後、ターンの途中で harness を切り替えないでください。