目录

OpenClaw 运维日记:一次 Doctor 健康检查与 13 个问题修复实战

从会话卡死到系统恢复——oc-engineer 完整排障全流程记录

楔子:会话 c3b17066 在 11:22 因 sensenova 429 卡死 44 分钟,触发全面体检。从诊断到修复完成,oc-engineer 共处理了 13 个 Doctor 警告,最终将系统从"蓝色隐患"恢复到"健康"状态。


一、事故的起点:一个卡死的会话

今天早上的导火索是一个被卡住的会话。

用户访问 http://127.0.0.1:18789/chat/oc-engineer/c3b17066 时,发现页面一直停留在「处理中…」。日志显示,这个会话在 11:22:58 因 sensenova/deepseek-v4-flash 触发 429 速率限制inference tpm exhausted)而 abort——用户发了一个 ,模型连续重试 3 次全部 429,session 就卡死了。

但真正的问题不止这一个。

深入排查后发现两个更深层的症状:

症状详情
sensenova 429今日 5 次 429,最后一次 11:22:41
sapiens 间歇性 401284 次请求中 54 次失败(19%),但 API key 本身有效,总是成对出现后自动恢复

关键洞察:sapiens 的 401 不是 key 失效——直接 curl 测试永远 200。它更像是 OpenClaw 连接池管理或 sapiens 服务端的间歇性认证挑战,~5-10 秒后自动恢复。

处理完卡死会话后,oc-engineer 决定做一次系统性健康检查,于是 openclaw doctor 被频繁调用,逐步揭示了更多潜在问题。

OpenClaw Doctor 诊断流程图:会话卡死触发 → 全面健康检查 → 发现13个问题 → 逐一修复 → 最终验证

二、Doctor 诊断:发现 13 个预警

openclaw doctor 是 OpenClaw 内置的健康检查工具,它会扫描配置、插件、Skills、工具引用等多个维度,输出警告和建议。

今天的诊断结果按严重程度分成了几个梯队:

🟢 已知不改(设计决策)

#问题结论
1Node 版本差异(service 用 /usr/bin/node不影响启动,不改
2Gateway bind loopback本机使用无需改动
3Chief-yuntian exec 权限内部信任 agent,有 workspace 隔离

🟡 需要处理(本次修复)

#问题影响
6未知 provider (nvidia-glm5, nvidia-kimi2-5)配置残留,可能引起运行时错误
7Skill Workshop 缺失工具chief-yuntian 和 oc-engineer 无法用 skill_workshop
8kb-writer bootstrap 截断AGENTS.md + MEMORY.md 共 92K,超过默认 48K 限制
9Cron 任务认证过期4 个 cron 任务使用 legacy sender-policy
10Feishu 工具未知条目8 个 agent 引用了已废弃的飞书工具名
11view_image 工具不可用3 个 agent 的 allowlist 包含不支持的工具
12Skill 优先级冲突~40 条 collision 日志,workspace 有重复 skill
13Skill 缺少 descriptionqmd-index-vault/SKILL.md 缺少 frontmatter

需关注(长期跟踪)

  • 没有备份No successful backup is recorded
  • 258 个孤立 agent 目录:历史遗留,不影响运行但占用磁盘
  • Memory Dreaming Promotion cron 曾 stuck:已自动恢复

三、修复全过程

修复 1:清理未知 provider 引用

根因models.providers.nvidia 只声明了 minimaxai/minimax-m2.5,但别名引用了不存在的 model id z-ai/glm5moonshotai/kimi-k2.5

# 从 agents.defaults.models 中删除
- nvidia-glm5/z-ai/glm5  {"alias": "nvapi-glm5"}
- nvidia-kimi2-5/moonshotai/kimi-k2.5  {"alias": "nvapi-kimi2.5"}

# 从 agents.defaults.modelPolicy.allow 中删除
- nvidia-glm5/z-ai/glm5
- nvidia-kimi2-5/moonshotai/kimi-k2.5

验证:grep -c "nvidia-glm5\|nvidia-kimi2-5" ~/.openclaw/openclaw.json 返回 0 ✅

修复 2:补全 Skill Workshop 工具权限

根因:doctor 要求 chief-yuntian 和 oc-engineer 的 tools profile 包含 skill_workshop

# 添加到 agents.entries.chief-yuntian.tools.alsoAllow
- "skill_workshop"

# 添加到 agents.entries.oc-engineer.tools.alsoAllow
- "skill_workshop"

修复 3:调大 kb-writer bootstrap 限制

根因:kb-writer 的 AGENTS.md (49K) + MEMORY.md (43K) = 92K raw,超过默认 48K 限制,导致部分指令被截断。

# 在 agents.entries.kb-writer 中添加
bootstrapMaxChars: 50000
bootstrapTotalMaxChars: 100000

修复 4:重新授权 Cron 任务

根因:6 个 cron 任务使用 legacy sender-policy resolution,存储的 account authority 不可验证。

# 重新授权 4 个主要 cron 任务
openclaw automations edit 6716c207... --tools "exec,process,sessions_list,sessions_history,write,read"
openclaw automations edit 539deef8... --tools "exec,process,sessions_list,sessions_history,write,read"
openclaw automations edit 41893b79... --tools "exec,process"
openclaw automations edit e776a515... --tools "exec,process"

修复 5:清理飞书工具残留引用

根因:配置中引用了不存在的 feishu 工具名(旧版插件的工具名,当前插件已不提供)。

从以下 8 个 agent 的 tools.allow/alsoAllow 中移除了 6 个无效工具:

移除的工具说明
feishu_calendar_calendar旧版日历工具
feishu_oauth旧版 OAuth 工具
feishu_sheet旧版表格工具
feishu_task_task旧版任务工具
feishu_task_agent旧版任务代理工具
feishu_task_attachment旧版任务附件工具

涉及 agent:main, chief-yuntian, oc-engineer, editor-yuntianyue, scout-yuntianhuo, marketing-content-creator, pub-yuntianxing, debt-rebirth-oklife

修复 6:移除 view_image 工具引用

根因:当前 runtime/provider/model 不支持 view_image 工具,但某些 agent 的 allowlist 中仍包含。

从以下 agent 的 tools.alsoAllow 中移除 view_image

  • agents-orchestrator
  • design-yuntianguang
  • search-scout-yuntianyan

修复 7:清理 Skill 优先级冲突

根因:同一 skill 在多个目录存在(workspace/skills vs managed/skills vs bundled/skills),导致 precedence collision。

# 删除 7 个与 managed 版本相同的 workspace skill 副本
rm -rf ~/.openclaw/workspace/skills/{agent-browser-clawdbot,bb-browser,humanizer,
  openclaw-feishu-channel-rules,openclaw-feishu-fetch-doc,openclaw-feishu-update-doc,
  skill-creator}

# 保留 browser-use(.agents/skills 版本与 managed 不同)
# 保留 1password, apple-notes, coding-agent, gog 的 managed 版本(与 bundled 不同)

修复 8:修复 qmd-index-vault 缺少 frontmatter

根因:SKILL.md 缺少 YAML frontmatter,导致 gateway 跳过加载。

---
name: qmd-index-vault
description: 对 Obsidian vault 库进行 qmd 索引的创建、刷新、验证和清理。这是 oc-engineer 的本职工作,直接执行,不委派给其他 agent。
---

四、问题跟踪文档的诞生

这次排障过程中,oc-engineer 创建了一份现存非阻断问题清单2026-09-02-现存非阻断问题清单.md),将所有已知问题按状态分类归档:

分类数量用途
🟢 已解决8 个不再跟踪,变更记录
🟡 观察中5 个暂不处理,等触发条件
📌 待处理2 个低优先级,用到再处理

这份文档的核心价值在于:避免重复讨论已归档问题,变更前后查阅即可

问题跟踪文档结构示意图:三类问题分层管理

五、最终状态验证

所有修复完成后,执行 openclaw doctoropenclaw config validate 验证:

项目
OpenClaw 版本2026.8.2 (0965053)
Gateway PID136232 (active, running)
插件数量62/82 enabled
飞书通道5/5 connected, works ✅
配置 validate通过
Doctor 警告仅剩 #4 GitHub token、#5 Browser Relay(低优先级)
Skill 冲突已清理 7 个重复 skill
Feishu 工具引用已清理 8 个 agent 的无效引用
bootstrap 截断已调大限制

健康等级:从"蓝色隐患"恢复到"健康"。


六、经验教训

1. 配置清理优先级

高优先级:未知 provider/model 引用 → 可能引起运行时错误
高优先级:Bootstrap 限制问题 → 影响 agent 上下文完整性
中优先级:Cron 任务认证 → 累积过期会影响定时任务
低优先级:工具引用残留 → 不影响运行但增加噪声

2. Doctor 是运维最佳入口

# 健康检查与配置验证
openclaw doctor
openclaw config validate

# Cron 任务管理
openclaw automations show <id>
openclaw automations edit <id> --tools "..."

3. 修改配置的三步法

# ① 修改前先备份
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.pre-xxx

# ② 修改后验证
openclaw config validate

# ③ 重大变更记录到问题清单

4. Skill 冲突的根因与预防

同一 skill 在多个目录存在是冲突的根因。预防方法:

  • ~/.openclaw/skills/(managed)是权威来源
  • ~/.openclaw/workspace/skills/ 是用户自定义覆盖层,仅在需要修改时使用
  • ~/.nvm/.../skills/(bundled)是插件自带的,一般不动

5. 会话卡死的应急处理

# 查看卡住的会话
openclaw sessions list --agent oc-engineer

# 强制 reset(需要 --yes)
openclaw sessions delete <session-key> --yes

# 重启 Gateway(最后手段)
systemctl --user restart openclaw-gateway

七、附录:今天的 timeline

时间事件
09:48Gateway 重启恢复 c3b17066 会话
10:32用户问"这个会话出了什么问题"
11:07诊断完成:sensenova 429 + sapiens 401
11:22c3b17066 再次 abort(429)
12:00开始第一轮 Doctor 诊断
13:00修复问题 6-9(provider/Workshop/bootstrap/cron)
13:20修复问题 10-13(feishu/view_image/skill 冲突)
13:27追加 GitHub token 和 Browser Relay 待处理记录
13:30系统恢复健康,写博客归档

参考来源



FAQ

Q: openclaw doctor 具体检查哪些内容? A: openclaw doctor 会扫描配置、插件、Skills、工具引用等多个维度,输出警告和建议。建议定期运行以维护系统健康。

Q: Skill 优先级冲突怎么解决? A: 冲突通常由同一 skill 在多个目录存在导致(workspace/skills vs managed/skills vs bundled/skills)。解决方法是对比 md5 哈希,删除重复版本,保留权威来源(managed/skills)。

Q: kb-writer bootstrap 截断是什么问题? A: kb-writer 的 AGENTS.md + MEMORY.md 总大小超过默认 48K 限制时,部分指令会被截断。解决方法是在 agent 配置中调大 bootstrapMaxCharsbootstrapTotalMaxChars

Q: 如何处理卡死的会话? A: 使用 openclaw sessions list --agent <name> 查看状态,然后 openclaw sessions delete <session-key> --yes 强制清除。最后可重启 Gateway。

关联阅读

  • [[OpenClaw 运维日记:一次 Doctor 健康检查与 13 个问题修复实战]]
  • [[2026-05-15 2026-5-12升级后doctor超时排查与agent-ops配置修复]]
  • [[2026-06-04 1834全面自检与残留问题诊断]]
  • [[kb-writer模式D-blog-pipeline升级踩坑记录]]