你有没有遇到过这种情况:花了一下午教 Agent 理解你的项目结构、数据库配置、接口规范,它都乖乖记住了。第二天打开终端,它一脸无辜地问"请问你的项目用的是什么框架?"
这不是模型不够聪明,是 Agent 没有长期记忆。
2026 年,几乎所有主流 AI 编程工具都支持了某种形式的记忆。但问题从"有没有记忆"变成了"哪种记忆方案更适合我"。最近的 GTC 2026 上,矩阵起源开源了 Memoria------号称"Git for Memory"的 Agent 记忆框架;OpenClaw 的 memory-core 和 memory-lancedb 方案已经日趋成熟;还有 MCP 协议下的文件系统记忆服务器也在悄悄发展。
我花了 3 天时间,把这三种方案都部署了一遍,用同一个项目(一个包含 5 个微服务和 3 个数据库的中型电商项目)测试它们在日常开发中的实际表现。这篇从三个维度对比:接入成本、记忆质量、工程可控性。
一个简单的测试基准
在开始对比之前,先定义测试标准。我用一个统一的测试场景:
一个 5 微服务电商项目,使用 Postgres + Redis + Elasticsearch。测试流程:先让 Agent 阅读项目目录结构、数据库 schema 和 API 接口文档,然后关闭终端、重启 Agent,再问它项目的数据库连接字符串、API 认证方式和订单服务的主文件路径。
三种方案都要回答三个问题:
- 基础事实:框架版本、数据库端口、配置文件位置
- 上下文关系:订单服务依赖库存服务,库存服务依赖支付服务
- 隐含规则:API 路由的命名规范、错误处理的统一方式
回答正确率越高,记忆质量越好。
方案一:Memoria --- Git for Memory(新锐方案)
Memoria 是矩阵起源(MatrixOrigin)在 GTC 2026 上开源的项目,核心理念很简单:像管理代码一样管理记忆。
安装与接入
bash
# 克隆项目
git clone https://github.com/matrixorigin/Memoria.git
cd Memoria
# 启动记忆服务器(默认端口 8087)
docker compose up -d
启动后,Memoria 会在本地运行一个记忆服务器,通过 REST API 与 Agent 交互。接入 Cursor 需要安装插件,接入 Claude Code 需要配置 MCP 配置。
json
{
"mcpServers": {
"memoria": {
"command": "npx",
"args": ["@matrixorigin/memoria-mcp"],
"env": {
"MEMORIA_URL": "http://localhost:8087"
}
}
}
}
核心特性:版本控制
Memoria 最大的亮点是把 Git 引入了记忆管理:
bash
# 保存记忆快照
memoria snapshot create -m "添加了订单服务数据库 schema"
# 查看记忆历史
memoria log --file orders-schema
# commit 3a1f2b8 - 添加了订单服务数据库 schema
# commit f4e7c2d - 初始项目扫描
# 回滚到之前的记忆状态
memoria rollback 3a1f2b8
# 创建分支隔离实验
memoria branch experiment/rewrite-orders
这在实践中非常有用。有一次 Agent 改错了配置文件,导致一整个下午的记忆都被污染------用 Memoria 的三行命令就恢复了。
测试结果
| 问题类型 | 回答正确率 | 备注 |
|---|---|---|
| 基础事实 | 100% | 数据库连接、端口等结构化信息准确 |
| 上下文关系 | 80% | 能准确描述服务依赖,但偶尔漏掉间接依赖 |
| 隐含规则 | 60% | 能理解命名规范,但自定义规则需要显式声明 |
Memoria 的混合检索(向量 + 全文搜索)在基础事实上的表现非常稳定。底层使用 MatrixOne 的 Copy-on-Write 引擎,快照操作是毫秒级的,完全不占用额外存储。
局限
- 需要额外运行一个 Docker 容器:本地资源占用约 256MB 内存,便携场景不够轻量
- 学习成本:版本控制的概念对普通开发者有门槛,不是每个人都能理解"记忆分支"和"快照"
- 生态尚在发展:目前官方支持 Cursor 和 Claude Code,Claude Code 需要手动配置 MCP
方案二:OpenClaw Memory --- 极简的本地记忆(成熟方案)
OpenClaw 内置了两套记忆组件:memory-core (基于文件)和 memory-lancedb (基于向量数据库)。两者的核心哲学一致:不把记忆自动注入 prompt,而是通过工具按需检索。
配置方法
memory-core 是默认启用的,什么都不用配。它自动扫描工作区的 MEMORY.md 和 memory/*.md 文件,通过 BM25 + 向量混合搜索进行检索。
yaml
# 可选:切换到 memory-lancedb,获得向量搜索
memory:
backend: lancedb
citations: auto
memory-lancedb 提供了额外的 auto-recall/auto-capture 能力,Agent 会自动捕获重要信息并写入记忆库。
记忆文件结构
text
memory/
├── 2026-05-30.md # 每日日志
├── 2026-05-31.md # 自动生成的每日对话摘要
├── MEMORY.md # 永久记忆(不会衰减)
├── projects/ # 项目相关记忆
│ └── ecommerce.md # 电商项目配置
└── archive/ # 归档
└── 2026-05/
OpenClaw 的记忆有个重要的"衰减机制":非 MEMORY.md 的文件,如果超过 7 天没有更新,就不再出现在搜索结果中。这避免了过时信息污染上下文。
测试结果
| 问题类型 | 回答正确率 | 备注 |
|---|---|---|
| 基础事实 | 90% | 如果写在 MEMORY.md 中则 100%,否则依赖自动捕获 |
| 上下文关系 | 70% | 需要 Agent 主动调用 memory_search 工具 |
| 隐含规则 | 50% | 依赖手动编写的规则文件,自动提取不够准确 |
OpenClaw 的最大优势是零配置 。无需额外运行任何服务,直接就能用。但它的记忆是"工具驱动"的------Agent 必须主动调用 memory_search 和 memory_get 才能使用记忆。如果 Agent 不调用,记忆就是死的数据。
扩展:QMD 后端
如果默认的 SQLite 性能不够,可以切换到 QMD 后端,支持索引工作区之外的文件:
yaml
memory:
backend: qmd
qmd:
paths:
- name: projects
path: ~/projects
pattern: "**/*.md"
limits:
maxResults: 10
timeoutMs: 4000
局限
- Agent 必须主动调用记忆工具:不是所有场景都能触发 memory_search
- 文件驱动:随着项目膨胀,memory 目录会越来越大,需要手动归档清理
- 多 Agent 不共享:每个 Agent 实例维护自己的记忆文件,没有共享机制(企业级可以通过 memory-agentcore 插件解决)
方案三:MCP Memory Server --- 协议化的轻量记忆(最灵活)
MCP(Model Context Protocol)在过去半年已经成为 AI 工具间通信的标准。基于 MCP 构建记忆服务器,意味着任何支持 MCP 的 Agent(Cursor、Claude Code、Copilot、Windsurf...)都能共享同一个记忆后端。
搭建一个简单的 MCP 记忆服务器
这里用一个真实的 MCP 记忆服务器实现来演示------@anthropic/mcp-memory-server:
bash
# 安装
npm install -g @anthropic/mcp-memory-server
# 在 Claude Code 配置中添加
# ~/.claude/claude_desktop_config.json
{
"mcpServers": {
"memory": {
"command": "mcp-memory-server",
"args": ["--storage", "~/.agent-memory"],
"env": {
"CONTEXT_WINDOW": "8192"
}
}
}
}
启动后,Agent 可以通过 MCP 工具调用读写记忆:
// Agent 内部调用流程:
1. 用 memory/store 写入当前项目上下文
2. 新会话时用 memory/search 检索相关条目
3. 用 memory/update 更新已有记忆
自定义记忆 schema
MCP 记忆服务器的最大优势是可定制化:
typescript
// 自定义记忆 schema 示例
tools: {
memory_save: {
input: {
type: "object",
properties: {
key: { type: "string" },
value: { type: "object" },
ttl: { type: "number", default: 86400 * 7 }, // 7天过期
tags: { type: "array", items: { type: "string" } }
}
}
},
memory_query: {
input: {
type: "object",
properties: {
query: { type: "string" },
tags: { type: "array", items: { type: "string" } },
limit: { type: "number", default: 10 }
}
}
}
}
我用的是社区版 MCP 记忆服务器,配合 SQLite 后端,总代码量不到 200 行。
测试结果
| 问题类型 | 回答正确率 | 备注 |
|---|---|---|
| 基础事实 | 85% | 取决于手动写入的数据完整度 |
| 上下文关系 | 75% | 可以自定义关系存储 |
| 隐含规则 | 65% | 自定义能力最强,可以写专门的规则存储逻辑 |
MCP 方案的优势不在"开箱即用",而在于控制力。你想怎么存、存什么、什么时候过期、怎么检索------全都自己说了算。
局限
- 需要自己搭建:没有 GUI 工具,需要看懂 MCP 协议文档
- 一致性由服务端保证:多个 Agent 同时写的时候需要注意竞态条件
- 宿主依赖:部分 Agent(如 Cursor)对 MCP 工具的支持深度不同
横向对比总表
| 维度 | Memoria | OpenClaw Memory | MCP Memory Server |
|---|---|---|---|
| 接入成本 | 4/10 --- 需 Docker + 插件 | 9/10 --- 零配置 | 5/10 --- 需搭建服务 |
| 记忆质量 | 9/10 --- 版本控制 + 混合搜索 | 7/10 --- 工具驱动,依赖 Agent 调用 | 8/10 --- 可自定义,结构灵活 |
| 工程可控性 | 9/10 --- Git 式管理,可回滚 | 5/10 --- 文件驱动,归档需手动 | 9/10 --- 完全可控的 schema |
| 多 Agent 共享 | 支持(同一记忆服务器) | 有限(需插件如 memory-agentcore) | 天然支持(走 MCP 协议) |
| 资源占用 | ~256MB(需 Docker) | 0(内置在 Agent 进程) | ~50MB(独立进程) |
| 便携性 | 低 | 高 | 中 |
| 生态兼容 | Cursor、Claude Code(需配置) | 仅 OpenClaw | 所有 MCP 兼容工具 |
| 唯一卖点 | 版本控制 + 快照回滚 | 零配置即用 | 协议标准化 + 可编程 |
场景推荐
个人开发者,日常编码
选 OpenClaw Memory 。不需要额外配置,开箱即用。把你的项目配置写在 MEMORY.md 里,Agent 每 30 分钟自动索引一次。
专业建议:把 MEMORY.md 分成三节------「项目概述」「配置清单」「开发规范」。每节控制在 5 条以内,重点突出。如果你用 vim/neovim 写代码,OpenClaw 的终端体验是最好的。
团队协作,多 Agent 协同
选 MCP Memory Server。自建一个记忆服务器,所有 Agent 共享同一套知识库。配合 tag 体系实现按项目、按团队隔离:
typescript
// 按项目隔离
{
project: "ecommerce-v2",
memory: "订单服务依赖库存服务的 /api/inventory/check 端点"
}
// 按角色隔离
{
role: "backend",
tags: ["postgres", "redis", "api"]
}
需要历史回溯和安全回滚的场景
选 Memoria 。部署 Agent 建议生产环境或需要严格记忆管理时使用。版本控制让每一次记忆变更都有迹可循。如果 Agent 学到了错误的信息,直接 memoria rollback。
对于 CI/CD 场景,Memoria 的快照功能可以做到"每次构建前保存记忆状态,构建失败后自动回滚"------这比手动清理 ~/.claude 缓存优雅得多。
混合方案:三套一起用
最激进的做法是三套一起上。用 OpenClaw 做日常本地开发,MCP Memory Server 做团队知识共享,Memoria 做关键节点的记忆快照备份。
yaml
# 一个可能的配置
memory:
primary: memory-core # 本地文件索引
team: mcp://localhost:8090 # 团队记忆共享
backup: memoria rollback # 每周快照备份
这不是过度设计------如果你的 Agent 工作流已经深度融入日常开发,单个记忆方案的容错率不够。memoria rollback 命令在关键项目的风险管理上确实有价值,还不用改动其他部分的配置。
写在最后
回到最开始的那个测试:三种方案都记住了数据库连接字符串和 API 配置(基础事实 85%+),但在隐含规则上表现出明显差异。
选哪一种,取决于你的核心诉求。对于大多数独立开发者,OpenClaw Memory 是最务实的选择------零成本启动,5 分钟上手,效果足够好。如果你已经开始管理多个 Agent 或多个项目,MCP Memory Server 值得花一个下午搭建。如果你的开发流程对记忆的可靠性要求极高,Memoria 是那个让你"放心让 Agent 改配置"的兜底方案。
AI Agent 正在从"对话工具"进化为"开发伙伴"。而记忆,就是伙伴的头脑。给它一个好的记忆系统,它才能真的记住你。
延伸阅读:MCP协议实战:从零搭建一个MCP Server、从零搭建多Agent协作系统、AWS MCP Server 正式可用
如果这篇文章对你有帮助,点个关注 👆 我会持续更新 AI 编程实战、工具测评和踩坑记录。