SuperAPI AI 工具集

omc-doctor

部署与运维

查看项目

更新于 10-15 14:54

技能介绍

用途

omc-doctor 是 oh-my-claudecode(OMC)的安装诊断技能,用于诊断并修复 OMC 的安装问题。它通过一系列检查步骤,判断安装是否完整、是否存在遗留配置或缓存问题,并给出严重(CRITICAL)、警告(WARN)或正常(OK)的诊断结论。

主要能力

该技能按步骤执行以下检查:

  1. 检查插件版本:读取已安装版本与最新版本,判断插件是否未安装、是否过旧、是否存在多个版本导致的过期缓存。
  2. 检查 settings 文件中的遗留 hooks:读取 profile 级与项目级 settings 文件,识别遗留的 Bash hook 注册(如 keyword-detector.sh、persistent-mode.sh、session-start.sh、stop-continuation.sh、silent-auto-update.sh)以及独立的 Node hook 注册(.mjs 文件,历史 .cjs/.js 变体)。
  3. 检查遗留 Bash hook 脚本:列出 hooks 目录下的 .sh 脚本,判断是否为重复内容。
  4. 检查 CLAUDE.md:确认 CLAUDE.md 是否存在、是否包含 OMC 标记(<!-- OMC:START -->)、是否采用文件拆分模式(如 CLAUDE-omc.md),并比对 CLAUDE.md 中的 OMC 版本标记与最新缓存插件版本,检测版本漂移。
  5. 检查 Ralph 运行时前置条件:确认 Node 运行时可用、配置目录可写(用于 .omc/state/ 状态文件如 ralph-state.json)。
  6. 检查过期插件缓存:统计缓存中的版本数量,多于一个时建议清理。
  7. 检查遗留 curl 安装内容:检查通过 curl 安装的遗留 agents、commands、skills(插件系统之前的方式)。

使用方式

该技能以任务形式运行安装诊断,内部通过 Node 脚本、shell 命令与文件读取完成检查。所有 ~/.claude/... 路径在设置 CLAUDE_CONFIG_DIR 环境变量时都会遵循该变量。诊断过程中会输出各步骤的结论,例如:

  • 未安装版本:CRITICAL - 插件未安装
  • 已安装版本不等于最新版本:WARN - 插件过旧
  • 存在多个版本:WARN - 过期缓存
  • 发现重复遗留 hook:CRITICAL - 重复遗留 hook
  • 复合或含义不明的命令提及遗留路径:WARN - 需人工清理,绝不自动删除
  • 插件未启用、不提供该事件或无法验证归属:WARN - 独立 hook 可能处于活动状态或属于用户,不建议删除
  • CLAUDE.md 缺失:CRITICAL - CLAUDE.md 未配置
  • 未找到 OMC 标记:WARN - CLAUDE.md 过旧
  • 缺少 OMC:VERSION 标记:WARN - 无法验证 CLAUDE.md 新鲜度
  • CLAUDE.md 版本与最新缓存插件版本不一致:WARN - 检测到版本漂移(运行 omc update 或 omc setup)
  • Node 缺失或失败:CRITICAL - 没有 Node,OMC hooks 与 Ralph 无法运行
  • 配置目录不可写:WARN - Ralph 状态持久化将失败

归属判定与安全约束

该技能在判定 hook 是否为 OMC 自带内容时,采用严格的验证流程:

  • 解析插件启用状态时遵循运行时优先级:托管与命令行设置(只读)优先,其次是所有适用的项目本地 settings 文件,然后是主工作目录的 ./.claude/settings.json,最后是 ${CLAUDE_CONFIG_DIR:-~/.claude}/settings.json。
  • 支持的 marketplace ID 为 oh-my-claudecode、oh-my-claudecode@omc、oh-my-claudecode@oh-my-claudecode;内联来源(--plugin-dir、--plugin-url、CLAUDE_CODE_PLUGIN_DIRS)需额外满足清单条件后才考虑 oh-my-claudecode@inline。
  • 每个作用域内以 enabledPlugins 为准,仅当 enabledPlugins 未提及任何受支持 OMC ID 时才参考遗留 plugins 字段。
  • 若本地来源冲突、无法确定有效值、文件不可读或格式错误,则视为不确定,不自动移除。
  • 对独立脚本文件,需与 OMC 随附的对应文件名内容进行字节或 SHA-256 比对;仅名称或路径匹配不足以证明归属。
  • 已知 OMC 文件名与事件的映射:keyword-detector→UserPromptSubmit、session-start→SessionStart、session-end→SessionEnd、pre-tool-use→PreToolUse、post-tool-use→PostToolUse、post-tool-use-failure→PostToolUseFailure、persistent-mode/stop-continuation/code-simplifier→Stop。
  • 提供了历史 Bash hook 载荷的 SHA-256 指纹(keyword-detector.sh、persistent-mode.sh、session-start.sh、stop-continuation.sh 各版本),以及额外的历史 keyword-detector.mjs 指纹。
  • silent-auto-update.sh 与历史 .js/.cjs 变体没有可追踪指纹,视为归属不确定,不自动移除。
  • Node hooks 需与活动插件载荷、已验证的保留包以及相邻的 node-hook-fingerprints.json 索引比对。

只有满足“直接命令已验证为 OMC 所有,且活动插件在注册事件下提供该载荷的规范或经专门验证的等效处理器”时,才判定为 CRITICAL 重复遗留 hook。复合或含义不明的命令一律转人工清理,绝不自动删除。

适用场景

  • OMC 安装后出现异常,需要排查安装完整性与配置问题。
  • 怀疑存在遗留 hook、遗留脚本或 curl 安装的旧内容。
  • 需要确认 CLAUDE.md 配置与插件版本是否一致。
  • 需要确认 Ralph 运行时前置条件(Node、可写配置目录)是否满足。
  • 需要检查插件缓存是否过期或存在多版本。

限制

  • 该技能为诊断工具,具体修复动作(如运行 omc update 或 omc setup)需按诊断结论执行。
  • 在无法确认 hook 归属、文件不可读、格式错误或指纹缺失时,不会自动移除,需人工处理。
  • 部分历史载荷(silent-auto-update.sh、历史 .js/.cjs 变体)没有可追踪指纹,归属判定为不确定。
  • 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。