学习目标:掌握Claude Code从CLAUDE.md到Auto-Memory、MEMORY.md索引、Topic Files、settings.json权限体系、Hooks自动化的完整记忆与配置架构,学会构建一个"永不遗忘"的个性化AI编程助手。
适用人群:已安装Claude Code并完成过基本操作的开发者,希望将Claude Code从"一次性对话工具"升级为"长期团队伙伴"的中高级用户。
前置条件:已安装Claude Code CLI(npm install -g @anthropic-ai/claude-code),具备Git基本操作知识,至少有一个正在开发的项目。
大多数Claude Code用户停留在"打开终端→提问→得到答案→关闭"的阶段。他们每次启动都是一张白纸,反复告诉Claude同样的偏好、同样的项目结构、同样的代码规范。这不是工具的问题——是没有激活记忆系统。
根据MindStudio的分析,Claude Code实际上拥有六层记忆架构,从最基础的系统提示到跨工具共享记忆,每一层都有独特的职责和持久化策略。掌握这套体系,你的Claude Code将具备:
graph TB
subgraph "Claude Code 六层记忆架构"
L1["第1层: System Prompt<br/>内置系统指令"]
L2["第2层: ~/.claude/CLAUDE.md<br/>用户全局偏好"]
L3["第3层: 项目根目录/CLAUDE.md<br/>团队共享规范"]
L4["第4层: 子目录/.claude/CLAUDE.md<br/>模块级上下文"]
L5["第5层: Auto-Memory<br/>~/.claude/projects/记忆文件"]
L6["第6层: Cross-Tool/AGENTS.md<br/>跨工具共享标准"]
end
L1 --> L2 --> L3 --> L4 --> L5 --> L6
style L1 fill:#e8f5e9
style L2 fill:#fff3e0
style L3 fill:#e3f2fd
style L4 fill:#f3e5f5
style L5 fill:#fce4ec
style L6 fill:#e0f7fa
系统提示是Claude Code内置的启动指令,定义了Claude的身份、工具使用规则、安全边界等。普通用户无法直接修改这一层,但通过后续层的配置可以覆盖和补充系统提示的行为。
关键认知:系统提示设定了基础能力边界,CLAUDE.md等文件设定了个性化偏好。两者叠加,才是Claude Code的完整行为模式。
这是个人专属的记忆层,位于 ~/.claude/CLAUDE.md。它对所有项目生效,适合存放:
实战:创建你的全局CLAUDE.md
# 确保 ~/.claude 目录存在
mkdir -p ~/.claude
# 创建全局 CLAUDE.md
cat > ~/.claude/CLAUDE.md << 'EOF'
# Global Preferences
## Language & Style
- 默认使用中文回复,代码注释用英文
- 回复简洁明了,避免冗长解释
- 代码/命令保持原文,说明用中文
## Coding Preferences
- 前端项目优先使用 TypeScript
- 后端API优先使用 Python FastAPI
- 测试框架优先使用 Vitest (前端) / pytest (后端)
- Git commit message 使用 Conventional Commits 规范
## Safety Rules
- 不要自动 git commit,只在明确要求时执行
- 始终先读取文件再编辑
- 不要提交 .env 等敏感文件
- 修改代码后主动运行测试验证
EOF
预期结果:此后任何项目中启动Claude Code,都会自动读取这些偏好。你可以验证:
# 在任意项目目录启动 Claude Code,然后输入:
claude
# 进入对话后输入:
# "我的编码偏好是什么?"
# Claude 会准确复述你配置的内容
这是团队共享的记忆层,位于项目根目录的 CLAUDE.md。它应该被提交到Git仓库,让所有团队成员的Claude Code共享同一套项目规范。
实战:为项目创建CLAUDE.md
# 在你的项目根目录
cd ~/my-project
cat > CLAUDE.md << 'EOF'
# Project: My E-Commerce Platform
## Tech Stack
- Frontend: Next.js 14 + TypeScript + Tailwind CSS
- Backend: Python 3.12 + FastAPI + SQLAlchemy 2.0
- Database: PostgreSQL 16
- Cache: Redis 7
- Queue: Celery + RabbitMQ
## Project Structure
src/ frontend/ # Next.js 应用 backend/ # FastAPI 应用 api/ # API路由 models/ # SQLAlchemy模型 services/ # 业务逻辑 schemas/ # Pydantic schemas shared/ # 共享类型和工具
## Code Conventions
- API 路由使用 RESTful 风格,版本化: /api/v1/
- 所有 API 必须有对应的 Pydantic schema 验证
- 数据库迁移使用 Alembic,禁止手动修改表结构
- 前端组件使用函数式组件 + Hooks
- 状态管理使用 Zustand,不用 Redux
## Testing Requirements
- 后端测试覆盖率目标: 80%
- 每个 API endpoint 必须有集成测试
- 前端使用 Testing Library + MSW mock
## Common Commands
- `make dev` - 启动开发环境
- `make test` - 运行所有测试
- `make lint` - 代码检查
- `make migrate` - 执行数据库迁移
EOF
关键原则:项目级CLAUDE.md应该包含让一个新加入的开发者(或AI)快速上手所需的一切信息。这包括技术栈、项目结构、编码规范、常用命令。
常见问题与解决方案:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Claude忽略了CLAUDE.md中的规范 | 文件过大,关键信息被稀释 | 使用清晰的标题层级,将最关键的规则放在文件开头 |
| 不同开发者偏好冲突 | 全局CLAUDE.md和项目级冲突 | 项目级优先级更高,团队以项目级为准 |
| CLAUDE.md过于冗长 | 把所有文档都塞进去 | 只写"规则"不写"教程",控制在200行以内 |
大型项目中,不同模块可能需要不同的上下文。Claude Code支持在子目录中放置 .claude/CLAUDE.md 或 CLAUDE.md,提供更精细的上下文控制。
graph LR
subgraph "项目目录结构"
A["~/project/CLAUDE.md<br/>项目全局规范"]
B["~/project/frontend/.claude/CLAUDE.md<br/>前端模块规范"]
C["~/project/backend/.claude/CLAUDE.md<br/>后端模块规范"]
D["~/project/backend/api/.claude/CLAUDE.md<br/>API模块规范"]
end
A --> B
A --> C
C --> D
style A fill:#e3f2fd
style B fill:#fff3e0
style C fill:#e8f5e9
style D fill:#f3e5f5
实战:为不同模块创建专属上下文
# 前端模块
mkdir -p ~/my-project/frontend/.claude
cat > ~/my-project/frontend/.claude/CLAUDE.md << 'EOF'
# Frontend Module Context
## Component Guidelines
- 使用 Server Components 为默认,只有需要交互时才用 'use client'
- 组件文件命名: PascalCase.tsx
- 自定义Hook文件命名: useCamelCase.ts
- 样式使用 Tailwind,禁止内联style属性
## Known Issues
- Next.js 14 的 revalidatePath 在某些场景下不生效,使用 router.refresh() 替代
- Zustand persist middleware 与 SSR 冲突,需要使用 dynamic import
EOF
# 后端模块
mkdir -p ~/my-project/backend/.claude
cat > ~/my-project/backend/.claude/CLAUDE.md << 'EOF'
# Backend Module Context
## API Design Rules
- 所有 endpoint 必须有 OAuth2 Bearer Token 认证
- 错误响应使用统一格式: {"error": {"code": "XXX", "message": "..."}}
- 分页使用 cursor-based pagination,不用 offset
- 响应时间超过500ms的查询必须加缓存
## Database Rules
- 禁止使用 SELECT *,必须明确列出字段
- 所有时间字段使用 UTC,前端负责时区转换
- 软删除使用 deleted_at 字段,不用 is_deleted 布尔值
EOF
加载机制:当你在 ~/my-project/backend/api/ 目录启动Claude Code时,它会按顺序加载:全局CLAUDE.md → 项目根CLAUDE.md → backend/.claude/CLAUDE.md → api/.claude/CLAUDE.md,层层叠加,越具体的层级越晚加载,优先级越高。
这是Claude Code最强大的记忆能力——自动学习。当你在对话中发现Claude犯了错误,你纠正了它,它会自动将这个教训写入持久化文件,下次会话自动加载。
Auto-Memory文件存储在 ~/.claude/projects/<project-hash>/ 目录下。Claude Code会在以下场景自动写入记忆:
MEMORY.md 是整个记忆系统的索引文件。Ian Paterson在他的实践中提出了一个成熟的架构:
~/.claude/projects/<project-hash>/
MEMORY.md # 索引文件:每个记忆文件一行摘要
conventions.md # 项目编码约定
architecture.md # 架构决策记录
lessons-learned.md # 犯过的错误和教训
open-threads.md # 未完成的工作线程
user-preferences.md # 用户偏好记录
MEMORY.md索引文件示例:
# Memory Index
- [编码约定](conventions.md) — 项目编码风格和命名规范
- [架构决策](architecture.md) — 重大架构选择和原因
- [经验教训](lessons-learned.md) — 犯过的错误和纠正记录
- [开放线程](open-threads.md) — 未完成任务和待讨论事项
- [用户偏好](user-preferences.md) — 用户表达的个人偏好
步骤1:创建记忆目录和索引
# 首先找到你项目的记忆目录
# Claude Code 会根据项目路径生成 hash
# 可以通过在项目中运行 claude 然后输入 "你把记忆存储在哪个目录?" 来确认
# 创建记忆目录(示例路径)
MEMORY_DIR="$HOME/.claude/projects/-home-user-my-project/memory"
mkdir -p "$MEMORY_DIR"
# 创建索引文件
cat > "$MEMORY_DIR/MEMORY.md" << 'EOF'
# Memory Index
- [编码规范](coding-standards.md) — 项目编码风格和命名规范
- [架构决策](architecture-decisions.md) — 重大技术选型和架构选择
- [经验教训](lessons-learned.md) — 犯过的错误和纠正方案
- [开放线程](open-threads.md) — 未完成的工作和待确认事项
- [用户偏好](user-preferences.md) — 用户的个人编码偏好
EOF
步骤2:创建Topic Files
# 编码规范记忆
cat > "$MEMORY_DIR/coding-standards.md" << 'EOF'
---
name: coding-standards
description: 项目编码风格和命名规范
metadata:
type: project
---
# 编码规范
- Python 函数使用 snake_case 命名
- TypeScript 接口使用 PascalCase,以 I 开头
- 数据库表名使用 snake_case 复数形式
- API endpoint 使用 kebab-case
**Why:** 团队代码审查中反复出现命名不一致问题
**How to apply:** 创建新文件或函数时,先查阅此规范再命名
EOF
# 经验教训记忆
cat > "$MEMORY_DIR/lessons-learned.md" << 'EOF'
---
name: lessons-learned
description: 犯过的错误和纠正方案
metadata:
type: feedback
---
# 经验教训
## 2026-06-10: Alembic迁移顺序问题
- **错误**: 直接修改了已提交的迁移文件,导致团队其他成员数据库不一致
- **纠正**: 已提交的迁移文件禁止修改,只能创建新的迁移来修正
- **相关**: [[coding-standards]]
## 2026-06-08: NextJS SSR hydration mismatch
- **错误**: 在 Server Component 中使用了 Date.now(),导致客户端hydration不匹配
- **纠正**: 时间相关操作必须在 Client Component 中执行,或通过 props 传入
EOF
步骤3:利用 /memory 命令管理记忆
在Claude Code对话中,你可以使用以下命令来管理记忆:
# 在Claude Code对话中
# 查看当前记忆状态
> "你现在有哪些记忆文件?"
# 手动添加记忆
> "记住:这个项目的数据库密码字段始终使用 bcrypt 哈希,不要用 MD5"
# 纠正行为并自动记录
> "你刚才用了 var 声明变量,记住这个项目一律使用 const/let,禁止 var"
# 查看特定记忆
> "你在 lessons-learned.md 中记录了什么?"
记忆系统不是"写入就忘记"的,需要定期维护:
flowchart TD
A[会话开始] --> B[加载 MEMORY.md 索引]
B --> C[按需加载相关 Topic Files]
C --> D[正常工作]
D --> E{犯错被纠正?}
E -->|是| F[写入 lessons-learned.md]
E -->|否| G{发现新模式?}
G -->|是| H[更新对应 Topic File]
G -->|否| I{会话结束?}
F --> I
H --> I
I --> J[精简过时记忆]
J --> K[更新 MEMORY.md 索引]
K --> A
style A fill:#e8f5e9
style F fill:#fce4ec
style H fill:#fff3e0
style K fill:#e3f2fd
维护最佳实践:
[[link]] 引用的目标文件存在随着AI编程工具的多样化(Claude Code、Cursor、Windsurf、GitHub Copilot等),AGENTS.md 作为跨工具的开放标准应运而生。它由社区推动,定义了一套所有AI编程工具都能读取的通用指令格式。
CLAUDE.md vs AGENTS.md 对比:
| 特性 | CLAUDE.md | AGENTS.md |
|---|---|---|
| 适用范围 | 仅Claude Code | 所有支持该标准的AI工具 |
| 功能深度 | 支持Claude特有功能 | 仅包含通用指令 |
| 优先级 | 在Claude Code中优先 | 作为跨工具兼容层 |
| 维护成本 | 需单独维护 | 一次编写,多工具生效 |
实战:创建AGENTS.md
cat > ~/my-project/AGENTS.md << 'EOF'
# Agent Instructions
## Build & Test
- Build: `make build`
- Test: `make test`
- Lint: `make lint`
## Code Style
- Python: Follow PEP 8, use type hints
- TypeScript: Strict mode, no any types
- Commits: Conventional Commits format
## Architecture
- Monorepo with frontend/ and backend/
- API versioning: /api/v1/
- Database: PostgreSQL with Alembic migrations
## Safety
- Never drop database tables in production
- Always use parameterized queries
- Never commit .env files
EOF
记忆系统解决了"AI怎么记住",权限系统解决了"AI能做什么"。两者配合,才是一个完整的个性化配置。
Claude Code的settings.json同样遵循层级覆盖原则:
graph TB
subgraph "settings.json 配置层级"
S1["企业管理级<br/>(由管理员统一下发)"]
S2["用户全局级<br/>~/.claude/settings.json"]
S3["用户项目级<br/>~/.claude/projects/.../settings.json"]
S4["项目共享级<br/>.claude/settings.json"]
S5["本地覆盖级<br/>.claude/settings.local.json"]
end
S1 --> S2 --> S3 --> S4 --> S5
style S1 fill:#ffcdd2
style S2 fill:#fff3e0
style S3 fill:#e8f5e9
style S4 fill:#e3f2fd
style S5 fill:#f3e5f5
优先级从高到低:企业管理 → 本地覆盖 → 项目共享 → 用户项目级 → 用户全局级。越具体的场景优先级越高。
# 用户全局设置 — 定义基础安全策略
mkdir -p ~/.claude
cat > ~/.claude/settings.json << 'EOF'
{
"permissions": {
"allow": [
"Bash(git status*)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(npm test*)",
"Bash(npm run lint*)",
"Bash(make test*)",
"Bash(python -m pytest*)",
"Read(*)"
],
"deny": [
"Bash(rm -rf /)",
"Bash(sudo *)",
"Bash(curl * | bash)",
"Bash(wget * | bash)"
]
}
}
EOF
# 项目级设置 — 项目特定的权限
mkdir -p ~/my-project/.claude
cat > ~/my-project/.claude/settings.json << 'EOF'
{
"permissions": {
"allow": [
"Bash(docker compose up*)",
"Bash(docker compose down*)",
"Bash(make migrate*)",
"Bash(make seed*)"
]
},
"env": {
"DATABASE_URL": "postgresql://localhost:5432/myproject_dev"
}
}
EOF
# 本地覆盖 — 个人开发环境特定配置(不提交Git)
cat > ~/my-project/.claude/settings.local.json << 'EOF'
{
"env": {
"DATABASE_URL": "postgresql://localhost:5432/myproject_local"
}
}
EOF
# 确保本地配置不被提交
echo ".claude/settings.local.json" >> ~/my-project/.gitignore
Claude Code的权限控制支持三种模式:
| 模式 | 行为 | 适用场景 |
|---|---|---|
allow |
自动批准,不询问 | 安全的只读操作、测试命令 |
deny |
永久拒绝,不可覆盖 | 危险操作、sudo命令 |
| 默认(不配置) | 每次询问用户 | 不确定的操作 |
配置技巧:
{
"permissions": {
"allow": [
"Bash(git *)", // 允许所有 git 命令
"Bash(npm run test*)", // 允许测试相关命令
"Bash(npm run lint*)", // 允许 lint 相关命令
"Bash(npx tsc --noEmit)", // 允许类型检查
"Bash(docker compose *)", // 允许 docker compose 操作
"Read(*)", // 允许读取任何文件
"Write(src/**)" // 允许写入 src 目录下的文件
],
"deny": [
"Bash(sudo *)", // 禁止 sudo
"Bash(chmod 777*)", // 禁止危险权限修改
"Write(.env*)", // 禁止修改环境变量文件
"Write(**/secrets/**)" // 禁止修改 secrets 目录
]
}
}
Hooks是Claude Code的事件钩子系统,允许你在特定事件发生时自动执行脚本。这为记忆系统提供了自动化维护能力。
| Hook事件 | 触发时机 | 典型用途 |
|---|---|---|
PreToolUse |
工具调用前 | 拦截危险操作、注入上下文 |
PostToolUse |
工具调用后 | 记录操作日志、更新记忆 |
Notification |
通知发送时 | 自定义通知方式 |
Stop |
对话结束时 | 自动保存会话摘要 |
# 在项目 .claude/settings.json 中添加 hooks 配置
cat > ~/my-project/.claude/settings.json << 'EOFJSON'
{
"permissions": {
"allow": [
"Bash(git *)",
"Bash(make *)",
"Read(*)"
]
},
"hooks": {
"Stop": [
{
"type": "command",
"command": "bash .claude/hooks/save-session-summary.sh"
}
],
"PostToolUse": [
{
"type": "command",
"command": "bash .claude/hooks/log-tool-usage.sh",
"matcher": "Write|Edit"
}
]
}
}
EOFJSON
创建Hook脚本:
mkdir -p ~/my-project/.claude/hooks
# 会话结束时的摘要保存脚本
cat > ~/my-project/.claude/hooks/save-session-summary.sh << 'SCRIPT'
#!/bin/bash
# 记录会话结束时间
TIMESTAMP=$(date +"%Y-%m-%d %H:%M")
echo "- 会话结束于 $TIMESTAMP" >> .claude/session-log.md
SCRIPT
chmod +x ~/my-project/.claude/hooks/save-session-summary.sh
# 文件修改日志脚本
cat > ~/my-project/.claude/hooks/log-tool-usage.sh << 'SCRIPT'
#!/bin/bash
# 读取 stdin 中的工具调用信息
INPUT=$(cat)
FILE=$(echo "$INPUT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('tool_input',{}).get('file_path','unknown'))" 2>/dev/null || echo "unknown")
TIMESTAMP=$(date +"%Y-%m-%d %H:%M")
echo "- [$TIMESTAMP] 修改文件: $FILE" >> .claude/file-changes-log.md
SCRIPT
chmod +x ~/my-project/.claude/hooks/log-tool-usage.sh
现在让我们把所有层级整合起来,为一个真实项目构建完整的记忆和配置体系。
假设你有一个全栈电商平台项目 shop-platform,技术栈为 Next.js + FastAPI + PostgreSQL。
shop-platform/
├── CLAUDE.md # 第3层:项目共享记忆
├── AGENTS.md # 第6层:跨工具兼容
├── .claude/
│ ├── settings.json # 项目权限配置
│ ├── settings.local.json # 本地覆盖(不提交Git)
│ └── hooks/
│ ├── save-session-summary.sh # 会话结束Hook
│ └── log-tool-usage.sh # 操作日志Hook
├── frontend/
│ ├── .claude/
│ │ └── CLAUDE.md # 第4层:前端模块上下文
│ └── ...
├── backend/
│ ├── .claude/
│ │ └── CLAUDE.md # 第4层:后端模块上下文
│ └── ...
~/.claude/
├── CLAUDE.md # 第2层:用户全局偏好
├── settings.json # 用户全局权限
└── projects/
└── -home-user-shop-platform/
└── memory/
├── MEMORY.md # 记忆索引
├── coding-standards.md # 编码规范
├── architecture.md # 架构决策
├── lessons-learned.md # 经验教训
└── user-preferences.md # 用户偏好
以下是一个一键配置脚本,创建上述所有文件:
#!/bin/bash
# claude-code-setup.sh — 一键配置 Claude Code 完整记忆体系
# 使用方法: bash claude-code-setup.sh /path/to/your/project
PROJECT_DIR="${1:-$(pwd)}"
PROJECT_NAME=$(basename "$PROJECT_DIR")
echo "🧠 为项目 $PROJECT_NAME 配置 Claude Code 记忆体系..."
# === 第2层:用户全局偏好 ===
mkdir -p ~/.claude
if [ ! -f ~/.claude/CLAUDE.md ]; then
cat > ~/.claude/CLAUDE.md << 'EOF'
# Global Preferences
## Language
- 默认使用中文回复,代码注释用英文
- 代码/命令保持原文,说明用中文
## Coding Style
- TypeScript strict mode
- Python type hints required
- Conventional Commits
## Safety
- 不要自动 git commit
- 始终先读取文件再编辑
- 不要提交敏感文件
- 修改代码后主动运行测试
EOF
echo "✅ 创建全局 CLAUDE.md"
fi
# === 用户全局权限 ===
if [ ! -f ~/.claude/settings.json ]; then
cat > ~/.claude/settings.json << 'EOF'
{
"permissions": {
"allow": [
"Bash(git status*)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(npm test*)",
"Bash(npm run lint*)",
"Bash(python -m pytest*)",
"Read(*)"
],
"deny": [
"Bash(sudo *)",
"Bash(rm -rf /)"
]
}
}
EOF
echo "✅ 创建全局 settings.json"
fi
# === 第3层:项目级 CLAUDE.md ===
cat > "$PROJECT_DIR/CLAUDE.md" << EOF
# Project: $PROJECT_NAME
## Tech Stack
- 在此处填写你的技术栈
## Project Structure
- 在此处描述项目结构
## Code Conventions
- 在此处定义编码规范
## Common Commands
- 在此处列出常用命令
EOF
echo "✅ 创建项目 CLAUDE.md"
# === 项目权限配置 ===
mkdir -p "$PROJECT_DIR/.claude"
cat > "$PROJECT_DIR/.claude/settings.json" << 'EOF'
{
"permissions": {
"allow": [
"Bash(make *)",
"Bash(docker compose *)"
]
}
}
EOF
echo "✅ 创建项目 settings.json"
# === AGENTS.md 跨工具兼容 ===
cat > "$PROJECT_DIR/AGENTS.md" << 'EOF'
# Agent Instructions
## Build & Test
- 在此处填写构建和测试命令
## Code Style
- 在此处定义通用代码风格
## Safety
- 在此处定义安全规则
EOF
echo "✅ 创建 AGENTS.md"
# === 第5层:Auto-Memory 记忆系统 ===
# 生成项目路径hash(简化版本)
PROJECT_HASH=$(echo -n "$PROJECT_DIR" | sha256sum | cut -c1-16)
MEMORY_DIR="$HOME/.claude/projects/-${PROJECT_HASH}/memory"
mkdir -p "$MEMORY_DIR"
cat > "$MEMORY_DIR/MEMORY.md" << 'EOF'
# Memory Index
- [编码规范](coding-standards.md) — 项目编码风格和命名规范
- [架构决策](architecture.md) — 重大技术选型和架构选择
- [经验教训](lessons-learned.md) — 犯过的错误和纠正方案
- [用户偏好](user-preferences.md) — 用户的个人编码偏好
EOF
# 创建空Topic Files
for topic in coding-standards architecture lessons-learned user-preferences; do
cat > "$MEMORY_DIR/${topic}.md" << EOF
---
name: ${topic}
description: ${topic} 记忆文件
metadata:
type: project
---
# ${topic}
(此文件将在使用过程中由Claude自动填充)
EOF
done
echo "✅ 创建记忆系统 ($MEMORY_DIR)"
# === .gitignore 更新 ===
if [ -f "$PROJECT_DIR/.gitignore" ]; then
if ! grep -q ".claude/settings.local.json" "$PROJECT_DIR/.gitignore"; then
echo -e "\n# Claude Code local settings\n.claude/settings.local.json" >> "$PROJECT_DIR/.gitignore"
fi
else
echo ".claude/settings.local.json" > "$PROJECT_DIR/.gitignore"
fi
echo "✅ 更新 .gitignore"
echo ""
echo "🎉 配置完成!你的 Claude Code 现在具备:"
echo " 📝 全局用户偏好(跨项目生效)"
echo " 📋 项目共享规范(团队协作)"
echo " 🔒 安全权限体系(防止误操作)"
echo " 🧠 自动记忆系统(跨会话学习)"
echo " 🔗 跨工具兼容(AGENTS.md)"
echo ""
echo "下一步:在项目目录运行 'claude' 开始使用"
cd ~/shop-platform
claude
在Claude Code对话中执行以下验证:
# 验证1:检查记忆加载
> "请列出你当前加载的所有CLAUDE.md文件的内容摘要"
# 验证2:检查偏好识别
> "我的全局编码偏好是什么?"
# 验证3:检查权限生效
> "运行 sudo apt update"
# 预期:被deny规则拦截
# 验证4:检查自动记忆
> "记住:这个项目的所有API返回都必须包含request_id字段"
# 然后关闭会话,重新打开
> "关于API返回你记住了什么?"
# 预期:能回忆起刚才的要求
不是所有记忆都同等重要。建议使用优先级标记:
# 在 Topic File 的 frontmatter 中添加优先级
---
name: critical-security-rules
description: 安全相关的重要规则
metadata:
type: feedback
priority: critical
---
# 安全规则
- 所有用户输入必须经过验证和清洗
- 禁止在日志中记录敏感信息
将 CLAUDE.md 和 .claude/settings.json 纳入Git版本管理:
# 提交项目级配置到Git
git add CLAUDE.md AGENTS.md .claude/settings.json
git commit -m "feat: add Claude Code memory and permission configuration"
这样做的好处是: - 团队一致性:所有成员共享相同的AI配置 - 变更追溯:可以看到AI指令的演变历史 - 冲突解决:使用Git的标准merge流程处理配置冲突
通过AGENTS.md桥接多个AI工具:
graph LR
subgraph "开发者工作流"
A["CLAUDE.md<br/>Claude Code 专属"]
B["AGENTS.md<br/>跨工具通用"]
C[".cursorrules<br/>Cursor 专属"]
D[".github/copilot<br/>Copilot 专属"]
end
B --> A
B --> C
B --> D
E["统一编码规范<br/>统一安全规则<br/>统一构建命令"] --> B
style B fill:#e0f7fa
style E fill:#fff9c4
陷阱1:记忆膨胀
# 错误示范:在CLAUDE.md中写教程
CLAUDE.md (500行,包含完整的React教程)
# 正确示范:只写规则
CLAUDE.md (50行,精炼的规则和命令)
应对:定期审查CLAUDE.md,把"教程"内容移到项目Wiki,CLAUDE.md只保留规则。
陷阱2:循环引用
# 错误示范
file-a.md 引用 [[file-b]]
file-b.md 引用 [[file-a]]
# 导致上下文窗口浪费
# 正确示范
使用 MEMORY.md 作为单一索引,避免直接交叉引用
陷阱3:过于宽松的权限
# 危险示范
{
"permissions": {
"allow": ["Bash(*)"] // 允许所有命令
}
}
# 安全示范
{
"permissions": {
"allow": [
"Bash(git status*)",
"Bash(npm test*)",
"Read(*)"
],
"deny": [
"Bash(sudo *)",
"Bash(rm -rf *)"
]
}
}
flowchart TB
Start["启动 Claude Code"] --> LoadGlobal["加载 ~/.claude/CLAUDE.md<br/>用户全局偏好"]
LoadGlobal --> LoadProject["加载 项目/CLAUDE.md<br/>项目共享规范"]
LoadProject --> LoadSub["加载 子目录/.claude/CLAUDE.md<br/>模块级上下文"]
LoadSub --> LoadMemory["加载 MEMORY.md + Topic Files<br/>自动记忆系统"]
LoadMemory --> LoadSettings["加载 settings.json<br/>权限配置"]
LoadSettings --> Ready["🚀 准备就绪"]
Ready --> Work["正常工作"]
Work --> Decision{需要权限?}
Decision -->|已allow| AutoExec["自动执行"]
Decision -->|已deny| Reject["拒绝执行"]
Decision -->|未配置| AskUser["询问用户"]
AutoExec --> Work
Reject --> Work
AskUser --> Work
Work --> Error{犯错被纠正?}
Error -->|是| SaveMemory["写入 Auto-Memory"]
Error -->|否| End{会话结束?}
SaveMemory --> End
End -->|是| HookRun["运行 Stop Hooks"]
HookRun --> Save["保存会话摘要"]
Save --> Done["✅ 会话结束<br/>记忆已持久化"]
style Start fill:#e8f5e9
style Ready fill:#c8e6c9
style Done fill:#a5d6a7
style SaveMemory fill:#fce4ec
style Reject fill:#ffcdd2
| 配置项 | 文件位置 | 作用范围 | 提交Git |
|---|---|---|---|
| 用户全局偏好 | ~/.claude/CLAUDE.md |
所有项目 | ❌ |
| 用户全局权限 | ~/.claude/settings.json |
所有项目 | ❌ |
| 项目共享规范 | 项目根/CLAUDE.md |
当前项目 | ✅ |
| 项目权限配置 | 项目/.claude/settings.json |
当前项目 | ✅ |
| 项目本地覆盖 | 项目/.claude/settings.local.json |
当前项目 | ❌ |
| 模块级上下文 | 子目录/.claude/CLAUDE.md |
子目录 | ✅ |
| 自动记忆 | ~/.claude/projects/.../memory/ |
当前项目 | ❌ |
| 跨工具兼容 | 项目根/AGENTS.md |
所有AI工具 | ✅ |
| Hook脚本 | 项目/.claude/hooks/ |
当前项目 | ✅ |
训练营适用性评估:本教程适合"AI编程工具进阶训练营"(中级),预计教学时长4-5小时(含动手实操2-3小时)。建议学员在课前完成Claude Code的基本安装和首次使用,课中重点实操第六至八节的完整配置案例。可用于企业内训场景,帮助团队统一AI编程工具的使用规范。
[!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 等场景全覆盖。
