项目地址:rohitg00/agentmemory
agentmemory 为 Claude Code、Cursor、Gemini CLI、Codex CLI、OpenCode 等工具提供共享的持久记忆层。
一句话看懂
agentmemory 解决的是 AI 编程里一个很真实的问题:Agent 每次会话都像重新认识项目。你今天让它理解过架构、修过 bug、踩过坑,明天新开窗口,它又要重新读一遍。
这个项目通过 hooks、MCP、REST API 和本地存储,把 Agent 的操作、决策和结果压缩成可检索记忆,在下一次会话里按需注入上下文。README 中给出的目标很直接:更高检索命中、更少 Token、更少重复解释。
项目速览
| 维度 | 内容 |
|---|---|
| 项目类型 | AI Coding Agent 持久记忆系统 |
| 包名 | @agentmemory/agentmemory |
| 技术栈 | TypeScript、ESM、iii-sdk、MCP、REST、hooks |
| Node 要求 | >=20 |
| 存储 | 基于 iii-engine 的文件 SQLite 状态 |
| 接入方式 | MCP tools、hooks、REST API |
| README 亮点 | 51 MCP tools、12 hooks、无需外部数据库 |
它为什么重要
AI 编程工具擅长读当前上下文,但不擅长跨会话积累经验。项目越大,这个问题越明显:架构约定、测试命令、危险边界、历史修复、用户偏好,都散落在聊天记录和文件里。
agentmemory 的思路是把这些信息沉淀成"可召回的工作记忆"。它不是简单把所有聊天记录塞回模型,而是把会话事件压缩、索引、去重,再在合适的时候注入。
架构拆解
仓库的 AGENTS.md 写得很清楚:agentmemory 基于 iii-engine 的三个原语 Worker、Function、Trigger,所有能力都通过 registerFunction、registerTrigger、sdk.trigger() 进入引擎。状态存储走 iii-engine 的 StateModule,而不是自己绕开引擎写 SQLite。
SQLite 文件"] Func --> Audit["Audit Log"]
这套设计有一个优点:MCP、REST、hooks 看起来是三种入口,但最终都会落到同一组 memory functions。这样功能一致性更好,测试也更容易集中。
核心能力
1. 多 Agent 共享记忆
README 提到它支持 Claude Code、Cursor、Gemini CLI、Codex CLI、Hermes、OpenClaw、OpenCode 以及任意 MCP client。也就是说,记忆不是绑定某个聊天窗口,而是变成一层独立服务。
2. 自动捕获与压缩
hooks 可以在 Agent 执行过程中捕获关键事件。与手动写笔记相比,它更适合记录"刚发生过的工程事实":执行过什么命令、改过什么文件、哪些测试失败、最后怎么修好。
3. MCP 与 REST 双入口
MCP 让 AI 工具能直接调用记忆能力;REST 则方便外部脚本、集成服务或自定义工作流接入。
4. 本地优先
项目强调无需外部数据库。对个人开发者来说,这是很现实的优势:安装成本低,隐私边界清楚,离线项目也更容易接入。
记忆应该分层
一个好用的 Agent 记忆库,不应该把所有内容混在一起。更合理的做法是把记忆按稳定程度分层:
| 记忆类型 | 例子 | 更新频率 |
|---|---|---|
| 项目事实 | 技术栈、目录结构、测试命令 | 低 |
| 用户偏好 | 文档风格、代码风格、提交习惯 | 中 |
| 历史决策 | 为什么选择某个实现方案 | 中 |
| 临时状态 | 当前分支进度、失败命令、待办 | 高 |
| 风险记录 | 易错模块、危险操作、敏感文件 | 中 |
agentmemory 的价值会在这种分层里放大:稳定事实要容易复用,短期状态要容易过期,风险提示要在关键操作前被召回。
典型使用方式
bash
npx @agentmemory/agentmemory
启动后,把它接入支持 MCP 或 hooks 的 AI 编程工具。日常使用中,你可以让 Agent 查询:
| 问题 | 记忆层能提供的帮助 |
|---|---|
| 这个项目怎么跑测试? | 找回历史成功命令与环境约定 |
| 上次这个 bug 怎么修的? | 检索相关文件、失败原因、修复摘要 |
| 用户偏好是什么? | 注入代码风格、文档格式、提交习惯 |
| 哪些地方容易踩坑? | 召回过去的构建错误和注意事项 |
与"长上下文"的区别
长上下文窗口能放更多内容,但不等于会记忆。把所有历史都塞进提示词,成本高、噪声大,也容易让模型抓错重点。agentmemory 的方向更像搜索引擎:保存很多,只取相关的少量内容。
使用边界
记忆系统最怕两件事:记错和记太多。记错会污染后续决策,记太多会让检索质量下降。所以接入 agentmemory 后,最好定期清理无效记忆,并把"事实、偏好、临时状态"分清楚。
另外,项目处理的可能是代码、路径、命令输出甚至敏感配置。即便是本地存储,也应避免把密钥、私有数据、客户信息写入长期记忆。
落地建议
第一次接入时,不建议立刻打开所有记忆能力。更稳的方式是从三个低风险场景开始:
| 场景 | 为什么适合先做 |
|---|---|
| 测试命令记忆 | 信息稳定,收益明显 |
| 架构约定记忆 | 能减少重复解释 |
| 修复摘要记忆 | 对后续排查最有帮助 |
等这些记忆的召回质量稳定后,再扩大到用户偏好、长期决策和跨项目知识。记忆系统不是越勤快越好,真正重要的是能在正确时机召回正确事实。
总结
agentmemory 把 AI 编程中最烦人的重复解释,变成了一个工程问题:捕获、压缩、索引、检索、注入。它不负责替 Agent 思考,但能让 Agent 少忘一点项目事实。对于长期维护同一个代码库的人,这种"记得住"的能力会越来越重要。