跳转到主要内容
当 Claude 忽略了一条指令或你配置的功能没有出现时,通常是因为文件没有加载、从你预期之外的位置加载,或者被另一个文件覆盖了。本指南展示了如何检查 Claude Code 实际加载了什么,以便你能够缩小范围。 对于安装、身份验证和连接问题,请参阅故障排除安装和登录

查看加载到上下文中的内容

/context 命令显示当前会话中占用上下文窗口的所有内容,按类别分解:系统提示、内存文件、skills、自定义子代理及其加载源、MCP 工具和对话消息。首先运行它来确认你的 CLAUDE.md、规则或 skill 描述是否存在。 对于特定类别的详细信息,请使用专用命令: 如果内存文件在 /memory 中缺失,请根据CLAUDE.md 文件如何加载检查其位置。子目录 CLAUDE.md 文件在 Claude 使用 Read 工具读取该目录中的文件时按需加载,而不是在会话开始时加载。 如果 /memory 确认文件已加载但 Claude 仍然没有遵循特定指令,问题可能在于指令的编写方式,而不是是否加载。CLAUDE.md 适用于你会给新队友的指导类型,例如项目约定、构建命令和文件位置。 当指令足够模糊以至于可以多种方式解释、两个文件给出相互矛盾的方向,或者文件变得足够长以至于单个规则获得较少关注时,遵守度会下降。编写有效的指令涵盖了保持高遵守度的特异性、大小和结构模式。
CLAUDE.md 和权限解决不同的问题。CLAUDE.md 告诉 Claude 你的项目如何工作,以便它做出好的决定。权限hooks无论 Claude 决定什么都强制执行限制。对于”我们在这里这样做”使用 CLAUDE.md。对于安全边界和任何必须永远不会发生的事情,使用权限或 hooks,你需要一个保证而不是指导。

检查已解析的设置

设置在托管、用户、项目和本地范围内合并。当存在时,托管设置总是优先。在其余的中,更接近的范围按本地、项目、用户的顺序覆盖更广泛的范围。某些设置也可以由命令行标志或环境变量设置,它们充当另一个覆盖层。当设置似乎不适用时,你设置的值通常被另一个范围或环境变量覆盖。 运行 /doctor 来检查你的配置和安装。它报告它发现的内容,包括无效的设置文件、重复的安装、未使用的扩展,以及 已检入的 CLAUDE.md 内容 Claude 可以从代码库中推导出来,然后提议仅在你确认后应用的修复。CLAUDE.md 修剪检查需要 Claude Code v2.1.206 或更高版本。在 v2.1.205 之前,/doctor 打开一个只读诊断屏幕,按 f 将报告发送给 Claude 来修复。 从终端,claude doctor 打印只读安装和设置诊断,而不启动会话。 运行 /status 来查看哪些设置源是活跃的,包括是否启用了托管设置。要了解给定键哪个范围优先,请参阅范围如何交互

检查 MCP 服务器

运行 /mcp 来查看每个配置的服务器、其连接状态以及你是否为当前项目批准了它。服务器可以定义正确但仍然不提供工具,原因有几个常见的:
  • .mcp.json 中的项目范围服务器需要一次性批准。如果提示被关闭,服务器将保持禁用状态,直到你从 /mcp 批准它。
  • 启动失败的服务器在 /mcp 中显示为失败。commandargs 中的相对文件路径是一个常见原因,因为它们相对于你启动 Claude Code 的目录而不是 .mcp.json 的位置进行解析。
  • 显示为已连接但列出零个工具的服务器已成功启动但没有返回工具列表。从 /mcp 选择重新连接。如果计数保持为零,运行 claude --debug mcp 来查看服务器的 stderr 输出。
对于配置位置和范围规则,请参阅 MCP

检查 hooks

运行 /hooks 来列出当前会话注册的每个 hook,按事件分组。如果你定义的 hook 没有出现,它没有被读取:hooks 在设置文件中的 "hooks" 键下,而不是在独立文件中。 如果 hook 出现但没有触发,匹配器通常是原因。检查它是否有这些错误:
  • matcher 字段是一个使用 | 来匹配多个工具名称的单个字符串,例如 "Edit|Write", 分隔符是等效的,所以 "Edit,Write" 匹配相同的工具。在 v2.1.191 之前,逗号会进入正则表达式评估,匹配器永远不会匹配,所以如果你不在 v2.1.191 上,请使用 |
  • 拼写错误的工具名称会产生一个不匹配任何内容的匹配器,所以 hook 会无声地失败。
  • 数组值是一个 schema 错误:Claude Code 显示设置错误通知并拒绝整个用户、项目或本地设置文件,claude doctor 报告验证失败,该文件中没有 hook 出现在 /hooks 中。在托管设置中,只有无效条目被删除,文件的其他 hooks 仍然适用。
settings.json 的编辑在短暂的文件稳定延迟后在运行的会话中生效。你不需要重新启动。如果保存后几秒钟 /hooks 仍然显示旧定义,再次运行 /hooks 来刷新视图。 如果 /hooks 显示 hook 但它仍然没有触发,下一步是实时观察 hook 评估。使用 claude --debug hooks 启动会话并触发工具调用。调试日志记录每个事件、检查了哪些匹配器以及 hook 的退出代码和输出。有关日志格式,请参阅调试 hooks,有关常见失败模式,请参阅hooks 故障排除

针对干净配置进行测试

使用 claude --safe-mode 开始,它会启动一个会话,禁用所有自定义,包括 CLAUDE.md、skills、plugins、hooks、MCP 服务器以及自定义命令和代理。身份验证、模型选择、内置工具和权限正常工作。如果问题在安全模式下消失,则其中一个方面是原因;使用上面的针对性检查来找出是哪一个。安全模式仍然应用来自你的组织的托管 hooks 和设置策略。托管 plugins、skills、CLAUDE.md 和 MCP 服务器被关闭。 如果问题在安全模式下仍然存在,或你的设置本身可疑,请与从你的常规设置中不加载任何内容的会话进行比较。将 CLAUDE_CONFIG_DIR 指向一个空目录以绕过 ~/.claude 下的所有内容,并从没有 .claude 文件夹、.mcp.jsonCLAUDE.md 的目录启动,以便也跳过项目配置。
干净会话没有用户或项目设置、hooks、MCP 服务器、plugins 或内存。
  • 如果你的组织部署了托管设置,它们仍然适用,因为它们位于 ~/.claude 之外的系统路径中
  • 在 Linux 和 Windows 上,你将被提示再次登录,因为凭证存储在配置目录下
  • 在 macOS 上,凭证在 Keychain 中,会转移到干净会话
如果问题在这里消失,原因在你的真实 ~/.claude 或项目 .claude 文件中的某处。一次重新引入一个,通过将文件复制到临时目录或从你的项目启动,来找到哪一个。如果它在干净会话中持续存在,原因在你的用户和项目配置之外。运行 /status 来检查是否启用了托管设置,查找影响 Claude Code 的环境变量,然后参阅故障排除

检查常见原因

大多数配置意外可以追溯到一小组位置和语法规则。在假设存在错误之前检查这些: 有关每个配置表面的完整参考,请参阅专用页面: