Install
openclaw skills install openclaw-session-reply-debugDiagnose OpenClaw "message sent but no assistant reply" issues, then safely switch active model references with primary + multi-fallback support, including h...
openclaw skills install openclaw-session-reply-debugUse this skill when OpenClaw shows only agent identity (for example "Orchestrator") or no assistant text after /new or /reset.
{baseDir}/SKILL.md: entry workflow for diagnosing reply failures and model switching.{baseDir}/openclaw-model-connectivity-test.md: mandatory runbook for model connectivity/availability validation.{baseDir}/scripts/switch-model-to-gpt-5.2.js: deterministic model-reference switch script.{baseDir}/scripts/switch-model-with-fallback.js: generic primary + fallback switch script.content is empty.Users do not need to mention the script name. Natural-language requests should be interpreted into primary + fallbacks.
Typical examples:
OpenClaw,为我切换到 gpt-5.4,备用 gpt-5.3 和 gpt-5.2。帮我把主模型设为 gpt-5.4,降级顺序 gpt-5.3 -> gpt-5.2。让 heartbeat 自动探测 gpt-5.4,不可用就切到 gpt-5.3,再不行就 gpt-5.2。如果 gpt-5.4 恢复可用,就自动切回最高模型。Interpretation rule:
gpt-5.4 => --primary gpt-5.4gpt-5.3, gpt-5.2 => repeated --fallbackheartbeat 自动探测 / 自动切回 => reuse OpenClaw heartbeat / cron, do not build a custom daemonFor the example:
OpenClaw,为我切换 gpt-5.4,备用 gpt-5.3、gpt-5.2。
the effective command is:
node {baseDir}/scripts/switch-model-with-fallback.js \
--primary gpt-5.4 \
--fallback gpt-5.3 \
--fallback gpt-5.2 \
--apply
If the user only wants an emergency narrow rollback, the fixed script is still valid:
把 gpt-5.3 回滚到 gpt-5.2session key -> sessionId -> sessionFile.stopReason=error, read errorMessage directly.Known session key:
rg -n '"agent:main:main"' "$HOME/.openclaw/agents/main/sessions/sessions.json" -S
node -e 'const d=require(process.env.HOME+"/.openclaw/agents/main/sessions/sessions.json"); console.log(d["agent:main:main"])'
Unknown session key:
ls -lt "$HOME/.openclaw/agents/main/sessions" | head -n 20
tail -n 80 "$HOME/.openclaw/agents/main/sessions/<candidate>.jsonl"
Session JSONL:
tail -n 120 "$HOME/.openclaw/agents/main/sessions/<session-id>.jsonl"
Look for:
"content":[]"stopReason":"error""errorMessage":"..."Model references:
rg -n "openai/gpt-5\\.3|\"model\"\\s*:\\s*\"gpt-5\\.3\"|\"primary\"\\s*:\\s*\"openai/gpt-5\\.3\"" \
"$HOME/.openclaw/openclaw.json" \
"$HOME/.openclaw/agents/main/sessions/sessions.json" -S
Runtime logs:
rg -n "unknown provider|Unknown provider|api key|embedded run start|agent model" \
"$HOME/.openclaw/logs/gateway.log" \
"$HOME/.openclaw/logs/gateway.err.log" \
"/tmp/openclaw/openclaw-$(date +%F).log" -S
Before applying, read and execute the runbook in {baseDir}/openclaw-model-connectivity-test.md.
Dry run:
node {baseDir}/scripts/switch-model-to-gpt-5.2.js
Apply changes:
node {baseDir}/scripts/switch-model-to-gpt-5.2.js --apply
What this changes:
openai/gpt-5.3 -> openai/gpt-5.2gpt-5.3 -> gpt-5.2 (for keys like model)id/name) untouched to avoid accidental model list corruptionUse the generic script when the user wants a preferred model plus ordered fallback models:
Dry run:
node {baseDir}/scripts/switch-model-with-fallback.js \
--primary gpt-5.4 \
--fallback gpt-5.3 \
--fallback gpt-5.2
Apply:
node {baseDir}/scripts/switch-model-with-fallback.js \
--primary gpt-5.4 \
--fallback gpt-5.3 \
--fallback gpt-5.2 \
--apply
Behavior:
id / nameExample:
gpt-5.2gpt-5.4 available againgpt-5.4Do not write a custom daemon for this workflow. Reuse OpenClaw's built-in heartbeat / cron, and let heartbeat trigger the existing JS script.
Recommended pattern:
wakeMode: "next-heartbeat"Current repo support is the CLI contract, so the stable mapping is:
primary -> --primaryfallbacks[] -> repeated --fallbackprovider -> --providerprobeTimeoutMs -> --probe-timeout-msapply=true -> --applyIf your current OpenClaw cron payload only supports text, pass the parameters by expanding them into the command itself:
node {baseDir}/scripts/switch-model-with-fallback.js \
--primary gpt-5.4 \
--fallback gpt-5.3 \
--fallback gpt-5.2 \
--apply
This is enough to achieve:
gpt-5.4 is unavailablegpt-5.4 once the next heartbeat sees it become available againWhen switching models, this validation is required:
--apply) or the generic fallback script.Send test message to the same session:
openclaw agent \
--session-id <session-id> \
--message "connectivity check: reply OK only" \
--json \
--timeout 120
Success criteria:
0"status":"ok"agentMeta.model is the selected target model (for example gpt-5.4, gpt-5.3, or gpt-5.2)gpt-5.3 -> gpt-5.2 script remains valid.