是什么

Claude Code 从两个位置读取配置:项目级 .claude/ 目录(提交到 git,团队共享)和用户级 ~/.claude/ 目录(本地私有,跨项目生效)。理解这个目录结构是调试配置问题和管理持久化数据的基础。

核心机制

项目级文件(提交到 git):

文件/目录作用加载时机
CLAUDE.md项目指令,每次会话加载会话启动
.mcp.json团队共享的 MCP 服务器会话启动
.claude/settings.json权限、hooks、环境变量会话启动
.claude/settings.local.json个人覆盖(gitignored)会话启动,优先级最高
.claude/rules/*.md主题化规则,可按路径条件加载会话启动或匹配文件时
.claude/skills/<name>/SKILL.md可复用工作流按需调用
.claude/agents/*.md自定义 Subagent 定义按需派生
.worktreeinclude创建 worktree 时复制的 gitignored 文件列表创建 worktree 时

用户级文件(~/.claude/,本地私有):

文件/目录作用
CLAUDE.md全局个人偏好,所有项目生效
settings.json全局默认设置
keybindings.json自定义键盘快捷键
themes/*.json自定义颜色主题
projects/<project>/memory/Auto Memory(Claude 自动写入)
rules/全局规则
skills/全局个人 Skills
agents/全局个人 Subagents

应用数据(自动清理,默认 30 天):

  • projects/<project>/<session>.jsonl:完整会话记录
  • file-history/<session>/:文件编辑前的快照(用于 Checkpoint 回滚)
  • plans/:plan 模式生成的计划文件

不要删除的文件:~/.claude.json(认证和偏好)、~/.claude/settings.json(全局设置)、~/.claude/plugins/(已安装插件)。

关键细节

  • settings.local.json 优先级高于 settings.json,Claude Code 首次写入时自动添加到 ~/.config/git/ignore
  • 数组类设置(如 permissions.allow)跨层级合并;标量设置(如 model)取最具体的值
  • 清理项目数据:claude project purge ~/work/my-repo(会打印删除计划并请求确认)
  • Windows 上 ~/.claude 对应 %USERPROFILE%\.claude,可用 CLAUDE_CONFIG_DIR 环境变量覆盖

关联

实践要点

  • 调试配置不生效时,先用 /memory 检查哪些文件被加载了
  • 个人偏好放 settings.local.json(gitignored),团队规范放 settings.json(提交)
  • Auto Memory 文件是纯 Markdown,可以直接编辑或删除
  • 会话记录包含所有工具调用结果(包括文件内容),注意敏感信息保护
  • 用 claude project purge 清理项目数据,而不是手动删除文件