编程 TencentDB Agent Memory 深度解析:让 AI Agent 拥有真正「记忆」的分层架构革命——从61.38% Token节省到四层金字塔的技术内幕

2026-05-18 15:13:25 +0800 CST views 4

TencentDB Agent Memory 深度解析:让 AI Agent 拥有真正「记忆」的分层架构革命——从61.38% Token节省到四层金字塔的技术内幕

当你的 AI 助手每天都要你重新解释一遍项目背景和代码规范,当长任务跑到一半 Agent 开始「健忘」重复分析,当跨会话的偏好总是被清零重来——这些问题的根源不是模型不够聪明,而是记忆架构从根本上就错了。腾讯云刚刚开源的 TencentDB Agent Memory,用一套四层金字塔架构,给出了一个让人眼前一亮的答案。

一、为什么 AI Agent 总是「健忘」?

如果你用过任何 AI 编程助手超过一周,一定遇到过这样的场景:

  • 昨天反复确认的代码规范,今天新开会话又全忘了
  • 任务跑到一半,Agent 开始重复分析已经处理过的问题
  • 你说「用 TypeScript」,Agent 下次又问你用 JavaScript 还是 TypeScript

这些问题的本质是:当下主流的记忆方案都在做同一件事——把对话历史压缩成一段摘要,下次会话时注入上下文。这在短对话里够用,但在真实的长周期任务中,这套方案有三个致命缺陷:

1.1 跨会话断裂

Agent 的会话边界是硬切分的。你在昨天会话里花半小时确认的代码风格、项目约束、输出格式,今天新开会话全部归零。这不是模型的错,是存储架构压根没考虑「持久化」这件事。

1.2 事实与偏好混淆

用户说「我用 TypeScript」和用户说「帮我查一下天气」,这两条信息的价值完全不同——前者是长期偏好,后者是瞬时指令。但在现有的向量存储方案里,它们被同等对待,都被切碎成向量碎片,塞进同一个扁平的数据库里。

1.3 上下文膨胀

任务越长,堆进上下文的历史信息越多。Token 消耗持续攀升,模型的注意力也在衰减。很多「压缩方案」能砍 Token,但砍完之后任务跑偏、遗忘、重复分析的问题更严重了。

问题的根源不是「记不住」,而是「记不对」——该记的没记住,不该记的塞满了一堆。


二、TencentDB Agent Memory 的核心架构:四层金字塔

腾讯云数据库团队开源的这套方案,核心思路非常清晰:不同粒度的信息,应该放在不同的「楼层」里,而不是全部堆在一层平面上。

这套架构被形象地称为「记忆金字塔」:

┌─────────────────────────────────┐
│         L3 用户画像层           │  ← 长期偏好、工作风格、稳定特征
│      (persona.md)              │
├─────────────────────────────────┤
│         L2 场景归纳层           │  ← 任务级经验块、场景模板
│      (scenario/*.md)           │
├─────────────────────────────────┤
│         L1 原子记忆层           │  ← 事实、偏好、约束、阶段结论
│      (memory/*.jsonl)          │
├─────────────────────────────────┤
│         L0 原始对话层           │  ← 全量对话历史
│      (conversation/*.md)      │
└─────────────────────────────────┘

每一层只做一件事,层与层之间通过提取-聚合-蒸馏的管道连接。让我们逐层拆解。

2.1 L0 原始对话层:全量保留,只存不压

这一层非常简单粗暴:每一轮交互的原文本,完整保存。

文件格式是 Markdown,按会话分文件:

~/.openclaw/memory-tdai/conversations/
  ├── 2026-05-14_session_abc123.md
  ├── 2026-05-15_session_def456.md
  └── ...

为什么不一上来就压缩?因为压缩会丢失证据。当上层记忆出现偏差时,你需要能够追溯到最原始的对话,找到「这个结论到底是从哪来的」。

L0 的设计原则是:宁可多存,不可丢据。

2.2 L1 原子记忆层:自动提取「有意义的信息」

从 L0 到 L1,是第一次质变。系统会自动从对话中提取四类「原子」:

  • 事实 (Fact):「项目使用 TypeScript 5.0」「数据库是 PostgreSQL 18」
  • 偏好 (Preference):「输出用中文」「代码风格用两空格缩进」
  • 约束 (Constraint):「不要使用 any 类型」「接口必须有错误处理」
  • 阶段结论 (Milestone):「已完成用户认证模块」「性能问题定位到数据库连接池」

提取过程由 LLM 驱动,但存储格式是结构化的 JSONL:

{"type":"preference","content":"输出用中文","ts":"2026-05-14T10:30:00Z","session":"abc123"}
{"type":"fact","content":"项目使用TypeScript 5.0","ts":"2026-05-14T10:35:00Z","session":"abc123"}
{"type":"constraint","content":"不要使用any类型","ts":"2026-05-14T10:40:00Z","session":"abc123"}

这一层的关键是去重和冲突检测。如果用户在不同会话里对同一件事有不同表述,系统会标记冲突,而不是简单覆盖。

2.3 L2 场景归纳层:把原子聚合成「经验块」

L1 的原子是零散的,L2 负责把它们聚合成有意义的「场景」。比如你连续三次在做 API 开发任务时都提到了「返回值必须有统一格式」,系统会自动归纳出一个场景块:

# 场景:API 开发规范

## 核心约束
- 返回值使用 `{ code, data, message }` 格式
- 错误码使用 5 位数字
- 分页接口必须有 `hasMore` 字段

## 来源会话
- 2026-05-14 session_abc123
- 2026-05-16 session_def456
- 2026-05-18 session_ghi789

## 生成的原子数量:12
## 最后更新:2026-05-18T14:30:00Z

场景层的价值在于:把零散的经验组织成可复用的模板。当你下次启动一个 API 开发任务时,Agent 不需要再从零学习你的规范,直接加载这个场景块即可。

2.4 L3 用户画像层:稳定的长期特征

金字塔的塔尖,是用户画像。系统会定期从 L2 场景中蒸馏出最稳定、最通用的特征:

# 用户画像

## 技术背景
- 全栈开发者,主语言 TypeScript
- 熟悉 React/Vue,后端倾向 Go
- 数据库偏好 PostgreSQL

## 工作风格
- 输出用中文,代码注释用英文
- 偏好详细的代码解释
- 重视测试覆盖率

## 稳定偏好
- 两空格缩进
- 函数名使用 camelCase
- 接口命名加 I 前缀

画像层的更新频率最低,但稳定性最高。它解决的是「你是谁」的问题——Agent 只需要加载这个文件,就立刻知道你的技术栈、风格偏好、长期约束。


三、短期记忆的革命:符号化记忆与 Mermaid 画布

上面说的是长期记忆,但 Agent 还有一个更紧迫的问题:单次长任务里的信息过载。

一个真实的编程任务可能产生几十万 Token 的日志:搜索结果、代码片段、错误堆栈、工具输出……全塞进上下文,Token 直接爆炸;不塞,Agent 又会「失明」。

TencentDB Agent Memory 的解决方案是:符号化记忆 + Mermaid 任务画布。

3.1 传统方案的困境:要么全丢,要么全塞

传统方案有三种:

  1. 全量保留:把所有历史塞进上下文。问题是 Token 线性增长,模型注意力衰减。
  2. 摘要压缩:把历史压缩成摘要。问题是丢失细节,出错时无法追溯。
  3. 向量检索:把历史切片存入向量库,按需检索。问题是检索不精确,且丢失结构信息。

三种方案都在「全丢」和「全塞」之间摇摆,没有真正解决问题。

3.2 符号化记忆:用 Mermaid 编码任务状态

TencentDB Agent Memory 的方案非常聪明:把原始日志卸载到外部文件,只在上下文里保留一个轻量的「任务地图」。

这个地图用 Mermaid 语法编码:

graph TD
    A[用户请求: 实现用户认证] --> B[搜索认证方案]
    B --> C[选择 JWT 方案]
    C --> D[实现登录接口]
    D --> E{测试通过?}
    E -->|是| F[完成]
    E -->|否| G[调试错误]
    G --> D
    
    style A fill:#e1f5fe
    style F fill:#c8e6c9
    style G fill:#ffcdd2

这个 Mermaid 图只占几百个 Token,但它编码了整个任务的状态机。Agent 可以:

  • 知道当前在哪一步
  • 知道哪些路径已经走过
  • 知道哪里有错误需要回溯

3.3 node_id 追溯:保留完整证据链

那原始日志去哪了?全部存在外部文件里:

~/.openclaw/memory-tdai/refs/
  ├── node_A.md    # 用户原始请求
  ├── node_B.md    # 搜索结果(完整)
  ├── node_C.md    # JWT 方案详情
  ├── node_D.md    # 实现代码
  ├── node_E.md    # 测试结果
  └── node_G.md    # 错误堆栈

每个 Mermaid 节点都有一个 node_id,Agent 需要查看细节时,通过 grep node_id 即可定位到原始文件。

这就是「符号化记忆」的精髓:上下文只保留结构,细节按需追溯。

3.4 实测效果:最高节省 61.38% Token

在 OpenClaw 的生产环境测试中,这套方案的实测数据:

Benchmark无插件成功率加插件成功率相对提升无插件 Token加插件 TokenToken 节省
WideSearch33%50%+51.52%221.31M85.64M-61.38%
SWE-bench58.4%64.2%+9.93%3474.1M2375.4M-33.09%
AA-LCR44.0%47.5%+7.95%112.0M77.3M-30.98%

两条曲线同时向上:Token 下降,完成率上升。 这是因为 Agent 的注意力不再被噪音稀释,而是聚焦在真正关键的信息上。


四、异构存储与全链路可溯源

记忆系统最怕的就是「黑盒化」——你能检索到结果,但不知道这个结果是从哪来的、为什么会被检索到。

4.1 双层存储策略

TencentDB Agent Memory 采用了异构存储策略:

  • 底层(证据层):SQLite + sqlite-vec,存储原始数据和向量索引,支持全文检索和语义检索。
  • 顶层(结构层):纯 Markdown 文件,人类可读、可编辑、可审计。
~/.openclaw/memory-tdai/
  ├── db/
  │   └── memory.db          # SQLite 数据库
  ├── conversations/          # L0 对话
  ├── memories/               # L1 原子
  ├── scenarios/              # L2 场景
  ├── persona.md              # L3 画像
  └── refs/                   # 短期记忆原始文件

为什么顶层用 Markdown 而不是数据库?因为可解释性。你可以直接打开 persona.md 查看系统对你画像的理解,可以直接编辑修正。这比从黑盒数据库里捞数据要直观得多。

4.2 全链路可溯源

从画像追溯到对话,有一条完整的链路:

L3 Persona → L2 Scenario → L1 Atom → L0 Conversation

每一步都有明确的文件和索引:

  1. Persona 里提到「偏好 TypeScript」
  2. 点击进入来源场景 scenario/api_dev.md
  3. 场景里列出来源会话
  4. 打开会话文件,定位到具体对话

当检索出错时,你可以精确知道是哪一步出了问题,而不是对着一个黑盒的向量分数发呆。


五、技术实现细节:从安装到配置

5.1 一行安装(OpenClaw)

openclaw plugins install @tencentdb-agent-memory/memory-tencentdb
openclaw gateway restart

安装后,插件会自动:

  • 捕获对话内容
  • 触发 L1 提取(默认每 5 轮对话)
  • 生成 L2 场景(默认每 50 条新记忆)
  • 蒸馏 L3 画像(默认每 50 条新记忆)

5.2 Hermes Agent 一键启动(Docker)

如果你用的是 Hermes Agent,一条 Docker 命令即可:

docker run -d \
  --name hermes-memory \
  --restart unless-stopped \
  -p 8420:8420 \
  -e MODEL_API_KEY="your-api-key" \
  -e MODEL_BASE_URL="https://api.lkeap.cloud.tencent.com/v1" \
  -e MODEL_NAME="deepseek-v3.2" \
  -e MODEL_PROVIDER="custom" \
  -v hermes_data:/opt/data \
  agentmemory/hermes-memory:latest

镜像内置腾讯云 DeepSeek-V3.2 作为默认模型,支持 linux/amd64linux/arm64 双架构。

5.3 配置参数详解

系统提供了三级配置:

Level 1 · 日常调优(覆盖 90% 场景):

{
  "storeBackend": "sqlite",           // 存储后端
  "recall.strategy": "hybrid",        // 检索策略:keyword/embedding/hybrid
  "recall.maxResults": 5,             // 每次召回数量
  "pipeline.everyNConversations": 5,  // 每 N 轮触发 L1 提取
  "persona.triggerEveryN": 50         // 每 N 条新记忆触发画像更新
}

Level 2 · 高级调优(长任务/长会话):

{
  "offload.enabled": true,                    // 启用短期记忆压缩
  "offload.mildOffloadRatio": 0.5,            // 温和压缩触发阈值
  "offload.aggressiveCompressRatio": 0.85,   // 激进压缩触发阈值
  "offload.mmdMaxTokenRatio": 0.2,           // Mermaid 注入 Token 预算
  "bm25.language": "zh"                       // 分词语言:zh/en
}

Level 3 · 运维级配置(自定义模型/远程嵌入):

参见 openclaw.plugin.json 的完整参数说明。


六、与其他记忆方案的对比

6.1 vs. 传统向量存储

维度向量存储TencentDB Agent Memory
数据组织扁平化,切碎的片段分层金字塔,有结构
检索方式纯向量相似度BM25 + 向量 + RRF 混合
可解释性黑盒,无法追溯白盒,全链路溯源
长期记忆无结构,检索混乱四层架构,偏好/事实分离
短期记忆全量塞上下文或丢弃符号化,结构保留

6.2 vs. MemGPT / Letta

MemGPT 是目前最知名的 Agent 记忆框架之一,它的核心思路是模拟操作系统的内存管理,用「核心记忆」「工作记忆」「归档记忆」三层结构。

TencentDB Agent Memory 的不同之处:

  1. 四层 vs 三层:增加了「场景层」,把原子记忆聚合成可复用的经验块。
  2. 异构存储:顶层用 Markdown,底层用 SQLite,兼顾可读性和检索效率。
  3. 短期记忆方案:Mermaid 符号化是独创的,MemGPT 没有类似方案。
  4. 开箱即用:一行安装,零配置启动;MemGPT 需要更多配置工作。

6.3 vs. LangChain Memory

LangChain 的记忆模块更偏向「对话历史管理」,提供多种窗口策略(固定窗口、摘要窗口、向量检索等)。

TencentDB Agent Memory 的定位更底层:

  • LangChain Memory 解决「对话窗口」问题
  • TencentDB Agent Memory 解决「持久化记忆」问题

两者可以叠加使用,但如果你需要的是「Agent 长期记住我的偏好」,TencentDB Agent Memory 是更合适的选择。


七、生产环境验证:四大场景稳定收敛

这套方案已经在 OpenClay 的生产环境中验证,覆盖四类长链路任务:

  1. 编程任务:代码生成、重构、调试,跨会话保持代码风格一致性
  2. 调研任务:信息搜集、分析报告,避免重复搜索已处理的内容
  3. 文档分析:长文档理解、信息提取,保持输出格式稳定
  4. 工作流编排:多步骤任务自动化,任务状态不丢失

在 SWE-bench 的测试中,连续 50 个任务的 session,系统依然保持稳定,Token 消耗被控制在合理范围内。


八、为什么开源?腾讯的战略考量

腾讯云数据库团队选择开源这套方案,用意很明显:

「记忆这个产品远没有标准答案,比起做一个完美的方案,我们更想和开发者一起,把产品做得更丰富、更扎实、更可用。」

这套方案的几个设计决策,明显是为开源社区考虑的:

  1. MIT 协议:最宽松的开源协议,商业友好
  2. 无外部依赖:SQLite + sqlite-vec,不需要部署额外的向量数据库
  3. 白盒可审计:所有记忆文件都是 Markdown,可以直接查看和编辑
  4. 多平台支持:OpenClaw 和 Hermes Agent 双平台适配

九、踩坑指南:生产环境部署建议

9.1 存储空间规划

L0 对话是全量存储的,如果对话量大,需要定期清理:

# 查看存储占用
du -sh ~/.openclaw/memory-tdai/

# 配置自动清理(Level 2 参数)
"capture.l0l1RetentionDays": 30  # 保留 30 天

9.2 检索策略选择

系统支持三种检索策略:

  • keyword:纯 BM25,适合精确匹配场景
  • embedding:纯向量检索,适合语义匹配场景
  • hybrid(推荐):RRF 融合,综合两种优势

默认是 hybrid,但如果你发现检索结果不稳定,可以尝试切换策略观察效果。

9.3 性能调优

关键参数:

{
  "recall.timeoutMs": 5000,           // 检索超时,超时后跳过不影响对话
  "extraction.maxMemoriesPerSession": 20,  // 单次提取数量上限
  "pipeline.l1IdleTimeoutSeconds": 600     // 空闲多久后触发 L1 提取
}

如果系统响应变慢,优先检查 recall.timeoutMs 是否设置过短。


十、未来展望:记忆层的标准化

TencentDB Agent Memory 的开源,可能会推动一个趋势:记忆层正在成为 AI Agent 的「操作系统」的一部分。

回顾过去两年的发展:

  • 2024:Agent 框架百花齐放(LangChain、AutoGPT、OpenAI Assistants API)
  • 2025:工具协议标准化(MCP)
  • 2026:记忆层标准化元年?

腾讯的这套方案,至少提供了一个有生产验证的参考实现。它不是完美的,但它的分层架构、符号化记忆、全链路溯源三大特性,可能会成为后续方案的对标基准。


总结:让 Agent 记住该记住的

TencentDB Agent Memory 解决的问题,可以浓缩为一句话:

让 Agent 记住该记住的,忘记该忘记的,追溯能追溯的。

四层金字塔架构,把「你是谁」(L3)、「你做过什么」(L2)、「你说过什么」(L1)、「原始证据」(L0)分层管理。符号化记忆把「当前任务状态」压缩成几百个 Token 的 Mermaid 图,保留完整的追溯路径。

这不是一个「万能记忆」方案,而是一个「有用记忆」方案。它不需要 Agent 记住所有事,但需要让 Agent 不再问你同一件事第二遍。

项目地址:https://github.com/Tencent/TencentDB-Agent-Memory
开源协议:MIT
npm 包:@tencentdb-agent-memory/memory-tencentdb

如果你在用 OpenClaw 或 Hermes Agent,一行命令就能体验。如果你在开发自己的 Agent 框架,这套架构值得深入研究。


记忆不是让 AI 记住所有事,而是让人不必重复所有事。这才是 Agent 记忆系统的真正价值。

推荐文章

2025,重新认识 HTML!
2025-02-07 14:40:00 +0800 CST
Vue3 vue-office 插件实现 Word 预览
2024-11-19 02:19:34 +0800 CST
联系我们
2024-11-19 02:17:12 +0800 CST
Claude:审美炸裂的网页生成工具
2024-11-19 09:38:41 +0800 CST
API 管理系统售卖系统
2024-11-19 08:54:18 +0800 CST
禁止调试前端页面代码
2024-11-19 02:17:33 +0800 CST
Web 端 Office 文件预览工具库
2024-11-18 22:19:16 +0800 CST
MySQL 主从同步一致性详解
2024-11-19 02:49:19 +0800 CST
thinkphp分页扩展
2024-11-18 10:18:09 +0800 CST
Go 1.23 中的新包:unique
2024-11-18 12:32:57 +0800 CST
20个超实用的CSS动画库
2024-11-18 07:23:12 +0800 CST
程序员茄子在线接单