OpenAgentMemory:把你的 AI 编程会话归档到本地并全文搜索
解析 OpenAgentMemory(AyeMemory)——一个开源、本地优先的工具,把 Claude Code、Codex、OpenCode 的会话日志归档进同一个可搜索的 SQLite 数据库,以及为什么一份持久的会话归档值得保留。
如今的 AI 编程工作很少只用一个工具。一个开发者可能在 Claude Code 里规划重构,在 Codex 里跑一个快速修复,第二天又让 OpenCode 处理别的事。每一次会话都是一份详细记录:提示词、推理过程、diff,以及真正奏效的命令。这份记录往往比最终的提交信息更有用,因为它捕捉的是思路和走过的弯路,而不只是结果。
问题在于,这段历史既宝贵又脆弱。每个工具用自己的格式、自己的目录存日志,这些文件会轮转或被清理,当你重装工具或换一台机器时,记录就可能消失。你上个月怎么解决某个难题的笔记,也许已经没了。OpenAgentMemory(也以 AyeMemory 之名发布)就是一个针对这件事的开源项目:它把多个 AI 编程工具的会话日志归档进同一个本地、可搜索的数据库,而且这个数据库被设计成比工具本身活得更久。
OpenAgentMemory 做了什么
OpenAgentMemory 把自己描述为面向 AI 编程工具会话的本地优先归档与全文搜索工具。根据它的 README,它读取 Claude Code、Codex、OpenCode 的日志,将它们标准化为统一的会话与消息格式,并全部存进你本机上的一个 SQLite 数据库。对 Gemini CLI 和 Trae 的支持被列为计划中,而非已交付。
两个设计选择定义了这个项目。第一个是本地优先:所有数据都留在你的电脑上,不会发送到任何外部服务。第二个是只读:工具只读取源日志文件,从不修改或移动它们,因此可以安全地与正在运行的编程会话并行使用。这个定位让它与我们此前介绍过的开源与本地 AI 工具处于同一片领域——在那里,数据归属与隐私是核心,而不是附带功能。
为什么一份持久的会话归档很重要
保留会话归档的理由归结为三个反复出现的需求。第一个是跨工具回溯。一旦你的工作分散在多个智能体上,没有任何单一工具能回答"我三周前是怎么修那个鉴权 bug 的?"统一的归档可以,因为它把每一次会话放在一处,无论是哪个工具产生的。
第二个是持久性。工具的日志目录并不是为永久保存而设计的。它们是工作状态,会被轮转、截断或删除。一个在会话发生时就捕获它们的归档,把这种一次性的工作状态变成了你日后可以依赖的记录。
第三个是可搜索性。一堆 JSONL 文件在技术上算是记录,但不是可用的记录。在标准化数据库上做全文搜索,才让累积数月的会话真正可被回答。这与知识库或 RAG 工作流背后的直觉相同:原始文本只有在你能按需检索到正确的那一部分时,才变得有用。
它是怎么工作的
它的架构小而清晰,这也是它的魅力之一。最外层是适配器,每个受支持的工具一个。每个适配器实现两个函数:discover() 负责在磁盘上找到相关的日志文件,parseFile() 负责把一个文件转成标准化的会话与消息记录。Claude Code 的日志存在项目的 JSONL 文件里,Codex 存它自己的 JSONL 会话,OpenCode 把数据放在一个 SQLite 数据库里,因此每个适配器都知道如何读取各自工具的原生格式。
这些标准化记录流入一个摄入引擎,由它负责增量同步、去重和全文索引。归档本身是一个存放在 ~/.ai-sessions/archive.db 的 SQLite 数据库,上面叠加了一层 FTS5 全文索引。在输出侧,一个命令行界面和一个用 Hono 构建的小型 REST API 暴露归档内容,一个 React 加 Vite 的 Web UI 提供三列视图:左侧过滤器、中间会话列表、右侧完整消息记录。搜索命中会就地高亮,让你一眼看出某个会话为什么被匹配到。
让归档值得信赖的几条设计原则
让一个归档工具可靠的,不是它的功能清单,而是它拒绝打破的不变式,而 OpenAgentMemory 对自己的不变式说得很明确。适配器严格只读。它们从不写入或移动源文件,这正是它可以在编程智能体活动时安全运行的原因。
归档在精神上是只追加的。当一个源文件消失时,它的会话不会被从数据库里移除,而是被标记为 deleted 并保留下来。归档的本意就是比工具活得更久,所以删除原始文件绝不应该抹掉历史。
同步是增量且幂等的。JSONL 文件从记录的字节偏移处读取,因此重新运行同步只会追加新增内容,绝不重复已有数据。你可以定时或手动运行它,而不必担心破坏归档。
原始记录被保留。每条消息都保留它逐字的源内容,因此当某个工具改变格式时,一切都可以从原始内容重新推导,而不会在有损转换中丢失。正是这类保证把一个真正的归档与一堆导出文件区分开来,也呼应了我们编辑政策中所述的证据优先标准。
如何上手
安装遵循常见的 Node 项目套路。克隆仓库后,安装依赖并运行一次同步,它会发现并归档它支持的每个已安装工具的会话:
npm install
npm run sync
之后,几个命令覆盖日常使用。list 命令列出最近的会话,带上来源、消息数和标题。search 命令接收一个查询,运行全文搜索,返回高亮匹配的前若干条结果。serve 命令启动 REST API,让单独运行的 Web UI 可以在浏览器里浏览和搜索归档。因为它是一个自托管工具,需要你自己运行和维护,这正是把所有数据留在本地所要付出的代价。
它适合谁,又该核查什么
OpenAgentMemory 最能吸引那些已经在多个 AI 编程智能体之间工作、并把会话历史当作值得保留之物的开发者。如果你只是偶尔用单一工具,它自带的历史大概就够了。如果你同时用多个编程助手,又想要一份持久、私有、可搜索、涵盖全部工具的记录,那么这样一个工具填补了一个真实的空缺。
有几点需要留意。它是一个在积极开发中的开源项目,因此像 Gemini 和 Trae 支持这样的功能是计划中而非已完成的,细节可能变化。由于适配器依赖每个工具的日志格式,上游格式一变就可能需要更新适配器,这是自托管方式的维护成本。和我们介绍的任何工具一样,请把这里的具体信息当作一个快照:在依赖它之前,查阅当前的项目 README以了解最新支持的工具、命令与行为。对那些看重把 AI 工作流数据留在自己机器上的读者来说,它是把本地 AI 工具这一趋势用在一个真正有用问题上的一个聚焦范例。