用 MemPalace 检索历史编程会话
MemPalace 原样保存 Claude Code 等工具的对话记录,支持自然语言搜索,并按项目、人物和主题组织索引。文章提供 CLI 与技能安装路线,默认使用本地 ChromaDB,数据外传需主动开启。
AI 深度解读
Claude Code 里反复解释同一个技术决策,缺的可能不是更长的提示词,而是一套能找回历史依据的办法。MemPalace 的路线很直接:把会话原文存到本地,再用自然语言检索,让新会话有机会接上旧讨论。
它保留的不是整理后的结论,而是当时怎么问、怎么答、怎么取舍。对经常追问「为什么改用 GraphQL」的开发者,这种可回查的记录有用。但保存了历史,不代表 Agent 会主动查,也不代表旧结论今天仍然适用。
保留原文,能解决摘要遗漏的问题吗
MemPalace 不总结、不改写会话,而是逐字保存。默认后端是 ChromaDB;按原文转述的 README 说明,除非用户主动选择,否则数据不会离开本机。
它还给历史记录加了一层组织结构:人物和项目对应 wing,主题对应 room,原始内容放在 drawer。可以把它理解成先按项目分区,再按话题归档,最后定位到具体记录,避免所有会话混在一起搜索。
这套设计的价值在于追溯依据。例如,团队选择 GraphQL 时可能附带「只用于内部聚合接口」的限制,摘要未必留下这句话,原文则保留了回查的机会。
保留原文提高了核对依据的可能性,但不保证检索一定找到正确片段。
文章没有提供检索准确率、召回率或跨项目误匹配的测试结果。
从一个项目开始,把历史变成可搜索记录
README 建议在隔离环境中安装 CLI,以避开 Debian、Ubuntu 和 Homebrew Python 上的 PEP 668 错误。命令是 uv tool install mempalace,也可以用 pipx install mempalace。
另一条路线是执行 npx skills add MemPalace/mempalace,再让编码 Agent 完成安装。setup skill 会检测系统、安装包、配置 MCP,并询问使用私有本地 palace 还是共享 palace。只安装 skill,还没有装好 CLI 或 MCP server。
下面这组命令用于初始化并挖掘项目内容:
mempalace init ~/projects/myapp
mempalace mine ~/projects/myapp
注意两行都指向同一个项目目录;这一步和导入 Claude Code 会话是两件事。会话导入还需要执行 mempalace mine ~/.claude/projects/ --mode convos,其中 --mode convos 用来处理会话记录。
多个项目应通过 --wing 分开,减少查一个应用却混入另一个应用讨论的情况。原文没有给出 --wing 的完整调用示例,不宜自行补成可直接执行的命令。
导入后,可以用自然语言追问历史决策:
mempalace search "why did we switch to GraphQL"
注意查询写的是当时要解决的问题;工具返回匹配的原始对话,不是重新生成的摘要。开启新会话时可以运行 mempalace wake-up 加载上下文,用只读命令 mempalace audit 检查记录的组织情况。具体加载哪些内容、占多少上下文,文章没有展开。
记忆能不能用起来,取决于规则和保存机制
作者点出了一个实际问题:搜索工具只有被 Agent 调用才有用。因此,建议在首条消息或 CLAUDE.md 中写明:回答仓库历史决策问题前,先用问题执行 mempalace search,引用匹配原文,并且不要删除或移动会话文件。
这条规则把「可以查历史」变成了明确的工作步骤,也让回答附上可核对的依据。
保存机制同样关键。原文称 MemPalace README 警告,Claude Code 会话会在 30 天后过期,除非配置自动保存 hooks。这是对 README 的转述,文章没有验证该行为适用的版本和环境。操作前应先备份现有 JSONL 会话,再检查自动保存配置。
逐字保存还带来两项成本:比摘要占用更多存储,以及完整保留会话里的敏感信息。历史量大时,挖掘也需要时间,所以作者建议先处理一个项目。
我的判断
我认可它把「找回结论」推进到「找回结论的依据」。排查旧方案、理解迁移原因时,原始讨论里的条件和反对意见,往往比一句摘要更有价值。
但原文是一份安装使用指南,没有展示作者的实测过程,也没有提供和 claude-mem 的对照数据。文章只指出 claude-mem 采用摘要路线,因此不能据此判断谁更准确、更快。原文所说的「20 分钟修复」,也只能视为操作时间的估计,大历史库未必适用。
对于稳定、重要的架构决策,我仍会优先写进仓库文档。会话检索适合补充讨论过程,正式文档则负责说明当前认可的结论。尤其在方案已经变更后,搜索到的旧原文需要结合时间和代码状态判断。
能拿来做什么
- 先挑一个经常重复解释决策的项目,备份 JSONL 后再导入,用几个记得答案的问题检查返回片段是否有用。
- 在
CLAUDE.md中加入历史决策查询规则,要求 Agent 引用原文,再判断它是否适用于当前代码。 - 多项目使用时按 wing 隔离记录,优先检查搜索结果是否串入其他仓库的讨论。
- 把确认仍然有效的重要决策整理进仓库文档,同时保留会话记录,方便以后追查取舍过程。