





















@@ -18,14 +18,24 @@ configuration. They are different layers:
1818| ------------- | ------------------------------------- | ------------------------------------------------------------------- |
1919| Provider | `openai`, `anthropic`, `openai-codex` | How OpenClaw authenticates, discovers models, and names model refs. |
2020| Model | `gpt-5.5`, `claude-opus-4-6` | The model selected for the agent turn. |
21-| Agent runtime | `pi`, `codex`, ACP-backed runtimes | The low level loop that executes the prepared turn. |
21+| Agent runtime | `pi`, `codex`, `claude-cli` | The low level loop or backend that executes the prepared turn. |
2222| Channel | Telegram, Discord, Slack, WhatsApp | Where messages enter and leave OpenClaw. |
232324-You will also see the word **harness** in code and config. A harness is the
25-implementation that provides an agent runtime. For example, the bundled Codex
26-harness implements the `codex` runtime. The config key is still named
27-`embeddedHarness` for compatibility, but user-facing docs and status output
28-should generally say runtime.
24+You will also see the word **harness** in code. A harness is the implementation
25+that provides an agent runtime. For example, the bundled Codex harness
26+implements the `codex` runtime. Public config uses `agentRuntime.id`; `openclaw
27+doctor --fix` rewrites older runtime-policy keys to that shape.
28+29+There are two runtime families:
30+31+- **Embedded harnesses** run inside OpenClaw's prepared agent loop. Today this
32+ is the built-in `pi` runtime plus registered plugin harnesses such as
33+`codex`.
34+- **CLI backends** run a local CLI process while keeping the model ref
35+ canonical. For example, `anthropic/claude-opus-4-7` with
36+`agentRuntime.id: "claude-cli"` means "select the Anthropic model, execute
37+ through Claude CLI." `claude-cli` is not an embedded harness id and must not
38+ be passed to AgentHarness selection.
29393040## Three things named Codex
3141@@ -34,7 +44,7 @@ Most confusion comes from three different surfaces sharing the Codex name:
3444| Surface | OpenClaw name/config | What it does |
3545| ---------------------------------------------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------- |
3646| Codex OAuth provider route | `openai-codex/*` model refs | Uses ChatGPT/Codex subscription OAuth through the normal OpenClaw PI runner. |
37-| Native Codex app-server runtime | `embeddedHarness.runtime: "codex"` | Runs the embedded agent turn through the bundled Codex app-server harness. |
47+| Native Codex app-server runtime | `agentRuntime.id: "codex"` | Runs the embedded agent turn through the bundled Codex app-server harness. |
3848| Codex ACP adapter | `runtime: "acp"`, `agentId: "codex"` | Runs Codex through the external ACP/acpx control plane. Use only when ACP/acpx is explicitly asked. |
3949| Native Codex chat-control command set | `/codex ...` | Binds, resumes, steers, stops, and inspects Codex app-server threads from chat. |
4050| OpenAI Platform API route for GPT/Codex-style models | `openai/*` model refs | Uses OpenAI API-key auth unless a runtime override, such as `runtime: "codex"`, runs the turn. |
@@ -52,8 +62,8 @@ The common Codex setup uses the `openai` provider with the `codex` runtime:
5262 agents: {
5363 defaults: {
5464 model: "openai/gpt-5.5",
55-embeddedHarness: {
56-runtime: "codex",
65+agentRuntime: {
66+id: "codex",
5767 },
5868 },
5969 },
@@ -76,7 +86,7 @@ This is the agent-facing decision tree:
76861. If the user asks for **Codex bind/control/thread/resume/steer/stop**, use the
7787 native `/codex` command surface when the bundled `codex` plugin is enabled.
78882. If the user asks for **Codex as the embedded runtime**, use
79-`openai/<model>` with `embeddedHarness.runtime: "codex"`.
89+`openai/<model>` with `agentRuntime.id: "codex"`.
80903. If the user asks for **Codex OAuth/subscription auth on the normal OpenClaw
8191 runner**, use `openai-codex/<model>` and leave the runtime as PI.
82924. If the user explicitly says **ACP**, **acpx**, or **Codex ACP adapter**, use
@@ -87,7 +97,7 @@ This is the agent-facing decision tree:
8797| You mean... | Use... |
8898| --------------------------------------- | -------------------------------------------- |
8999| Codex app-server chat/thread control | `/codex ...` from the bundled `codex` plugin |
90-| Codex app-server embedded agent runtime | `embeddedHarness.runtime: "codex"` |
100+| Codex app-server embedded agent runtime | `agentRuntime.id: "codex"` |
91101| OpenAI Codex OAuth on the PI runner | `openai-codex/*` model refs |
92102| Claude Code or other external harness | ACP/acpx |
93103@@ -122,9 +132,9 @@ OpenClaw chooses an embedded runtime after provider and model resolution:
1221321. A session's recorded runtime wins. Config changes do not hot-switch an
123133 existing transcript to a different native thread system.
1241342. `OPENCLAW_AGENT_RUNTIME=<id>` forces that runtime for new or reset sessions.
125-3. `agents.defaults.embeddedHarness.runtime` or
126-`agents.list[].embeddedHarness.runtime` can set `auto`, `pi`, or a registered
127-runtime id such as `codex`.
135+3. `agents.defaults.agentRuntime.id` or `agents.list[].agentRuntime.id` can set
136+`auto`, `pi`, a registered embedded harness id such as `codex`, or a
137+supported CLI backend alias such as `claude-cli`.
1281384. In `auto` mode, registered plugin runtimes can claim supported provider/model
129139 pairs.
1301405. If no runtime claims a turn in `auto` mode and `fallback: "pi"` is set
@@ -137,6 +147,24 @@ Explicit plugin runtimes fail closed by default. For example,
137147a broader fallback setting, so an agent-level `runtime: "codex"` is not silently
138148routed back to PI just because defaults used `fallback: "pi"`.
139149150+CLI backend aliases are different from embedded harness ids. The preferred
151+Claude CLI form is:
152+153+```json5
154+{
155+ agents: {
156+ defaults: {
157+ model: "anthropic/claude-opus-4-7",
158+ agentRuntime: { id: "claude-cli" },
159+ },
160+ },
161+}
162+```
163+164+Legacy refs such as `claude-cli/claude-opus-4-7` remain supported for
165+compatibility, but new config should keep the provider/model canonical and put
166+the execution backend in `agentRuntime.id`.
167+140168`auto` mode is intentionally conservative. Plugin runtimes can claim
141169provider/model pairs they understand, but the Codex plugin does not claim the
142170`openai-codex` provider in `auto` mode. That keeps
@@ -146,7 +174,7 @@ moving subscription-auth configs onto the native app-server harness.
146174If `openclaw doctor` warns that the `codex` plugin is enabled while
147175`openai-codex/*` still routes through PI, treat that as a diagnosis, not a
148176migration. Keep the config unchanged when PI Codex OAuth is what you want.
149-Switch to `openai/<model>` plus `runtime: "codex"` only when you want native
177+Switch to `openai/<model>` plus `agentRuntime.id: "codex"` only when you want native
150178Codex app-server execution.
151179152180## Compatibility contract
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。