告别失忆症:如何让 Claude Code 拥有永久记忆并节省 71.5 倍 Token
- 1. 你是不是也经历过这种痛苦?
- 2. 一个意外的发现
- 3. 核心理念:两个问题,两个方案
- 4. 方案一:Obsidian 作为 Claude Code 的”第二大脑”
- 5. 方案二:Graphify —— 代码库知识图谱
- 6. 完整工作流
- 7. 实际效果
- 8. 总结
1. 你是不是也经历过这种痛苦?
你用 Claude Code 写完了一个功能,关掉终端,心满意足地回家。
第二天早上,打开新的会话,Claude 表现得像从没见过你的项目一样:
- 技术栈?忘了。
- 之前的架构决策?不记得。
- 昨天修的那个奇怪的 Supabase Bug?一无所知。
于是你又得重新解释一遍。Claude 重新读了 40 个文件,20000 Token 就这么烧掉了——在你问出第一个真正的问题之前。
一天开 10 个会话?那就是 20 万 Token 白白浪费在”认知加载”上。
这不是你的 prompt 写得不好。这是 Claude Code 的结构性缺陷:它没有持久化的大脑,也没有代码库的结构化地图。
2. 一个意外的发现
直到有人捅破了这层窗户纸。
Lucas Rosati 开源了一个项目叫 claude-code-memory-setup,用一种极其优雅的方式解决了这个问题——不是改进 prompt,而是从架构层面给 Claude Code 装上一个大脑。
他实测的数据让人震惊:
| 指标 | 数值 |
|---|---|
| 测试项目 | 126 个 TypeScript 文件的 React + Supabase 项目 |
| 图谱节点数 | 332 |
| 代码关系连接数 | 258 |
| graph.json 大小 | 仅 172 KB |
| 生成的 Obsidian 笔记 | 456 篇 |
| 每次查询 Token 降低 | 499 倍 |
| 图谱生成成本 | 0 Token(纯 AST 模式) |
| 累计永久笔记 | 65+ 篇 |
你看到 499x 这个数字会怀疑——我也怀疑过。但仔细看了他的实现,发现这不是夸张,而是两种完全不同量级的方案在比:
- 没有记忆:每次会话 Claude 要读 40 个文件的完整源码来理解项目 → 2 万 Token
- 有记忆:Claude 直接查询 172KB 的知识图谱 + Obsidian 笔记 → 40 Token
这就是 499x 差距的来源。
3. 核心理念:两个问题,两个方案
Claude Code 的”失忆”其实包含两个独立问题:
| 问题 | 表现 | 解决方案 |
|---|---|---|
| 会话间的失忆症 | 新会话不记得之前的决策、进度、上下文 | Obsidian Zettelkasten(声明式记忆) |
| 代码库重复读取 | 每次都要从头读源码了解结构 | Graphify(结构化知识图谱) |
两个方案互补,互不依赖。你可以只用 Obsidian,也可以只用 Graphify——但一起用效果翻倍。
4. 方案一:Obsidian 作为 Claude Code 的”第二大脑”
4.1 为什么是 Obsidian?
Obsidian 是免费的本地知识库工具(obsidian.md),支持 Markdown、双向链接、图谱视图。它天然适合做 Claude Code 的持久化记忆层。
关键思路:一个统一的 vault 管理所有项目,而不是每个项目一个 vault。这样关于”Supabase Auth”的笔记可以同时链接到项目 A 和项目 B,图谱视图会揭示你意想不到的跨项目关联。
4.2 推荐 vault 结构
~/vault/ # 统一的 vault
├── CLAUDE.md # Claude Code 全局指令
├── permanent/ # 原子化的永久笔记
├── inbox/ # 原始捕捉(想法、草稿)
├── fleeting/ # 临时笔记
├── templates/ # 笔记模板
├── logs/ # 全局会话日志
├── references/ # 参考资料
├── project-x/ # 项目 X 的笔记
│ ├── architecture/ # 架构决策
│ ├── pipeline/ # 数据流
│ ├── data/ # 数据模型
│ ├── features/ # 功能计划/实现
│ └── logs/ # 项目会话日志
├── chats/ # 导入的 Claude 聊天记录
│ ├── code/ # 来自 Claude Code
│ └── web/ # 来自 Claude Web
└── graphify/ # 代码知识图谱
└── project-x/ # 项目 X 的图谱笔记
4.3 CLAUDE.md 配置
这是核心——在 vault 根目录创建 CLAUDE.md,Claude Code 会自动读取:
# Vault — Claude Code 指令
## 这是什么
所有项目的统一知识库。跨会话的持久化记忆。
## Zettelkasten 规则
### 笔记创建
- 使用 wikilinks:`[[note-name]]`(不是 markdown 链接)
- 每个笔记必须有 YAML frontmatter
- 文件名用 kebab-case:`auth-flow.md`
- 每个永久笔记只讲一个概念(原子性)
- 每个笔记至少 2 个 wikilink(密集连接)
### 标准 frontmatter
---
title: 笔记名称
tags: [project, topic]
created: YYYY-MM-DD
updated: YYYY-MM-DD
status: active
type: permanent
---
### 禁止
- 未经询问删除笔记
- 内部链接使用 markdown 链接(用 wikilink)
- 创建没有 frontmatter 的笔记
- 未记录就更改文件夹结构
## 会话命令
### /resume
收到此命令时:
1. 读取 logs/ 中最近的 3 个会话日志
2. 读取当前项目的架构决策
3. 总结当前状态和待办事项
### /save
收到此命令时:
1. 创建会话日志 logs/YYYY-MM-DD-description.md
2. 记录:做了什么、决策了什么、待办事项
3. 为创建/修改的笔记添加 wikilink
4. 如果在仓库中,执行 git commit + push
4.4 笔记模板
创建 templates/default-note.md:
---
title:
tags: []
created:
updated:
status: draft
type: permanent
---
#
## 上下文
## 详情
## 相关链接
4.5 推荐 Obsidian 插件
| 插件 | 用途 | 安装方式 |
|---|---|---|
| BRAT | 安装 Beta 插件 | 社区插件 → 浏览 |
| 3D Graph | 3D 图谱可视化 | 通过 BRAT |
| Folders to Graph | 文件夹作为图谱节点 | 社区插件 → 浏览 |
| Calendar | 日记导航 | 社区插件 → 浏览 |
5. 方案二:Graphify —— 代码库知识图谱
5.1 什么是 Graphify?
Graphify 是一个 Python 工具,通过 tree-sitter AST 将你的代码库转化成可查询的知识图谱。
核心优势:
- 本地执行:代码 100% 在本地处理,不会离开你的机器
- 增量更新:SHA256 缓存,只处理修改过的文件
- 零 Token 成本:默认 AST 模式不需要任何 LLM 调用
- 支持 20+ 语言:Python、JavaScript、TypeScript、Go、Rust、Java、C、C++、Ruby 等
5.2 安装使用
# 安装
pip install graphifyy
graphify install
# 生成图谱(从项目根目录)
graphify . --obsidian --obsidian-dir ~/vault/graphify/project-name
这会生成:
your-project/
└── graphify-out/
├── graph.json # 可查询的图谱(Claude Code 使用)
├── graph.html # 交互式可视化(浏览器打开)
├── GRAPH_REPORT.md # 核心节点、连接、指标
├── wiki/ # Wikipedia 风格文章(AI 导航用)
└── cache/ # SHA256 缓存
~/vault/graphify/project-name/
└── (Obsidian 笔记) # 每个函数/模块作为一个节点
5.3 集成到 CLAUDE.md
在项目根目录的 CLAUDE.md 中添加:
## 上下文导航(Graphify)
### 三层查询规则
1. **第一层**:查询 `graphify-out/graph.json` 或 `graphify-out/wiki/index.md`
理解代码结构和连接关系
2. **第二层**:查询 Obsidian vault 获取决策、进度和项目上下文
3. **第三层**:仅当以上两层找不到时才读原始代码文件
### 何时重建图谱
- 结构性变更后(新模块、大型重构)
- 命令:`graphify . --update`(只处理变更文件)
- 图谱是持久化的——**无需每次会话重建**
### 禁止
- 手动修改 `graphify-out/` 内的文件
- 在图谱已包含信息的情况下重新读取整个代码库
还可以安装 Git Hook,每次 commit 自动重建图谱:
graphify hook install
6. 完整工作流
当一切配置完成后,你的日常流程会变成这样:
开始新会话
- 打开 Claude Code
- Claude 自动读取
CLAUDE.md(项目根目录 + vault 根目录) - 通过 vault 中的
/resume逻辑加载最新的会话日志 - 查询
graph.json了解代码库结构 - 整个过程消耗不到 50 Token
工作过程中
- Claude 通过 vault 查询架构决策、数据模型、历史记录
- 需要理解代码时,先查图谱,再读具体文件
- 发现新信息时,自动写入 vault 笔记
结束会话
- 输入
/save - Claude 自动创建会话日志、记录决策、更新笔记
- 执行 git commit + push
第二天
- 打开 Claude Code → 输入
/resume - Claude 读取昨天的日志、当前状态、待办事项
- 从昨天中断的地方继续,就像没离开过
7. 实际效果
Lucas 在一个 126 文件的 React + Supabase 项目上实测的结果:
- Graph JSON 仅 172 KB —— 比源码小两个数量级
- 图谱生成成本为 0 Token —— 纯本地 AST 分析
- 每次查询 Token 降低 499 倍 —— 从读源码到查图谱
- 780+ 篇 vault 笔记 —— 积累了丰富的项目知识库
这个方案最巧妙的地方在于:它不改变 Claude Code 的能力,而是改变了 Claude Code 获取信息的方式。从”每次从头读源码”变成了”查询持久化的结构化知识”——这是一个量级上的效率提升。
8. 总结
如果你每天都在用 Claude Code 写代码,花一个下午配置 claude-code-memory-setup 绝对是回报率最高的投资:
- Obsidian vault 解决了会话间的失忆症——决策、进度、上下文永久保留
- Graphify 知识图谱 解决了代码库重复读取——172KB 代替数万行源码扫描
- 组合使用 可以将每次查询的 Token 消耗降低 499 倍
- 全免费 —— Obsidian 免费,Graphify AST 模式零 Token 成本
你不需要更好的 prompt。你需要给 Claude Code 装一个大脑。
本文基于 Abhishek Agarwal 在 Level Up Coding 发表的 Stop Wasting Tokens: My 71.5x Cheaper Claude Code Workflow 以及 claude-code-memory-setup 项目改编,是一篇受原文启发的技术实践指南。
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2026/05/claude-code-memory-setup/
