You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,6 +16,7 @@ Docs: https://docs.openclaw.ai
16
16
17
17
### Fixes
18
18
19
+
- Status: show the configured default, session-selected model, reason, clear hint, and docs link when a session remains pinned to a model that differs from `agents.defaults.model.primary`.
19
20
- Mac app: keep local packaging signed with a stable app identity for permission testing and fix Control UI production builds under current Vite/Highlight.js exports.
20
21
- macOS app: update the embedded Peekaboo bridge to 3.2.1 so OpenClaw-hosted UI automation works with current Peekaboo CLI capture flows.
21
22
- Cron: deliver preferred final assistant output for successful scheduled runs when trailing plain tool warnings remain in diagnostics instead of marking the run failed.
Copy file name to clipboardExpand all lines: docs/cli/status.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,6 +26,7 @@ Notes:
26
26
- When the current session snapshot is sparse, `/status` can backfill token and cache counters from the most recent transcript usage log. Existing nonzero live values still win over transcript fallback values.
27
27
-`/status` includes compact Gateway process uptime and host system uptime.
28
28
- Transcript fallback can also recover the active runtime model label when the live session entry is missing it. If that transcript model differs from the selected model, status resolves the context window against the recovered runtime model instead of the selected one.
29
+
- When a session is pinned to a model that differs from the configured primary, status prints both values, the reason (`session override`), and the clear hint (`/model <configured-default>` or `/reset`). The configured primary applies to new or unpinned sessions; existing pinned sessions keep their session selection until cleared.
29
30
- For prompt-size accounting, transcript fallback prefers the larger prompt-oriented total when session metadata is missing or smaller, so custom-provider sessions do not collapse to `0` token displays.
30
31
- Output includes per-agent session stores when multiple agents are configured.
31
32
- Overview includes Gateway + node host service install/runtime status when available.
Copy file name to clipboardExpand all lines: docs/concepts/models.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,6 +61,7 @@ The same `provider/model` can mean different things depending on where it came f
61
61
- Configured defaults (`agents.defaults.model.primary` and agent-specific primaries) are the normal starting point and use `agents.defaults.model.fallbacks`.
62
62
- Auto fallback selections are temporary recovery state. They are stored with `modelOverrideSource: "auto"` so later turns can keep using the fallback chain without probing a known-bad primary every time; OpenClaw periodically probes the original primary again, clears the auto selection when it recovers, and announces fallback/recovery transitions once per state change.
63
63
- User session selections are exact. `/model`, the model picker, `session_status(model=...)`, and `sessions.patch` store `modelOverrideSource: "user"`; if that selected provider/model is unreachable, OpenClaw fails visibly instead of falling through to another configured model.
64
+
- Changing `agents.defaults.model.primary` does not rewrite existing session selections. If status says `This session is pinned to X; config primary Y will apply to new/unpinned sessions.`, switch the current session with `/model Y` or clear stale session state with `/reset`.
64
65
- Cron `--model` / payload `model` is a per-job primary. It still uses configured fallbacks unless the job supplies explicit payload `fallbacks` (use `fallbacks: []` for a strict cron run).
65
66
- CLI default-model and allowlist pickers respect `models.mode: "replace"` by listing explicit `models.providers.*.models` instead of loading the full built-in catalog.
66
67
- The Control UI model picker asks the Gateway for its configured model view: `agents.defaults.models` when present, including provider-wide `provider/*` entries, otherwise explicit `models.providers.*.models` plus providers with usable auth. The full built-in catalog is reserved for explicit browse views such as `models.list` with `view: "all"` or `openclaw models list --all`.
it("shows configured default and selected session model when they differ",()=>{
139
+
constlines=buildStatusModelSelectionLines({
140
+
recent: [
141
+
{
142
+
key: "agent:main:telegram:chat-1",
143
+
kind: "direct",
144
+
updatedAt: 1,
145
+
age: 5_000,
146
+
model: "deepseek-v4-flash",
147
+
configuredModel: "zhipu/glm-4.5-air",
148
+
selectedModel: "deepseek/deepseek-v4-flash",
149
+
modelSelectionReason: "session override",
150
+
runtime: "OpenClaw Pi Default",
151
+
totalTokens: null,
152
+
totalTokensFresh: false,
153
+
remainingTokens: null,
154
+
percentUsed: null,
155
+
contextTokens: null,
156
+
flags: [],
157
+
},
158
+
],
159
+
shortenText: (value)=>value,
160
+
warn: (value)=>`warn(${value})`,
161
+
muted: (value)=>`muted(${value})`,
162
+
});
163
+
164
+
expect(lines).toEqual([
165
+
"warn(Session agent:main:telegram:chat-1 is pinned to deepseek/deepseek-v4-flash; config primary zhipu/glm-4.5-air will apply to new/unpinned sessions.)",
166
+
" Configured default: zhipu/glm-4.5-air",
167
+
" Session selected: deepseek/deepseek-v4-flash",
168
+
" Reason: session override",
169
+
" Clear with: /model zhipu/glm-4.5-air or /reset",
0 commit comments