腾讯开源:让 Agent 拥有「记忆」,不再从零开始

2026年5月14日 · 3060 字 · 7 分钟 · 腾讯 AI Agent Agent Memory 记忆系统 OpenClaw 开源

最近,腾讯开源了一个叫 TencentDB Agent Memory 的项目,定位很明确:给 AI Agent 做一套「记忆系统」。

不是又一个 RAG 包装,也不是又一个向量数据库客户端。它的核心主张是——记忆不应该平铺,应该分层;不应该堆文本,应该符号化。

这个项目一出来就在 GitHub 上拿到了不少关注,主要是因为它的 benchmark 数据确实能打:接入 OpenClaw 后,Token 消耗最高降低 61.38%,任务通过率相对提升 51.52%,长期记忆准确率从 48% 拉到 76%

今天就来拆解一下,它到底做了什么,以及值不值得你关注。

一、先搞清楚它要解决什么问题

你有没有遇到过这种情况:

  • 你跟 Agent 聊了半天,换一轮对话它就把之前说的全忘了
  • 你反复告诉它你的项目背景、代码规范、输出格式,每次都要重新解释
  • 你想把全量历史塞进上下文窗口,结果 Token 烧得飞起,效果还不一定好

这些问题的根源是一样的:大多数 Agent 框架没有独立的「记忆层」。它们要么靠上下文窗口硬扛,要么靠简单的向量检索碰运气。

TencentDB Agent Memory 的思路是:把记忆从 Agent 的推理流程里拆出来,单独做成一套分层系统。

用他们自己的话说:

Memory 不是为了让 AI 存下所有东西,而是为了让人不必重复所有事情。

二、核心技术:两根柱子

整个架构围绕两个核心设计:记忆分层符号化记忆

1. 记忆分层:从扁平到金字塔

传统记忆系统把所有数据切成碎片,平铺到向量库里。召回的时候就像在一堆便利贴里翻线索,没有宏观视角。

TencentDB Agent Memory 的做法是建一座语义金字塔

L0 Conversation(原始对话)→ L1 Atom(结构化事实)→ L2 Scenario(场景块)→ L3 Persona(用户画像)

具体来说:

  • 短期记忆分层:底层保留原始工具调用结果(refs/*.md),中层抽取步骤摘要(jsonl),高层浓缩为一张轻量级的 Mermaid 任务画布。Agent 在上下文里只需要看高层结构,出错时再沿 node_id 下钻查证。
  • 长期记忆分层:不再是一坨扁平的历史记录,而是从原始对话里逐步提炼出结构化事实、场景块,最终生成用户画像。平时靠 Persona 把握偏好,需要细节时再检索底层 Atom。

关键设计:每一条信息都可以从高层一路追溯回底层原文。Persona 能追到 Scenario,Scenario 能追到 Atom,Atom 能追到原始对话。没有任何一段摘要是「不可逆的黑盒」。

这意味着什么?压缩不会丢证据。 这是很多记忆系统做不到的。

2. 符号化记忆:用 Mermaid 代替冗长日志

长程任务里最烧 Token 的是什么?不是推理本身,而是那些冗长的中间日志——搜索结果、代码片段、报错堆栈。

TencentDB Agent Memory 的解法很巧妙:把任务状态流转编码成 Mermaid 符号图谱

具体流程:

  1. 完整工具日志被卸载到外部文件系统
  2. 从日志中提取关键关系,生成带 node_id 的 Mermaid 图谱
  3. Agent 上下文里只注入这张轻量图谱(几百 Token)
  4. 需要核对细节时,grep node_id 即可找回完整原文

一张 Mermaid 图能表达几十万 Token 的日志信息,同时保持人机可读。Agent 看着图谱推理,出了问题再下钻——既降本又保全了可追溯性。

三、实测数据:不是 Demo,是 Benchmark

项目给出了四个 benchmark 的对比数据,而且是在连续长程 Session 下测的,不是单题清空上下文的理想场景:

能力Benchmark原始成功率加插件后Token 变化
短期记忆WideSearch33%50%-61.38%
短期记忆SWE-bench58.4%64.2%-33.09%
短期记忆AA-LCR44.0%47.5%-30.98%
长期记忆PersonaMem48%76%

SWE-bench 的测试方式是每个 Session 连续跑 50 个任务,模拟真实场景下的上下文累积压力。在这种条件下还能同时降 Token 和提通过率,说明这套分层架构确实有效。

四、工程能力:不是论文,是能跑的插件

这个项目不是停留在论文阶段的东西,它已经是一个可以实际接入的插件:

  • OpenClaw 插件:一行命令安装,零配置即可启用
  • Hermes Gateway 适配:Docker 一条命令启动带记忆能力的 Hermes Agent
  • 本地存储:默认用 SQLite + sqlite-vec,开箱即用
  • 混合检索:BM25 + 向量 + RRF 融合,兼顾关键词和语义召回
  • Agent 工具:提供 tdai_memory_search / tdai_conversation_search 两个工具函数

快速接入 OpenClaw

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

然后在配置里加一行:

{
  "memory-tencentdb": {
    "enabled": true
  }
}

启用后,它会自动完成对话录制、记忆提取、场景归纳、用户画像生成和下一轮对话前的召回。零配置就能跑。

如果要进一步启用短期记忆压缩(上下文卸载),版本要求 ≥ 0.3.4,配置稍微复杂一点,需要注册 contextEngine slot 并执行一个 patch 脚本。

Docker 启动 Hermes

docker run -d \
  --name hermes-memory \
  --restart unless-stopped \
  -p 8420:8420 \
  -e MODEL_API_KEY="your-api-key" \
  -v hermes_data:/opt/data \
  hermes-memory

镜像内置了腾讯云 DeepSeek-V3.2 的默认值,只传 API Key 就能用。

五、白盒可调试:记忆不是黑盒

这是我觉得最值得关注的一点。

很多记忆系统的问题是:召回错了,你只能看到一串向量分数,根本不知道哪里出了问题。

TencentDB Agent Memory 把关键中间产物都保存为可读文件:

  • L2 Scenario 块是 Markdown,直接打开就能检查
  • L3 Persona 存在 persona.md 里,可以追溯到对应的 Scenario
  • 短期任务画布是 Mermaid 格式,人和 Agent 都能读
  • 原文、摘要、节点之间有 result_refnode_id 关联

调试不再是翻黑盒数据库,而是沿着「Persona → Scenario → Atom → Conversation」的链路逐层定位。

所有分层记忆产物都存放在 ~/.openclaw/memory-tdai/ 下,可以直接打开目录逐层查看。

六、可调参数:三层展开

所有字段都有合理默认值,零配置就能跑。要调优的话,按使用深度分三层:

日常调参(覆盖 90% 场景)

  • recall.strategy:召回策略,支持 keyword / embedding / hybrid(推荐 RRF 融合)
  • recall.maxResults:每次召回条数,默认 5
  • pipeline.everyNConversations:每 N 轮对话触发一次记忆提取,默认 5

进阶调优(长任务/长 Session)

  • offload.mildOffloadRatio:温和压缩触发比例,默认 0.5
  • offload.aggressiveCompressRatio:激进压缩触发比例,默认 0.85
  • pipeline.l1IdleTimeoutSeconds:用户停止对话多久后触发提取,默认 600 秒

完整参数(运维/自定义模型)

  • embedding.*:远程 embedding 服务配置
  • llm.*:独立 LLM 模式,可绕过宿主框架的内置模型
  • offload.backendUrl:将压缩流程卸载到后端服务

七、Roadmap 接下来要做什么

项目已经完成了:

  • 长期个性化记忆(L0 → L3)
  • 短期记忆压缩(Context Offload + Mermaid 画布)
  • 本地 SQLite 和腾讯云向量数据库 TCVDB 后端
  • OpenClaw 插件和 Hermes Gateway 适配

接下来在做的:

  • 记忆可迁移:跨 Agent / 跨框架 / 跨设备的导入导出与热迁移
  • Skill 自动生成:从执行轨迹中自动提炼可复用的 Skill
  • 可视化调试面板:记忆观测和调试的图形化界面

八、值不值得关注?

适合关注的场景

  • 你在做长程 Agent(需要跨 session 记忆)
  • 你在用 OpenClaw 或 Hermes,想直接加记忆能力
  • 你的 Agent 任务 Token 消耗大,想做上下文压缩
  • 你需要记忆系统可调试、可追溯,不想用黑盒方案

需要注意的

  • 目前存储后端只支持 SQLite,大规模生产环境可能需要等 TCVDB 后端成熟
  • 与 OpenClaw 的集成最深,其他 Agent 框架的适配还在路上
  • 短期压缩功能需要打 patch,升级 OpenClaw 后需要重新执行

和 Mem0 的区别: 如果你看过我之前写的 Mem0 详解,可能会问这两个有什么区别。简单来说,Mem0 更偏「通用记忆 API」,而 TencentDB Agent Memory 更偏「分层记忆架构」。前者强调的是接口简洁和多后端支持,后者强调的是记忆的层次化管理和符号化表达。两者解决的是同一个问题的不同侧面。

项目地址https://github.com/Tencent/TencentDB-Agent-Memory

如果你正在给 Agent 做记忆系统,或者在用 OpenClaw 想加记忆能力,这个项目值得花半小时跑一下 demo 看看效果。


Agent 记忆这个方向,现在还远没有定论。腾讯这版的「分层 + 符号化」是一条有意思的路,但 Mem0、Zep、Memorall 等方案也各有打法。接下来谁跑出来,取决于谁的记忆系统真正能在生产环境里扛住长程、多轮、跨 session 的压力。

我会持续跟踪 Agent 记忆这条线的技术演进,包括新项目的拆解、benchmark 的复现、以及实际接入中的踩坑经验。

关注我,下一篇我会实测 TencentDB Agent Memory 在真实长任务下的表现,看看 benchmark 数据和实际体验到底差多少。