命令行工具
rohitg00/agentmemory avatar
rohitg00/agentmemory

agentmemory 评测:为 AI 编程代理装上一套带置信度的持久记忆

#1 基于真实世界基准的人工智能编码代理的持久内存。

28,470 个 Star2,461 个 ForkTypeScriptApache-2.0

秒懂

它是什么?
agentmemory 是一个基于 iii 引擎的 TypeScript 项目,为 Claude Code、Cursor 等编程代理提供持久记忆层。它用置信度评分、生命周期管理和混合搜索来组织记忆,但 keyless 模式下的语义召回能力有限,值得在采用前仔细验证。
适合谁用?
agentmemory 适合那些频繁在同一代码库上使用 AI 编程代理、且厌倦了反复解释项目背景的开发者。它不适合需要开箱即用语义搜索的用户,因为 keyless 模式下只有 BM25,语义查询可能返回空结果。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 2 天前。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是重复解释问题

用 AI 编程代理的人都有一个共同痛点:每次新会话,代理都不记得你上次告诉它的架构决策、代码约定或某个模块的用途。agentmemory 想解决的就是这个问题。它把自己定位为“coding agent 的持久记忆”,宣称基于真实世界基准测试。它面向的群体很明确:重度使用 Claude Code、Cursor、Copilot CLI 等工具的开发者。这类用户通常在一个项目上工作数周甚至数月,每次会话都要重新解释上下文,浪费大量 token。agentmemory 试图把这些上下文固化下来,让代理自己知道何时去查记忆。它不是给所有 AI 应用用的通用记忆库,而是专门针对编程代理场景设计的。

从 Karpathy 的 LLM Wiki 到带置信度的知识图

项目 README 里提到,agentmemory 的灵感来自 Karpathy 的 LLM Wiki 模式,但做了扩展。它加入了置信度评分、生命周期管理、知识图谱和混合搜索。具体机制是:记忆不是简单的键值对,而是有结构的实体和关系。置信度评分让系统能区分高可靠的事实和猜测。生命周期管理意味着记忆会过期或更新,而不是永远堆在那里。知识图谱则让代理能通过实体间的关联找到间接相关的信息。混合搜索是另一个关键点:在 keyless 模式下,它用 BM25 做关键词检索;如果配置了 embedding provider,则可以融合向量搜索和结构化的图谱匹配。这个设计有点像是把传统的信息检索和现代的语义搜索结合起来,但具体效果取决于配置。

安装与首次配置:一条命令,但有几个坑

安装很简单:`npx -y @agentmemory/agentmemory@latest`。首次运行是交互式的,让你选择要接入的代理(Claude Code、Cursor、Codex 等),选择 LLM 提供商或者保持 keyless。它会自动生成配置、启动内存服务器和它固定的 iii 引擎。需要注意的是,Node.js 20 或更高版本是硬性要求。macOS 和 Linux 上,自动安装 iii 引擎还需要 `curl`、`sh` 和 `tar`,像 `node:20-slim` 这样的精简镜像可能没有这些工具。Windows 原生环境更麻烦,需要手动下载并解压固定的 iii-engine v0.11.2 的 `iii.exe`,CLI 不会自动做这件事。WSL2 或 Docker Desktop 是官方推荐的替代路径。安装后可以运行 `npx -y @agentmemory/agentmemory@latest demo` 来验证召回是否工作,再用 `npx skills add rohitg00/agentmemory -y` 给代理装上 17 个原生技能。

keyless 模式的真实限制:语义搜索可能返回零结果

README 明确警告:keyless 模式禁用向量嵌入,`memory_recall` 路径只用 BM25。这意味着你输入“数据库性能优化”这类语义查询,可能什么都搜不到。demo 命令里专门有一个这样的例子,注释说“intentionally semantic and can return zero until an embedding provider is configured”。这是一个重要的现实约束。如果你想要免费的本地语义召回,可以设置 `EMBEDDING_PROVIDER=local`,首次请求会下载 `Xenova/all-MiniLM-L6-v2` 模型,之后推理在本地进行。但如果你不配置任何 embedding provider,你的记忆搜索就退化成纯关键词匹配,这在代码注释、变量名等文本上可能够用,但对于自然语言描述的复杂概念,效果会差很多。这不是一个隐藏的 bug,而是设计权衡,但 README 把它放在小字部分,容易忽略。

与 iii 引擎的绑定:一个版本,一条路

agentmemory 不是独立运行的,它依赖一个叫 iii 的引擎(来自 iii-hq/iii)。这个引擎负责底层的记忆存储和流处理。关键约束是:agentmemory 固定使用 iii-engine v0.11.2,不会挂载到其他版本。README 说“the worker can't speak another engine's protocol”。这意味着如果你已经在跑自己的 iii 引擎,版本不同就得先停掉它,否则 agentmemory 无法工作。这种绑定带来两个后果:一是升级 agentmemory 时,iii 引擎的版本会被锁定,你无法单独升级引擎来获得新功能;二是如果你有多个项目需要不同版本的 iii,会冲突。从维护角度看,这简化了兼容性测试,但牺牲了灵活性。如果你已经有 iii 基础设施,这可能是采用 agentmemory 的最大阻碍。

替代方案:自己写记忆层 vs 用 MCP 生态

agentmemory 并不是唯一的记忆方案。最直接的替代是自己在项目里维护一个 markdown 文件或 JSON 文件,让代理通过 read_file 工具去读。这种方式零依赖,完全可控,但缺点是没有搜索能力,记忆多了以后代理不知道读哪个文件。另一种替代是使用通用的 MCP 服务器,比如 mem0 或基本记忆插件,它们通常提供向量存储和语义搜索,但不专门针对编程代理优化。agentmemory 的优势在于它提供了 20 个代理适配器,能自动接入 Claude Code、Cursor 等工具,并且有生命周期管理和置信度评分,这些是通用 MCP 服务器没有的。但如果你只需要简单的关键词记忆,一个文本文件加上几条代理规则可能就够了,成本低得多。

配置与数据存储:需要留意的细节

agentmemory 的配置通过环境变量和 `~/.agentmemory/.env` 文件控制。运行时使用四个端口:3111 用于 REST/MCP HTTP,3112 用于 iii 流,3113 用于查看器,49134 用于 iii worker WebSocket。持久数据默认存放在平台特定目录,macOS 是 `~/Library/Application Support/agentmemory`,Linux 是 `$XDG_DATA_HOME/agentmemory` 或 `~/.local/share/agentmemory`,Windows 是 `%APPDATA%\agentmemory`。你可以用 `--data-dir` 或 `AGENTMEMORY_DATA_DIR` 覆盖,但必须每次重启都用同一个值,否则记忆可能丢失。还有一个兼容性细节:如果存在旧的 `./data/state_store.db` 或 `./data/iii-config.yaml`,它们会优先于平台默认目录,这可能让从旧版本升级的用户感到困惑。建议任何生产使用前,先明确数据目录的路径并固定下来。

维护与许可:Apache-2.0 下的现实

项目使用 Apache-2.0 许可,这对商业使用是友好的,没有 copyleft 义务,可以自由修改和分发,只要保留版权声明。维护方面,最近的发布记录显示 v0.9.29 在 2026-08-16,v0.9.28 在 2026-07-19,v0.9.27 在 2026-06-07,基本保持每月一个版本,说明项目还在活跃迭代。但版本号还停留在 0.9.x,意味着 API 可能还没有稳定,升级时可能有破坏性变更。另外,项目依赖固定的 iii 引擎版本,这意味着每次 agentmemory 发布新版本,你都要检查 iii 引擎是否也跟着更新,这增加了升级的复杂度。如果你打算长期使用,建议关注 release notes 中的破坏性变更,并做好数据迁移测试。

编辑结论

agentmemory 适合那些频繁在同一代码库上使用 AI 编程代理、且厌倦了反复解释项目背景的开发者。它不适合需要开箱即用语义搜索的用户,因为 keyless 模式下只有 BM25,语义查询可能返回空结果。在采纳前,你应该先运行 `npx -y @agentmemory/agentmemory@latest demo`,确认默认关键词搜索能命中,然后决定是否设置 `EMBEDDING_PROVIDER=local` 来获得本地语义能力。如果你已经在运行自己的 iii 引擎,注意 agentmemory 固定使用 v0.11.2,其他版本无法对接,这可能是迁移的硬性约束。它的 Apache-2.0 许可对商业使用友好,但维护节奏和长期稳定性仍需观察,毕竟最近的发布间隔并不均匀。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记