mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 15:40:44 +00:00
fix: pin embedded harness selection per session
This commit is contained in:
@@ -51,6 +51,21 @@ The Codex harness only claims `codex/*` model refs. Existing `openai/*`,
|
||||
`openai-codex/*`, Anthropic, Gemini, xAI, local, and custom provider refs keep
|
||||
their normal paths.
|
||||
|
||||
Harness selection is not a live session control. When an embedded turn runs,
|
||||
OpenClaw records the selected harness id on that session and keeps using it for
|
||||
later turns in the same session id. Change `embeddedHarness` config or
|
||||
`OPENCLAW_AGENT_RUNTIME` when you want future sessions to use another harness;
|
||||
use `/new` or `/reset` to start a fresh session before switching an existing
|
||||
conversation between PI and Codex. This avoids replaying one transcript through
|
||||
two incompatible native session systems.
|
||||
|
||||
Legacy sessions created before harness pins are treated as PI-pinned once they
|
||||
have transcript history. Use `/new` or `/reset` to opt that conversation into
|
||||
Codex after changing config.
|
||||
|
||||
`/status` shows the effective non-PI harness next to `Fast`, for example
|
||||
`Fast · codex`. The default PI harness is omitted.
|
||||
|
||||
## Requirements
|
||||
|
||||
- OpenClaw with the bundled `codex` plugin available.
|
||||
@@ -218,7 +233,8 @@ auto-selection:
|
||||
|
||||
Use normal session commands to switch agents and models. `/new` creates a fresh
|
||||
OpenClaw session and the Codex harness creates or resumes its sidecar app-server
|
||||
thread as needed. `/reset` clears the OpenClaw session binding for that thread.
|
||||
thread as needed. `/reset` clears the OpenClaw session binding for that thread
|
||||
and lets the next turn resolve the harness from current config again.
|
||||
|
||||
## Model discovery
|
||||
|
||||
|
||||
@@ -87,11 +87,14 @@ export default definePluginEntry({
|
||||
|
||||
OpenClaw chooses a harness after provider/model resolution:
|
||||
|
||||
1. `OPENCLAW_AGENT_RUNTIME=<id>` forces a registered harness with that id.
|
||||
2. `OPENCLAW_AGENT_RUNTIME=pi` forces the built-in PI harness.
|
||||
3. `OPENCLAW_AGENT_RUNTIME=auto` asks registered harnesses if they support the
|
||||
1. An existing session's recorded harness id wins, so config/env changes do not
|
||||
hot-switch that transcript to another runtime.
|
||||
2. `OPENCLAW_AGENT_RUNTIME=<id>` forces a registered harness with that id for
|
||||
sessions that are not already pinned.
|
||||
3. `OPENCLAW_AGENT_RUNTIME=pi` forces the built-in PI harness.
|
||||
4. `OPENCLAW_AGENT_RUNTIME=auto` asks registered harnesses if they support the
|
||||
resolved provider/model.
|
||||
4. If no registered harness matches, OpenClaw uses PI unless PI fallback is
|
||||
5. If no registered harness matches, OpenClaw uses PI unless PI fallback is
|
||||
disabled.
|
||||
|
||||
Plugin harness failures surface as run failures. In `auto` mode, PI fallback is
|
||||
@@ -100,6 +103,12 @@ provider/model. Once a plugin harness has claimed a run, OpenClaw does not
|
||||
replay that same turn through PI because that can change auth/runtime semantics
|
||||
or duplicate side effects.
|
||||
|
||||
The selected harness id is persisted with the session id after an embedded run.
|
||||
Legacy sessions created before harness pins are treated as PI-pinned once they
|
||||
have transcript history. Use a new/reset session when changing between PI and a
|
||||
native plugin harness. `/status` shows non-default harness ids such as `codex`
|
||||
next to `Fast`; PI stays hidden because it is the default compatibility path.
|
||||
|
||||
The bundled Codex plugin registers `codex` as its harness id. Core treats that
|
||||
as an ordinary plugin harness id; Codex-specific aliases belong in the plugin
|
||||
or operator config, not in the shared runtime selector.
|
||||
|
||||
Reference in New Issue
Block a user