免费POC, 零成本试错
AI知识库

AI知识库

学习大模型的前沿技术与行业落地应用


收藏

拆解 Claude Code 记忆系统:渐进式加载 + 双向链接构成的 Markdown 知识图谱

发布日期:2026-09-04 16:56:05 浏览次数: 1701
作者:AnthroTech AI

微信搜一搜,关注“AnthroTech AI”

推荐语

基于文件检视与实操,拆解Claude Code记忆系统:Markdown知识图谱+双向链接的渐进式加载机制,附可信度判断指南。

核心内容:
1. 可信度判断体系(✅确定/?推测/❓未知分类)
2. Claude记忆系统核心思路(Markdown知识图谱构建与判断/基础设施分离)
3. 文件结构与项目隔离规则(MEMORY.md索引、路径隔离实现)

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

阅读提示这篇对Claude记忆机制的拆解主要是基于一段时间以来对 Claude Code 运行时记忆文件的直接检视和自身实操体会的整理,实操环节也通过某些提示词技巧套取“Claude code一些上下文信息”,并不是对Claude code源码的分析,毕竟除了之前的泄露版本我们是看不到Harness 源代码的。本文姑且算是一篇笔记和有兴趣的读者分享,如果大家也有新的观察视角欢迎留言区讨论。

先说可信度——这篇文章里,哪些是确定的,哪些是我合理推测的

在写这篇文章时,尽量对结论标了可信度。可以通过颜色判断:

标记
什么意思
✅
有文件结构和运行说明佐证,可以放心引用
🔶
基于证据的合理推测,但没找到直接文档确认
❓
属于外层运行时(harness)内部实现,完全看不到

一个观察:Claude记忆系统里,"判断该不该记"这件事大概率是模型自己决定的,而"存在哪、怎么读、加时间戳"这些基础设施应该是 harness 管的。两件事分开看,才不会晕。


一、核心思路:把记忆当代码仓库管

Claude Code 的记忆不是藏在一个 SQLite 里的神秘 blob。它就是一叠 Markdown 文件,放在你硬盘上,拿文本编辑器就能打开看。

它遵循几条很简单的原则:

  • 一个文件只记一件事。每条记忆独立一个 .md,删改互不影响。
  • 索引和正文分开。MEMORY.md 每行指向一条记忆的正文文件,会话开始时只加载索引,不加载正文。用到才去读。
  • 每条记忆都要说清"是什么、为什么、怎么用",而不是单纯记流水账。
  • 召回时带时间戳警告。系统会告诉你"这是 N 天前的快照,用之前自己核实"。
  • 不同项目的记忆互不干扰。靠工作目录路径来隔离。

二、文件都放在哪

✅ 确定的:


里面只有两类文件:

  • MEMORY.md —— 索引,每行一条记忆。每次新会话,这个文件会被全文塞进上下文。
  • 其余每个 .md —— 一条记忆的正文。用到的时候才加载。
.claude/projects/
├── 【项目 A】/
│   └── memory/
│       ├── MEMORY.md          ← 索引,常驻
│       ├── user-profile.md
│       ├── feedback-code-style.md
│       └── ...
└── 【项目 B】/
    └── memory/
        └── ...

三、怎么隔离不同项目

✅ 确定的:按工作目录的绝对路径隔离。路径字符串做一遍字符净化(sanitize),非字母数字字符统一替换成 -,得到的字符串就是"项目键"。

举个例子(虚构路径):

工作目录:  C:\Dev\Sample_App\core_lib
               │  │        │      │
               ▼  ▼        ▼      ▼
项目键:    C--Dev-Sample-App-core-lib

🔶 这个替换规则是从真实文件反推出来的,: \ _ 这几个确认会变成 -。其他特殊字符是不是一样处理?没逐一验证。

❓ 有没有跨项目的"全局记忆"层?我没观测到任何证据。


四、记忆分四种类型

✅ 每条记忆必须归属到下面四类之一:

type
记什么
额外要求
user
你是谁:角色、专长、偏好
—
feedback
你给的工作指导(纠正、确认的做法)
必须写 Why 和 How to apply
project
进行中的目标、约束(且必须是从代码或 git 里看不出来的)
相对日期要转成绝对日期
reference
外部资源链接:URL、看板、工单号
—

✅ 明确不该往记忆里塞的东西:

  • 代码结构、修 bug 的历史、git 日志、CLAUDE.md 里已经写过的;
  • 只在当前对话里用得上、跨会话没价值的信息。
  • 如果你让模型记上面这类内容,它会反问:"这里面不显而易见的点是什么?"——然后只记那个。

五、一条记忆的文件长什么样

一条典型的 feedback 类记忆(根据实际文件抽象出来的):

---
name: feedback-code-style
description: "Prefer composition over inheritance here; run the linter before commit"
metadata:
  node_type: memory
  type: feedback
  originSessionId:  UUID>
  modified:  时间戳>
---

正文内容……
**Why:** 降低耦合,方便单独测试。
**How to apply:** 每次提交前跑 lint 和单测。
参见 [[user-profile]]

几个字段的来源要区分清楚:

  • name、description、type、正文、[[链接]] —— ✅ 模型自己写的。
  • node_type、originSessionId、modified —— 🔶 看起来是 harness 在保存时自动补上的,包括精确时间戳和会话 UUID。精简版说明文档里并没要求模型手写这些字段。

一个有趣的点:实际文件里的 metadata 字段比精简说明文档列出来的要多。精简说明只提了 type,而真实文件里还稳定出现 node_type、originSessionId、modified。这说明"模型写的语义字段"和"系统维护的基础设施字段"是两层。

索引文件里每行的格式 ✅:

- [标题](文件名.md) — 一句话钩子

六、什么时候写记忆

这一点目前的判断是:没有设定所谓自动触发器。 写不写、什么时候写,是模型在对话中自己判断的,应该不是事件驱动、也不是后台守护进程。

合理推断流程是这样:

  1. 对话里出现一条信息
  2. 模型判断:跨会话还有用吗?→ 没用的直接跳过
  3. 有用的话:代码/git/CLAUDE.md 里已经有了吗?→ 有了也跳过
  4. 没有的话:已经有记忆覆盖了吗?→ 有就更新,没有就新建
  5. 无论新建还是更新,最后都要在 MEMORY.md 里同步索引行

实操验证点是:想让模型一定记住某件事,直接说"记住……"最稳。否则记不记完全取决于模型觉得值不值得。如果它想记下某些事,直接拒绝也能阻止记忆的的写入。


七、记忆怎么被召回

✅ 两层机制:

第一层:会话启动时——总是发生

MEMORY.md 索引被全文注入上下文。这意味着每次新对话,模型都知道"有哪些记忆可以翻"。

第二层:对话运行中——按需召回

harness 应该是根据 description 字段判断某条记忆是否和当前话题相关。相关的就把正文塞进 system-reminder,同时附带一句时效警告:"这是 N 天前的快照,涉及 file:line,用之前先核实。"

模型也可以主动去 Read 或 Grep 记忆目录,不依赖 harness 自动推送。

内容
什么时候加载
备注
MEMORY.md
 索引
每次会话开始,一定加载
全文进上下文
单条记忆正文
按需
,只在相关时注入
会话开头不加载正文

❓ 召回的具体算法(语义相似度?关键词打分?)分析下来应该是 harness 内部实现,看不到。


八、怎么维护

整个生命周期大致是这样:

  1. 写入前去重 —— 先检查有没有同名文件,有就更新,不新建重复的。
  2. 发现错误就删 —— 记忆里有错,直接删文件。

    常见的模式:正文里出现类似 "CORRECTED … supersedes my earlier belief" 的段落——模型在后续会话里自我纠错,把旧认知推翻重写。

  3. 双向链接 —— 用 [[name]] 把记忆串成知识图谱,这一点是真的秒。
  4. 时效护栏 —— 每次召回都带"N 天前/时间点快照/先核实"的警告。
  5. consolidate-memory 技能 —— 一个手动触发的整理工具,扫描整个记忆库,合并重复、修正过时内容、精简索引。


九、工具层面:没有专用 API

✅ 操作记忆用的全是通用文件工具,没有"记忆专用接口":

操作
用什么工具
备注
新建
Write
写 .md,再更新 MEMORY.md 索引
查找
Read
 / Glob / Grep
读或搜记忆目录
修改
Edit
(局部改)/ Write(整体重写)
优先更新已有文件
删除
Shell(Remove-Item / rm)
只在确认记忆确实错了时才删

memory\ 目录是已经存在的,不需要手动 mkdir。


十、这套设计好在哪

设计决策
带来的实际好处
文件化,纯 Markdown
能 git 管理,能 diff,人直接打开就能看懂
一条记忆一个文件
改、删、链接互不影响
索引常驻 + 正文按需
省 token
,不用把整个知识库每回都塞进去
用 description 驱动召回
摘要比全文做匹配更准
时效护栏
从机制上防止把过期信息当事实用
类型化 + Why/How
记的是能直接执行的东西,不是流水账
双向链接
记忆之间能串成图,不是孤岛
项目隔离
多个项目互不污染
自我纠错
后来的证据可以推翻之前的认知

十一、坦白说,这些我还不能确定

  • ❓ 召回算法的内部实现完全看不到。
  • 🔶 node_type / originSessionId / modified 是 harness 自动写的,这个推断没被直接确认。
  • 🔶 路径净化规则是从样例反推的,没覆盖所有特殊字符。
  • ❓ 是否存在全局(跨项目)记忆层,没找到证据。
  • ✅ 写入没有自动触发——全靠模型判断,所以可能漏记或多记。"直接说'记住'"最可靠。

附录:基于项目实际MEMEORY文件泛化的样例

以下为演示用的虚构数据,不是任何真实项目。

索引 MEMORY.md:

# Memory Index
- [User profile](user-profile.md) — 用户角色与偏好
- [Code style guidance](feedback-code-style.md) — 编码约定与提交前检查

记忆 user-profile.md(type: user):

---
name: user-profile
description: 用户是一名后端工程师,偏好显式错误处理与充分的单元测试
metadata:
  node_type: memory
  type: user
  originSessionId:  UUID>
  modified:  时间戳>
---
用户是一名后端工程师,负责服务端模块……

记忆 feedback-code-style.md(type: feedback):

---
name: feedback-code-style
description: "本项目偏好组合而非继承;提交前必须先跑 lint 与测试"
metadata:
  node_type: memory
  type: feedback
  originSessionId:  UUID>
  modified:  时间戳>
---
在本项目中优先使用组合而非继承……
**Why:** 降低耦合、便于测试。
**How to apply:** 每次提交前运行 lint 与单元测试。参见 [[user-profile]]


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅