8 8
9当 Claude 忽略了一条指令或你配置的功能没有出现时,通常是因为文件没有加载、从你预期之外的位置加载,或者被另一个文件覆盖了。本指南展示了如何检查 Claude Code 实际加载了什么,以便你能够缩小范围。9当 Claude 忽略了一条指令或你配置的功能没有出现时,通常是因为文件没有加载、从你预期之外的位置加载,或者被另一个文件覆盖了。本指南展示了如何检查 Claude Code 实际加载了什么,以便你能够缩小范围。
10 10
11对于安装、身份验证和连接问题,请参阅[故障排除安装和登录](/docs/zh-CN/troubleshoot-install)。11对于安装、身份验证和连接问题,请参阅[故障排除安装和登录](/docs/zh-CN/troubleshoot-install.md)。
12 12
13## 查看加载到上下文中的内容13## 查看加载到上下文中的内容
14 14
15`/context` 命令会显示当前会话中占用上下文窗口的所有内容,并按类别细分:系统提示词、系统工具、MCP 工具、自定义子代理(及其各自的加载来源)、记忆文件、skill 以及对话消息。请首先运行此命令,以确认您的 `CLAUDE.md`、规则或 skill 描述是否已加载。`/context` 中的 skill 部分还包括 [随附 skill](/docs/zh-CN/skills#bundled-skills),而 `/skills` 不会列出这些内容。15`/context` 命令会显示当前会话中占用上下文窗口的所有内容,并按类别细分:系统提示词、系统工具、MCP 工具、自定义子代理(及其各自的加载来源)、记忆文件、skill 以及对话消息。请首先运行此命令,以确认您的 `CLAUDE.md`、规则或 skill 描述是否已加载。`/context` 中的 skill 部分还包括 [随附 skill](/docs/zh-CN/skills.md#bundled-skills),而 `/skills` 不会列出这些内容。
16 16
17如需查看特定类别的详细信息,请继续使用相应的专用命令:17如需查看特定类别的详细信息,请继续使用相应的专用命令:
18 18
23| `/hooks` | 当前生效的 hook 配置 |23| `/hooks` | 当前生效的 hook 配置 |
24| `/mcp` | 已连接的 MCP 服务器及其状态 |24| `/mcp` | 已连接的 MCP 服务器及其状态 |
25| `/permissions` | 当前生效的已解析允许和拒绝规则 |25| `/permissions` | 当前生效的已解析允许和拒绝规则 |
26| `/doctor` | 设置检查:安装健康状况、无效的设置文件、未使用的扩展、同一目录中重复的[子代理](/docs/zh-CN/sub-agents)名称,以及已签入的、Claude 可以从代码库中推导出的 `CLAUDE.md` 内容,并提供建议的修复方案 |26| `/doctor` | 设置检查:安装健康状况、无效的设置文件、未使用的扩展、同一目录中重复的[子代理](/docs/zh-CN/sub-agents.md)名称,以及已签入的、Claude 可以从代码库中推导出的 `CLAUDE.md` 内容,并提供建议的修复方案 |
27| `/debug [issue]` | 为会话启用调试日志,并提示 Claude 利用日志输出和设置路径进行诊断 |27| `/debug [issue]` | 为会话启用调试日志,并提示 Claude 利用日志输出和设置路径进行诊断 |
28| `/status` | 当前生效的设置来源,包括托管设置是否生效 |28| `/status` | 当前生效的设置来源,包括托管设置是否生效 |
29 29
30如果某个记忆文件未出现在 `/context` 的细分列表中,请对照[CLAUDE.md 文件的加载方式](/docs/zh-CN/memory#how-claude-md-files-load)检查其位置。子目录中的 `CLAUDE.md` 文件是按需加载的,而不是在会话开始时加载,因此它们不会出现在该细分列表中。30如果某个记忆文件未出现在 `/context` 的细分列表中,请对照[CLAUDE.md 文件的加载方式](/docs/zh-CN/memory.md#how-claude-md-files-load)检查其位置。子目录中的 `CLAUDE.md` 文件是按需加载的,而不是在会话开始时加载,因此它们不会出现在该细分列表中。
31 31
32如果 `/context` 确认文件已加载,但 Claude 仍未遵循某条特定指令,那么问题很可能在于指令的编写方式,而非是否已加载。CLAUDE.md 非常适合用于提供您会给新团队成员的那类指导,例如项目约定、构建命令以及文件应放置的位置。32如果 `/context` 确认文件已加载,但 Claude 仍未遵循某条特定指令,那么问题很可能在于指令的编写方式,而非是否已加载。CLAUDE.md 非常适合用于提供您会给新团队成员的那类指导,例如项目约定、构建命令以及文件应放置的位置。
33 33
34当指令含糊到可以有多种理解方式、两个文件给出相互冲突的指示,或者文件变得过长以致单条规则得到的关注减少时,遵循度就会下降。[编写有效的指令](/docs/zh-CN/memory#write-effective-instructions)介绍了有助于保持高遵循度的具体性、篇幅和结构模式。34当指令含糊到可以有多种理解方式、两个文件给出相互冲突的指示,或者文件变得过长以致单条规则得到的关注减少时,遵循度就会下降。[编写有效的指令](/docs/zh-CN/memory.md#write-effective-instructions)介绍了有助于保持高遵循度的具体性、篇幅和结构模式。
35 35
36> [!NOTE]36> [!NOTE]
37>37>
38> CLAUDE.md 和权限解决的是不同的问题。CLAUDE.md 告诉 Claude 您的项目如何运作,以便其做出良好的决策。[权限](/docs/zh-CN/permissions)和 [hook](/docs/zh-CN/hooks) 则无论 Claude 做出何种决定都会强制执行限制。请将 CLAUDE.md 用于"我们这里是这样做的"这类内容。对于安全边界以及任何绝不能发生的事情,即您需要的是保证而非指导的情况,请使用权限或 hook。38> CLAUDE.md 和权限解决的是不同的问题。CLAUDE.md 告诉 Claude 您的项目如何运作,以便其做出良好的决策。[权限](/docs/zh-CN/permissions.md)和 [hook](/docs/zh-CN/hooks.md) 则无论 Claude 做出何种决定都会强制执行限制。请将 CLAUDE.md 用于"我们这里是这样做的"这类内容。对于安全边界以及任何绝不能发生的事情,即您需要的是保证而非指导的情况,请使用权限或 hook。
39 39
40## 检查已解析的设置40## 检查已解析的设置
41 41
42设置在托管、用户、项目和本地范围内合并。当存在时,托管设置总是优先。在其余的中,更接近的范围按本地、项目、用户的顺序覆盖更广泛的范围。某些设置也可以由命令行标志或[环境变量](/docs/zh-CN/env-vars)设置,它们充当另一个覆盖层。当设置似乎不适用时,你设置的值通常被另一个范围或环境变量覆盖。42设置在托管、用户、项目和本地范围内合并。当存在时,托管设置总是优先。在其余的中,更接近的范围按本地、项目、用户的顺序覆盖更广泛的范围。某些设置也可以由命令行标志或[环境变量](/docs/zh-CN/env-vars.md)设置,它们充当另一个覆盖层。当设置似乎不适用时,你设置的值通常被另一个范围或环境变量覆盖。
43 43
44要查找无效的设置文件,请从终端运行 `claude doctor`。它打印只读安装和设置诊断,而不启动会话。要进行完整检查,同时提议修复并在应用前询问,请在会话内运行 [`/doctor`](/docs/zh-CN/commands#all-commands)。44要查找无效的设置文件,请从终端运行 `claude doctor`。它打印只读安装和设置诊断,而不启动会话。要进行完整检查,同时提议修复并在应用前询问,请在会话内运行 [`/doctor`](/docs/zh-CN/commands#all-commands)。
45 45
46运行 `/status` 来查看哪些设置源是活跃的,包括是否启用了托管设置。要了解 Claude Code 对给定键使用哪个范围,请参阅[设置优先级](/docs/zh-CN/settings#settings-precedence)。46运行 `/status` 来查看哪些设置源是活跃的,包括是否启用了托管设置。要了解 Claude Code 对给定键使用哪个范围,请参阅[设置优先级](/docs/zh-CN/settings.md#settings-precedence)。
47 47
48## 检查 MCP 服务器48## 检查 MCP 服务器
49 49
53* 启动失败的服务器在 `/mcp` 中显示为失败。`command` 或 `args` 中的相对文件路径是一个常见原因,因为它们相对于你启动 Claude Code 的目录而不是 `.mcp.json` 的位置进行解析。53* 启动失败的服务器在 `/mcp` 中显示为失败。`command` 或 `args` 中的相对文件路径是一个常见原因,因为它们相对于你启动 Claude Code 的目录而不是 `.mcp.json` 的位置进行解析。
54* 显示为已连接但列出零个工具的服务器已成功启动但没有返回工具列表。从 `/mcp` 选择**重新连接**。如果计数保持为零,运行 `claude --debug=mcp` 并在 `~/.claude/debug/<session-id>.txt` 的调试日志中读取服务器的 stderr。54* 显示为已连接但列出零个工具的服务器已成功启动但没有返回工具列表。从 `/mcp` 选择**重新连接**。如果计数保持为零,运行 `claude --debug=mcp` 并在 `~/.claude/debug/<session-id>.txt` 的调试日志中读取服务器的 stderr。
55 55
56对于配置位置和范围规则,请参阅 [MCP](/docs/zh-CN/mcp)。56对于配置位置和范围规则,请参阅 [MCP](/docs/zh-CN/mcp.md)。
57 57
58## 检查 hook58## 检查 hook
59 59
60运行 `/hooks` 来列出当前会话注册的每个 hook,按事件分组。如果您定义的 hook 没有出现,说明 Claude Code 没有加载它。请检查以下原因:60运行 `/hooks` 来列出当前会话注册的每个 hook,按事件分组。如果您定义的 hook 没有出现,说明 Claude Code 没有加载它。请检查以下原因:
61 61
62* 该 hook 定义在独立文件中。hook 应位于[设置文件](/docs/zh-CN/settings#settings-files)中的 `"hooks"` 键下。62* 该 hook 定义在独立文件中。hook 应位于[设置文件](/docs/zh-CN/settings.md#settings-files)中的 `"hooks"` 键下。
63* `matcher` 值是数组而不是单个字符串。在您启动交互式会话时以及在 `claude doctor` 中,Claude Code 会将该条目列为无效设置。如果该数组位于 `PreToolUse` 或 `PermissionRequest` 下,该文件中的其他 hook 也都不会加载。63* `matcher` 值是数组而不是单个字符串。在您启动交互式会话时以及在 `claude doctor` 中,Claude Code 会将该条目列为无效设置。如果该数组位于 `PreToolUse` 或 `PermissionRequest` 下,该文件中的其他 hook 也都不会加载。
64* 该 hook 位于某个 skill 的 frontmatter 中,而在本次会话中您和 Claude 都尚未调用该 skill。请调用它或让 Claude 调用它,然后再次运行 `/hooks`。如果该 hook 仍未出现,请检查其他原因,例如[未能解析的 frontmatter](/docs/zh-CN/skills.md#skill-not-triggering) 或某项 [skill hook 的限制](/docs/zh-CN/hooks.md#limits-on-skill-hooks)。
64 65
65如果 hook 出现但没有触发,匹配器通常是原因。检查它是否有这些错误:66如果 hook 出现但没有触发,匹配器通常是原因。检查它是否有这些错误:
66 67
71 72
72如果保存后几秒钟 `/hooks` 仍然显示旧定义,再次运行 `/hooks` 来刷新视图。73如果保存后几秒钟 `/hooks` 仍然显示旧定义,再次运行 `/hooks` 来刷新视图。
73 74
74如果 `/hooks` 显示 hook 但它仍然没有触发,下一步是实时观察 hook 评估。使用 `claude --debug` 启动会话并触发工具调用。调试日志记录每个事件、检查了哪些匹配器以及 hook 的退出码和输出。有关日志格式,请参阅[调试 hook](/docs/zh-CN/hooks#debug-hooks),有关常见失败模式,请参阅[hook 故障排除](/docs/zh-CN/hooks-guide#limitations-and-troubleshooting)。75如果 `/hooks` 显示 hook 但它仍然没有触发,下一步是实时观察 hook 评估。使用 `claude --debug` 启动会话并触发工具调用。调试日志记录每个事件、检查了哪些匹配器以及 hook 的退出码和输出。有关日志格式,请参阅[调试 hook](/docs/zh-CN/hooks.md#debug-hooks),有关常见失败模式,请参阅[hook 故障排除](/docs/zh-CN/hooks-guide.md#limitations-and-troubleshooting)。
75 76
76## 针对干净配置进行测试77## 针对干净配置进行测试
77 78
128claude --setting-sources user129claude --setting-sources user
129```130```
130 131
131首次启动时,您会再次经历首次运行设置屏幕,这表明干净配置目录已生效。托管设置仍然适用;如果您使用 claude.ai 账户登录,[连接器](/docs/zh-CN/mcp#use-mcp-servers-from-claude-ai)仍会加载。132首次启动时,您会再次经历首次运行设置屏幕,这表明干净配置目录已生效。托管设置仍然适用;如果您使用 claude.ai 账户登录,[连接器](/docs/zh-CN/mcp.md#use-mcp-servers-from-claude-ai)仍会加载。
132 133
133**3. 重现问题**134**3. 重现问题**
134 135
135在干净会话中重复触发问题的操作:136在干净会话中重复触发问题的操作:
136 137
137* **问题消失**:原因在您的用户或项目配置中。将 `~/.claude.json` 和 `~/.claude` 中的文件逐个复制到 `~/claude-clean/config`。如果没有任何文件使问题重新出现,请在同一个 shell 中进入您的项目目录,并在不带 `--setting-sources user` 的情况下启动 Claude Code。在 Bash 或 Zsh 中,运行 `CLAUDE_CONFIG_DIR=~/claude-clean/config claude`。在 PowerShell 中,该变量仍处于设置状态,因此运行 `claude` 即可。138* **问题消失**:原因在您的用户或项目配置中。将 `~/.claude.json` 和 `~/.claude` 中的文件逐个复制到 `~/claude-clean/config`。如果没有任何文件使问题重新出现,请在同一个 shell 中进入您的项目目录,并在不带 `--setting-sources user` 的情况下启动 Claude Code。在 Bash 或 Zsh 中,运行 `CLAUDE_CONFIG_DIR=~/claude-clean/config claude`。在 PowerShell 中,该变量仍处于设置状态,因此运行 `claude` 即可。
138* **问题仍然存在**:原因在您的用户和项目配置之外。在会话中运行 `/status` 以检查托管设置,检查您的 shell 中的[环境变量](/docs/zh-CN/env-vars),然后参阅[故障排除](/docs/zh-CN/troubleshooting)。139* **问题仍然存在**:原因在您的用户和项目配置之外。在会话中运行 `/status` 以检查托管设置,检查您的 shell 中的[环境变量](/docs/zh-CN/env-vars.md),然后参阅[故障排除](/docs/zh-CN/troubleshooting.md)。
139 140
140## 检查常见原因141## 检查常见原因
141 142
143 144
144| 症状 | 原因 | 修复 |145| 症状 | 原因 | 修复 |
145| :- | :- | :- |146| :- | :- | :- |
146| Hook 永远不触发 | `matcher` 是 JSON 数组而不是字符串 | 使用单个字符串,其中 `\|` 匹配多个工具,例如 `"Edit\|Write"`。请参阅[匹配器模式](/docs/zh-CN/hooks#matcher-patterns)。 |147| Hook 永远不触发 | `matcher` 是 JSON 数组而不是字符串 | 使用单个字符串,其中 `\|` 匹配多个工具,例如 `"Edit\|Write"`。请参阅[匹配器模式](/docs/zh-CN/hooks.md#matcher-patterns)。 |
147| Hook 永远不触发 | `matcher` 在 v2.1.191 之前的版本中使用 `,` 作为分隔符 | Claude Code v2.1.191 或更高版本将 `,` 视为列表分隔符,如 `\|`。早期版本将逗号评估为字面字符,因此 `"Edit,Write"` 不匹配任何内容。改用 `\|`,或升级 Claude Code。 |148| Hook 永远不触发 | `matcher` 在 v2.1.191 之前的版本中使用 `,` 作为分隔符 | Claude Code v2.1.191 或更高版本将 `,` 视为列表分隔符,如 `\|`。早期版本将逗号评估为字面字符,因此 `"Edit,Write"` 不匹配任何内容。改用 `\|`,或升级 Claude Code。 |
148| Hook 永远不触发 | `matcher` 值是小写的,例如 `"bash"` | 匹配是区分大小写的。工具名称是大写的:`Bash`、`Edit`、`Write`、`Read`。 |149| Hook 永远不触发 | `matcher` 值是小写的,例如 `"bash"` | 匹配是区分大小写的。工具名称是大写的:`Bash`、`Edit`、`Write`、`Read`。 |
149| Hook 永远不触发 | Hooks 在独立文件而不是 `settings.json` 中定义 | 项目或用户配置没有独立的 hooks 文件。在 `settings.json` 中的 `"hooks"` 键下定义 hooks。只有[plugins](/docs/zh-CN/plugins/components#hooks)加载单独的 `hooks/hooks.json`。请参阅[hook 配置](/docs/zh-CN/hooks)。 |150| Hook 永远不触发 | Hooks 在独立文件而不是 `settings.json` 中定义 | 项目或用户配置没有独立的 hooks 文件。在 `settings.json` 中的 `"hooks"` 键下定义 hooks。只有[plugins](/docs/zh-CN/plugins/components.md#hooks)加载单独的 `hooks/hooks.json`。请参阅[hook 配置](/docs/zh-CN/hooks.md)。 |
150| 全局设置的权限、hooks 或 env 被忽略 | 配置被添加到 `~/.claude.json` | `~/.claude.json` 保存应用状态和 UI 切换。`permissions`、`hooks` 和 `env` 属于 `~/.claude/settings.json`。这是两个不同的文件。 |151| 全局设置的权限、hooks 或 env 被忽略 | 配置被添加到 `~/.claude.json` | `~/.claude.json` 保存应用状态和 UI 切换。`permissions`、`hooks` 和 `env` 属于 `~/.claude/settings.json`。这是两个不同的文件。 |
151| `settings.json` 值似乎被忽略 | 相同的键在 `settings.local.json` 中设置 | `settings.local.json` 覆盖 `settings.json`,两者都覆盖 `~/.claude/settings.json`。请参阅[设置优先级](/docs/zh-CN/settings#settings-precedence)。 |152| `settings.json` 值似乎被忽略 | 相同的键在 `settings.local.json` 中设置 | `settings.local.json` 覆盖 `settings.json`,两者都覆盖 `~/.claude/settings.json`。请参阅[设置优先级](/docs/zh-CN/settings.md#settings-precedence)。 |
152| Skill 没有出现在 `/skills` 中 | Skill 文件在 `.claude/skills/name.md` 而不是在文件夹中 | 使用包含 `SKILL.md` 的文件夹:`.claude/skills/name/SKILL.md`。 |153| Skill 没有出现在 `/skills` 中 | Skill 文件在 `.claude/skills/name.md` 而不是在文件夹中 | 使用包含 `SKILL.md` 的文件夹:`.claude/skills/name/SKILL.md`。 |
153| Skill 出现在 `/skills` 中但 Claude 从不调用它 | Skill 在其 frontmatter 中有 `disable-model-invocation: true`,或其描述与你表述请求的方式不匹配 | 检查 `/skills` 中的徽章:一个"user-only"标签意味着 Claude 不会自动触发它。请参阅[skill 调用](/docs/zh-CN/skills)。 |154| Skill 出现在 `/skills` 中但 Claude 从不调用它 | Skill 在其 frontmatter 中有 `disable-model-invocation: true`,或其描述与你表述请求的方式不匹配 | 检查 `/skills` 中的徽章:一个"user-only"标签意味着 Claude 不会自动触发它。请参阅[skill 调用](/docs/zh-CN/skills.md)。 |
154| 子目录 `CLAUDE.md` 指令似乎被忽略 | 子目录文件按需加载,而不是在会话开始时加载 | 要加载子目录的 `CLAUDE.md`,请让 Claude 读取该子目录中的另一个文件。请参阅[子目录文件何时加载](/docs/zh-CN/memory#how-claude-md-files-load)。 |155| 子目录 `CLAUDE.md` 指令似乎被忽略 | 子目录文件按需加载,而不是在会话开始时加载 | 要加载子目录的 `CLAUDE.md`,请让 Claude 读取该子目录中的另一个文件。请参阅[子目录文件何时加载](/docs/zh-CN/memory.md#how-claude-md-files-load)。 |
155| 子代理忽略 `CLAUDE.md` 指令 | 内置的 Explore 和 Plan Agent 在启动时跳过 `CLAUDE.md`。自定义子代理以与主对话相同的方式加载它,除非其定义设置了 [`omitClaudeMd`](/docs/zh-CN/sub-agents#supported-frontmatter-fields) | 对于 Explore 或 Plan,在您的委派提示词中重新陈述指令。对于设置 `omitClaudeMd` 的子代理,删除该字段。对于任何其他自定义子代理,将关键指令放在 Agent 文件正文中,它将成为 Agent 的系统提示词。请参阅[启动时加载的内容](/docs/zh-CN/sub-agents#what-loads-at-startup)。 |156| 子代理忽略 `CLAUDE.md` 指令 | 内置的 Explore 和 Plan Agent 在启动时跳过 `CLAUDE.md`。自定义子代理以与主对话相同的方式加载它,除非其定义设置了 [`omitClaudeMd`](/docs/zh-CN/sub-agents#supported-frontmatter-fields) | 对于 Explore 或 Plan,在您的委派提示词中重新陈述指令。对于设置 `omitClaudeMd` 的子代理,删除该字段。对于任何其他自定义子代理,将关键指令放在 Agent 文件正文中,它将成为 Agent 的系统提示词。请参阅[启动时加载的内容](/docs/zh-CN/sub-agents.md#what-loads-at-startup)。 |
156| 清理逻辑在会话结束时永远不运行 | 没有配置 `SessionEnd` hook | 在 `settings.json` 中添加 `SessionEnd` hook。请参阅[hook 事件列表](/docs/zh-CN/hooks#hook-events)。 |157| 清理逻辑在会话结束时永远不运行 | 没有配置 `SessionEnd` hook | 在 `settings.json` 中添加 `SessionEnd` hook。请参阅[hook 事件列表](/docs/zh-CN/hooks.md#hook-events)。 |
157| `.mcp.json` 中的 MCP 服务器永远不加载 | 文件在 `.claude/` 下,或其服务器位于顶级 `servers` 键下,如 VS Code 的 `mcp.json` 中那样,而不是 `mcpServers` | 项目 MCP 配置在存储库根目录下作为 `.mcp.json`,而不是在 `.claude/` 内,服务器位于 `mcpServers` 键下。请参阅[MCP 配置](/docs/zh-CN/mcp)。 |158| `.mcp.json` 中的 MCP 服务器永远不加载 | 文件在 `.claude/` 下,或其服务器位于顶级 `servers` 键下,如 VS Code 的 `mcp.json` 中那样,而不是 `mcpServers` | 项目 MCP 配置在存储库根目录下作为 `.mcp.json`,而不是在 `.claude/` 内,服务器位于 `mcpServers` 键下。请参阅[MCP 配置](/docs/zh-CN/mcp.md)。 |
158| 在 `settings.json` 中的 `mcpServers` 下添加的 MCP 服务器永远不出现 | `settings.json` 不读取 `mcpServers` 键 | 在存储库根目录的 `.mcp.json` 中定义项目服务器,或运行 `claude mcp add --scope user` 来添加用户范围的服务器。请参阅[MCP 配置](/docs/zh-CN/mcp)。 |159| 在 `settings.json` 中的 `mcpServers` 下添加的 MCP 服务器永远不出现 | `settings.json` 不读取 `mcpServers` 键 | 在存储库根目录的 `.mcp.json` 中定义项目服务器,或运行 `claude mcp add --scope user` 来添加用户范围的服务器。请参阅[MCP 配置](/docs/zh-CN/mcp.md)。 |
159| 添加的项目 MCP 服务器没有出现 | 一次性批准提示被关闭 | 项目范围的服务器需要批准。运行 `/mcp` 来查看状态并批准。 |160| 添加的项目 MCP 服务器没有出现 | 一次性批准提示被关闭 | 项目范围的服务器需要批准。运行 `/mcp` 来查看状态并批准。 |
160| MCP 服务器从某些目录启动失败 | `command` 或 `args` 使用相对文件路径 | 对本地脚本使用绝对路径。你的 `PATH` 上的可执行文件如 `npx` 或 `uvx` 可以按原样工作。 |161| MCP 服务器从某些目录启动失败 | `command` 或 `args` 使用相对文件路径 | 对本地脚本使用绝对路径。你的 `PATH` 上的可执行文件如 `npx` 或 `uvx` 可以按原样工作。 |
161| MCP 服务器启动时没有预期的环境变量 | 服务器的配置条目没有设置它们,它们不在 Claude Code 传递给 stdio 服务器的环境中:它自己的环境,减去[它从子进程中剥离的变量](/docs/zh-CN/monitoring-usage#administrator-configuration) | 在服务器的 `.mcp.json` 条目内设置每个服务器的 `env`,这不依赖于启动环境或工作区信任。 |162| MCP 服务器启动时没有预期的环境变量 | 服务器的配置条目没有设置它们,它们不在 Claude Code 传递给 stdio 服务器的环境中:它自己的环境,减去[它从子进程中剥离的变量](/docs/zh-CN/monitoring-usage.md#administrator-configuration) | 在服务器的 `.mcp.json` 条目内设置每个服务器的 `env`,这不依赖于启动环境或工作区信任。 |
162| `Bash(rm *)` 拒绝规则不阻止 `/bin/rm` 或 `find -delete` | Bash 规则匹配字面命令字符串,而不是底层可执行文件;请参阅[Bash 规则不匹配的内容](/docs/zh-CN/permissions#bash-rule-limits) | 使用[PreToolUse hook](/docs/zh-CN/hooks-guide)或[sandbox](/docs/zh-CN/sandboxing)来获得硬保证。 |163| `Bash(rm *)` 拒绝规则不阻止 `/bin/rm` 或 `find -delete` | Bash 规则匹配字面命令字符串,而不是底层可执行文件;请参阅[Bash 规则不匹配的内容](/docs/zh-CN/permissions.md#bash-rule-limits) | 使用[PreToolUse hook](/docs/zh-CN/hooks-guide.md)或[sandbox](/docs/zh-CN/sandboxing.md)来获得硬保证。 |
163 164
164## 相关资源165## 相关资源
165 166
166有关每个配置表面的完整参考,请参阅专用页面:167有关每个配置表面的完整参考,请参阅专用页面:
167 168
168* **[`.claude` 目录参考](/docs/zh-CN/claude-directory)**:每个配置文件位置及其读取方式169* **[`.claude` 目录参考](/docs/zh-CN/claude-directory)**:每个配置文件位置及其读取方式
169* **[Settings](/docs/zh-CN/settings)**:使用哪个文件以及 Claude Code 使用哪个值;[settings 参考](/docs/zh-CN/settings-reference)包含完整的键列表170* **[Settings](/docs/zh-CN/settings.md)**:使用哪个文件以及 Claude Code 使用哪个值;[settings 参考](/docs/zh-CN/settings-reference.md)包含完整的键列表
170* **[Hooks 参考](/docs/zh-CN/hooks)**:事件名称、有效负载和 `--debug` 输出格式171* **[Hooks 参考](/docs/zh-CN/hooks.md)**:事件名称、有效负载和 `--debug` 输出格式
171* **[MCP](/docs/zh-CN/mcp)**:服务器配置、批准和 `/mcp` 输出172* **[MCP](/docs/zh-CN/mcp.md)**:服务器配置、批准和 `/mcp` 输出
172* **[故障排除安装和登录](/docs/zh-CN/troubleshoot-install)**:`command not found`、PATH 和身份验证问题173* **[故障排除安装和登录](/docs/zh-CN/troubleshoot-install.md)**:`command not found`、PATH 和身份验证问题
173* **[故障排除](/docs/zh-CN/troubleshooting)**:性能、挂起和搜索问题174* **[故障排除](/docs/zh-CN/troubleshooting.md)**:性能、挂起和搜索问题