<!-- title: Claude Code记忆系统：四层持久化全实战 -->

# Claude Code记忆系统：四层持久化全实战

**学习目标**：深入掌握Claude Code的四层记忆架构——从CLAUDE.md项目指令到Auto Memory自动学习，从模块化规则到上下文窗口管理，构建跨会话持续记忆的工程化工作流。

**适用人群**：已有Claude Code基础使用经验，希望解决"每次新会话都要重新教一遍"痛点的开发者。

**前置条件**：已安装Claude Code CLI（`npm install -g @anthropic-ai/claude-code`），至少完成过一个项目。

---

## 一、为什么Claude Code的记忆总是"归零"

每个Claude Code会话都从一张白纸开始。200K token的上下文窗口在关闭终端的那一刻清空。上周花三小时解释的架构决策、昨天调试发现的构建参数、反复纠正的代码风格偏好——全部归零。

这不是Bug，是设计。LLM本身是无状态的。Claude Code的记忆系统，本质上是**在无状态模型之上构建的有状态持久层**。理解这一点，是从"每次都要重新教"到"开箱即用"的分水岭。

Claude Code提供了**四个互补的记忆机制**，每一层解决不同的问题：

```mermaid
graph TB
    subgraph "Claude Code 四层记忆架构"
        L1["第一层：CLAUDE.md<br/>项目级持久指令<br/>提交到Git，团队共享"]
        L2["第二层：CLAUDE.local.md<br/>个人本地偏好<br/>不提交，仅自己可见"]
        L3["第三层：Auto Memory<br/>自动学习积累<br/>存储在 ~/.claude/"]
        L4["第四层：模块化规则<br/>.claude/rules/*.md<br/>按场景拆分指令"]
    end

    L1 --> |"会话启动时加载"| CTX["上下文窗口<br/>200K token"]
    L2 --> CTX
    L3 --> CTX
    L4 --> CTX

    CTX --> |"会话中动态管理"| TOOLS["管理工具<br/>/compact /clear /memory"]

    style L1 fill:#4A90D9,color:#fff
    style L2 fill:#7B68EE,color:#fff
    style L3 fill:#20B2AA,color:#fff
    style L4 fill:#FF8C00,color:#fff
```

## 二、第一层：CLAUDE.md——项目级持久指令

### 2.1 什么是CLAUDE.md

CLAUDE.md是Claude Code的核心配置文件，放在项目根目录。**每次会话启动时自动加载**，相当于给AI助手的一份"入职手册"。它是团队共识的载体，应该提交到Git，让所有团队成员共享同一套项目知识。

### 2.2 CLAUDE.md的加载优先级

Claude Code不是只读一个CLAUDE.md——它在五个层级上查找并合并：

| 层级 | 文件路径 | 作用域 | 是否提交Git |
|------|---------|--------|------------|
| 全局用户级 | `~/.claude/CLAUDE.md` | 所有项目 | 否 |
| 项目根级 | `./CLAUDE.md` | 当前项目 | 是 |
| 项目本地级 | `./CLAUDE.local.md` | 当前项目，仅自己 | 否 |
| 子目录级 | `./src/CLAUDE.md` | 子目录范围 | 是 |
| 模块规则 | `./.claude/rules/*.md` | 按文件匹配 | 是 |

**加载顺序**：全局 → 项目根 → 子目录 → 模块规则。后加载的覆盖先加载的同名配置。

### 2.3 写一份高效的CLAUDE.md

新手最常犯的错误是把CLAUDE.md当成README来写。CLAUDE.md不是给人看的文档，是给AI执行的**指令集**。好的CLAUDE.md应该简洁、精确、可操作。

**反面教材**（冗长无用）：

```markdown
# My Project

This is a full-stack application built with React and Node.js.
We use TypeScript for type safety. The database is PostgreSQL.
Our team follows agile methodology with two-week sprints...
（200行项目介绍）
```

**正面教材**（精确可执行）：

```markdown
# Project Instructions

## Tech Stack
- Frontend: React 19 + TypeScript 5.x (strict mode)
- Backend: Node.js 22 + Fastify 5.x
- Database: PostgreSQL 16 + Drizzle ORM
- Package Manager: pnpm (NOT npm or yarn)

## Code Style
- Use functional components, no class components
- Named exports only, no default exports
- File naming: kebab-case for utilities, PascalCase for components
- Error handling: use Result<T, E> pattern from `src/lib/result.ts`

## Commands
- `pnpm dev` — start dev server (port 3000)
- `pnpm test` — run all tests
- `pnpm db:push` — sync schema to database
- `pnpm lint:fix` — auto-fix linting issues

## Architecture
- `src/features/` — feature modules (each has routes/, components/, hooks/)
- `src/lib/` — shared utilities
- `src/server/` — API routes and services
- NEVER modify `src/generated/` — auto-generated by Drizzle

## Critical Rules
- ALWAYS run `pnpm test` after modifying any file in src/server/
- NEVER commit .env files
- Database migrations go in `drizzle/migrations/` with timestamp prefix
```

### 2.4 关键原则

1. **指令式而非描述式**：写"Use functional components"而非"We prefer functional components"
2. **不超过150行**：超过200行时Claude开始忽略后面的指令
3. **用NEVER/ALWAYS标记关键规则**：大写关键词会被优先处理
4. **包含正确的命令**：Claude会直接执行你列出的命令，写错一个字母就会出错
5. **更新CLAUDE.md**：当发现Claude反复犯同一个错误时，把正确做法写进去

## 三、第二层：CLAUDE.local.md——你的个人偏好

### 3.1 为什么需要local文件

CLAUDE.md提交到Git，团队共享。但有些偏好是个人的——你用vim、同事用VS Code；你习惯中文注释、团队用英文。CLAUDE.local.md解决的就是这个问题。

### 3.2 使用方法

在项目根目录创建`CLAUDE.local.md`，**把它加入.gitignore**：

```bash
echo "CLAUDE.local.md" >> .gitignore
```

文件内容示例：

```markdown
# Local Preferences

## Editor
- I use Neovim with lazyvim config
- When showing code snippets, prefer short form

## Language
- Respond in Chinese (中文回复)
- Code comments in English

## Workflow
- I prefer step-by-step explanations
- Show me the diff before applying changes
- Run tests after each modification

## My Common Paths
- Test data: ~/projects/test-data/
- Local config: ~/.config/myapp/
```

### 3.3 全局用户级CLAUDE.md

还有一层`~/.claude/CLAUDE.md`适用于你所有的项目。适合放通用偏好：

```markdown
# Global Preferences

## Style
- Use Chinese for all responses
- Keep responses concise
- Code comments in English

## Git
- Never auto-commit
- Never push without asking
- Always check git status before committing

## Safety
- Never delete files without confirmation
- Never modify .env files
- Always read before editing
```

## 四、第三层：Auto Memory——自动学习的持久记忆

### 4.1 Auto Memory的工作原理

Auto Memory是Claude Code最被低估的功能。当你对Claude说"记住这个"或"以后不要这样做"时，Claude会自动将这个教训写入`~/.claude/`目录下的记忆文件。下次会话时自动加载。

关键特性：
- **自动触发**：不需要手动编辑文件，对话中自然积累
- **跨项目持久**：存储在用户主目录，所有项目共享
- **分层存储**：按主题自动分类到不同文件

### 4.2 查看当前记忆

使用`/memory`命令查看所有已加载的记忆：

```bash
# 在Claude Code会话中输入
/memory
```

输出示例：

```
Loaded memory files:
  ~/.claude/CLAUDE.md (global user instructions)
  ./CLAUDE.md (project instructions)
  ./CLAUDE.local.md (local instructions)
  ~/.claude/memory/auto-learned.md (auto memory, 47 lessons)
  ./.claude/rules/typescript.md (rule: typescript conventions)
  ./.claude/rules/api-design.md (rule: API design patterns)
```

### 4.3 主动写入记忆

在对话中直接告诉Claude记住特定信息：

```
> 记住：我们的staging环境数据库密码每天自动轮换，
> 测试时用 mock-db.sh 脚本生成临时连接

> 记住：修改 src/api/ 下的文件后必须运行 
> pnpm test:integration

> 记住：不要用 axios，我们项目统一用 fetch + 
> src/lib/http.ts 的封装
```

### 4.4 Auto Memory的组织结构

随着使用积累，Auto Memory会自动组织成主题文件：

```
~/.claude/
├── CLAUDE.md                    # 全局指令
├── memory/
│   ├── auto-learned.md          # 通用教训（主文件）
│   ├── project-patterns.md      # 项目模式
│   ├── debugging-notes.md       # 调试经验
│   └── api-conventions.md       # API约定
```

### 4.5 维护Auto Memory

Auto Memory不是越多越好。过多记忆会消耗上下文窗口的token。建议每月清理一次：

```
> /memory

（查看记忆列表）

> 清理auto memory中过时的条目：
> - 删除关于旧版本React的规则（已升级到React 19）
> - 删除已解决的调试笔记
> - 合并重复的API约定
```

## 五、第四层：模块化规则——.claude/rules/

### 5.1 为什么需要模块化规则

当CLAUDE.md超过150行时，Claude开始选择性忽略部分指令。解决方案是将规则拆分到`.claude/rules/`目录下的独立文件中。这些文件**按场景条件加载**，不是全部一次性灌入上下文。

### 5.2 创建模块化规则

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

**按技术栈拆分**：

`.claude/rules/typescript.md`：
```markdown
# TypeScript Conventions

- Strict mode enabled (tsconfig.json > strict: true)
- Prefer `interface` over `type` for object shapes
- Use `unknown` instead of `any`, narrow with type guards
- Generic naming: T for single, K/V for key-value, TInput/TOutput for transforms
- Branded types for domain primitives (UserId, OrderId, etc.)
```

`.claude/rules/database.md`：
```markdown
# Database Rules

- Using Drizzle ORM with PostgreSQL
- Schema files in `src/db/schema/`
- NEVER write raw SQL — use Drizzle query builder
- Migrations must be reversible (always include down migration)
- Use transactions for multi-table operations
- Index foreign keys automatically
```

`.claude/rules/testing.md`：
```markdown
# Testing Standards

- Framework: Vitest + React Testing Library
- File naming: `*.test.ts` or `*.test.tsx`
- Co-locate tests with source files
- Use `describe/it` blocks, not `test()`
- Mock external APIs with MSW (Mock Service Worker)
- Minimum coverage: 80% for src/server/, 70% for src/features/
```

`.claude/rules/api-design.md`：
```markdown
# API Design Patterns

- RESTful endpoints under `/api/v1/`
- Use Zod for request/response validation
- Error response format: `{ error: { code: string, message: string, details?: unknown } }`
- Pagination: cursor-based for lists > 100 items
- Authentication: Bearer token in Authorization header
```

### 5.3 条件化加载

模块化规则的关键优势在于**条件加载**——只在相关场景时才被注入上下文。Claude Code会根据当前对话的上下文自动判断需要加载哪些规则文件。

例如，当你讨论数据库相关问题时，`database.md`会被加载；讨论前端组件时，`typescript.md`和`testing.md`会被加载。这避免了无用的token消耗。

## 六、上下文窗口管理：让200K token物尽其用

### 6.1 理解上下文窗口

Claude Code的上下文窗口约200K token。这看起来很大，但在处理大型项目时会迅速耗尽：

| 内容类型 | 大约Token消耗 |
|---------|--------------|
| CLAUDE.md（150行） | ~500 tokens |
| 一个中等源文件 | ~2,000-5,000 tokens |
| 一个复杂文件+对话 | ~10,000-30,000 tokens |
| 命令输出（如test结果） | ~1,000-10,000 tokens |
| Auto Memory积累 | ~500-5,000 tokens |

一个典型的深度调试会话，可能在30分钟内消耗50K+ tokens。

### 6.2 /compact——压缩而不丢失

当上下文窗口使用超过60%时，Claude Code会自动建议压缩。你也可以手动触发：

```bash
# 在会话中输入
/compact
```

`/compact`的行为：
- **保留**：CLAUDE.md、当前文件内容、关键决策
- **压缩**：对话历史被总结为要点
- **丢弃**：中间的试错过程、已解决的错误信息

效果：一个消耗了120K tokens的会话，压缩后可能只占40K。

### 6.3 /compact的自定义指令

可以给`/compact`传入提示，指定保留什么：

```
/compact 保留所有架构决策和数据库schema变更，丢弃调试过程
```

### 6.4 /clear——彻底重置

当会话已经完全偏离方向，上下文充满错误信息时：

```bash
/clear
```

这会清空整个对话历史，但**不会丢失CLAUDE.md和Auto Memory**。相当于带着所有记忆重新开始对话。

### 6.5 上下文管理的黄金规则

```mermaid
graph LR
    A["开始会话"] --> B{"完成任务？"}
    B -->|"是"| C["结束"]
    B -->|"否，上下文>60%"| D["/compact"]
    D --> B
    B -->|"否，完全偏离"| E["/clear + 简要重述目标"]
    E --> B

    style D fill:#FF8C00,color:#fff
    style E fill:#DC143C,color:#fff
```

**实践建议**：
- 一个会话聚焦一个任务，不要在一个会话中切换多个不相关的任务
- 当Claude开始"忘记"你之前说的话（上下文溢出的标志），立即`/compact`
- 如果`/compact`后仍然表现不佳，`/clear`后重新开始
- 长任务（>1小时）至少使用2-3次`/compact`

## 七、实战：构建一个完整的记忆系统

### 7.1 项目初始化

以一个全栈项目为例，展示如何从头搭建记忆系统：

```bash
# 1. 创建项目
mkdir my-saas-app && cd my-saas-app

# 2. 初始化Git
git init

# 3. 创建目录结构
mkdir -p .claude/rules src/features src/server src/lib
```

### 7.2 编写CLAUDE.md

```markdown
# Project: MySaaS

## Tech Stack
- Next.js 15 (App Router) + TypeScript 5.x strict
- Tailwind CSS 4 + shadcn/ui components
- Drizzle ORM + PostgreSQL 16 (Neon serverless)
- Auth: Clerk
- Package manager: pnpm 9.x

## Commands
- `pnpm dev` — dev server on port 3000
- `pnpm build` — production build
- `pnpm test` — vitest unit tests
- `pnpm lint` — eslint + prettier check
- `pnpm db:push` — sync Drizzle schema to DB
- `pnpm db:studio` — open Drizzle Studio

## Architecture
```
src/
├── app/              # Next.js App Router pages
├── components/       # Shared UI components (shadcn/ui based)
├── features/         # Feature modules
│   ├── auth/         # Authentication
│   ├── billing/      # Stripe integration
│   └── dashboard/    # Main dashboard
├── lib/              # Utilities (cn, format, validators)
├── server/           # API route handlers + services
└── db/               # Drizzle schema + migrations
```

## Critical Rules
- ALWAYS run `pnpm test` after modifying server/ or lib/
- NEVER modify src/db/schema without creating a migration
- ALWAYS use `cn()` utility for className merging
- Server Components by default; add 'use client' only when needed
- API errors use `errorResponse()` from `src/lib/api.ts`
```

### 7.3 创建模块化规则

```bash
# Git相关规则
cat > .claude/rules/git.md << 'EOF'
# Git Workflow

- Commit messages: conventional commits format (feat:, fix:, chore:, etc.)
- NEVER commit without running `pnpm lint` first
- NEVER push without explicit user approval
- Always check `git status` and `git diff` before staging
- Prefer creating new commits over amending
EOF

# 安全规则
cat > .claude/rules/security.md << 'EOF'
# Security Rules

- NEVER expose API keys in client-side code
- ALWAYS validate server-side inputs with Zod schemas
- Use Clerk's `auth()` for server-side auth checks
- Rate limit all API endpoints (use `src/lib/rate-limit.ts`)
- SQL injection prevention: use Drizzle parameterized queries only
EOF

# 性能规则
cat > .claude/rules/performance.md << 'EOF'
# Performance

- Use `next/dynamic` for heavy client components
- Implement loading.tsx for route-level Suspense boundaries
- Database queries: always select specific columns, never SELECT *
- Use React `use()` for data fetching in Server Components
- Cache expensive computations with `unstable_cache` from Next.js
EOF
```

### 7.4 配置本地偏好

```bash
cat > CLAUDE.local.md << 'EOF'
# Local Preferences

- Respond in Chinese
- I use Neovim + tmux, show code in terminal-friendly format
- When debugging, show me the failing test output first
- I prefer inline error handling over try/catch wrappers
EOF

echo "CLAUDE.local.md" >> .gitignore
```

### 7.5 配置全局记忆

```bash
cat > ~/.claude/CLAUDE.md << 'EOF'
# Global Preferences

## Language
- 默认使用中文回复，代码注释可用英文
- 回复简洁明了，避免冗长解释

## General Rules
- 不要自动commit，只在用户明确要求时执行
- 始终先读取文件再编辑
- 不要主动创建文档文件，除非明确要求
- 优先编辑现有文件而非创建新文件

## Safety
- 不要提交 secrets、credentials、.env 等敏感文件
- commit message 不要自动加版本号
EOF
```

### 7.6 提交项目配置

```bash
# 只提交团队共享的配置
git add CLAUDE.md .claude/rules/ .gitignore
git commit -m "feat: add Claude Code memory system configuration"
```

## 八、记忆系统的进阶模式

### 8.1 MEMORY.md模式——项目状态日志

由Ian Paterson提出的MEMORY.md模式，是在项目中维护一个**结构化的状态日志**，让Claude在每次会话时了解项目进展：

```markdown
# Project Memory

## Current State
- Sprint: Week 3 of 4
- Focus: Billing integration (Stripe)
- Last deployed: 2026-05-20 (v0.4.2)

## Active Threads
- [ ] Webhook handler for Stripe needs idempotency
- [ ] Dashboard charts showing stale data (cache invalidation issue)
- [x] Auth flow refactored to use Clerk's new SSR helpers

## Lessons Learned
- Drizzle `jsonb` columns need explicit type casting for PostgreSQL
- Next.js 15 `cookies()` requires `await` — non-obvious breaking change
- shadcn/ui Dialog doesn't unmount on close — memory leak in long sessions

## Decisions
- 2026-05-15: Chose Neon serverless over Supabase for Postgres (cold start acceptable for our scale)
- 2026-05-18: Decided against tRPC — REST + Zod sufficient for our 12 endpoints
- 2026-05-21: Billing will use Stripe Checkout, not Stripe Billing (simpler for MVP)
```

配合`/compact`使用，在每次会话结束前让Claude更新MEMORY.md：

```
> 更新MEMORY.md：记录今天的进展和未完成的任务
```

### 8.2 六层记忆架构

来自Guatu Labs的开源方案，在四层基础上增加了两层：

```mermaid
graph TB
    subgraph "六层记忆架构"
        L1["Layer 1: 全局CLAUDE.md<br/>个人身份、通用偏好"]
        L2["Layer 2: 项目CLAUDE.md<br/>技术栈、命令、架构"]
        L3["Layer 3: CLAUDE.local.md<br/>个人工作流偏好"]
        L4["Layer 4: .claude/rules/<br/>模块化场景规则"]
        L5["Layer 5: MEMORY.md<br/>项目状态日志+教训"]
        L6["Layer 6: Auto Memory<br/>自动积累的教训"]
    end

    L1 --> L2 --> L3 --> L4 --> L5 --> L6

    style L5 fill:#9370DB,color:#fff
    style L6 fill:#20B2AA,color:#fff
```

第六层是**自动化维护**：通过cron job或Hook，定期让Claude自己清理和更新记忆文件：

```json
// .claude/settings.json
{
  "hooks": {
    "SessionEnd": [
      {
        "command": "claude -p 'Review and clean up MEMORY.md. Remove resolved threads, archive old decisions older than 30 days. Keep lessons learned concise.' --allowedTools 'Edit,Read,Write'",
        "timeout": 60000
      }
    ]
  }
}
```

### 8.3 多仓库工作空间的记忆策略

对于微服务架构的团队，Karun提出的**Bootstrap Repo模式**值得借鉴：

```bash
# 工作空间结构
workspace/
├── bootstrap/              # 引导仓库（记忆中心）
│   ├── CLAUDE.md           # 全局工作空间说明
│   ├── REPOS.md            # 所有仓库清单和关系
│   └── scripts/
│       └── sync-memory.sh  # 同步记忆到各仓库
├── services/
│   ├── user-service/       # 用户服务
│   │   └── CLAUDE.md
│   ├── order-service/      # 订单服务
│   │   └── CLAUDE.md
│   └── payment-service/    # 支付服务
│       └── CLAUDE.md
└── shared-libs/            # 共享库
    └── CLAUDE.md
```

`REPOS.md`内容示例：

```markdown
# Repository Manifest

## Architecture
```
user-service → shared-libs (auth, logger)
order-service → user-service (REST), payment-service (gRPC)
payment-service → stripe-api, shared-libs
```

## Common Patterns
- All services: Fastify + TypeScript + Drizzle
- All APIs: REST with /api/v1/ prefix
- All use `@shared/logger` for structured logging
- Inter-service auth: JWT with shared public key

## Key People
- user-service: @alice (lead), @bob
- order-service: @charlie (lead)
- payment-service: @alice, @diana
```

当你在某个服务中启动Claude Code时，它会读取该服务的CLAUDE.md，同时通过`REPOS.md`了解整个工作空间的上下文。

## 九、Token优化：让记忆系统更高效

### 9.1 记忆系统的Token消耗审计

定期检查你的记忆系统消耗了多少token：

```
> /memory
> 分析当前加载的所有记忆文件，估算总token消耗，
> 标记出可能过时或重复的内容
```

### 9.2 常见的Token浪费模式

| 问题 | 表现 | 解决方案 |
|------|------|---------|
| CLAUDE.md膨胀 | 超过200行，后半部分被忽略 | 拆分到.claude/rules/ |
| Auto Memory积累 | 加载了上百条教训 | 每月清理，合并同类项 |
| 重复指令 | CLAUDE.md和rules都说同一件事 | 单一来源，不要重复 |
| 过时信息 | 已迁移的技术栈仍写在内 | 建立更新机制 |
| 过于冗长 | "请尽量使用函数式组件" | 精简为"Use functional components" |

### 9.3 优化公式

```
有效上下文 = 200K（总窗口）
          - CLAUDE.md tokens
          - local.md tokens
          - rules tokens（按场景加载）
          - auto memory tokens
          = 可用于实际工作的token
```

**目标**：将固定记忆消耗控制在5K tokens以内（约占总容量的2.5%），为实际工作保留97.5%的上下文空间。

## 十、团队协作中的记忆管理

### 10.1 什么提交到Git，什么不提交

| 文件 | 提交？ | 原因 |
|------|--------|------|
| `CLAUDE.md` | 是 | 团队共享的项目知识 |
| `.claude/rules/*.md` | 是 | 团队共享的编码规范 |
| `.claude/settings.json` | 是 | 团队共享的权限和Hook配置 |
| `CLAUDE.local.md` | 否 | 个人偏好 |
| `~/.claude/CLAUDE.md` | 否 | 全局个人偏好 |
| `~/.claude/memory/` | 否 | 个人学习积累 |
| `MEMORY.md` | 看情况 | 如果是项目状态日志则提交 |

### 10.2 团队记忆更新工作流

```mermaid
sequenceDiagram
    participant D as 开发者
    participant C as Claude Code
    participant G as Git Repo
    
    D->>C: 开始新会话
    C->>C: 加载 CLAUDE.md + rules + auto memory
    D->>C: 执行任务
    C->>C: 发现新的项目知识
    C-->>D: 建议更新 CLAUDE.md 或 rules
    D->>C: 确认更新
    C->>G: 提交更新的记忆文件
    Note over G: 团队其他成员<br/>pull后获得新知识
```

### 10.3 新成员入职场景

新成员clone项目后，Claude Code自动获得：
- 项目技术栈和架构（来自CLAUDE.md）
- 编码规范和测试标准（来自rules/）
- 安全规则（来自rules/security.md）
- Git工作流（来自rules/git.md）

新成员只需补充自己的`CLAUDE.local.md`即可开始工作。这比任何onboarding文档都更有效——因为Claude Code会**主动执行**这些规范，而不仅仅是展示。

## 十一、常见问题与解决方案

### Q1: Claude仍然忽略CLAUDE.md中的规则

**原因**：通常是文件太长或规则太模糊。

**解决**：
1. 检查CLAUDE.md是否超过200行
2. 用NEVER/ALWAYS标记关键规则
3. 将非关键规则迁移到.claude/rules/
4. 在对话中明确引用："按照CLAUDE.md中的规则，使用pnpm而不是npm"

### Q2: Auto Memory中积累了错误信息

**原因**：之前对话中Claude学到了错误的教训。

**解决**：
```
> 打开auto memory文件，删除关于"使用axios"的错误记录，
> 我们项目用的是fetch
```

或直接编辑文件：
```bash
# 找到auto memory文件
ls ~/.claude/memory/
# 编辑清理
vim ~/.claude/memory/auto-learned.md
```

### Q3: 上下文窗口总是不够用

**原因**：大型文件、长对话、过多规则同时加载。

**解决**：
1. 频繁使用`/compact`（每20-30分钟一次）
2. 拆分大任务为多个小会话
3. 减少CLAUDE.md和rules的总量
4. 使用`/clear`重置后用一句话重新描述任务

### Q4: 多个项目间的记忆互相干扰

**原因**：全局Auto Memory可能包含其他项目的教训。

**解决**：
1. 在项目CLAUDE.md中明确写明项目名称和技术栈
2. 全局CLAUDE.md只放真正通用的规则
3. 定期清理Auto Memory中特定于某个项目的条目

### Q5: 团队成员对CLAUDE.md内容有分歧

**原因**：不同开发者有不同的编码习惯。

**解决**：
1. CLAUDE.md只放**团队已达成共识**的规则
2. 有分歧的偏好放入各自的CLAUDE.local.md
3. 将CLAUDE.md纳入代码审查——修改需要PR批准

## 十二、记忆系统健康度检查清单

每月执行一次：

- [ ] CLAUDE.md是否仍然准确反映当前技术栈？
- [ ] CLAUDE.md是否超过150行？如果是，拆分到rules/
- [ ] .claude/rules/中的规则是否仍然适用？
- [ ] Auto Memory是否有过时或错误的条目？
- [ ] MEMORY.md中的活跃线程是否已更新？
- [ ] .gitignore中是否包含CLAUDE.local.md？
- [ ] 全新clone项目后Claude Code是否能正确工作？
- [ ] 新成员是否能仅通过CLAUDE.md快速上手？

---

## 延伸阅读

- [How Claude remembers your project](https://code.claude.com/docs/en/memory) — Anthropic官方记忆系统文档
- [Using Claude Code: session management and 1M context](https://claude.com/blog/using-claude-code-session-management-and-1m-context) — Anthropic官方会话管理指南
- [The Definitive Guide to Every Claude Code Configuration File](https://wittmannf.github.io/blog/claude-code-config-guide/) — 所有配置文件的完整参考

## 参考来源

1. [How Claude remembers your project — Claude Code Docs](https://code.claude.com/docs/en/memory) — Anthropic官方记忆系统文档，详述CLAUDE.md、Auto Memory和上下文管理
2. [Claude Code Memory Persistence: What Actually Works](https://thepromptshelf.dev/blog/claude-code-memory-persistence-guide/) — 四层记忆系统的实战分析，对比各机制的持久性和适用场景
3. [The 6-Layer Memory Architecture for Claude Code](https://guatulabs.dev/posts/six-layer-memory-architecture-for-claude-code/) — 从CLAUDE.md到自动化维护的六层进阶方案
4. [Claude Code Memory System: MEMORY.md, Topic Files](https://ianlpaterson.com/blog/claude-code-memory-architecture/) — MEMORY.md模式和主题文件组织的原创方案
5. [Structuring Claude Code for Multi-Repo Workspaces](https://karun.me/blog/2026/03/26/structuring-claude-code-for-multi-repo-workspaces/) — 微服务架构下多仓库工作空间的记忆策略
6. [Using Claude Code: session management and 1M context](https://claude.com/blog/using-claude-code-session-management-and-1m-context) — Anthropic官方关于会话管理、/compact和上下文优化的实践指南

> [!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)
