diagnose-openclaw-model-routing-and-fallback-usage
用于分析 OpenClaw 中“某个 provider/模型为什么看起来没被用上”、主模型与 fallback 实际是否生效、以及 ClaudeCodeCLI 协作任务为何中断。遇到这些情况就应触发:用户提到“没请求打到 local-router”“明明注册了模型却没流量”“Agent 到底在用哪个模型”“fallback 有没有发生”“为什么日志里看不到候选切换”“code 143 / SIGTERM / Exec failed”“需要结合当前配置和日志做严谨归因”。也适用于区分“provider 被调用”与“provider 下某个特定模型被调用”这两类常见混淆。
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/can4hou6joeng4/diagnose-openclaw-model-routing-and-fallback-usage诊断 OpenClaw 的模型路由、fallback 使用情况与 CLI 中断原因
这个技能帮助你把 OpenClaw 的 Agent 配置、provider 注册信息和运行日志串起来,判断“请求到底发到了哪里、为什么某个模型没有被实际使用、fallback 是否真的发生过”,并补充分析 ClaudeCodeCLI 协作执行中断的根因。
When to use this skill
- 当用户怀疑“模型明明配置了,但实际没在跑”,需要区分“已注册可用”与“已绑定到执行链路”。
- 当用户要你结合 OpenClaw 当前配置和日志,判断主模型、fallback 链、provider 命中情况,而不是只做静态配置解读。
- 当用户问“是否所有请求都成功”“有没有进入 fallback”“为什么感觉都在走 GPT / 没走 Claude”。
- 当 OpenClaw 调起 ClaudeCodeCLI 失败,出现
Exec failed、code 143、中途被杀、无 stdout 等现象,需要给出可执行的规避方案。
Steps
-
先区分用户到底在问“provider 没被调用”,还是“provider 下某个模型没被调用”
- 要做什么:先把问题拆成两层再分析:
local-router这个 provider 是否被请求命中local-router/claude-opus-4-6-thinking这个具体模型是否被 Agent 主链或 fallback 链使用
- 为什么:这两件事最容易被混为一谈;provider 有流量,不代表 provider 里的每个模型都有流量。
- 要做什么:先把问题拆成两层再分析:
-
读取当前各 Agent 的主模型配置
- 要做什么:核对
main、coder、writer当前绑定的模型。 - 已验证结论:
main→local-router/gpt-5.4coder→local-router/gpt-5.4writer→local-router/gpt-5.4
- 为什么:用户的体感常来自“回答风格不像预期模型”,而主模型配置是最直接的证据链起点。
- 要做什么:核对
-
读取默认 fallback 链,而不是只看 provider 的 models 列表
- 要做什么:核对
agents.defaults.model的 primary 和 fallbacks。 - 已验证结论:
- primary:
local-router/gpt-5.4 - fallbacks:
aigocode-gpt/gpt-5.4-codexopenai-codex/gpt-5.4local-router/gpt-5.3-codexaigocode-gpt/gpt-5.3-codex
- primary:
- 为什么:模型是否“会自然切到某个候选”,取决于 fallback 链有没有引用它,而不是 provider 是否声明过它可用。
- 要做什么:核对
-
检查目标模型只是“已注册”,还是“已绑定”
- 要做什么:确认
local-router/claude-opus-4-6-thinking所在位置。 - 已验证结论:
- 它存在于
models.providers.local-router.models[] - 但当前没有任何 Agent 主模型引用它
- 默认 fallback 链也没有引用它
- 它存在于
- 为什么:
provider 中存在只表示“可选”,不表示“当前执行链会使用”。
- 要做什么:确认
-
给出第一层诊断结论:为什么用户感觉没请求发到某个模型
- 要做什么:明确输出这类结论:
- 如果用户特指
local-router/claude-opus-4-6-thinking,那“感觉没流量”是正确的 - 因为它当前既不是主模型,也不在默认 fallback 链里
- 如果用户特指
- 为什么:这能把“错觉”变成“配置导致的必然结果”,降低误判。
- 要做什么:明确输出这类结论:
-
同时纠正另一种常见误解:不能把“没打到目标模型”误说成“没打到 provider”
- 要做什么:说明当前主模型本身就是
local-router/gpt-5.4,所以请求确实在打local-routerprovider。 - 已验证线索:
- 日志中大量出现:
OpenClaw fallback model: gpt-5.4 via http://localhost:8317/v1
- 日志中大量出现:
- 为什么:用户往往观察的是模型风格或某个具体模型名,而不是 provider 维度的流量。
- 要做什么:说明当前主模型本身就是
-
补充历史与当前状态的区别,避免把旧日志当成当前事实
- 要做什么:如果系统里有历史上目标模型被调用的痕迹,要明确说明“曾经用过”不等于“现在还在用”。
- 已验证历史线索:
- 曾出现过
requested=local-router/claude-opus-4-6-thinking - 曾出现
candidate_failed... reason=rate_limit - 然后 fallback 到
aigocode-gpt/gpt-5.4-codex
- 曾出现过
- 为什么:日志回看很容易把旧配置时期的调用轨迹误判为当前链路。
-
检查辅助链路,避免只盯主 Agent
- 要做什么:同时看 memory/plugin 等辅助组件的模型。
- 已验证线索:
memos-local-openclaw-plugin的 summarizer 使用claude-sonnet-4-6- endpoint 为
http://localhost:8317/v1
- 为什么:系统可能“用了 local-router”,但用在插件辅助链路,而不是主 Agent;这会影响用户体感。
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-can4hou6joeng4-diagnose-openclaw-model-routing-and-fallback-usage": {
"enabled": true,
"auto_update": true
}
}
}Related Skills
configure-openclaw-anyrouter-model-and-fix-baseurl
用于在 OpenClaw 中新增或覆盖 anyrouter 模型配置、把小肠 Agent 默认模型切到 `anyrouter/claude-opus-4-6`,并结合运行日志判断是不是 `baseUrl`、网关兼容、鉴权或协议端点导致不可用。遇到“把某个供应商模型写进 openclaw.json”“切换默认模型”“为什么配置生效了但实际没调用上”“查看 fallback 日志”“排查 403/500/invalid claude code request”“同步 ClaudeCode 配置”这类需求时,就应启用本技能;即使用户没明确说 OpenClaw,只要描述的是本地 Agent 模型路由切换与调用异常排查,也适用。
diagnose-scheduled-job-trigger-vs-execution-failure
用于排查“定时任务没执行”这类问题,并区分到底是未触发、已触发但执行失败,还是运行环境/授权失效导致的假象。遇到 cron 异常、任务未跑、自动任务失灵、网关重启后要验证恢复、怀疑是模型导致任务失败、需要查看日志作证、需要给出证据口径、要确认 `deactivated_workspace` / OAuth token 失效 / timeout 是否为根因时,都应触发本技能。也适用于“任务其实有 run 记录,但结果是 error”“想确认调度正常还是执行链路坏了”“修复授权后要做回归验证”等场景。
discord-thread-naming-backstop-workflow
用于执行 Discord 线程命名兜底(backstop)巡检与改名,专门处理某个 guild 下指定 parent channel 中“最近新建但未命名规范”的线程,补上 prehook 漏网,而不是批量回扫历史。遇到“线程重命名兜底”“dispatch 线程命名规范”“只检查最近 20 分钟线程”“JSON 污染标题”“长标题截断”“按规则静默改名或告警”“Discord thread-list / channel-edit / channel-info 重试与一致性检查”等场景时就应触发。即使用户没说 backstop,只要意图是低扰动修正新线程标题,也应使用此技能。
debug-prompt-driven-cron-agent-zero-output
用于排查“定时任务成功执行但结果全为 0 / 未检索到样本 / 明明有数据却日报为空”这类问题,尤其适合 Discord、Obsidian、cron、agentTurn、prompt 驱动任务、日整理、复盘脚本、采样漏扫、thread starter 漏计、主频道消息未纳入、Snowflake 字符串比较、时区时间窗边界等场景。只要用户提到“任务跑通了但产物为空”“怀疑不是分类错而是采样漏了”“想确认 prompt job 是否没有固定源码”“想定位检索链路断点”,就应触发此技能。