claude code 记忆机制学习总结

claude code 记忆机制 为了解决三个问题 1、上下文遗忘 2、多终端同步 3、token预算控制 claude code 使用了六个维度记忆框架 指令记忆 (规则级) 如框架图所示,指令的记忆都是以规则形式放在CLAUDE.md的文件族中,那么这些文件的有什么作用呢?加载顺序是否有优先级呢...
claude code 记忆机制学习总结
claude code 记忆机制学习总结

claude code 记忆机制

为了解决三个问题

1、上下文遗忘

2、多终端同步

3、token预算控制

claude code 使用了六个维度记忆框架

指令记忆 (规则级)

image

如框架图所示,指令的记忆都是以规则形式放在CLAUDE.md的文件族中,那么这些文件的有什么作用呢?加载顺序是否有优先级呢?回答是肯定的加载是有优先级,模型加载的顺序从当前工作目录向下找到离的最远的目录进行加载,所以离当前目录越近加载越靠后,那么优先级别越高。

我个人理解,你进行项目开发,那么项目开发的一些规则和要求的优先级是当然是优先的,而不是那些通用的策略

同时指令记忆中还提供了三种扩展机制如图所示

image

目的就是为了选择性、按需、分层注入->token效率也就是预算控制起到了一个比较好的效果。

那么记忆是如何进行注入的呢?这里使用了双通道注入如下图所示:

image

双通道注入好处:就是用户修改了CLAUDE.md并不会影响行为规范通道注入,同时我们还需要指知道为什么要进行分开,主要原因就是在不断的使用过程中,用户不断编写符合适合自己的一个开发习惯的指令记忆,导致需要频繁对记忆文件进行修改,因此在注入记忆的时候就会以首条对话内容进行注入,而行为规范是系统内建、未稳定的,因此可以作为真正的系统提示词进行注入。

短期记忆(会话级)

这里就是用户和模型之间的会话内容,记录所有对话,都是没有压缩过的,都是存在内存里。

工作记忆(任务级)

工作记忆就是与当前任务相关,记录任务完成的进度,偏移等等内容

长期记忆(持久级)

哪些内容会记住呢?如下如所示

image

基于磁盘Markdown文件的分层知识库引擎,默认存储路径~/.claude/projects//memory/ 按照Git仓库根目录的路径做了一个清理化处理之后作为子目录名。同时git worktree共享canonical git root 多分支共用同一个记忆目录。

canonical git root = 规范 Git 根 = 主仓库的 .git 目录所在的那个根目录

在 worktree 场景下:所有 worktree 共享同一个 canonical git root(主仓库),只是各自有自己的工作目录和少量私有元数据。

是所有内容都进行存储吗?

不存什么内容:代码模式/架构、文件路径、git历史、调试方案。

我个人理解目标就是当我们修改亦或者提交某些内容导致原有的记录失效,所以这部分内容让模型需要的时候自己从工作区读取亦或者是git log 执行指令查看,确定性的东西就没有必要再存了。

MEMORY.md 索引与动态召回里面的具体结构如下图所示:

image

存储了记忆之后,需要读取记忆,那么这里是如何进行记忆的读取呢?如下图所示先进行异步预取流程,完成之后进行sonnect智能赛选。

image
image

摘要记忆(压缩级)

会有一个后台子代理持续维护会话笔记,这里是渐进式记录的在进行上下文压缩的时候直接使用这份会话笔记替代生成的摘要。这里为了避免主代理的正常对话交流被干扰,这里创建了一个子代理,会进行对话内容回顾同时,对值得保留的内容做记忆,这里如果用户让主代理进行记忆文件的修改,那么子代理就会跳过本次提取,继续监听下一次,从而避免了冲突。

子代理记忆写入方式:两回合策略,并行读和并行写,读写分开,在进行记忆写入的过程中不允许进行调查验证,避免陷入验证兔子洞,浪费预算。记住每个代理都是有自己权限范围的,只能对指定文件进行修改。

触发条件:上下文token数、至上次更新依赖有足够的新内容增加。

上下文压缩不是一次性执行的,是渐进式维护session-memory.md文档,不断持续更新。

image

保留哪些消息呢?calculateMessagesToKeeplndex算法这里有API不变量保护原则、不破坏消息完整性,就是确保工具调用对不被从中间打断。

休眠重塑(离线级)

auto dream 这里系统在达到一定会话次数的似乎会对碎片化记忆进行清理、合并、去除矛盾、然后更新全局索引。

触发条件 双重门控触发:距离上次整合过去了24h至少有5个会话产生了新的记忆,为什么要这样的门控,因为重复性触发扫描记忆文件、读取转录日志、分析矛盾、合并重发的成本和延迟太高。

这里使用锁文件进行:

image

上面内容是自己今天下午的看的一个B站大佬讲的视频笔记总结,有不对的地方请多多包涵和指正,同时大家也可以分享一下在项目中,我们应该如何去实现agent长短期记忆。

3 个帖子 - 3 位参与者

阅读完整话题

来源: linux.do查看原文