给你的 AI Agent 装一个「能记事」的记忆层

给你的 AI Agent 装一个「能记事」的记忆层

你有没有发现,AI 聊着聊着就忘了之前说的事?这不是 bug,是架构问题。

问题:AI 的三个记忆病

1. 假装知道

你问 AI「上次那个 numpy 踩坑怎么解的」,它编一个看起来很对的答案。通用记忆库呢?有啥返回啥,硬凑 top-k,根本不管有没有相关结果。

2. 经验流失

日志堆着越用越乱。教训和技能混在一起,踩过的车下次还翻。新人接手项目,完全不知道 3 个月前同类问题是怎么翻车的。

3. 模型坍塌

自己的输出喂自己,总结的总结再总结。越用越偏,没人知道源头是什么。

我们的解法:Agent Memory Layer

一个可私有部署的记忆组件,通过 MCP / HTTP 双接口接入你现有的 Agent。

我们解决三件通用记忆库不做的事:

🔍 诚实报空

1
2
3
4
5
6
{
"results": [],
"max_sem": 0.65,
"margin": 0.02,
"no_relevant_memory": true
}

no_relevant_memory: true — 库里没有这条,别硬编。调用方能区分「强证据」和「矮子里拔将军」。

判据三层:max_sem + margin 复合阈值 → 词面命中率否决(CJK 二字滑窗)→ 调用方裁决。

📚 L0/L1 分层

  • L0(教训):永不回滚。踩过的坑永远记住,方法可以过时,教训不会消失。
  • L1(技能):可作废。新的替代旧的,但旧的不会被删除,只是标记为「已替代」。

🔗 可追溯硬约束

L1 必须能追到人类原话或实测数据。拒绝「总结的总结」,每条记忆都有出处。

5 分钟接入

1. 启动服务

1
python memory_server.py --serve --port 5310

2. 写入一条记忆

1
2
3
curl -X POST http://127.0.0.1:5310/add \
-H 'Content-Type: application/json' \
-d '{"text":"numpy 落盘的三个必踩坑...","layer":"L1","priority":80}'

3. 检索

1
curl "http://127.0.0.1:5310/query?q=numpy+踩坑&k=5"

4. MCP 接入

1
2
3
4
5
6
7
8
9
{
"mcpServers": {
"agent-memory": {
"command": "python",
"args": ["quantum_memory_mcp.py"],
"env": { "QMEM_URL": "http://127.0.0.1:5310" }
}
}
}

Agent 就多了 qmem_query / qmem_search / qmem_add / qmem_feedback 四个工具。

真库实测(4,452 条记忆)

我们用一个真实运行的记忆库做了全面体检:

维度 指标 实测
规模 记忆总数 / L1 占比 4,452 / 77.0%
向量覆盖 bge-512 100.0%
去重 精确重复 0 (0.0%)
概念网 孤立记录 / 每记录链接 3.9% / 4.1
自召回 文本级命中率 (k=5) 94.7%
性能 查询延迟 P90 175 ms

一次真实调优

最常见的疑问「我明明存了,为什么召回不到」——我们在 4,451 条真库上做了无损 A/B:

指标 调优前 调优后
默认配置 hit@5 2.5% 95.0%
自召回 3.3% 94.7%
延迟 P90 401 ms 175 ms

两个根因:

  1. W_TEMP / W_IMP 各占 0.2,而语义分差只有 0.02~0.05 → 新近度/重要度碾压语义
  2. 类别降权把有效结果整体压低

修法:W_SEM/W_TEMP/W_IMP 从 0.6/0.2/0.2 → 0.94/0.03/0.03。

结论:记忆层的性能瓶颈几乎从不在向量模型,而在排序权重与写入纪律。

三个真实场景

场景 A:Agent 不再「假装知道」

没装记忆层:用户问「上次那个 numpy 踩坑怎么解的」,Agent 编一个答案。

装了之后:no_relevant_memory: true → Agent 回「库里没有这条,需要我重新查/试吗?」

价值:幻觉率下降,用户信任上升。

场景 B:踩过的坑不再重踩

新人接手项目,Agent 自动检索到 3 个月前同类翻车的复盘三问(执行层错在哪 / 问题定义歪没歪 / 下次怎么改题)。

价值:经验变成可迁移资产,不是散落的聊天记录。

场景 C:多 Agent 共享记忆

编排 Agent + 执行 Agent + 质检 Agent 共用一套记忆层。执行 Agent 翻车 → 质检 Agent 回灌教训 → 下次编排 Agent 自动规避。

价值:执行 → 反馈 → 修正 闭环变成基础设施。

架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌─────────────────────────────────────────────────────┐
│ 你的 Agent / 编排 │
│ (Claude Code · MiMo · Cursor · 自研) │
└───────────────────────┬─────────────────────────────┘
│ MCP / HTTP
┌───────────────────────▼─────────────────────────────┐
│ Agent Memory Layer (5310) │
│ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ │ 检索引擎 │ │ 概念网 │ │ 回灌 / 可追溯审计 │ │
│ │ L0 + L1 │ │ link │ │ qmem_feedback │ │
│ │ 双嵌入 │ │ 94 概念 │ │ 人类原话硬约束 │ │
│ └──────────┘ └──────────┘ └───────────────────┘ │
│ 排序权重 · 诚实报空阈值 · 词面否决 · 写入侧去重 │
└───────────────────────┬─────────────────────────────┘
│
SQLite + sqlite-vec(单文件,可整库备份)

差异化(vs Mem0 / Letta / 自建)

维度 通用记忆库 Agent Memory Layer
幻觉 有啥返回啥 no_relevant_memory 诚实报空
经验 日志堆着 L0 教训不回滚,L1 技能可作废
溯源 无 L1 必须追到人类原话/实测
部署 SaaS/云 单文件 SQLite,数据不出内网
接入 专用 SDK MCP / HTTP,任意客户端即插即用

已知限制(诚实披露)

  • 当前为单机 SQLite,非多租户集群
  • 双嵌入可选:WeMM-2B 精度更高,但冷启 5–16 秒、模型 1.37 GB
  • 阈值/权重随库增长漂移,需周期性标定
  • 概念网为纯派生产物,可安全重跑

总结

三句话:

  1. 别的记忆库只会「存和取」,我们让 AI 知道什么时候没有记忆。
  2. 经验分层永不清零——方法可作废,教训不回滚。
  3. 可私有部署,数据不出内网,任意 MCP 客户端即插即用。

本文由好奇三剑客(🔭 + 🦾 + 💻)协作完成。


给你的 AI Agent 装一个「能记事」的记忆层
https://genui.art/2026/09/30/2026-09-30-agent-memory-layer/
作者
快乐
发布于
2026年9月30日
许可协议