前置知识

阅读本文前,建议先了解:


一、CLAUDE.md 项目指令

1.1 什么是 CLAUDE.md

CLAUDE.md 是持久化的项目指令文件,每次会话启动时自动加载。

[!比喻] CLAUDE.md 像什么? CLAUDE.md 就像给新员工的”入职手册”——告诉 Claude 这个项目是什么、如何构建、代码规范是什么、需要注意什么。

1.2 存放位置与优先级

位置作用域是否提交
托管目录组织级团队共享
./CLAUDE.md./.claude/CLAUDE.md项目级✅ 提交到仓库
~/.claude/CLAUDE.md用户级个人偏好
┌─────────────────────────────────────────┐
│      CLAUDE.md 优先级(高 → 低)         │
├─────────────────────────────────────────┤
│ 1. 托管目录(组织级)                    │
│ 2. 项目级(./.claude/CLAUDE.md)         │
│ 3. 用户级(~/.claude/CLAUDE.md)         │
└─────────────────────────────────────────┘

累加加载

CLAUDE.md 文件是累加的:所有级别同时向 Claude 的上下文贡献内容。当说明冲突时,更具体的说明通常优先。

1.3 推荐结构

# 项目概述
 
简洁描述项目功能和技术栈
 
# 构建命令
 
- `npm install` — 安装依赖
- `npm run dev` — 启动开发服务器
- `npm test` — 运行测试
- `npm run build` — 生产构建
 
# 代码规范
 
- 使用 TypeScript 严格模式
- 组件使用函数式写法
- 缩进:2 个空格
- 变量命名:camelCase
 
# 项目结构
 
- `src/api/` — API 处理逻辑
- `src/components/` — React 组件
- `src/utils/` — 工具函数

1.4 规则系统

可将规则拆分到 .claude/rules/ 目录下,按模块管理:

.claude/
└── rules/
    ├── api-standards.md    # API 规范
    ├── testing.md          # 测试规范
    └── security.md         # 安全规范

1.5 最佳实践

建议说明
控制在 200 行以内避免上下文占用过多
使用清晰的 Markdown 结构层次分明,便于阅读
指令要具体”使用 2 空格缩进”而非”格式化好”
使用 @ 引用文件链接到相关文件
定期更新保持与项目同步

二、权限系统

2.1 权限模式

模式行为适用场景
Default文件编辑和命令前都询问日常开发,需要审核
Auto Accept Edits自动接受编辑,仍询问命令信任的修改任务
Plan Mode只读工具,创建计划安全分析,规划阶段
DontAsk未预授权则自动拒绝受限访问场景

2.2 切换模式

# 快捷键切换
Shift+Tab     # 循环切换:default → acceptEdits → plan → default
 
# 命令行启动
claude --permission-mode plan
 
# 会话中查看
/permissions

2.3 权限规则语法

{
  "permissions": {
    "defaultMode": "default",
    "allow": [
      "Bash(npm run *)",
      "Bash(git commit *)",
      "Read(src/**)",
      "Edit(src/**)",
      "WebFetch(domain:github.com)",
      "mcp__github__*"
    ],
    "deny": [
      "Bash(git push *)",
      "Bash(rm -rf *)",
      "Edit(.env)"
    ]
  }
}
语法说明示例
Bash(command)Shell 命令匹配Bash(npm run *)
Read(path)读取路径匹配Read(src/**)
Edit(path)编辑路径匹配Edit(src/**/*.ts)
WebFetch(domain:xxx)网站域名匹配WebFetch(domain:github.com)
mcp__server__*MCP 工具匹配mcp__github__*

2.4 安全机制

┌─────────────────────────────────────────┐
│         Claude Code 安全机制            │
├─────────────────────────────────────────┤
│  1. 检查点(撤销更改)                   │
│     - 编辑前自动快照                     │
│     - Esc+Esc 回退                       │
│                                         │
│  2. 权限控制                            │
│     - 模式切换                          │
│     - 规则匹配                          │
│     - 阻止危险操作                       │
└─────────────────────────────────────────┘

检查点限制

  • 仅文件更改:只涵盖文件编辑的快照
  • 会话本地:仅在当前会话有效
  • 无法撤销外部操作:数据库、API、部署无法回退

三、Memory 记忆系统

3.1 什么是 Memory

Memory(记忆系统) 是 Claude Code 跨会话保存学习到的信息的机制。

[!比喻] Memory 像什么? Memory 就像 Claude 的”工作笔记本”——每次会话学到的经验都记下来,下次会话时翻开笔记本就能看到之前的学习。

3.2 存储位置

存储位置:~/.claude/projects/<project-hash>/memory/
索引文件:MEMORY.md

3.3 自动保存内容

内容类型示例
项目模式”这个项目使用 pnpm 而不是 npm”
用户偏好”用户喜欢详细的错误消息”
技术决策”选择 Redux 而不是 Context”
架构理解”认证模块在 src/auth/目录”

3.4 加载机制

会话启动时:
    ↓
自动加载 MEMORY.md 前 200 行(或 25KB)
    ↓
Claude 获得项目的历史学习
    ↓
无需重复说明已知信息

3.5 查看和编辑记忆

# 查看和编辑记忆
/memory

3.6 CLAUDE.md vs Memory

特性CLAUDE.mdMemory
内容来源手动编写自动保存
存储位置项目目录用户本地
是否提交✅ 可提交❌ 不提交
加载内容完整内容前 200 行
适用内容项目约定、规范学习到的经验

3.7 禁用自动记忆

{
  "autoMemoryEnabled": false
}
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1

四、三者的关系与组合

4.1 功能对比

功能作用上下文成本
CLAUDE.md每次对话加载的持久上下文每个请求
Permissions控制 Claude 可以做什么每个请求
Memory跨会话自动记忆每个请求(前 200 行)

4.2 组合使用

CLAUDE.md → 项目约定、构建命令、代码规范
    ↓
Permissions → 预授权常用命令、禁止危险操作
    ↓
Memory → 跨会话学习、用户偏好、技术决策
    ↓
三者互补,形成完整的项目知识体系

五、总结

核心要点

  1. CLAUDE.md:持久化项目指令,每次会话自动加载
  2. 权限系统:四种模式 + 规则语法,控制 Claude 行为
  3. Memory:跨会话自动记忆,前 200 行加载
  4. 安全机制:检查点撤销 + 权限控制双重保障
  5. 最佳实践:具体、简洁、结构化

延伸阅读