Claude Code

配置调试与 .claude 目录

排查 CLAUDE.md、settings、Hooks、MCP、Skills、权限、.claude 目录、数据流和本地数据清理。

当 Claude Code 忽略某条规则、Hook 不触发、MCP 不出现、Skill 不可用或 settings 不生效时,不要猜。先看 Claude Code 实际加载了什么。

#一组命令先定位

命令看什么
/context当前上下文里的系统提示、记忆、skills、subagents、MCP、消息
/memory哪些 CLAUDE.md、rules 和 auto memory 被加载
/skills项目、用户、插件来源的 skills
/hooks当前会话注册的 hook 和事件
/mcpMCP server、连接状态、approval 状态
/permissions当前 allow/ask/deny 规则来源
/doctor配置 schema、安装状态、重复 subagent 名称等诊断
/status当前 settings 来源、managed policy、登录和模型状态
/debug <问题>开启调试日志并让 Claude 协助分析

#配置文件位置

文件作用是否适合提交
CLAUDE.md项目记忆,团队约定,常用命令可提交
.claude/CLAUDE.md项目级补充记忆可提交
.claude/settings.json团队共享 settings、permissions、hooks可提交,不要放 Key
.claude/settings.local.json本项目个人覆盖不提交
~/.claude/settings.json用户级偏好、个人 env、通用权限不提交
.mcp.json项目 MCP server可提交,敏感值用 env
~/.claude.jsonapp 状态、登录、项目状态和部分 MCP 本地数据不手写业务配置
.claude/commands/自定义斜杠命令可提交
.claude/skills/<name>/SKILL.md项目 skill可提交
.claude/agents/自定义 subagent可提交
.claude/output-styles/输出风格可提交或用户级

~/.claude.json 不是 settings 文件。permissionshooksenv 应写进 settings.json,不是写进 ~/.claude.json

#settings 合并和覆盖

常规优先级:

  1. Managed policy
  2. 命令行参数和部分环境变量
  3. .claude/settings.local.json
  4. .claude/settings.json
  5. ~/.claude/settings.json

权限规则会合并。冲突时按 denyaskallow 处理,不是简单覆盖。

常见误解:

现象原因修复
用户级设置不生效项目 local 覆盖了同名 key/status 看来源
Hook 不出现写到独立 hook 文件或 ~/.claude.json写进 settings 的 hooks key
MCP 不出现.mcp.json 放到了 .claude/项目 MCP 放仓库根目录
env 没传给 MCPsettings 的 env 不等于 MCP 子进程 env.mcp.json server 内写 env
skill 不出现文件路径是 .claude/skills/name.md应为 .claude/skills/name/SKILL.md
subdir CLAUDE.md 没加载子目录记忆按需加载让 Claude Read 该目录文件

#CLAUDE.md 不生效

先看:

/memory
/context all

如果文件没出现,检查位置和启动目录。如果文件出现但执行不好,通常是规则写得太泛、互相冲突或文件太长。

更稳的写法:

  • 写具体命令,不要只写“运行测试”。
  • 写目录归属,例如“React 组件在 src/components”。
  • 把安全边界交给 permissions 或 Hooks,不要只靠自然语言。
  • 大型仓库按目录拆 CLAUDE.md,避免根文件变成百科。

#Hooks 不触发

检查:

/hooks
claude --debug hooks
现象可能原因
/hooks 看不到settings 文件没加载或 key 写错
matcher 不命中工具名大小写错误,例如应为 BashEditWrite
多工具 matcher 写错用单个字符串,例如 `EditWrite`
schema error/doctor 会报告,该 hook 会被丢弃
命令路径不稳定${CLAUDE_PROJECT_DIR} 或绝对路径
退出码无效按事件要求返回 JSON 或 stderr

#MCP 不出现

检查:

claude mcp list
claude mcp get <name>
claude --debug mcp
现象处理
Project server pending approval打开 /mcp 批准
server failed看 stderr,检查 command、args、env
connected 但零工具Reconnect,再看 debug 输出
OAuth 失败claude mcp login <name>
相对路径在某些目录失败改绝对路径
工具太多影响缓存结合 tool search 或拆 server

#干净配置对照

--safe-mode 会禁用大多数自定义项:

claude --safe-mode

如果问题消失,通常来自 CLAUDE.md、skills、plugins、hooks、MCP、自定义命令、agents、output styles 或 workflows。

完全干净配置:

mkdir -p /tmp/claude-clean
cd /tmp
CLAUDE_CONFIG_DIR=/tmp/claude-clean claude

说明:

  • Managed policy 仍可能生效。
  • macOS 登录凭据可能在 Keychain,不一定被 CLAUDE_CONFIG_DIR 隔离。
  • Linux/Windows 可能需要重新登录。

#.claude 目录怎么用

推荐结构:

.claude/
  settings.json
  settings.local.json
  commands/
    review.md
  skills/
    release-check/
      SKILL.md
  agents/
    qa-reviewer.md
  output-styles/
    concise.md

不要把这些放错:

不建议原因
.claude/.mcp.json项目 MCP 应在仓库根目录 .mcp.json
.claude/skills/foo.mdskill 需要文件夹和 SKILL.md
.claude/hooks.json普通 hooks 属于 settings,插件才有独立 hooks 文件
.claude/settings.json 写真实 Key项目文件容易提交泄露

#数据使用和本地数据

Claude Code 会把完成任务所需的 prompt、工具结果、文件片段、MCP 输出等发送给所选 provider。接 Passion8 时,还要看 Passion8 网关的日志、计费和保留策略。

类型位置或流向注意
本地项目文件工具读取后进入模型上下文用 permissions 和 Hooks 控制敏感路径
用户设置和状态~/.claude/~/.claude.json不要提交
shell 命令输出进入当前会话上下文避免打印密钥和大日志
MCP 工具输出进入当前会话上下文给数据库、浏览器 MCP 做过滤
Telemetry由 OTel 环境变量控制默认谨慎,不要记录 raw API body
WebFetch 域名检查可能走安全检查企业网络需考虑出站域名

更严格的项目建议:

  • Read(./.env)Read(./.env.*) 放 deny。
  • curlwget、数据库写操作加 ask 或 Hook。
  • 不在 Hook stderr 输出完整密钥。
  • 监控只采集必要字段,不要开启 OTEL_LOG_RAW_API_BODIES

#缓存影响

配置调试常会改变 prompt 前缀:

动作5m/1h 缓存影响
CLAUDE.md 后新会话前缀变,通常重新写缓存
改 permissions通常影响较小,但工具可用性变化会影响前缀
增删 MCP server工具 schema 变化,常导致 miss
增删 skills/plugins系统提示和工具可能变化
--safe-mode与正常会话前缀不同,不要用它评估命中率
CLAUDE_CONFIG_DIR 干净测试适合排错,不代表真实项目缓存表现

#官方参考

Support / 支持

Need help? / 需要帮助?

接入、计费与模型异常可邮件联系;服务可用性以状态页为准。For setup, billing, or model issues, email us. Check the status page for uptime.

也可使用右下角微信 / QQ 客服 · WeChat / QQ support is available at the bottom right