安全扫描
OpenClaw
安全
high confidence该技能的代码和指令与其声明的目的一致:仅检查和(可选)编辑 OpenClaw 故障转移相关文件(位于用户主目录下)并可以重启网关;不请求外部凭据或尝试网络数据泄漏。
评估建议
该工具似乎做了它声称的:诊断和可选自动修复故障转移配置问题,通过读写 OpenClaw 配置文件和重启网关。运行 `--fix` 或 `--restart` 之前,请先运行 `--dry-run` 预览更改,检查生成的备份,手动审查提议的编辑,以确保与您的路由/覆盖匹配。建议在维护窗口内运行修复,因为网关重启会影响可用性。如果有顾虑,可以打开脚本和相关文件以验证行为——提供的代码中没有网络调用或凭据泄漏的迹象。...详细分析 ▾
✓ 用途与能力
名称/描述与代码和 SKILL.md 的行为一致:通过读写 OpenClaw 配置文件(message-injector、pools.json、session_model_state.json)和创建备份来检测和修复故障转移问题。没有请求无关的凭据或二进制文件。
ℹ 指令范围
SKILL.md 和脚本指示读取和修改 ~/.openclaw 下的文件(openclaw.json、.lib/pools.json、.lib/session_model_state.json 和 message-injector index.ts)。它还支持 --dry-run、--fix 和 --restart。这些操作适用于故障转移修复工具的范围,但注意脚本会读取潜在敏感的配置文件,并在使用 --fix 时写入这些文件(首先创建时间戳备份)。
✓ 安装机制
无安装规格;该技能仅为指令+脚本。没有从外部 URL 下载内容,也没有安装新二进制文件。
✓ 凭证需求
该技能不请求环境变量或外部凭据。它在 ~/.openclaw 内操作配置文件,这对于一个修复网关/会话配置的工具是合适的。访问这些文件对于其声明的目的是必要的。
✓ 持久化与权限
该技能不是始终运行的,也不请求提升的平台权限。它修改 OpenClaw 配置/扩展文件(message-injector、pools/会话状态)并在其工作空间区域写入备份;这对于一个修复工具是预期的。默认允许自主调用,但这是平台规范,不是这里的独特关注点。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/3/5
Model Failover Doctor 技能的初始发布:- 诊断和修复 OpenClaw '所有模型失败' 错误。- 提供明确的触发条件(例如,跨提供商的相同模型 ID 失败,重启后消息失败,手动编辑错误)。- 支持仅诊断、自动修复(含网关重启)和干运行预览模式。- 包含常见问题的根因快速参考表和自动修复可用性。- 详细描述最常见的根因(MI-1)和其解决方案。- 确保所有自动修复都备份以确保安全和手动恢复。
● 可疑
安装命令 点击复制
官方npx clawhub@latest install model-failover-doctor
镜像加速npx clawhub@latest install model-failover-doctor --registry https://cn.clawhub-mirror.com
技能文档
诊断和修复 OpenClaw '所有模型失败' 错误的专用工具。
触发条件
遇到以下任何一种情况时,调用此工具:- 日志或用户报告
All models failed (N),且 N 个 provider 的错误信息中模型 ID 全部相同
kimi-coding/k2p5: No available channel for model openai/gpt-5.3-codex ← 提供商和模型不匹配
- agent 重启后第一条消息必然失败,但后续消息正常(冷启动会话无 fallbackChain)
- pools.json 或 session_model_state.json 手动编辑后 agent 开始报 503 model_not_found
诊断命令
# 仅诊断,不修改任何文件
python3 ~/.openclaw/workspace/skills/model-failover-doctor/model_failover_doctor.py
# 诊断 + 自动修复 + 重启网关
python3 ~/.openclaw/workspace/skills/model-failover-doctor/model_failover_doctor.py --fix --restart
# 预览将要修改的内容(不实际写入)
python3 ~/.openclaw/workspace/skills/model-failover-doctor/model_failover_doctor.py --dry-run
根因速查表
| 症状 | 代码 | 严重 | 自动修复 |
|---|---|---|---|
| 所有 fallback 的模型 ID 相同(提供商已切换但模型没变) | MI-1 | 🔴 | ✅ |
| 同一死亡模型被不同会话/子代理反复踩坑 | MI-2 | 🟡 | ❌ 需手动 |
| pools.json 中引用了不存在的提供商 | P-1 | 🔴 | ✅ |
| 会话无 fallbackChain,运行时回退永远无法推进 | S-1 | 🔴 | ✅ |
| 会话回退链包含无效提供商前缀 | S-2 | 🔴 | ✅ |
message-injector 的 before_agent_start 无条件返回:
return { modelOverride, providerOverride, ... }
后果:网关尝试每个回退时都携带相同的 modelOverride,导致 kimi-coding、zai、minimax 等收到了错误的模型 ID。
修复:包装在 lockModel 条件中,正常路由只依赖 sessions.patch:
return { ...(lockModel ? { modelOverride, providerOverride } : {}), ... }
备份说明
所有自动修复操作会在~/.openclaw/workspace/.lib/.mfd_backups/ 创建时间戳备份,
可随时手动恢复。数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制