Claude Code 文件层级机制详解

Claude Code 文件层级机制详解

一、整体架构图

复制代码
┌─────────────────────────────────────────────────────────────────┐
│                    Claude Code 配置层级                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Managed (全局托管) - 最高优先级,不可覆盖                 │   │
│  │  macOS: /Library/Application Support/ClaudeCode/        │   │
│  │  Linux: /etc/claude-code/                               │   │
│  │  Windows: C:\Program Files\ClaudeCode\                   │   │
│  └─────────────────────────────────────────────────────────┘   │
│                            ↑                                    │
│                            │ 优先级                             │
│                            ↓                                    │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Local (本地) - .claude/settings.local.json              │   │
│  │  仅当前用户、当前项目可见,gitignored                      │   │
│  └─────────────────────────────────────────────────────────┘   │
│                            ↑                                    │
│                            ↓                                    │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Project (项目级) - .claude/settings.json                │   │
│  │  项目内所有协作者共享,可提交到git                         │   │
│  └─────────────────────────────────────────────────────────┘   │
│                            ↑                                    │
│                            ↓                                    │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  User (用户级) - ~/.claude/settings.json                 │   │
│  │  当前用户所有项目生效                                     │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

二、CLAUDE.md 文件

2.1 作用

CLAUDE.md 是 Claude Code 的核心指令文件,为项目提供持久化的上下文指导。

2.2 文件位置与作用域

作用域 位置 用途
Managed 系统级目录 IT/DevOps 组织的统一规范
Project ./CLAUDE.md./.claude/CLAUDE.md 团队共享的项目指令
User ~/.claude/CLAUDE.md 个人偏好设置

2.3 加载规则

  • 向上遍历:从当前工作目录向上检查每个目录
  • foo/bar/ 运行时,会加载 foo/bar/CLAUDE.mdfoo/CLAUDE.md
  • 子目录的 CLAUDE.md 按需加载

2.4 最佳实践

  • 每个文件控制在 200 行以内
  • 使用 headers 和 bullets 组织内容
  • 指令要具体可验证
  • 可用 @path/to/file 导入额外文件

三、.claude 目录结构

复制代码
项目根目录/
├── CLAUDE.md                    # 项目指令 (根目录位置)
├── .claude/
│   ├── CLAUDE.md              # 项目指令 (备选位置)
│   ├── settings.json          # 项目级配置 (可共享)
│   ├── settings.local.json    # 本地配置 (gitignored)
│   ├── rules/                 # 模块化规则目录
│   │   ├── code-style.md
│   │   ├── testing.md
│   │   └── security.md
│   ├── hooks/                 # Hook 脚本目录
│   │   └── *.sh / *.py
│   ├── agents/                # 子代理定义
│   └── plugins/               # 插件目录

四、settings.json 配置项

4.1 作用域对比

作用域 位置 影响范围 可提交到git
Managed 系统级 机器所有用户
User ~/.claude/settings.json 当前用户所有项目
Project .claude/settings.json 项目所有协作者
Local .claude/settings.local.json 仅本地 ❌ (gitignored)

4.2 主要配置项

json 复制代码
{
  "env": { "FOO": "bar" },                    // 环境变量
  "permissions": { "allow": [...], "deny": [...] },  // 权限规则
  "hooks": { ... },                           // Hook 配置
  "model": "claude-sonnet-4-6",               // 默认模型
  "effortLevel": "medium",                    // 努力级别
  "autoMemoryEnabled": true,                  // 自动记忆开关
  "autoMemoryDirectory": "~/memory",         // 记忆目录
  "claudeMdExcludes": ["**/monorepo/**"],    // 排除的CLAUDE.md
  "sandbox": { ... },                         // 沙箱配置
  "enabledPlugins": { ... },                 // 启用的插件
  "allowedMcpServers": [...],                 // 允许的MCP服务器
  "outputStyle": "Explanatory"                // 输出风格
}

4.3 权限配置示例

json 复制代码
{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm test *)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)"
    ]
  }
}

五、Hooks 机制

5.1 什么是 Hooks

Hooks 是在 Claude Code 生命周期特定点自动执行的脚本。

5.2 Hook 类型

类型 说明
command 执行 shell 命令
http POST 事件到 URL
prompt 单轮 LLM 评估
agent 多轮验证子代理

5.3 事件类型

事件 触发时机
SessionStart 会话开始或恢复
UserPromptSubmit 提交 prompt 时
PreToolUse 工具执行前 (可阻止)
PostToolUse 工具成功后
PostToolUseFailure 工具失败后
PermissionRequest 权限对话框出现时
Notification 发送通知时
Stop Claude 停止响应时
InstructionsLoaded CLAUDE.md 加载时
SessionEnd 会话终止时

5.4 配置示例

json 复制代码
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/format.sh",
            "timeout": 600
          }
        ]
      }
    ]
  }
}

六、Memory 目录

6.1 位置

复制代码
~/.claude/projects/<项目名>/memory/

6.2 结构

复制代码
memory/
├── MEMORY.md          # 索引文件,每次会话加载前200行
├── debugging.md       # 调试笔记 (按需读取)
├── patterns.md        # 模式记录
└── ...

6.3 工作原理

  • MEMORY.md 前 200 行每次会话开始时加载
  • 超过 200 行不加载
  • 主题文件按需读取
  • 使用 /memory 命令管理

6.4 配置

json 复制代码
{
  "autoMemoryEnabled": false  // 禁用自动记忆
}

或设置环境变量 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1


七、rules/ 目录 (模块化规则)

7.1 用途

将大型 CLAUDE.md 拆分为多个主题文件。

7.2 结构

复制代码
.claude/
├── CLAUDE.md
└── rules/
    ├── code-style.md   # 代码风格
    ├── testing.md      # 测试规范
    └── security.md     # 安全要求

7.3 限定范围

支持 YAML frontmatter 限定文件范围:

markdown 复制代码
---
paths:
  - "src/api/**/*.ts"
---

# API 开发规则
- 所有 API 必须包含输入验证

八、优先级总结

层级 位置 优先级
1 Managed (系统级) 最高,不可覆盖
2 命令行参数
3 Local (.claude/settings.local.json)
4 Project (.claude/settings.json)
5 User (~/.claude/settings.json) 最低

九、Q&A

Q: CLAUDE.md 放在根目录还是 .claude/ 区别?

A: 两者效果一样,根目录是约定俗成的位置。

Q: settings.json 和 CLAUDE.md 的区别?

A:

  • settings.json: 配置工具行为(权限、hooks、环境变量等)
  • CLAUDE.md: 提供项目指令和上下文

Q: 哪些文件应该提交到 git?

A: 项目级配置可提交:

  • .claude/settings.json
  • .claude/CLAUDE.md
  • .claude/rules/ 下的文件

Q: 哪些文件应该 gitignore?

A: 本地个人配置:

  • .claude/settings.local.json

参考文档

相关推荐
极客小俊4 分钟前
别再给大模型充钱!Agnes AI 永久免费全模态 API,代码 / 绘图 /短剧Token不限量调用
人工智能·openai·ai编程
weixin_397574098 分钟前
按行业定制分析视角
大数据·数据库·人工智能·企业数据治理·数据驱动决策·本体语义·企业经营分析
Wang's Blog9 分钟前
AI Agent白手起家23: 大模型速率限制应对与缓存机制实践
人工智能·缓存
计算机魔术师12 分钟前
Midjourney V8.2 发布:美学与个性化全面升级,低质图率显著下降
人工智能·ai编程
移动云开发者联盟15 分钟前
移动云携手MiniMax首发MiniMax-H3, AI视频一键成片!
人工智能·音视频
Highcharts.js30 分钟前
五大痛点拖慢数据分析平台决策效率:Highchart可视化与AI分析解决方案解析
人工智能·信息可视化·数据分析·数据可视化·highcharts·ai可视化分析
义嘉泰37 分钟前
手腕上的小手电:智能手表怎么把“绿光”变成心率
人工智能·智能手表
Canace44 分钟前
AI 生成到 90% 突然断了:你的解决方案是?
前端·人工智能
湘美书院--湘美谈教育1 小时前
AI时代的奥德赛:算法星空,寻找精神归航
大数据·人工智能·深度学习·机器学习·生活
瓦学妹1 小时前
2026亚马逊本土店怎么注册?入驻流程、资料准备与常见问题
大数据·运维·人工智能