ARTICLE · 1067896
换 AI 编码工具不用再重新自我介绍!这个开源记忆中间件,让 Claude Code、Codex、Cursor 共享同一份"长期
项目名称
Any Agent Memory Mesh(amm) —— 一个本地优先、厂商中立的 AI 编码代理持久化记忆中间件:基于 MCP 接入,让 WorkBuddy、Claude Code、Codex、Cursor、Kimi Code 等任何 MCP 兼容代理,读写同一份存在你自己电脑上的记忆网络。
项目2026年开源,主语言 Python,采用 MIT 许可证,全程可跑在本地——原始记录不离开你的机器,压缩和向量化默认走本地 Ollama。
解决什么问题
用 AI 编码代理干活的人,每天都在被三件事折磨:
- 金鱼记忆
:每次会话结束,上下文清零。昨天让代理踩过的坑、验证过的结论,今天它一无所知,全部重来; - 跨厂商交接断层
:一个任务干到一半想换工具——从 Claude Code 换到 Codex 或 Cursor——新代理对项目架构一无所知,你得重新解释项目背景、哪些方案已经试过并且失败了、还有哪些问题没解决; - 记忆越攒越乱
:就算有记笔记的习惯,原始流水账只会无限膨胀,从不被整理提炼,时间一长等于没记。
amm的解法是把记忆做成一张介于任何代理和本地存储之间的"记忆网":所有事件只追加进本地 SQLite(事件溯源,原始记录不可篡改),图表和向量视图全部是可丢弃的派生物(随时可重建),召回时用多跳图扩展 + 学习排序捞出真正相关的上下文,空闲时段由本地 LLM 自动把流水账压缩成可演化的知识。
一句话:换工具不换记忆,会话结束不忘事。
特色亮点
- 事件溯源架构
:所有记忆以事件形式追加写入 SQLite(只 INSERT,永不 UPDATE/DELETE 业务数据),可审计、不失真;摘要、实体、关系、向量全是从事件派生的"可丢弃物化视图"——新事件进来自动标脏重算,换嵌入模型维度变了也只是重建图表目录; - 图 + 向量双引擎
:内嵌图数据库 Kuzu 承载实体关系图,并直接用它的原生 HNSW 向量索引(无需常驻向量服务);启动时在隔离子进程探测原生索引是否安全,不安全自动降级为精确余弦扫描——服务永不因此挂掉; - 可解释的学习排序
:多跳召回混着"片段 + 实体",固定启发式排不准("之前哪个方案被否了?"应该把被否的失败方案排在新鲜但琐碎的笔记前面)。amm 用纯 Python 实现的线性 RankNet,特征含相关度/时效/图度/否定词奖励等——没反馈时用合理默认权重开箱即用,积累了 memory_feedback标注后跑一次amm train拟合权重,召回质量持续进化; - 空闲自压缩
:夜间 00:00–06:00 空闲窗口,本地 Ollama 自动把原始事件压缩成分层摘要 + 实体/关系抽取(没装 Ollama 也有确定性启发式兜底,流水线不断); - 跨厂商共享
:内置 20 个厂商适配器——Claude Code、Codex、Cursor、VS Code Copilot、Zed、Gemini CLI、Devin、Kimi Code、WorkBuddy 等, amm install-mcp --vendor <名字>直接打印对应配置片段;接入方式三保险:MCP 主动工具(主通道)→ 生命周期钩子(兜底)→ 文件协议(极端情况直接读写.memory/events.jsonl); - 8 个 MCP 工具
: memory_record(记结论/失败方案)、memory_recall(开工前取 Context Pack,免重新自我介绍)、memory_feedback(标注相关性喂给排序模型)、memory_auto_improve+ wiki 系列(自动审阅会话、为讨论最多的话题生成 wiki 页,支持审批队列和拒绝抑制——低价值提案被拒够 2 次就不再重复推荐); - 隐私优先
: raw/原始记录只在本地、永不外传;压缩和向量化默认走本地 Ollama,整条流水线可以完全离线; - 零重依赖
:MCP 服务器用 Python 标准库实现(stdio JSON-RPC 2.0),不依赖 mcp SDK,免 cryptography 编译——pip 装个 kuzu 就能跑。
适合谁用
- 多工具切换的重度用户
:同时用 Claude Code、Codex、Cursor 等多个代理,受够了每次切换都重新解释项目背景的人; - 长周期项目的开发者
:项目一做几个月,希望代理记得"为什么当时选了方案 A 而不是 B"这类历史决策和踩坑记录; - 本地部署党 / 隐私敏感者
:代码、对话、记忆全部留在自己机器上,不往任何云端传; - AI Agent 工具开发者
:事件溯源 + 可丢弃物化视图 + 可解释 RankNet 这套架构设计,本身就是一份很好的记忆系统参考实现(仓库带正式设计文档 docs/design.md); - 想给自研代理加记忆的人
:核心只认 Event模型、与采集方式无关,加一个新厂商适配器通常只是往注册表里加一条配置。
怎么用
① 安装(需 Python 3.10+):
pip install kuzu requests pip install -e . # 可选但推荐:本地 LLM(语义向量 + 夜间压缩) ollama pull nomic-embed-text qwen2.5② 接入你的编码代理:把 MCP 配置加进对应配置文件(Claude Code 的 ~/.claude.json、Codex/Cursor 的 mcp.json):
{ "mcpServers": { "any-agent-memory-mesh": { "command": "amm", "args": ["serve"], "env": { "AMM_VENDOR": "claude_code" } } } }不确定怎么写?amm install-mcp --vendor <名字> 直接打印对应厂商的配置片段,--list 列出全部 20 个支持的厂商。
③ 日常使用(主路径是代理通过 MCP 自动读写,CLI 也能手动操作):
# 记一条结构化记忆(比如失败的方案,值得记住) amm record --type failure --text "方案A:单库做多租户,因隔离性差被否" --project-path . # 跨会话/跨厂商召回(多跳检索 -> Context Pack) amm recall --query "之前哪个方案被否了?还有什么没解决?" --project-path . # 夜间压缩(或常驻 amm compact --daemon 自动跑) amm compact --project-path . # 知识 wiki 闭环:审阅会话 -> 生成 wiki 提案 -> 审批 amm auto-improve amm wiki list --status approved④ 服务器部署(可选):docker compose up -d 一键拉起 amm(HTTP :8777)+ Ollama;或用 systemd 用户服务常驻。最常见的方式其实是 stdio 模式——代理自己拉起进程,无需常驻服务。
开源地址
GitHub:https://github.com/liuzhitao07/agent-memory-mesh(MIT 许可证)