前置知识
阅读本文前,建议先了解:
- 02-Claude Code 基础使用 - 掌握基础使用技巧
一、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
# 会话中查看
/permissions2.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 查看和编辑记忆
# 查看和编辑记忆
/memory3.6 CLAUDE.md vs Memory
| 特性 | CLAUDE.md | Memory |
|---|---|---|
| 内容来源 | 手动编写 | 自动保存 |
| 存储位置 | 项目目录 | 用户本地 |
| 是否提交 | ✅ 可提交 | ❌ 不提交 |
| 加载内容 | 完整内容 | 前 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 → 跨会话学习、用户偏好、技术决策
↓
三者互补,形成完整的项目知识体系
五、总结
核心要点
- CLAUDE.md:持久化项目指令,每次会话自动加载
- 权限系统:四种模式 + 规则语法,控制 Claude 行为
- Memory:跨会话自动记忆,前 200 行加载
- 安全机制:检查点撤销 + 权限控制双重保障
- 最佳实践:具体、简洁、结构化
延伸阅读
- 编程开发(Claude Code) - 返回总览
- 02-Claude Code 基础使用 - 基础使用技巧
- 04-Claude Code 外部扩展 - MCP、Hooks、Subagents、Skills
- 05-Claude Code 进阶使用 - 高级功能和最佳实践