Claude Code 记忆系统详解

Claude Code 的记忆系统分为 三层,分别解决不同层面的问题。理解这三层的区别与关系,是高效使用 Claude Code 的前提。


一、三层架构概览

层级 存储位置 解决问题 跨项目共享?
全局配置 ~/.claude/settings.json 所有项目共享的权限、插件、环境变量 ✅ 是
项目配置 {project}/.claude/ 该项目专属的权限、钩子 ❌ 否
项目记忆 ~/.claude/projects/<path>/memory/ 该项目的用户偏好、工作约定 ❌ 否

二、全局配置层

所有项目共享的配置,定义 Claude Code 的全局行为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"env": {
"ANTHROPIC_MODEL": "MiniMax-M2.7"
},
"permissions": {
"allow": [
"Bash(uv sync *)",
"Bash(git log --oneline -20)"
]
},
"enabledPlugins": {
"superpowers@claude-plugins-official": true,
"remember@claude-plugins-official": true
}
}

核心配置项包括:

  • env — API key、全局默认模型
  • permissions — 所有项目都允许的 Shell 命令
  • enabledPlugins — 全局启用的插件

三、项目配置层

单个项目专属的配置,通常与项目代码一起版本控制:

1
2
3
tender-info/
└── .claude/
└── settings.local.json
1
2
3
4
5
6
7
8
9
{
"permissions": {
"allow": [
"Bash(uv sync *)",
"Bash(uv venv *)",
"Bash(git -C /Volumes/hai/code/tender-info log --oneline -5)"
]
}
}

项目配置文件的作用是记录该项目额外允许的 Shell 命令权限,避免每次操作都弹出权限提示。


四、项目记忆层

严格按项目路径隔离的记忆系统,存放项目相关的持久上下文:

1
2
3
~/.claude/projects/-Volumes-hai-code-tender-info/memory/
├── MEMORY.md
└── python-dependency-management.md

4.1 记忆文件类型

类型 用途 关键字段
user 用户角色、偏好、工作方式 name, description, type, originSessionId
feedback 指导规则(什么该做/不该做) Why:How to apply:
project 项目状态、目标、截止日期 Why:How to apply:
reference 外部系统指针(Linear、Grafana 等) 链接 + 用途说明

4.2 记忆格式

每条记忆为独立 Markdown 文件,含 frontmatter:

1
2
3
4
5
6
7
8
9
10
11
12
---
name: python-dependency-management
description: 用户级Python依赖管理原则
type: user
originSessionId: 46dcfe60-6dcb-4824-850e-41e8ccc11b8f
---

## 具体内容

用户使用 **uv** 管理 Python 项目:
1. uv sync:主要命令
2. uv run:直接运行脚本

MEMORY.md 作为索引文件,每次会话自动加载;具体记忆文件在上下文相关时自动应用。


五、remember 插件 — 会话交接机制

remember 插件是记忆系统的补充机制,解决「跨时间连续性」问题。

5.1 与 memory/ 的区别

维度 memory/ 记忆系统 remember 插件
位置 ~/.claude/projects/<path>/memory/ {project}/.remember/remember.md
内容 项目偏好、规则、约定 会话交接、进度、下一步
触发 自动加载 手动调用 /remember
生命周期 跨会话持久 下次会话后可能被覆盖
语义 「这个项目是什么样的」 「上次我做到哪了」

5.2 文件格式

1
2
3
4
5
6
7
8
9
10
# Handoff

## State
{已完成什么、未完成什么。文件、MR 号、决策。最多 2-4 行。}

## Next
{接下来要做什么。按优先级排列。1-3 项。}

## Context
{非显而易见的坑、阻碍、本次偏好。如无内容可省略。}

5.3 使用规则

规则 说明
总行数 < 20 简洁,避免长篇大论
具体 包含文件路径、MR 号、分支名
前瞻性 下一会话只关心「接下来干嘛」
无内容时 直接写 “No active work.”

六、三层关系全景图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
~/.claude/
├── settings.json ← 【全局】所有项目共享
│ ├── env (API key, 模型)
│ ├── permissions (允许的命令)
│ └── enabledPlugins

├── projects/ ← 【记忆】按项目路径隔离
│ └── -Volumes-hai-code-tender-info/
│ └── memory/
│ ├── MEMORY.md ← 索引
│ └── *.md ← 具体记忆

tender-info/ ← 【项目】
├── .claude/
│ └── settings.local.json ← 项目级权限
├── .remember/
│ └── remember.md ← 会话交接(remember 插件)
└── ...项目文件

七、设计思想

层次 解决的问题 关键词
全局配置 「所有项目通用」 权限、插件、模型
项目配置 「这个项目能做什么」 权限、钩子
项目记忆 「用户想要什么方式工作」 偏好、反馈、约定
remember 「上次做到哪了」 交接、进度、连续性

三层设计体现了关注点分离原则:全局配置、项目配置、项目记忆三者职责清晰不混淆。memory/remember 解决不同维度的问题——前者是「项目画像」,后者是「时间线快照」。

理解这四层的区别,就能理解为什么没有一个「跨项目全局记忆」——因为全局配置(settings.json)解决的是工具能力,而非项目上下文。