最近这大半年,我几乎天天泡在 Claude Code 里写代码、做重构、查历史问题。体感最明显的一个痛点,就是上下文丢失——你昨天刚跟它敲定的一套架构约定、命名规范、业务背景,今天开一个新会话它全忘了,你又得从头把背景讲一遍。讲得越细,token 烧得越快,更气人的是讲着讲着它还会理解跑偏。我一度以为这事只能忍,直到我翻到一个叫claude-mem的开源小工具,专门给 Claude 加“长期记忆”,把散落在各次会话里的项目上下文、技术决策、偏好设定自动沉淀下来,并在下次对话时自动注入。这篇文章就是我在实际项目里用它跑了两个月之后的完整总结,包括底层原理、配置方式、完整实操流程,还有一堆文档里压根不会写的坑。如果你也是 Claude 日常重度用户,这篇应该能帮你省下大量重复沟通的时间。
1. claude-mem 是什么,它到底在解决什么问题
1.1 使用 Claude 时最痛的几个瞬间
先说几个我猜大家都有过的经历。第一个场景:你花了一个下午和一个会话,把某个老模块的改造方案聊清楚了,包括边界情况、兼容策略、迁移顺序。第二天开工,新开一个会话,Claude 一脸茫然地反问:“这个项目是什么样的?你说的老模块在哪个目录?”你只能把昨天说过的话再复述一遍,复述过程中免不了丢细节、改表述,然后它就按一个“80% 相似但关键地方不对”的理解开始干活了。
第二个场景:你同时在维护两三个项目,今天写 A 项目的接口,明天切到 B 项目调 Bug。Claude Code 的会话是跟着项目目录走的,但每次切换相当于把大脑格式化一遍。你需要在每个会话里重新说明:“这个项目的技术栈是……”“我们约定错误码用这样的格式……”“不要动 XX 模块,它正在重构”。这些话本身不值钱,但它们每次都挤占宝贵的上下文窗口,真正要讨论的问题反而被压缩了。
第三个场景更隐蔽:决策丢失。很多时候方案的取舍是有历史原因的——当初为什么选 A 不选 B,为什么把某个超时时间设成 3 秒而不是 5 秒,为什么某段代码写得绕。这些道理由的时候记录在对话里,但过两周你再回头看代码,Claude 已经完全不记得了,你也只能靠 git blame 去猜。我后来意识到,AI 编程工具最大的问题不是“能力不够”,而是没有形成一个随项目生长的知识库。每次会话都是“失忆重启”,大量信息被重复生产、重复消耗。
1.2 claude-mem 的核心设计思路
claude-mem 这个工具的思路很直接:既然 Claude 的每一次会话内容都会被记录到本地的会话日志文件里,那我就在后台盯着这些文件,把其中有长期价值的信息提取出来,存成一个结构化的记忆库。下次你新建会话时,它再把相关的记忆注入给 Claude,让它“想起来”你们之前聊过什么、定过什么、偏好在哪。
这套思路听起来简单,但做起来有几个关键设计点。首先是监听层,它不需要你去手动导出对话,而是自动识别 Claude 写在本地的会话日志,做到“零干预记录”。其次是提取层,不是把整段对话存下来,而是用模型对会话内容做摘要和分类,筛出真正值得长期保留的信息——比如项目约束、用户偏好、关键决策。再次是注入层,新会话启动时它会把相关的记忆以可用的形式传递给 Claude;再一个是存储层,所有数据落在本地,不经过第三方服务器,隐私上可控。
我后来查资料时发现,这类工具在业内被称为“AI 记忆层”或“上下文持久化层”。Claude 本身提供的上下文窗口再大,也只是一次会话内的容量;跨会话保持“记忆”,要么靠人工复制粘贴,要么靠这种外部工具做沉淀与回灌。claude-mem 的价值在于把这些环节自动化了,而且整个链路是闭环的:监听 → 提取 → 存储 → 检索 → 注入,每个环节都给你留了配置和干预的口子。
1.3 它适合谁用,不适合谁用
我用了两个月后的结论是,适用人群非常明确。最适合的人就是每天长时间使用 Claude Code / CLI 写代码的开发者,特别是同时维护多个项目,或者一个项目会持续开发好几周的人。你投入的配置成本大概十来分钟,换回来的是每次新会话省掉的“重新自我介绍”时间。其次是技术团队里的负责人,你可以在自己的电脑上把重要决策沉淀下来,回头写周报、做交接、培训新人都用得上。
不太适合的也有两类。第一类是偶尔用一两次 AI 辅助的人,会话之间的间隔太长,记忆价值不大,反而增加维护成本。第二类是特别在意“模型纯粹性”的玩家,他会觉得注入一堆历史摘要反而是噪音。另外,如果你只在这种情况下使用 Claude:一次性对话、简单问答、不需要连续性,那这个工具对你就是多余。工具这东西,得匹配使用节奏才有意义。
2. 记忆系统的工作原理拆解
2.1 监听层:它是怎么“看到”对话内容的
Claude Code 在会话过程中,会在本地写入结构化的会话记录文件,通常是以.jsonl格式逐行追加的 JSON 数据,位置一般在你的用户目录下的.claude/projects/目录里,按项目名分文件夹存放。每一条记录都带有时间戳、角色(用户还是助手)、消息内容、token 用量等元信息。也就是说,你和 Claude 的每一次对话,其实早就被本地持久化了,只是以前这些文件躺在那里没人去二次利用。
claude-mem 的监听层做的事情,就是盯着这些文件的变化。它不会自己去拦截 Claude 的网络请求,也不会读内存,而是采用“日志守护”模式:文件新增了内容,它就抓去处理。这种设计的好处是解耦——它不依赖某个特定版本的 Claude,只要本地日志格式保持相对稳定,它就能工作。坏处也有——如果 Claude 改了日志目录或格式,工具就需要跟着适配,所以你会看到这个项目更新比较频繁。
这里有一个很关键的细节:监听是增量式的。它不是每次把整个文件重新读一遍,而是通过记录文件读取位置的方式,只处理新增的部分。这个处理方式非常像我们平时用tail -f看日志。这样做的原因很朴实:一个长会话可能产生几十万字的日志,全量处理一轮要消耗大量 token,成本根本扛不住;增量处理则让每次提取的开销和会话长度成正比,而不是和历史总量成正比。
2.2 提取层:如何从对话里捞出真正值得记住的内容
监听下来的是原始对话流,但原始对话不能直接当记忆用。你想想,一次会话里包含大量的实验性代码、猜错方向的讨论、无意义的寒暄,如果全部沉淀下来,那叫数据堆积,不叫记忆。所以提取层需要做信息蒸馏。
据我所知,claude-mem 默认的提取策略是:把新增的对话片段交给一个 LLM(默认走 Claude 的 API,也可以配置本地模型),让它按照预设的分类进行结构化摘要。这些分类通常包括:
- 项目事实:项目目录结构、使用的技术栈、关键的模块职责、运行方式。
- 用户偏好:你反复强调的编码风格、命名习惯、对某些库的态度、测试覆盖要求。
- 技术决策:你们讨论过的重要方案、为什么做出某个选择、废弃了哪些方案。
- 当前任务状态:这次会话进行到哪一步、下一步计划是什么、有没有遗留问题。
你可能会说,LLM 提取会不会把重要信息丢了?说实话,会,而且避免不了。但它的取舍逻辑和人类做笔记非常像——记框架、记结论、记关键数字,而不是记每一句话。我自己在用的过程中发现,只要对话里明确说了“记住:我们要用 X 方案”这类指令,提取的成功率很高;如果只是隐晦地聊了几句,提取结果可能不完整。所以后来我养成了一个习惯:重要的事情在对话里直接说出“记住”两个字,这算是给提取模型做显式标注,效果好了很多。
2.3 注入层:新会话怎样“想起来”之前的记忆
提取出的记忆如果只是躺在数据库里不参与对话,那就跟一个你从不翻看的笔记本没什么区别。claude-mem 的关键一步,是把记忆在合适的时机注入到新会话中。
具体实现路径通常是借助 Claude Code 的 hooks 机制或者环境变量:当你在一个项目目录下新开一个 Claude 会话时,claude-mem 会先根据当前项目名和目录路径,从记忆库里检索出与之相关的条目,然后把它们拼装成一段“记忆上下文”,以系统提示或对话前置内容的方式交给 Claude。于是 Claude 在开场时就知道了“这个项目是什么”“之前定过哪些约定”“上次聊到哪”,而不是从零开始猜。
这里有一个非常重要的设计选择:注入不是全量灌入,而是按需检索。它的检索依据主要有几个维度:项目匹配、标签匹配、关键词匹配,以及我后面会讲到的向量相似度。最理想的情况是,你打开项目 A 的会话,它只注入项目 A 的记忆,绝不把项目 B 的记忆也一股脑塞进来。空间隔离和按需加载这两点,直接决定了这个工具在真实多项目场景下好不好用。我试用过一些“全量注入”的方案,上下文窗口很快就满了,效果反而不如不注入。claude-mem 在这点上的克制,是我愿意长期用它的重要原因。
2.4 存储层:为什么是 SQLite 而不是直接堆文件
记忆数据最终落在哪,也是需要仔细考虑的。最简朴的方案是用一个 Markdown 文件记录所有记忆,简单直观,但随着条目增多会出现问题:查询困难、并发写入冲突、没有结构化过滤能力。claude-mem 选择了 SQLite 作为本地存储引擎,这个选择恰到好处。
SQLite 是单文件数据库,不需要起服务进程,非常适合这种“跟着用户走”的工具型应用。它天然支持结构化字段——项目名、标签、分类、创建时间、最后访问时间,都可以作为查询条件。比如我想看“上周在这个项目里记录的所有技术决策”,一条 SQL 就解决了。用纯文本文件的话,这种维度组合查询基本上只能靠 grep 碰运气。
更进一步的,是检索增强。光靠关键词匹配,人类表达的多义性问题很难解决。你在记忆里写的是“重构支付模块”,下次你问的是“那个老的订单支付流程”怎么办?传统的全文检索可能匹配不上。所以 claude-mem 也支持把记忆条目做向量化,也就是把文本转成向量,然后用相似度检索来找“语义相关”的记忆。不过向量检索需要额外的模型和本地资源,属于进阶配置。默认情况下的标签 + 关键词检索,已经能覆盖大部分场景。
2.5 隐私边界:数据到底去了哪里
聊完原理,肯定有人担心隐私。这个我得帮它说句公道话:但凡涉及模型提取的环节,对话片段是要发给模型提供方的。如果你配置的是 Claude API,那就意味着新产生的增量对话会发送给 Claude 的接口做摘要提取。这个环节和你在网页版用 Claude 聊天没有本质区别——数据经过模型提供方处理,但不会永久存储在你的记忆库里之外的地方。
但已经沉淀下来的记忆库,是完整保存在你本机的 SQLite 文件里的。claude-mem 不会在后台把你的记忆库同步到任何云服务,也没有遥测上报的逻辑。它还支持配置忽略规则,比如某些目录不监听、某些关键词触发的内容不提取。我的做法是:把包含密码、密钥、个人身份信息的项目目录直接加入忽略名单,从源头杜绝敏感信息入库。你要是对隐私极度敏感,也可以配置本地模型做提取,让对话片段完全不出本机,就是需要一台跑得动本地模型的机器。
3. 从安装到实盘的完整操作流程
3.1 安装与初始化
我在 macOS 上用的安装方式很简单,依赖 Node.js 环境,直接用 npm 全局安装就行:
npm install -g claude-mem装完后先验证一下版本:
claude-mem --version能打印出版本号就说明装成功了。Windows 和 Linux 上理论上也是同样流程,但我只在 macOS 上验证过,另外两个平台请以官方 README 的最新说明为准。
装好后,下一步是初始化配置目录。执行:
claude-mem init这个命令会在你的用户目录下创建.claude-mem/文件夹,里面包含默认的配置文件和一个初始化的 SQLite 数据库。执行完你会看到它提示你生成了配置文件路径,一般是~/.claude-mem/config.toml。这一步本质上是把工具“接入点”都建立好:它需要知道自己把数据放哪、去哪找 Claude 的会话日志、用哪个模型做提取。
值得一提的是,init过程中它会尝试探测你本机 Claude Code 的安装路径以及会话日志目录。如果你改过 Claude 的目录配置,或者用的是公司统一下发的环境变量,探测结果可能不准,这时候需要手动在配置文件里修正。我建议 init 完成后立刻打开配置文件看一眼,确认路径无误再继续,免得后面“监听了个寂寞”。
3.2 配置文件的几个关键项
打开config.toml,以我当前用的版本为例,核心配置项大致是这样(具体字段名可能随版本迭代略有变化,但思路一致):
[storage] # 记忆库存放位置,默认在用户目录下的 .claude-mem 里 path = "~/.claude-mem/memory.db" [projects] # 需要监听的项目目录,支持多个,留空表示监听所有 include = ["~/work/app-a", "~/work/app-b"] # 明确排除的目录,优先级高于 include exclude = ["~/work/app-a/vendor"] [extraction] # 用哪个模型做记忆提取:claude 表示 Claude API,local 表示本地模型 provider = "claude" # 提取时使用的模型标识 model = "claude-sonnet-4-20250514" [retrieval] # 检索时是否启用向量相似度,开启后记忆召回更准,但需要本地模型资源 semantic_search = false # 注入到新会话的最大记忆条数,防止上下文膨胀 max_inject_entries = 15几个必须理解的点:
第一,include/exclude就是上面说的隐私边界和空间隔离的第一道闸门。如果你像我一样有多个项目,建议不要偷懒留空“监听所有”,而是明确列出来。因为监听所有目录意味着每次任何项目有新对话,提取任务都会触发,本地 CPU 和 API 额度消耗是持续性的;更关键的是,某次在某个临时目录里聊了敏感内容,它也会被悄悄沉淀下来。
第二,provider配置决定提取模型。默认用的 Claude API,提取质量最好,因为它是用 Claude 来总结 Claude 的对话,对上下文理解的一致性很高。如果你有本地跑 Ollama 之类模型的条件,可以改成本地 provider,代价是摘要质量可能会有轻微下降。
第三,max_inject_entries是我在配置里最常调的一个参数。默认 15 条看起来不多,但如果每条记忆摘要都很长,15 条加起来可能有一两千个 token,对上下文窗口仍然是不小的负担。我一般调到 8 到 10 条,优先保证质量最高的几条注入。
3.3 启动监听并与 Claude Code 打通
配置完成后,启动监听进程:
claude-mem watch这个命令会进入前台守护模式,持续监听 Claude 会话日志的新增内容。你可以用nohup或者把它注册成开机自启服务,但我个人更推荐下面这种“伴随式启动”的做法:
claude-mem watch --daemon--daemon参数让它在后台常驻。配合系统服务管理(macOS 上可以用 launchd,Linux 上可以用 systemd),可以让它开机自启,这样你日常开发时完全感受不到它的存在,它只是在后台安静地干活。
这里要特别强调:监听的只是新增内容,历史会话不会被追溯提取。也就是说,你启动 watch 之前已经产生的那些旧会话,它是不会去翻旧账的。所以如果你已经有一个跑了几周的项目,想让它把历史上下文也补上,需要用另一个命令手动触发一次全量提取:
claude-mem record --project ~/work/app-arecord命令会扫描指定项目目录下的历史会话日志,批量生成记忆摘要。首次对一个大项目跑全量提取会耗时较长,也可能消耗不少 API 额度,我建议在非工作时段跑,或者只挑关键项目跑一次,别贪多。
至于和 Claude Code 的“打通”,核心思路是让 Claude Code 在会话初始化时读取记忆注入。实现方式是在 Claude Code 的配置里添加 hooks 配置,在SessionStart事件发生时调用:
claude-mem inject --project $(pwd)inject命令会根据当前目录检索相关记忆,拼装成一段注入文本,Claude Code 会在会话开始时读取并作为上下文的一部分。相当于你在每个新会话的第一句“人话”之前,先塞了一段它自己过去写的“备忘录”。
3.4 记忆的查看、编辑与删除
有了一条条的记忆条目之后,你还得能管理它们,不然就变成“写进去容易,改起来麻烦”的黑盒。claude-mem 提供了一组 CLI 命令:
# 列出某个项目的全部记忆,按时间倒序 claude-mem list --project app-a # 按分类过滤,只查看技术决策类记忆 claude-mem list --project app-a --category decision # 查看某条记忆的详细内容 claude-mem view <memory-id> # 编辑记忆内容,比如补一句上下文、修正错误描述 claude-mem edit <memory-id> # 删除一条彻底没用甚至记错的记忆 claude-mem delete <memory-id>我自己的使用习惯是:每天下班前跑一次claude-mem list,花一分钟扫一眼当天沉淀了什么。看到错误分类、有歧义的摘要顺手edit修正;看到重复的或者已经过时的决策(比如“当前正在重构,暂不新增功能”,重构完了这条就没意义了)直接delete。这个习惯看起来不起眼,但它能保证记忆库长期保持高质量。如果放任不管,提取模型的错误和偏差会随着时间累积,最后注入到 Claude 里的就是一堆半真半假的“伪记忆”,危害比没有记忆更大。
4. 实操中最值得关注的几个场景
4.1 跨会话续写,不用再重复交代背景
第一个让我觉得“这工具值了”的场景,是跨会话续写一个周期很长的重构任务。当时我在改一个电商后台的订单状态机,涉及老代码向新结构迁移,整个活儿横跨了差不多两周。以前的做法是:每天新开会话时,先用一大段文字把“当前状态”描述清楚——哪些状态已经迁移、哪些还在老模块、边界 case 处理到哪里。这段话差不多要花掉我六七百个 token,而且每天描述得还不完全一样。
用 claude-mem 之后,这个过程被压缩到几乎为零。因为我在对话里习惯性地说“记住:XX 模块已经迁移完成”“决定:新老状态机通过适配层过渡”,这些指令被提取成了结构化记忆。第二天开新会话时,Claude 一上来就知道“订单状态机改造进行到适配层阶段,配套测试在tests/order/目录下”,我只需要说一句“接着昨天的进度继续”,它就能准确接上。
更重要的是,它记住的不只是“结果”,还有“约束”。比如我明确说过“不要在适配层里加业务判断”,这个约束被沉淀后,后续所有会话都会遵守。这种跨会话的一致性,以前靠的是人肉提醒,现在它自动做到了。体验上的差异,就像团队里来了一个“读过全部会议纪要的新同事”,沟通成本直线下降。
4.2 多项目并行,记忆互不串台
另一个高频场景是多项目并行。我之前说过,同时维护两个项目时,最怕的就是“串台”——在 A 项目里聊着聊着,Claude 突然按 B 项目的技术栈习惯来写代码。这背后其实就是上下文污染的典型表现:你在这个目录下开了会话,但会话开头可能隐含了一些其他项目的上下文,模型就混淆了。
claude-mem 的项目隔离机制对我这种多项目党来说是刚需。它按项目名和目录路径对记忆做分区,一个项目的记忆绝不注入到另一个项目的新会话里。我用一段时间的体感是:切换项目时的“脑内重置”变得彻底了。打开 A 项目,Claude 就自动带着 A 项目的技术栈约定、代码风格、踩坑记录开始干活;切到 B 项目,它又会换上 B 项目的那套上下文。
这里有个细节值得留意:如果你在同一个项目目录下维护着多个不相关的子模块,记忆还是会混在一起的。所以实操上最好一个独立代码库对应一个独立的项目目录,别把商用项目和个人项目放在同一个仓库里,不然记忆层面还是会有交叉。
4.3 决策回溯,回答“当初为什么这么做”
第三个让我觉得很难替代的场景,是决策回溯。人在写代码的时候经常会有“灵光一现”的瞬间,比如“这里不用消息队列,直接用定时任务轮询就够了,因为现阶段流量还小,引入 MQ 反而增加运维复杂度”。这种话在对话里聊过就过去了,代码里只留下了一个看似“简陋但够用”的实现。两个星期后,你自己看到这段代码都可能疑惑:为什么不用 MQ?是偷懒还是有意为之?
没有记忆系统时,你只能去翻 git 提交记录、翻聊天记录、甚至去问同事;有了记忆系统,你可以直接查:
claude-mem list --project app-a --category decision --tag 消息队列当场就能看到当时的完整推理链:“不引入 MQ,因为现阶段流量小,运维成本大于收益;等日活到 X 万时再迁移。”这种能力在技术复盘、交接工作、评审代码时特别有用。它相当于给代码仓库附带了一份“为什么这么做”的注释,遗憾的是这份注释不是写在代码里,而是写在你的记忆库里。配合 git 提交记录一起看,整个项目的演进脉络会清晰很多。
我一直觉得,AI 编程带来的最大变化不是“写的代码变多了”,而是“做决策的速度变快了”。决策变快之后,记录决策的能力反而成了瓶颈。手工记录决策费时费力,不记录又会让未来的自己和同事陷入“重构一个不知道为什么的旧实现”的困境。记忆工具在这里补上的,正是决策快和记录慢之间的那段时间差。
5. 常见问题与避坑指南
5.1 会话日志目录找不到,watch 了一天空转
这个坑我一开始踩过。装好工具、启动 watch 之后,你以为它在工作,过几天claude-mem list一查,一条记忆都没有。排查思路其实很简单:先确认 Claude Code 的会话日志真的存在,然后确认 claude-mem 找到的位置和实际位置一致。
在我的环境里,Claude Code 的日志落在~/.claude/projects/<项目名>/*.jsonl。你可以先在终端里手动进这个目录,看看有没有文件、文件更新时间是不是最近。如果文件存在但 claude-mem 就是读不到,多半是配置文件里的路径写错了,或者 symlink 指向了别的目录。手动改config.toml里的日志路径,改成绝对路径,然后重启 watch。
另外提醒一下:如果你用 Claude Code 时打开了“离线模式”或者团队自定义的日志策略,会话日志可能根本不会落盘,那就不是 claude-mem 的问题,而是 Claude 侧就没给它提供数据源。这种情况只能换数据源策略,没有更好的办法。
5.2 注入记忆过多,上下文膨胀反而影响输出质量
记忆注入不是越多越好,这是我用了三周之后就深刻体会到的。有段时间我把max_inject_entries调到了 20,想着“多给点信息总没坏处吧”。结果是 Claude 的开场回复变得啰嗦,代码输出有时还会试图“迎合”记忆里的旧约定,显得过度保守,连明显的优化机会都放过了。
后来我反复调参得出的结论是:10 条左右是甜点区。在这个数量下,项目事实、技术决策、当前进度这些核心信息都能覆盖,又不会占据太多上下文留给真实任务。如果你的记忆里刚好有一堆历史性的决策,建议给它们打上archived标签,让检索模块优先跳过过时内容。这条经验说明,记忆系统真正拼的不是容量,而是“准确召回”和“克制注入”之间的平衡。
5.3 敏感信息误入库,怎么清理
尽管有忽略规则,我还是遇到过一次敏感信息溜进记忆库的情况。起因是我在一个临时目录里调试一个包含数据库连接串的脚本,恰好这个目录没被 exclude 掉,提取模型就把带有明文密码的那段对话摘要存了进来。发现问题后,我马上找到对应记忆条目delete掉,然后把这个目录加进 exclude。
这件事之后,我总结了一套保险措施:一是启动 watch 前就把所有临时目录、下载目录加进 exclude,宁可漏掉一些普通项目的记忆,也别让敏感信息有入库的机会;二是定期用关键词搜索记忆库,比如说password、token、secret、api_key,看有没有误入库的内容;三是如果用了inject,要保证注入的记忆不会包含敏感字段,因为那相当于把秘密主动告诉模型了。
5.4 我踩过的其他几个坑
还有一些零散但实用的坑,供大家参考。
一是watch 进程别裸跑在前台。我最早偷懒直接claude-mem watch挂在一个终端里,后来终端被关闭,监听就停了,一整天的工作日志一条都没沉淀。用--daemon并配置自启,才是正经做法。
二是提取消耗的 token 真实存在。每次增量提取都需要调用模型,日积月累是一笔不小的开销。我在重负载项目中实测,一个高强度开发日大概会产生 1-2 万 token 的提取消耗。如果是 API 计费模式,这个成本要提前算进预算里;如果用的是包月订阅,那就无所谓了,放心跑。
三是不要依赖默认分类。提取模型给出的分类标签有时候很糙,“项目事实”和“技术决策”之间经常混淆。你可以在配置里自定义分类体系,也可以靠关键词 tag 体系来补充。我的经验是,把分类和 tag 当成你自己的标签体系来经营,而不是被动接受工具给的结果,记忆库的质量才能持续向上走。
四是多台电脑之间的记忆同步问题。claude-mem 目前的数据都在本机,你换了电脑就等于失忆。我有过在台式机聊了一堆方案,去笔记本上继续开发时发现记忆库是空的惨痛经历。跨设备同步的方案,可以手动把 SQLite 文件拷贝过去,或者把它放到云同步目录里(注意加密和隐私风险),但最靠谱的还是导出并定期备份。目前官方似乎没有提供多端同步功能,这也是项目将来值得期待的方向。
最后说一点我自己的使用心得
用 claude-mem 这两个月,我最大的体会是:它没有改变我和 Claude 协作的方式,但它改变了我和“过去”的协作方式。以前每次新会话都是一次“重新认识”,现在每次新会话都是“接着上一次往下聊”。那种上下文连贯带来的顺畅感,很难用一两句话形容,但当你有一天切回没有记忆的工作流时,会立刻察觉少了什么。
如果你决定尝试,我的建议是从小处开始:先用一个主力项目跑一周,把关键决策、项目事实、个人偏好都尽量在对话里明确说“记住”,然后每天花一分钟claude-mem list看看沉淀了什么。一周后再决定要不要推广到所有项目。工具本身不复杂,真正需要培养的是“在对话里主动产出记忆价值”的习惯。等这个习惯形成了,你再回头看那些每天辛苦重复交代背景的日子,会觉得那时候的自己真的太亏了。