首页 > 教程资讯 > 教程详情

LoreKit 作者:agent 记忆缺的是共同格式,而不是又一个工具

AI 与前沿 编辑部小鹿 2026-11-09
文章分享

开源工具 LoreKit 的作者发文,呼吁给 agent 记忆定一套类似 OpenTelemetry 的共同约定。他清点典型开发机上的记忆,称至少有四种互不兼容的形态,彼此无法读取;问题不是缺工具,而是缺一份社区共同接受的格式。LoreKit 本身开源,其 schema 与磁盘格式为 MIT 许可。作者写明,这不是在说 LoreKit 已经解决了记忆,它的格式只是若干提案之一,自身也有缺口。作者本人在 Dash0 日常使用 OpenTelemetry。

四种形态,谁也读不了谁

作者列出一台典型环境里编码工具会「记住」的东西:

  • 多数仓库中的 AGENTS.md 或 CLAUDE.md,以及少数仓库里的 .cursor/rules/*.mdc
  • 经 Anthropic 记忆工具写入 /memories 目录的文件
  • GitHub Copilot 保存在 GitHub 侧、针对每个仓库的事实
  • 记忆类 MCP 服务器维护的 JSONL 知识图谱

他称这是四种不同形态,没有一种能读取另一种。CI agent 学到的教训留在写下它的系统里,编辑器 agent 和下一个工具都读不到。每种格式单独看都合理,合在一起却在反复重建同一个小概念:一条 agent 留给未来自己的笔记,存在某个地址上,并在一段时间内为真。

作者还写道,r/ClaudeAI、r/LocalLLaMA 和 r/cursor 上不断有人贴出自建的记忆层,各自带存储、schema 和 MCP 工具。他认为这说明问题真实存在,但每多一个方案,就多一种别人读不了的格式。

文中对比表被标明为 2026 年末的快照。按该表,GitHub Copilot Memory 的事实在 28 天未使用后删除;Mem0 可设可选过期日期;LangGraph BaseStore 支持可选 TTL,且默认在读取时重置;Graphiti / Zep 的事实被标记失效而不是删除,并区分事实为真的时间与被记录的时间。表中的指令文件由人编辑,不会自动遗忘。

2019 年可观测性停下来的那四层

作者回顾,2019 年之前各可观测性厂商自带 agent、埋点库和数据格式,更换厂商就要重新埋点。OpenTracing 与 OpenCensus 曾分别尝试解决,彼此也在竞争。2019 年二者合并为 OpenTelemetry。厂商达成一致、不再互相竞争的部分有四层:数据模型(span、指标和日志记录是什么)、语义约定(例如 service.name 与 http.*)、传输协议 OTLP,以及参考实现(共享 SDK 和 Collector)。存储、查询和分析仍留给厂商竞争。作者认为 agent 记忆正处于可观测性 2019 年之前的阶段:实现很多,底下却没有约定。他也指出,MCP 与 AGENTS.md 都已放在 Linux 基金会的 Agentic AI Foundation 之下。

导出之外,还有实时寻址

已有提案包括:MacPaw Research 的 Portable Memory,即带字节可复现序列化、删除墓碑和可选签名的 .mem 包,其作者称尚未被广泛采用;2026 年 4 月的 Open Memory Protocol 草案,用带清单的 ZIP 在平台之间迁移对话及由此衍生的记忆;Cognee 的 COGX,可从 Mem0、Letta 和 Zep 导入。

作者称,这些提案主要解决跨厂商导出,也就是把一个人的记忆从一家迁到另一家。编码工具还有第二个尚未解决的问题:实时寻址。当 CI 任务、编辑器 agent 和评审机器人同时在同一仓库里工作时,它们如何读写同一位置,并对其含义达成一致。他认为完整规范需要同时覆盖这两件事。

他把各格式收成四个问题:记忆在何处为真、身份是什么(再次写入是更新还是复制)、内容说了什么、何时不再为真。真正的分叉是谁来写:指令文件由人写;Anthropic 记忆工具、Letta 和 LoreKit 由模型写;Mem0 与 Graphiti 由服务从对话中抽取事实。作者认为规范不必选定一种,但必须记下写入者,好让读者判断该信多少。

示意记录与规范边界

文章给出一条 Markdown 示例。frontmatter 含 spec、id、address、key、kind、written_by、content_type、lifecycle 和 attributes,正文是记忆内容。作者声明这些字段名不是提案,只用于说明数据模型;同一条记录也可以序列化成 JSON,供需要在网络上发送的工具使用。

围绕这条记录,他建议规范照 OpenTelemetry 的层次来定:

  • 约定注册表:地址层级使用 global、project、repo、branch 等共享名称,并覆盖 monorepo 可能需要的层级;kind 以及 vcs.*、ci.*、agent.* 等属性命名空间放进同一份带版本的注册表
  • 经由 MCP 的契约:写入、读取、列出、搜索、归档,输入和输出固定。作者称现在许多记忆服务器已提供 MCP 接口,但各自暴露的工具和含义不同
  • 一致性测试:代替参考实现,检查记录往返不丢失、未知属性在重写后仍保留、过期行为与声明一致

存储、排序、嵌入和用户界面留在规范之外,作为工具竞争的部分。规范应放在中立之处,而不是 LoreKit 仓库或任何单一厂商名下。

作者在文末列出尚无答案的问题:地址层级是固定清单还是约定;遗忘是否应为默认(他对比 Copilot 默认遗忘、LoreKit 不默认遗忘、LangGraph 在读取时延长寿命);记录是否应指向所依赖的代码;以及由工作组、基金会还是一份可提交修改的草案来协调。他邀请表中工具和已有提案的作者对照笔记,并写明可用 npx @lorekit/cli install 查看 LoreKit 离线存储写出的纯 Markdown 文件。

来源