命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
诊断并验证 Claude Code 的安装和设置
/doctor 是 Claude Code 的配置与安装诊断命令。官方文档对其的精确定义为:"Configuration diagnostics: invalid keys, schema errors, installation health"(配置诊断:无效键、schema 错误、安装健康状态)。
执行后会扫描当前环境并输出颜色编码的检查报告,覆盖配置文件合法性、安装完整性、MCP 服务器状态等维度。若 Claude Code 连启动都无法完成,可在系统终端改用等价 CLI 命令 claude doctor。
/doctor
claude doctor
查看报告后按下 f 键,/doctor 会将诊断报告发送给 Claude,由其逐项引导你完成修复。
| 键位 | 作用 |
|---|---|
f | 将当前诊断报告交给 Claude 进行引导式修复 |
官方文档对 /doctor 的范围界定为三类(debug-your-config 页面原文:"Configuration diagnostics: invalid keys, schema errors, installation health"):
| 检查项 | 包含内容 |
|---|---|
| 配置文件合法性 | settings.json 无效键(invalid keys) |
| schema 错误 | 配置项 schema 校验失败(例如 hook 的 matcher 写成 JSON 数组时,/doctor 报 validation failure,该 hook 被丢弃) |
| 安装健康状态 | installation health(安装完整性) |
关于检查报告:官方仅提供上述三类范围定义,未公开
/doctor报告的逐行字段、颜色编码或末尾汇总行格式。社区博客曾描述 ripgrep 可用性、context 占用、环境变量、keybinding 等额外检查项,但这些未见于官方文档,且 context window 各分类占用在官方文档中归属/context命令而非/doctor,请以实际运行输出为准。
/doctor 报告问题后,按 f 键可将诊断报告发送给 Claude 引导修复(官方 debug-your-config 原文:"When /doctor reports issues, press f to send the diagnostic report to Claude and have it walk through fixes with you.")。
/doctor 很少单独使用——官方 debug-your-config 页把它放在一条由浅入深的协作流里:先确认配置"加载了没有",再逐项专项查,最后用净环境隔离定位。当 CLAUDE.md、settings、hook、skill 或 MCP "似乎被忽略"时,按下面顺序往下走:
/context 先确认加载:官方原话是"Run it first"。它列出当前会话占用 context window 的全部内容(system prompt、memory 文件、skills、MCP 工具、对话消息)。先看你的 CLAUDE.md、规则或 skill 描述到底有没有出现——很多"不生效"其实是根本没加载。
专项命令逐类深入(/context 看到某类异常后跟进对应命令):
/doctor 验配置合法性:跑 /doctor 校验配置文件、暴露 invalid keys 与 schema 错误;报告问题后按 f 把诊断交给 Claude 引导修复。再配合 /status 看哪些 settings 来源生效(含 managed settings)。
claude --safe-mode(v2.1.169 起,净配置):官方建议从这里开始净化排查。它启动一个禁用全部定制的会话——CLAUDE.md、skills、plugins、hooks、MCP 服务器、自定义命令与 agent 全部关掉;而认证、模型选择、内置工具、permissions 照常工作。若问题在 safe mode 下消失,说明原因就在被禁的那几类里,再用上面的专项命令逐个定位。注意:组织下发的 managed settings 仍部分生效(policy 配置的 hook、status line 即便 safe mode 也会跑)。
CLAUDE_CONFIG_DIR 全净环境(safe mode 仍复现 / 怀疑 settings 本身时):把 CLAUDE_CONFIG_DIR 指向一个空目录以绕过 ~/.claude 下的一切,并从一个没有 .claude 目录、.mcp.json、CLAUDE.md 的目录启动,使项目级配置也被跳过:
cd /tmp && CLAUDE_CONFIG_DIR=/tmp/claude-clean claude
这个净会话没有任何 user / project 的 settings、hooks、MCP、plugins 或 memory。几点须知:
~/.claude 之外的系统路径);~/.claude 或项目 .claude 文件里——把它们逐个拷回临时目录(或逐步从你的项目启动)即可定位是哪一个;若仍复现:原因在 user/project 配置之外,用 /status 看 managed settings,再排查影响 Claude Code 的环境变量。(以上全节来源:官方 debug-your-config 页"See what loaded into context""Test against a clean configuration"两节,逐字核实。)
官方 debug-your-config 页有一张"Check common causes"表,把大多数"配置惊喜"归到一小撮位置与语法规则。精选与 /doctor 排查最相关的若干条(全部逐字核实自该表):
| 症状 | 原因 | 修复 |
|---|---|---|
| Hook 从不触发 | matcher 写成 JSON 数组而非字符串 | 用单个字符串,以 | 匹配多个工具,如 "Edit|Write"。(数组是 schema 错误:会显示 settings error,/doctor 报 validation failure,该 hook 被丢弃) |
| Hook 从不触发 | 在 v2.1.191 之前用 , 作分隔符 | v2.1.191 起 , 等同 |;更早版本把逗号当字面字符,"Edit,Write" 谁都不匹配。用 |,或升级 Claude Code。 |
| Hook 从不触发 | matcher 值是小写,如 "bash" | 匹配大小写敏感,工具名首字母大写:Bash、Edit、Write、Read。 |
| Hook 从不触发 | hook 定义在独立文件而非 settings.json | project/user 配置没有独立 hooks 文件;hook 放在 settings.json 的 "hooks" 键下。只有 plugin 才加载单独的 hooks/hooks.json。 |
| 全局设的 permissions / hooks / env 被忽略 | 配置写进了 ~/.claude.json | ~/.claude.json 存 app 状态与 UI 开关;permissions、hooks、env 属于 ~/.claude/settings.json。这是两个不同的文件。 |
settings.json 某值看起来被忽略 | 同一键在 settings.local.json 里也设了 | settings.local.json 覆盖 settings.json,二者又都覆盖 ~/.claude/settings.json。 |
Skill 不出现在 /skills | skill 文件放成 .claude/skills/name.md 而非文件夹 | 用文件夹 + 内置 SKILL.md:.claude/skills/name/SKILL.md。 |
子目录 CLAUDE.md 指令看似被忽略 | 子目录文件按需加载而非启动时加载 | 仅当 Claude 用 Read 工具读取该目录下某文件时才加载——不在启动时、也不在该目录写/建文件时。 |
.mcp.json 里的 MCP 服务器从不加载 | 文件放在 .claude/ 下或用了 Claude Desktop 的配置格式 | 项目 MCP 配置放在仓库根的 .mcp.json,不在 .claude/ 里。 |
(来源:官方 debug-your-config 页"Check common causes"表,逐条核实。)
/doctor 属于配置诊断命令族。官方文档在 "Debug your configuration" 页面将以下命令并列介绍:
| 命令 | 职责 |
|---|---|
/doctor | 配置合法性 + 安装健康 + schema 错误 |
/context | 查看 context window 各分类占用详情 |
/mcp | 查看 MCP 服务器连接状态与工具列表 |
/hooks | 列出当前会话已注册的全部 hook |
/status | 查看生效的 settings 来源(含 managed settings) |
/debug [issue] | 开启 debug 日志并让 Claude 分析输出内容 |
/doctor 排除 schema 错误和无效键,再用 /memory / /hooks 等专项命令深入排查/doctor 可快速定位是配置格式问题还是启动失败claude doctor,无需进入交互会话即可获取诊断报告~/.claude.json 与 ~/.claude/settings.json 混淆:/doctor 检查的是 ~/.claude/settings.json(包含 permissions、hooks、env 等)。~/.claude.json 是另一个文件,存放 UI 状态和 app 开关。将 permissions 或 hooks 误写入 ~/.claude.json 时,/doctor 不会报告该文件内容,配置也会静默失效。(来源:官方 debug-your-config 页面"common causes"表格)
Hook matcher 为数组时 /doctor 报 schema 错误:hook 的 matcher 字段必须是用 | 分隔的单个字符串(如 "Edit|Write"),不能是 JSON 数组。数组格式会导致 /doctor 输出 schema 验证失败,该 hook 也会被静默丢弃,不出现在 /hooks 列表中。(来源:官方文档)
改进 /doctor 命令,现在会报告外部管理的启动器
新增修剪 CLAUDE.md 的检查功能
修复了 update 检查的 Homebrew 版本比较逻辑
升级为完整的设置检查工具,可诊断和修复问题
启动时的 "claude command missing or broken" 警告现在出现在 /doctor 中
改进了输出布局,采用平坦树形结构、更清晰的状态图标和高亮命令名。
修复对已移除市场或插件的错误报告
现在在 command hook 缺少 command 字段时显示 exec-form 例子
修复在 daemon pipe key file 被锁定或不可读时的错误输出
修复 MCP schema 错误未显示缺失字段名和源文件路径
修复为已禁用插件报告加载错误的问题,并修复关于优先级更高 scope 覆盖的警告
现在可以在 Claude 响应时打开,而无需等待当前轮次完成
添加警告提示当 MCP 服务器在多个配置作用域中定义时
改进 `/doctor` 布局,添加状态图标,按 `f` 键让 Claude 修复问题
添加 Updates 部分显示自动更新渠道和可用 npm 版本
添加对无法到达的权限规则的检测和警告
现在显示 autoupdater 被禁用的原因
新增 /doctor 命令用于诊断和提供错误消息
/doctor 命令现在可以验证 permission rule 语法并提供修正建议。
增强 /doctor 命令,现在提供 CLAUDE.md 和 MCP 工具上下文用于自助调试。
/doctor 命令现在可以帮助识别和修复无效的设置文件