首页 › tutorials › 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 在对话中自动保存的关键信息
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

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

# 全局偏好

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

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

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

操作命令:

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

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

2.2 第二层:项目根配置

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

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

# 项目:电商平台 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,用于个人调试和临时配置:

# 个人本地配置(不提交)

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

## 临时偏好
- 详细输出 SQL 查询日志
- 跳过集成测试
# 确保 CLAUDE.local.md 不被提交
echo "CLAUDE.local.md" >> .gitignore

2.4 第四层:子目录专属配置

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

# 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 操作匹配路径时加载:

mkdir -p .claude/rules

创建路径匹配规则:

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

## React 组件规范
- 使用函数组件 + Hooks
- Props 必须定义 TypeScript interface
- 使用 React.memo 包裹纯展示组件
- 样式使用 Tailwind CSS 类名
- 组件文件名使用 PascalCase
<!-- .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/ 目录下:

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

自动记忆文件格式:

---
name: architecture-decisions
description: 项目架构决策记录
metadata:
  type: project
---

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

使用 /memory 命令管理记忆:

# 在 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 结构

// .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 的权限有三种模式:

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

权限语法详解:

{
  "permissions": {
    "allow": [
      // 精确匹配:只允许特定命令
      "Bash(git status)",

      // 通配符匹配:允许以某前缀开头的命令
      "Bash(pnpm test*)",

      // 路径通配符:允许操作特定目录下的文件
      "Write(src/**/*.ts)",
      "Edit(test/**/*.test.ts)",

      // 完全通配:允许该工具的所有操作(谨慎使用)
      "Read(*)"
    ]
  }
}

使用 /permissions 命令交互式管理:

# 在 Claude Code 会话中
> /permissions
# 会打开交互式 UI,可以添加/删除/修改权限规则

3.4 CLI 标志快速配置

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

# 临时允许特定命令
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 停止生成时 总结报告、状态更新
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 安全校验

# 创建 hooks 目录
mkdir -p .claude/hooks
# .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
chmod +x .claude/hooks/pre-bash-validate.sh

4.3 实战:PostToolUse 自动格式化

# .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

# .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

// .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 项目初始化

# 创建项目
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

# 电商平台 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 创建路径规则文件

# 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

// .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 条目

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

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

5.6 验证配置

# 启动 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 过长导致上下文浪费,关键指令被忽略。

解决方案:分层 + 路径规则

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 团队协作中的记忆管理

# 提交共享配置,忽略个人配置
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(管理员配置):

// 企业管理员配置(通过管理平台下发)
{
  "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"
      }
    }
  }
}

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

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 官方记忆文档 Anthropic 官方关于 CLAUDE.md 和记忆系统的权威文档
Claude Code 官方设置文档 settings.json 和权限系统的官方参考
Claude Code 官方命令参考 所有斜杠命令和 CLI 标志的完整列表
Claude Code 官方权限文档 权限模型和管理的官方指南

训练营适用性评估

维度 评估
适合训练营类型 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 — Anthropic 官方记忆系统文档,涵盖 CLAUDE.md 和 Auto Memory 两大机制
  2. The 6-Layer Memory Architecture I Run for Claude Code — Guatu Labs — 从单文件到六层架构的演进实践,含开源模板
  3. Complete Guide to Claude Code Permissions — ClaudeCodeLab — settings.json 权限、Hooks、Allowlist 的完整代码级教程
  4. The Definitive Guide to Every Claude Code Configuration File — Wittmann — 覆盖所有配置文件的类型、位置、加载顺序
  5. CLAUDE.md Files and Memory Hierarchy — DeepWiki — 社区维护的三层记忆系统参考文档

[!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学通信知识星球海报-扫码加入