<!-- title: Claude Code记忆与配置体系深度实战 -->

# Claude Code 记忆与配置体系深度实战：从 CLAUDE.md 到六层记忆架构

## 概述

本教程面向已具备 Claude Code 基础使用经验的开发者，系统讲解 Claude Code 的记忆系统（Memory System）和配置体系（Configuration System）。你将学会如何构建一个六层记忆架构，精确控制权限模型，配置 Hooks 实现自动化流水线，让 Claude Code 从"能用"进化为"高度定制化的开发伙伴"。适用于中高级开发者、技术团队负责人和 DevOps 工程师。

**学习目标：**
- 理解 Claude Code 记忆系统的六层架构与加载机制
- 掌握 `CLAUDE.md` 的分层设计与最佳实践
- 精通 `settings.json` 的权限、Hooks、环境变量配置
- 实战构建完整的项目配置体系

---

## 前置条件

| 条件 | 说明 |
|------|------|
| Claude Code 版本 | ≥ 2.1.x（本文基于 2026 年 6 月最新版本） |
| 操作系统 | macOS / Linux / Windows (WSL) |
| 基础知识 | 熟悉终端操作、Markdown 语法、JSON 配置 |
| 模型订阅 | Claude Pro / Max / Team / Enterprise 任一 |
| 项目经验 | 至少在一个项目中使用过 Claude Code |

---

## 第一章：记忆系统全景——为什么你的 Claude Code 总是"失忆"

### 1.1 核心问题

每次启动 Claude Code 会话，上下文窗口都是全新的。Claude 不知道你的项目用什么框架、代码风格是什么、测试命令是什么。你不得不反复告诉它相同的事情。

**Claude Code 通过两套互补机制解决这个问题：**

1. **CLAUDE.md 文件**——显式的持久化指令，你手动编写和维护
2. **Auto Memory（自动记忆）**——Claude 在对话中自动保存的关键信息

```mermaid
graph TB
    A[新会话启动] --> B[上下文窗口为空]
    B --> C{加载记忆}
    C --> D[CLAUDE.md 层级]
    C --> E[Auto Memory]
    C --> F[Rules 规则文件]
    D --> D1[~/.claude/CLAUDE.md<br/>用户全局]
    D --> D2[项目根/CLAUDE.md<br/>项目共享]
    D --> D3[子目录/CLAUDE.md<br/>模块专属]
    D --> D4[CLAUDE.local.md<br/>个人不提交]
    E --> E1[.claude/memory/*.md<br/>主题记忆文件]
    F --> F1[.claude/rules/*.md<br/>路径规则]
    B --> G[会话对话]
    G --> H[自动记忆写入]
    H --> E1
```

### 1.2 记忆加载顺序

Claude Code 在会话启动时按以下优先级加载记忆：

| 加载顺序 | 文件位置 | 作用域 | 是否提交 Git |
|----------|---------|--------|-------------|
| 1 | `~/.claude/CLAUDE.md` | 用户全局 | ❌ |
| 2 | 项目根目录 `CLAUDE.md` | 整个项目 | ✅ |
| 3 | 项目 `CLAUDE.local.md` | 整个项目（个人） | ❌ |
| 4 | 子目录 `CLAUDE.md` | 该目录及子目录 | ✅ |
| 5 | `.claude/rules/*.md` | 路径匹配的规则 | ✅ |
| 6 | `.claude/memory/*.md` | 自动生成的主题记忆 | ❌ |

**关键细节：** 后加载的文件会覆盖先加载的同名指令。这意味着子目录的 `CLAUDE.md` 可以覆盖根目录的设定，路径规则优先于全局指令。

---

## 第二章：CLAUDE.md 分层设计——从单文件到可扩展架构

### 2.1 第一层：用户全局配置

文件位置：`~/.claude/CLAUDE.md`

这是你的个人偏好层，适用于所有项目：

```markdown
# 全局偏好

## 语言与风格
- 默认使用中文回复，代码注释用英文
- 回复简洁明了，避免冗长解释

## 编码习惯
- 优先使用函数式编程风格
- 变量命名使用 camelCase
- 始终添加 TypeScript 类型注解

## 通用规则
- 修改代码后主动运行测试
- 不要自动 commit，除非明确要求
- 不要提交 .env 等敏感文件
```

**操作命令：**
```bash
# 创建用户全局 CLAUDE.md
mkdir -p ~/.claude
cat > ~/.claude/CLAUDE.md << 'EOF'
# 全局偏好
- 默认中文回复
- 修改后运行测试
- 不自动 commit
EOF

# 或使用 Claude Code 的 /memory 命令
# 在 Claude Code 中输入: /memory 然后添加内容
```

### 2.2 第二层：项目根配置

文件位置：`项目根目录/CLAUDE.md`

这是最重要的配置层，团队共享，提交到 Git：

```markdown
# 项目：电商平台 API

## 技术栈
- Runtime: Node.js 22 + TypeScript 5.8
- Framework: Fastify 5（注意：不是 Express）
- ORM: Drizzle ORM + PostgreSQL 16
- 测试: Vitest + Supertest
- 包管理: pnpm 9

## 项目结构
- `src/routes/` — API 路由（按领域分文件）
- `src/services/` — 业务逻辑层
- `src/db/schema/` — 数据库 Schema
- `src/middleware/` — 中间件
- `test/` — 测试文件镜像 src 结构

## 命令
- 开发: `pnpm dev`
- 构建: `pnpm build`
- 测试: `pnpm test`
- 单测: `pnpm test:unit`
- Lint: `pnpm lint`

## 编码规范
- 路由必须使用 Fastify schema validation
- Service 层不能直接访问 Fastify request/reply
- 数据库操作必须通过 Drizzle query builder
- 错误使用 AppError 类，禁止直接 throw new Error

## 架构决策
- API 版本化通过 URL 前缀: `/api/v1/`, `/api/v2/`
- 认证使用 JWT + Refresh Token 双令牌
- 文件上传使用 S3 预签名 URL
```

### 2.3 第三层：个人本地覆盖

文件位置：`项目根目录/CLAUDE.local.md`

加入 `.gitignore`，用于个人调试和临时配置：

```markdown
# 个人本地配置（不提交）

## 调试
- 当前在调试支付模块的并发问题
- 本地数据库端口: 5433（非默认）
- 使用 test_ 前缀的测试数据

## 临时偏好
- 详细输出 SQL 查询日志
- 跳过集成测试
```

```bash
# 确保 CLAUDE.local.md 不被提交
echo "CLAUDE.local.md" >> .gitignore
```

### 2.4 第四层：子目录专属配置

在特定模块目录下放置 `CLAUDE.md`：

```markdown
# src/workers/CLAUDE.md

## Worker 模块规范
- 所有 Worker 必须继承 BaseWorker 类
- 使用 BullMQ 队列，不用 Bull
- 重试策略: 最多 3 次，指数退避
- 必须实现 graceful shutdown
- 日志使用结构化 JSON 格式

## 命名约定
- 文件名: `{domain}.worker.ts`
- 类名: `{Domain}Worker`
- 队列名: `{domain}:{action}`
```

### 2.5 第五层：路径规则文件

文件位置：`.claude/rules/*.md`

规则文件支持路径匹配，只在 Claude Code 操作匹配路径时加载：

```bash
mkdir -p .claude/rules
```

**创建路径匹配规则：**

```markdown
<!-- .claude/rules/react-components.md -->
---
description: React 组件开发规则
globs: src/components/**/*.tsx
---

## React 组件规范
- 使用函数组件 + Hooks
- Props 必须定义 TypeScript interface
- 使用 React.memo 包裹纯展示组件
- 样式使用 Tailwind CSS 类名
- 组件文件名使用 PascalCase
```

```markdown
<!-- .claude/rules/api-routes.md -->
---
description: API 路由开发规则
globs: src/routes/**/*.ts
---

## API 路由规范
- 必须定义 Fastify schema（request/response）
- 使用 rate-limit 插件
- 错误处理统一使用 setNotFoundHandler/setErrorHandler
- 路由注册在 src/routes/index.ts 统一导出
```

**关键点：** `globs` 字段使用 glob 模式匹配，只有在 Claude Code 处理匹配的文件时才会加载该规则，这避免了全局上下文的膨胀。

### 2.6 第六层：自动记忆

Claude Code 内置的自动记忆系统，存储在 `.claude/memory/` 目录下：

```bash
# 查看自动记忆目录
ls .claude/memory/
# 输出示例:
# architecture-decisions.md
# api-patterns.md
# debugging-notes.md
```

自动记忆文件格式：
```markdown
---
name: architecture-decisions
description: 项目架构决策记录
metadata:
  type: project
---

## 决策记录
- 2026-06-10: 选择 Fastify 替代 Express，原因是性能基准测试提升 40%
- 2026-06-08: 采用 Drizzle ORM 替代 Prisma，避免生成步骤和更好的 TypeScript 支持
```

**使用 `/memory` 命令管理记忆：**
```bash
# 在 Claude Code 会话中
> /memory
# 输入要记住的内容，Claude 会自动写入合适的记忆文件
```

---

## 第三章：settings.json 配置体系——精确控制 Claude Code 行为

### 3.1 配置文件层级

Claude Code 的配置系统同样采用多层架构：

| 层级 | 文件位置 | 作用域 | 优先级 |
|------|---------|--------|--------|
| Enterprise Managed | 管理员配置 | 企业全局 | 最高 |
| User Global | `~/.claude/settings.json` | 用户所有项目 | 高 |
| Project Shared | `.claude/settings.json` | 项目所有成员 | 中 |
| Project Local | `.claude/settings.local.json` | 项目个人 | 低 |

### 3.2 完整 settings.json 结构

```jsonc
// .claude/settings.json
{
  // ===== 权限配置 =====
  "permissions": {
    "allow": [
      // Bash 命令白名单
      "Bash(pnpm install)",
      "Bash(pnpm test)",
      "Bash(pnpm test:unit)",
      "Bash(pnpm lint)",
      "Bash(pnpm build)",
      "Bash(pnpm dev)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git branch *)",
      "Bash(docker compose *)",
      
      // 文件操作白名单
      "Read(*)",
      "Write(src/**)",
      "Edit(src/**)",
      "Edit(test/**)"
    ],
    "deny": [
      // 禁止写入的危险路径
      "Write(.env*)",
      "Write(*.pem)",
      "Write(*.key)",
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(curl * | bash*)"
    ]
  },

  // ===== 环境变量 =====
  "env": {
    "NODE_ENV": "development",
    "DATABASE_URL": "postgresql://localhost:5433/myapp_dev",
    "REDIS_URL": "redis://localhost:6379"
  },

  // ===== Hooks 配置 =====
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/pre-bash-validate.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/post-format-check.sh"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/notify.sh"
          }
        ]
      }
    ]
  },

  // ===== MCP 服务器 =====
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://localhost:5433/myapp_dev"
      }
    }
  },

  // ===== 其他设置 =====
  "model": "claude-sonnet-4-6",
  "theme": "dark",
  "preferredNotifChannel": "iterm2"
}
```

### 3.3 权限模式详解

Claude Code 的权限有三种模式：

```mermaid
graph LR
    A[工具调用请求] --> B{检查权限}
    B -->|在 allow 列表| C[自动执行]
    B -->|在 deny 列表| D[拒绝执行]
    B -->|未匹配任何规则| E[弹出确认]
    E -->|用户允许| F[执行 + 记住选择]
    E -->|用户拒绝| G[跳过]
```

**权限语法详解：**

```jsonc
{
  "permissions": {
    "allow": [
      // 精确匹配：只允许特定命令
      "Bash(git status)",
      
      // 通配符匹配：允许以某前缀开头的命令
      "Bash(pnpm test*)",
      
      // 路径通配符：允许操作特定目录下的文件
      "Write(src/**/*.ts)",
      "Edit(test/**/*.test.ts)",
      
      // 完全通配：允许该工具的所有操作（谨慎使用）
      "Read(*)"
    ]
  }
}
```

**使用 `/permissions` 命令交互式管理：**
```bash
# 在 Claude Code 会话中
> /permissions
# 会打开交互式 UI，可以添加/删除/修改权限规则
```

### 3.4 CLI 标志快速配置

除了配置文件，也可以通过 CLI 标志一次性配置：

```bash
# 临时允许特定命令
claude --allow "Bash(pnpm test)" --allow "Bash(pnpm lint)"

# 临时设置模型
claude --model claude-opus-4-8

# 一次性执行命令
claude -p "运行所有测试并报告结果" --allowedTools "Bash(pnpm test)"
```

---

## 第四章：Hooks 实战——构建自动化流水线

### 4.1 Hooks 机制详解

Hooks 是 Claude Code 的扩展点，允许你在特定事件触发时执行自定义脚本：

| Hook 类型 | 触发时机 | 典型用途 |
|-----------|---------|---------|
| `PreToolUse` | 工具调用前 | 命令校验、安全审计、日志记录 |
| `PostToolUse` | 工具调用后 | 格式化、测试、通知、统计 |
| `Notification` | Claude 通知时 | Slack/钉钉推送、声音提醒 |
| `Stop` | Claude 停止生成时 | 总结报告、状态更新 |

```mermaid
sequenceDiagram
    participant U as 用户
    participant C as Claude Code
    participant H as Hook 脚本
    participant T as 工具

    U->>C: 输入指令
    C->>C: 决定调用工具
    C->>H: PreToolUse Hook
    H-->>C: approve / deny / 修改参数
    alt Hook 批准
        C->>T: 执行工具
        T-->>C: 返回结果
        C->>H: PostToolUse Hook
        H-->>C: 后处理完成
    else Hook 拒绝
        C-->>U: 报告被拒绝
    end
```

### 4.2 实战：PreToolUse 安全校验

```bash
# 创建 hooks 目录
mkdir -p .claude/hooks
```

```bash
# .claude/hooks/pre-bash-validate.sh
#!/bin/bash
# 从 stdin 读取工具调用的 JSON 输入
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

# 阻止危险命令
DANGEROUS_PATTERNS=(
  "rm -rf /"
  "drop database"
  "DROP TABLE"
  "truncate table"
  "sudo rm"
  ":(){:|:&};:"
  "mkfs"
  "dd if="
)

for pattern in "${DANGEROUS_PATTERNS[@]}"; do
  if echo "$COMMAND" | grep -qi "$pattern"; then
    echo "BLOCKED: 命令包含危险操作 '$pattern'"
    exit 1  # exit 1 = 阻止执行
  fi
done

# 阻止生产环境操作
if echo "$COMMAND" | grep -qi "prod\|production"; then
  echo "BLOCKED: 当前不允许操作生产环境"
  exit 1
fi

# 允许执行
exit 0
```

```bash
chmod +x .claude/hooks/pre-bash-validate.sh
```

### 4.3 实战：PostToolUse 自动格式化

```bash
# .claude/hooks/post-format-check.sh
#!/bin/bash
INPUT=$(cat)
TOOL=$(echo "$INPUT" | jq -r '.tool_name // empty')
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

# 只在文件写入/编辑时触发
if [[ "$TOOL" == "Write" || "$TOOL" == "Edit" ]]; then
  # TypeScript/JavaScript 文件自动格式化
  if echo "$FILE_PATH" | grep -qE '\.(ts|tsx|js|jsx)$'; then
    pnpm prettier --write "$FILE_PATH" 2>/dev/null
    echo "Formatted: $FILE_PATH"
  fi
  
  # Python 文件自动格式化
  if echo "$FILE_PATH" | grep -qE '\.py$'; then
    ruff format "$FILE_PATH" 2>/dev/null
    echo "Formatted: $FILE_PATH"
  fi
fi

exit 0
```

### 4.4 实战：通知 Hook

```bash
# .claude/hooks/notify.sh
#!/bin/bash
INPUT=$(cat)
MESSAGE=$(echo "$INPUT" | jq -r '.message // "Claude Code 任务完成"')

# macOS 通知
if [[ "$OSTYPE" == "darwin"* ]]; then
  osascript -e "display notification \"$MESSAGE\" with title \"Claude Code\""
fi

# Linux 通知
if [[ "$OSTYPE" == "linux"* ]]; then
  notify-send "Claude Code" "$MESSAGE" 2>/dev/null
fi

# iTerm2 通知（如果安装了 it2attention）
which it2attention &>/dev/null && it2attention fireworks

exit 0
```

### 4.5 配置 Hooks 到 settings.json

```jsonc
// .claude/settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/pre-bash-validate.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/post-format-check.sh"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/notify.sh"
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "echo '[✓] Claude Code 会话结束' >> .claude/session-log.txt"
          }
        ]
      }
    ]
  }
}
```

---

## 第五章：完整实战——构建电商平台项目的配置体系

### 5.1 项目初始化

```bash
# 创建项目
mkdir -p ecommerce-api && cd ecommerce-api
git init

# 创建 Claude Code 配置目录结构
mkdir -p .claude/rules .claude/hooks .claude/memory

# 初始化 Claude Code
claude
# 在 Claude Code 中输入:
> /init
# Claude 会扫描项目并生成初始 CLAUDE.md
```

### 5.2 编写完整 CLAUDE.md

```markdown
# 电商平台 API

## 技术栈
- Node.js 22 + TypeScript 5.8
- Fastify 5 + Drizzle ORM + PostgreSQL 16
- BullMQ + Redis 7（消息队列）
- pnpm 9 + Vitest

## 项目结构
```
src/
├── routes/          # API 路由（按领域分文件）
│   ├── v1/          # API v1
│   └── v2/          # API v2
├── services/        # 业务逻辑层
├── db/
│   ├── schema/      # Drizzle Schema
│   └── migrations/  # 数据库迁移
├── workers/         # BullMQ Workers
├── middleware/       # Fastify 中间件
└── utils/           # 工具函数
test/                # 测试（镜像 src 结构）
```

## 命令
- `pnpm dev` — 开发服务器
- `pnpm build` — 生产构建
- `pnpm test` — 运行所有测试
- `pnpm test:unit` — 只跑单元测试
- `pnpm test:integration` — 只跑集成测试
- `pnpm lint` — ESLint 检查
- `pnpm db:generate` — 生成数据库迁移
- `pnpm db:migrate` — 执行迁移

## 编码规范
- 使用函数式风格，避免 class
- 错误使用 AppError，不要 throw new Error()
- 路由必须定义 Fastify schema validation
- Service 层不能直接依赖 Fastify request/reply
- 所有 async 函数必须处理错误

## 测试规范
- 单元测试: `test/**/*.test.ts`
- 集成测试: `test/**/*.integration.test.ts`
- 使用 `test()` 而非 `it()`
- Mock 外部依赖，不要 mock 内部模块

## 注意事项
- 不要修改 src/generated/ 目录（代码生成产物）
- 不要直接操作数据库，使用 Drizzle query builder
- 修改 Schema 后必须运行 `pnpm db:generate`
- API 必须有版本前缀 /api/v1/ 或 /api/v2/
```

### 5.3 创建路径规则文件

```bash
# React 前端规则（如果项目有前端）
cat > .claude/rules/frontend.md << 'RULEEOF'
---
description: 前端 React 组件开发规则
globs: frontend/src/**/*.tsx
---

## 前端规范
- 使用 React 19 + Server Components
- 样式使用 Tailwind CSS v4
- 状态管理使用 Zustand
- 数据获取使用 TanStack Query v5
- 组件文件名 PascalCase.tsx
RULEEOF

# Worker 规则
cat > .claude/rules/workers.md << 'RULEEOF'
---
description: BullMQ Worker 开发规则
globs: src/workers/**/*.ts
---

## Worker 规范
- 继承 BaseWorker 类
- 队列命名: `{domain}:{action}`
- 重试: 最大 3 次，指数退避
- 必须实现 graceful shutdown
- 日志使用结构化 JSON
RULEEOF

# 数据库规则
cat > .claude/rules/database.md << 'RULEEOF'
---
description: 数据库 Schema 和迁移规则
globs: src/db/**/*.ts
---

## 数据库规范
- Schema 定义在 src/db/schema/
- 使用 Drizzle 的 pgTable 定义
- 所有表必须有 createdAt/updatedAt 字段
- 软删除使用 deletedAt 字段
- 索引命名: idx_{table}_{columns}
RULEEOF
```

### 5.4 配置完整 settings.json

```jsonc
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(pnpm *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git branch *)",
      "Bash(git checkout *)",
      "Bash(docker compose *)",
      "Bash(node *)",
      "Bash(npx *)",
      "Read(*)",
      "Write(src/**)",
      "Write(test/**)",
      "Write(.claude/rules/**)",
      "Edit(src/**)",
      "Edit(test/**)"
    ],
    "deny": [
      "Write(.env*)",
      "Write(*.pem)",
      "Write(*.key)",
      "Write(terraform/**)",
      "Write(.github/workflows/**)",
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(DROP *)",
      "Bash(production *)"
    ]
  },
  "env": {
    "NODE_ENV": "development"
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/pre-bash-validate.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/post-format-check.sh"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/notify.sh"
          }
        ]
      }
    ]
  }
}
```

### 5.5 添加 .gitignore 条目

```bash
# 添加到 .gitignore
cat >> .gitignore << 'EOF'

# Claude Code 个人配置
CLAUDE.local.md
.claude/settings.local.json
.claude/memory/
.claude/todos/
EOF
```

### 5.6 验证配置

```bash
# 启动 Claude Code 并验证
claude

# 在 Claude Code 中执行以下验证：
> 列出你加载的所有记忆文件和规则
# Claude 应该显示：
# - ~/.claude/CLAUDE.md（用户全局）
# - ./CLAUDE.md（项目根）
# - .claude/rules/*.md（路径规则）
# - 确认 settings.json 已加载

> 创建一个新的 API 路由 /api/v2/products
# Claude 应该：
# - 使用 Fastify 而非 Express
# - 文件放在 src/routes/v2/
# - 定义 schema validation
# - 自动运行格式化 hook
# - 不触碰 .env 或其他禁止文件
```

---

## 第六章：高级技巧与常见问题

### 6.1 CLAUDE.md 性能优化

**问题：** CLAUDE.md 过长导致上下文浪费，关键指令被忽略。

**解决方案：分层 + 路径规则**

```mermaid
graph TD
    A[CLAUDE.md 总内容] --> B{超过 200 行?}
    B -->|否| C[保持单文件即可]
    B -->|是| D[拆分为路径规则]
    D --> E[通用规则保留在 CLAUDE.md]
    D --> F[领域规则移到 .claude/rules/]
    D --> G[临时笔记用 /memory]
```

**最佳实践：**
- CLAUDE.md 控制在 50-100 行
- 每条规则用一句话，避免解释性文字
- 使用 `globs` 路径匹配按需加载
- 定期清理过时的记忆文件

### 6.2 团队协作中的记忆管理

```bash
# 提交共享配置，忽略个人配置
git add CLAUDE.md .claude/rules/ .claude/settings.json .claude/hooks/
git commit -m "chore: add Claude Code configuration"

# 个人配置在 .gitignore 中排除
# CLAUDE.local.md
# .claude/settings.local.json
# .claude/memory/
```

**团队约定建议：**
- `CLAUDE.md` —— 技术负责人维护，PR 审核
- `.claude/rules/` —— 各模块负责人维护各自规则
- `.claude/settings.json` —— DevOps 维护权限和 Hooks
- `.claude/hooks/` —— DevOps 维护，脚本需要 code review

### 6.3 常见问题排查

**Q: Claude 忽略了我的 CLAUDE.md 指令**
- 检查文件是否在正确位置（项目根目录）
- 确认文件名大小写（必须是 `CLAUDE.md`）
- 缩减文件长度，越靠前的指令权重越高
- 使用 `/memory` 命令确认 Claude 是否已加载

**Q: 权限配置不生效**
- 检查 `settings.json` 的 JSON 格式是否正确
- 确认文件在正确层级（`~/.claude/` 或 `.claude/`）
- 使用 `/permissions` 命令查看当前权限状态
- 注意 CLI `--allow` 标志会覆盖配置文件

**Q: Hooks 没有触发**
- 确认脚本有执行权限：`chmod +x .claude/hooks/*.sh`
- 检查脚本的 shebang 行：`#!/bin/bash`
- 手动运行脚本测试：`echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | .claude/hooks/pre-bash-validate.sh`
- 查看 Claude Code 的调试日志

**Q: 自动记忆太多/太杂**
- 定期清理 `.claude/memory/` 目录
- 使用 `/memory` 命令管理（删除过时条目）
- 在 CLAUDE.md 中指导 Claude 什么该记、什么不该记

### 6.4 企业级配置模板

对于企业团队，建议使用 Managed Settings（管理员配置）：

```jsonc
// 企业管理员配置（通过管理平台下发）
{
  "permissions": {
    "deny": [
      "Bash(curl * | *sh)",
      "Bash(wget * | *sh)",
      "Bash(eval *)",
      "Write(/etc/*)",
      "Write(/var/*)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "/usr/local/bin/claude-security-audit.sh"
          }
        ]
      }
    ]
  },
  "mcpServers": {
    "company-knowledge": {
      "command": "npx",
      "args": ["-y", "@company/mcp-knowledge-base"],
      "env": {
        "API_URL": "https://internal-api.company.com"
      }
    }
  }
}
```

---

## 第七章：记忆系统工作流总览

```mermaid
flowchart TB
    subgraph 会话启动
        A[用户输入 claude] --> B[加载全局 CLAUDE.md]
        B --> C[加载项目 CLAUDE.md]
        C --> D[加载 CLAUDE.local.md]
        D --> E[加载路径规则 .claude/rules/]
        E --> F[加载自动记忆 .claude/memory/]
        F --> G[加载 settings.json]
        G --> H[注册 Hooks]
    end

    subgraph 对话过程
        H --> I[用户输入指令]
        I --> J[Claude 分析意图]
        J --> K{需要调用工具?}
        K -->|是| L[触发 PreToolUse Hook]
        L --> M{Hook 批准?}
        M -->|是| N[执行工具]
        M -->|否| O[报告拒绝]
        N --> P[触发 PostToolUse Hook]
        P --> Q[返回结果给 Claude]
        K -->|否| Q
        Q --> R[Claude 生成回复]
        R --> S{需要保存记忆?}
        S -->|是| T[写入 .claude/memory/]
        S -->|否| U[继续对话]
        T --> U
        U --> I
    end

    style A fill:#4A90D9,color:#fff
    style H fill:#7B68EE,color:#fff
    style N fill:#50C878,color:#fff
    style T fill:#FFD700,color:#333
```

---

## 延伸阅读

| 资源 | 说明 |
|------|------|
| [Claude Code 官方记忆文档](https://code.claude.com/docs/en/memory) | Anthropic 官方关于 CLAUDE.md 和记忆系统的权威文档 |
| [Claude Code 官方设置文档](https://code.claude.com/docs/en/settings) | settings.json 和权限系统的官方参考 |
| [Claude Code 官方命令参考](https://code.claude.com/docs/en/commands) | 所有斜杠命令和 CLI 标志的完整列表 |
| [Claude Code 官方权限文档](https://code.claude.com/docs/en/permissions) | 权限模型和管理的官方指南 |

---

## 训练营适用性评估

| 维度 | 评估 |
|------|------|
| **适合训练营类型** | Claude Code 进阶训练营、AI 工程师训练营、DevOps 自动化训练营 |
| **预计教学时长** | 3-4 小时（含实操练习） |
| **学员基础要求** | 已使用 Claude Code 至少 1 周，熟悉终端和 JSON 配置 |
| **实操占比** | 70%（大量动手配置）+ 30%（原理解释） |
| **推荐教学顺序** | 第二章（CLAUDE.md）→ 第三章（settings.json）→ 第四章（Hooks）→ 第五章（综合实战） |
| **考核方式** | 学员提交一个完整配置的项目仓库，评审配置的完整性和规范性 |

---

## 参考来源

1. [How Claude remembers your project — Claude Code Official Docs](https://code.claude.com/docs/en/memory) — Anthropic 官方记忆系统文档，涵盖 CLAUDE.md 和 Auto Memory 两大机制
2. [The 6-Layer Memory Architecture I Run for Claude Code — Guatu Labs](https://guatulabs.dev/posts/six-layer-memory-architecture-for-claude-code/) — 从单文件到六层架构的演进实践，含开源模板
3. [Complete Guide to Claude Code Permissions — ClaudeCodeLab](https://claudecode-lab.com/en/blog/claude-code-permissions-guide/) — settings.json 权限、Hooks、Allowlist 的完整代码级教程
4. [The Definitive Guide to Every Claude Code Configuration File — Wittmann](https://wittmannf.github.io/blog/claude-code-config-guide/) — 覆盖所有配置文件的类型、位置、加载顺序
5. [CLAUDE.md Files and Memory Hierarchy — DeepWiki](https://deepwiki.com/FlorianBruniaux/claude-code-ultimate-guide/4.1-claude.md-files-and-memory-hierarchy) — 社区维护的三层记忆系统参考文档

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
