
用AI编程助手写了半年代码,每次新开一个会话,它就像失忆了一样。昨天讨论的项目架构,今天得重新解释一遍。上周做的重构决策,这周又得从头说明。
我试过各种办法。把关键信息写在注释里,把决策记录在文档里,甚至手动复制粘贴之前的对话。但都很麻烦,而且容易遗漏。
最近看到ai-memory这个项目,GitHub上3.4k stars。它想解决的就是这个问题。
它是怎么工作的
ai-memory的核心思路是给AI编程助手装个长期记忆。它通过生命周期钩子自动捕获会话数据,编译成持久化的Markdown wiki。下次你开新会话,或者换个AI工具,它能接上之前的工作。
我用Docker部署试了一下:
docker run -d --name ai-memory \ -p 127.0.0.1:49374:49374 \ -v ai-memory-data:/data \ -e AI_MEMORY_LLM_PROVIDER=anthropic \ -e ANTHROPIC_API_KEY=sk-ant-... \ akitaonrails/ai-memory:latest然后配置Claude Code:
ai-memory install-mcp --client claude-code --applyai-memory install-hooks --agent claude-code --apply配置完之后,我在Claude Code里开始一个项目。写了几个文件,做了一些重构,讨论了架构决策。关掉会话。
第二天,我用Cursor继续这个项目。运行ai-memory run codex --yolo,Cursor看到了我昨天的工作上下文。它知道我做了什么重构,为什么做这些决策,下一步要做什么。
这个体验确实比之前好很多。不用重新解释项目背景,不用重复之前的讨论。
它支持哪些AI工具
我看了一下支持列表,覆盖了主流的AI编程工具。Claude Code、Codex、Cursor、Gemini CLI、Devin CLI、OpenCode、Command Code、Kimi Code、Kiro CLI、Grok Build CLI、Antigravity CLI、OpenClaw、Zero。
但有个细节要注意。不是所有工具都支持完整功能。像Claude Desktop、VS Code Copilot、Zed这些,只有MCP模式,没有生命周期钩子。这意味着它们无法自动捕获会话数据。
所以如果你用这些工具,ai-memory的自动记忆功能用不了。你得手动记录。
它的技术实现
ai-memory用Rust写的。数据存在SQLite里,用FTS5做全文搜索。Wiki是纯Markdown,用Git版本化。
Markdown是真实来源,可以用grep搜索,可以用Obsidian打开。不需要向量数据库也能用FTS5搜索、实体匹配、图邻居搜索。
它还支持向量搜索,但不是必需的。你可以选择用OpenAI、Voyage、Google Gemini的嵌入,或者用OpenAI兼容端点接本地模型。
LLM提供商支持Anthropic、OpenAI、Gemini,还有OpenAI兼容端点。我用的是Anthropic的claude-haiku-4-5,整合质量不错。
项目隔离和全局偏好
ai-memory用UUID键控项目。每个项目有独立的wiki空间。支持多客户端、工作/个人分离、monorepo场景。
全局偏好存在_global作用域。比如团队的编码规范、常用的工具配置,可以存在全局里。每个项目查询时自动联合全局偏好。
我在多个项目间切换时,不用重复配置相同的偏好。
实际使用中的问题
用了一周,我发现一些问题。
第一个是配置复杂。虽然文档很详细,但配置生命周期钩子还是容易出错。我第一次配置时,钩子没生效,会话数据没被捕获。排查了半天才发现是权限问题。
第二个是记忆质量依赖LLM。整合会话数据成wiki页面,需要LLM来总结和提取。如果LLM理解错了,记忆就错了。我遇到过几次,它把我的重构决策理解反了。
第三个是跨代理交接的信息丢失。虽然它能交接,但不是所有信息都保留。用户提示保留最多16 KiB,通知和工具摘录保留最多2 KB。有些细节会丢失。
它适合什么场景
长周期项目。一个项目持续几周或几个月,需要保持上下文。
多工具切换。在Claude Code、Cursor、Codex等工具间切换,需要无缝衔接。
团队协作。团队成员共享项目上下文,减少重复沟通。
不适合的场景:
短期任务。一个任务几小时就完成,不需要长期记忆。
单一工具。只用一个AI工具,不需要跨代理交接。
简单项目。项目结构简单,不需要复杂的上下文管理。
和其他方案的对比
我之前试过几种方案。
手动记录。把关键信息写在文档里,每次新会话手动复制。这个方法简单,但容易遗漏,而且麻烦。
用AI工具自带的历史记录。但历史记录是按会话隔离的,跨会话查询不方便。而且不同工具的历史记录不互通。
ai-memory自动捕获会话数据,自动编译成wiki,支持多个AI工具。但配置复杂,记忆质量依赖LLM,部分工具不支持完整功能。
值得一试吗
如果你经常在AI编程工具间切换,或者需要在长周期项目中保持上下文,ai-memory值得一试。它解决了一个真实问题,而且提供了可行的解决方案。
但要做好调试配置的准备。文档虽然全面,但某些细节仍然模糊。配置生命周期钩子容易出错,记忆质量依赖LLM的理解能力。
项目地址: https://github.com/akitaonrails/ai-memory
MIT协议开源,作者Fabio Akita用Rust写的。目前还在活跃开发,最近一次提交是几天前。
夜雨聆风