agent-memory - 为 AI 智能体提供长期记忆的本地运行时
agent-memory 是 tigerless-labs 维护的 AI 智能体长期记忆运行时,采用 MIT 许可。它把 Markdown 文件作为唯一事实来源,SQLite 索引仅作可随时删除的缓存,检索在本地完成并返回文件路径而非粘贴文本。项目自述支持 Claude Code、Codex CLI 等可执行 shell 命令的宿主,写入在会话边界自动触发,无需 API key。
agent-memory 是一个面向 AI 智能体的长期记忆运行时。它要解决的问题很直接:智能体一旦结束会话,就会忘掉这次会话里学到的一切。项目自述的定位并不局限于编程类智能体,而是「任何智能体」都可以接入。它的核心取舍是:把一堆 Markdown 文件当作唯一事实来源,旁边的 SQLite 索引只是缓存,随时可以删掉重建;Claude Code、Codex CLI 以及其他任何能执行 shell 命令的宿主共享同一个存储。检索在本地完成并带排序,返回的是文件路径而不是把正文粘贴进上下文,智能体再按任务需要决定读到多深。它适合那些希望记忆可读、可迁移、可被 grep 和 git 管理,同时又不愿意把记忆锁死在某个托管服务里的开发者。
维护者与状态
项目由 tigerless-labs 维护,仓库创建于 2026-09-01,最后一次提交时间为 2026-09-21。截至 2026-09-21,仓库星标数为 962。需要如实说明的是:该项目目前尚无正式 release。许可证为 MIT。
主要能力
以下能力均来自项目自述,尚未经过独立验证。
两套架构合流到一个存储
项目自述把智能体记忆的既有路线分成两条:一条是检索引擎路线,靠向量、知识图谱和排序管线找到正确内容,但交给智能体的是一块无法检视的文本,存储也难以迁出;另一条是文件系统路线,直接读写 Markdown,可以用 ls 和 grep 浏览,可读且运行成本低,但不排序,目录树一旦超出一次列出的规模就难以为继。agent-memory 声称把两者放进同一个存储:检索引擎索引的正是智能体也能直接读的文件系统,关系以记忆内部的链接形式存在,本地索引负责排序,每次命中都落到磁盘上一个完整的 Markdown 文件。据项目说明,读取路径上不调用模型、不跨网络,因此速度有保障。
按路径检索,按层级阅读
项目自述的召回不会把文本粘贴进上下文,而是返回一个 L0 列表,每项包含一行摘要、文件路径、锚点和分数,智能体再按需要选择展开深度。README 中给出的调用形式包括:mem recall 返回默认 8 条的 L0 列表;mem read --level outline 只读标题,也可以选择 abstract 或 full;mem context 把两者合并,并把排名靠前的几条完整展开。项目称从索引行到摘要、到完整文件、再到原始素材,每一级的成本比上一级高一个数量级,每一级也都是可以停下的地方。长文件还额外提供两个免费的层级:命中的锚点,以及读取时计算出的提纲。
三条读取通道
项目自述设计了三条读取通道,以便一条失效时不算全盘落空:会话开始时确定性地注入 MEMORY.md;基于 FTS5 索引做 BM25 召回,需要时可融合向量插件;以及在前两者都失败时,用 ls 和 grep 直接走目录树。同目录下的记忆构成一个免费的邻域,frontmatter 中的 links 承载图关系,而不需要在其下再放一个图数据库。
写入覆盖由系统负责
项目自述把写入覆盖视为系统的职责而非智能体的判断:蒸馏在会话边界触发,运行时不阻塞任务;完整轨迹会先被复制一份,因此「蒸馏器漏掉」不会等于「系统丢失」。
文件是事实,索引是可重建缓存
据项目说明,执行 rm -rf .index/ && mem rebuild 不会丢失任何知识,这一点由测试保证而非仅写在文档里。记忆保持可 grep、可 git 管理,也可以迁出该系统。
独立的 Manage 层
项目自述包含一个按自己时钟运行的 Manage 层:睡眠期整合带有权限分级,无人值守的流程可以新增和更新,删除只会以提案形式出现、需要确认。项目称竞品要么没有这一层,要么把它埋在写入路径里。supersede 会保留链条完整,recall --as-of 可以按日期回答,因此更新不会破坏历史。
库内不含 LLM 客户端
项目自述库内不内置 LLM 客户端,因此没有需要安装的密钥,也没有计费面;判断力借用宿主智能体自己的 CLI,所有写入都留在你的会话记录里可见。
使用入口
仓库地址:tigerless-labs/agent-memory。
据项目说明,存储目录结构以 $AGENT_MEMORY_STORE/ 为根,其中 MEMORY.md 是根索引,每条记忆一行,也是唯一常驻注入的内容;config.toml 存放全部可调项,未知配置项会在加载时被拒绝;schemas/ 下每种类型一个文件,定义关键字段、分组字段和写入模式;archive/ 为只追加区域,默认不在检索范围内;dream-reports/ 每次睡眠一份;.index/ 完全可重建;.state/ 存放不可重建的运行时状态。
项目自述的常用命令包括 mem recall、mem read --level、mem context、mem rebuild,以及用于管理链接的 correct --link 与 correct --clear-links;MCP 侧的 memory_correct 用 links: [...] 和 links: [] 完成同样的操作。开发侧的命令为 uv run pytest -q && uv run ruff check . && uv run mypy。此外,mem --json read 会包含记忆的来源信息,mem --json trace --pointer 可用于查看被引用的原始消息区间。
许可与限制
许可证为 MIT。
据项目说明,使用上存在若干边界需要注意。其一,记忆以单个文件为失效原子,一个文件要么有效要么失效,没有中间状态;显式链接必须指向同一存储中不同的有效记忆,省略链接字段会在无关的修正操作中保留历史关系。其二,Manage 层虽然可以无人值守地新增和更新,但删除只能作为提案出现,需要人工确认。其三,读取路径不调用模型、不跨网络,这是其速度与零密钥的前提,也意味着判断力依赖宿主 CLI。其四,项目自述中提到的评测结果基于特定宿主与评测配置,README 也明确提示小规模面板只能检查执行与探索行为,不构成统计上成立的改进结论;在扩大读取侧对比之前,需要先确认每个复制的存储都有填充好的索引,并用已知查询验证能命中。其五,宿主可能通过 shell 直接读取存储文件,因此在把回答归因于检索路径之前,需要检查宿主的命令记录是否存在绕过。