给AI补一本工作笔记:我的Hashes Memory
内容提要
作者为AI工作流搭建了本地长期记忆系统Hashes Memory,接入Codex和Qoder,用Markdown存记忆、SQLite做索引、MCP提供调用入口,保存个人习惯、项目交接和科研知识三类内容。因记忆库更新滞后,作者以SWED项目试点补写交接,并控制启动简报的token预算,避免记忆越多开场越贵。
延伸解读
本地记忆的边界:读过不等于记住
文章澄清了一个常见误解:AI在对话中读过材料,并不代表它以后还能找到当时的分析。新开对话时,早期内容不会自动带入,除非有项目文件、规则或检索到的记忆。Hashes Memory正是为补上“保存与检索”这一环而建,它把值得留下的内容存成文件,并提供查找入口。读者需注意,本地存储不等于模型永久记住,也不等于内容已训练进模型。
记忆库的维护难题:更新滞后与交接试点
作者检查发现,Hashes Memory最新记录停留在7月15日,而项目SWED的文档已更新到8月14日。这意味着新任务若只读旧记忆,可能熟练地介绍过去。为此,作者以SWED为试点补写交接,并整理方法边界、CPU优化与GPU失败条件等知识候选。这提示我们,记忆库的价值不仅在于搭建,更在于持续更新,否则工具能连接却无法反映最新进展。
启动简报的token预算:避免记忆越多开场越贵
作者担心,若每次启动都读取所有记忆,开场成本会随记忆库增长而上升。因此启动时只提供短简报:个人规则、当前项目交接和预算内的少量正式记忆。SWED试点设定了约1500个估算token的预算,实测一份简报约1374 token。但需注意,这是估算器结果,并非模型账单精确值,且不包含系统提示、工具说明等开销。本地查询不耗token,但返回给模型的文字仍占上下文。
记忆系统的可靠性:漏写与未审核风险
文章指出,即使跨独立MCP进程恢复交接已测试通过,也不能保证每个真实任务都会写交接。客户端未加载新规则、工具调用失败或任务中断都可能导致漏写。此外,新任务读取的交接仍被标为未审核工作记录,科学结论和长期偏好需经确认才成为正式记忆。读者应意识到,记忆系统并非全自动可靠,需要人工审核和持续观察,且“没有找到记录”不等于“以前没有做过”。
Q&A
Hashes Memory 是什么?它主要解决什么问题?
Hashes Memory 是作者为 AI 工作流搭建的一套本地长期记忆系统,主要接入 Codex,也供 Qoder 使用。它解决的是 AI 在新对话中无法自动记住之前工作内容的问题,避免每次都要重新讲背景、重新读材料、重新解释决定,从而节省 token 并提升交接效率。
Hashes Memory 用什么技术保存和检索记忆?
它使用 Markdown 保存真正的记忆内容,SQLite 作为从 Markdown 生成的检索索引,并通过本地 MCP 服务为 Codex、Qoder 提供统一调用入口,例如查询项目简报、搜索历史决定、写入候选记忆。
Hashes Memory 主要保存哪几类内容?
主要保存三类:第一类是个人习惯,如中文优先、先读现有文件再做最小修改;第二类是项目交接,包括当前进度、已完成、验证过什么、未知项和下一步;第三类是科研知识,如材料与问题的关系、方法选择理由、实验结论的适用条件和失败原因。
为什么记忆库需要持续更新?不更新会有什么问题?
因为工具能连接、查询能返回结果,不代表记忆库内容是最新的。例如 Hashes Memory 最新记录停在 7 月 15 日,而 SWED 项目文档已记录路线 B 在 8 月 14 日冻结。如果新任务只读旧记忆,AI 可能熟练地介绍过去,而不是接上当前工作。
如何控制启动简报的 token 消耗,避免记忆越多开场越贵?
启动时只给一份短简报,包含个人规则、当前项目交接和预算内的少量正式记忆;遇到具体问题再搜索相关条目,摘要不够用才打开完整内容和来源。SWED 试点给启动简报设了约 1500 个估算 token 的预算,实测一份简报返回 1806 个字符,约 1374 token。同一对话已读简报后,可只检查版本变化,未变化时复用上下文。
Hashes Memory 目前有哪些局限或不确定的地方?
局限包括:记忆库更新可能滞后,需要人工补写交接;科学结论和长期偏好需经确认才成为正式记忆;启动简报的 token 数是估算值,不是模型账单精确值;跨独立 MCP 进程恢复交接虽已测试通过,但客户端未加载新规则、工具调用失败或任务强制中断都可能导致漏写交接,仍需在实际使用中观察。