Skip to content

腾讯开源 Agent Memory:符号化短期记忆 + 分层长期记忆,Token 省 61%

你有没有这种体验:和 AI Agent 聊了一整天的项目,第二天打开新终端,它完全不记得你是谁。

这是一个比想象中更严重的问题。不是"丢失了聊天记录"那么简单,是 Agent 不知道你的代码风格、不知道你用什么框架、不知道你已经踩过哪些坑。每次都是重新认识。

过去一年,市面上出现了各种记忆方案——向量数据库、长期上下文窗口、记忆摘要。但大多数方案做的是同一件事:把历史对话切块、向量化、存起来,召回时拼运气。

腾讯云数据库团队最近开源了一个叫 TencentDB Agent Memory 的项目,在 GitHub 上已经 300+ Star。它的做法不太一样,我仔细看了一下,有几个思路值得拿出来聊聊。

不是存更多,而是存更聪明

TencentDB Agent Memory 的核心设计围绕两个关键词:符号化分层

先说分层。传统记忆系统把历史切成向量块,平铺在一个池子里。听起来没什么问题,但实际跑起来你会发现:你和 Agent 聊了 50 轮对话,里面有代码调试、有需求讨论、有闲聊、有项目规划。当你问"帮我改昨天的那个 bug"时,Agent 得从这堆信息里大海捞针。

TencentDB Agent Memory 把记忆做成了一个四层金字塔:

  • L0 — 原始对话:完整保留对话原文,不丢失任何信息
  • L1 — 原子记忆:LLM 自动抽取结构化事实、偏好、约束
  • L2 — 场景归纳:按项目/话题聚类成场景块,避免串场
  • L3 — 用户画像:沉淀出稳定的用户画像,Agent 真正"懂你"

这套架构最大的特点是:信息密度从下往上递增,信息的可追溯性从上往下层层可查。日常对话靠 L3 画像了解你的偏好,涉及具体事实时下钻到 L1 查原子记忆,需要原文时再到 L0 翻原始对话。

这不是什么新概念——人类记忆本身就是分层的。但很少有 Agent 框架把它做成工程可用的方案。

Mermaid 画布:短期记忆的"招"有点意思

短期记忆压缩是另一个让我眼前一亮的设计。

长任务最耗 Token 的是什么?不是模型推理,是中间过程日志。一次搜索返回 2000 字原文,Agent 在里面翻了半天找到一句有用的话;一次代码调试输出几万行堆栈,Agent 得全部读一遍才知道问题在哪。

TencentDB Agent Memory 的做法是:工具返回的原始日志全部卸载到磁盘文件,上下文里只保留一张 Mermaid 流程图。图的每个节点带一个 node_id,Agent 看着图做推理,需要查细节时通过 node_id 到文件里 grep 原文。

效果很直观:

指标优化前优化后变化
Token 消耗221.31M85.64M−61.38%
任务通过率33%50%+51.52%

Token 少了六成,成功率反而涨了五成。逻辑是通的——上下文里全是有效信息,噪声少了,模型推理准确率自然上升。

Mermaid 这个选择也很聪明。它不是重新发明一种符号语言,而是用了所有主流大模型在预训练阶段就已经吃透的图形语法。用最通用的格式做最特定的压缩,这比自创一套 DSL 高明得多。

实测数据怎么看?

官方在 OpenClaw + Kimi-K2.5 环境下做了一组评测,我挑几个关键指标:

短期记忆(上下文卸载):

  • WideSearch 通过率:33% → 50%,+51.52%
  • SWE-bench 通过率:58.4% → 64.2%,+9.93%
  • Token 消耗降幅:33%~61%

长期记忆(用户画像):

  • PersonaMem 准确率:48% → 76%,+59%
  • 事实召回率:29.63% → 79.07%

我不太关心绝对数值——不同场景基准不一样。我关注的是 "加了这个记忆系统之后,各指标一致性地向好的方向变"。没有一个 benchmark 是退步的,这在真实工程中很难得。

尤其 PersonaMem 从 48% 到 76%,说明分层架构在"记住用户是谁"这件事上确实有效。48% 是什么概念?接近抛硬币。76% 虽然不完美,但已经是有实际可用性的水平。

白盒可调试:这一点很重要

很多记忆系统的问题是:召回了错误的信息,你只能看到一串向量相似度分数,没办法判断是哪里错了。

TencentDB Agent Memory 把关键中间产物全部存成可读的 Markdown 文件:

~/.openclaw/memory-tdai/
├── persona.md       # L3 用户画像,可直接打开检查
├── scenes/          # L2 场景块,按项目分类
├── atoms/           # L1 原子记忆
└── conversations/   # L0 原始对话

每一条记忆都有一条完整的溯源链路:Persona → Scenario → Atom → Conversation。L3 说出"用户偏好 TypeScript",你可以追溯到是哪段对话、哪个场景形成的这个结论。

做产品的都懂:不可调试的功能,等于不可维护的功能。尤其记忆是 Agent 行为的重要影响因素——如果连 Agent 为什么"记得"某件事都说不清楚,你对 Agent 的行为就没有掌控力。

对我的启发

我以前写过一句话:好工具的秘诀不是用最贵的模型,而是给模型造最好的缰绳。

TencentDB Agent Memory 在记忆这个维度上,做的就是这件事。它没有用更长的上下文窗口(Claude 100K、Gemini 1M 已经够长了),而是用工程手段让模型在有限的上下文里看到的信息密度更高。

几个值得借鉴的设计思路:

  1. 用符号代替自然语言。Mermaid 画布替代过程日志,一条边表达的信息可能等于三段自然语言。这不是压缩,是改变信息形态。

  2. 分层不是分层存储,是分层访问。底层存证据,顶层存结构。日常用顶层,需要时随时下钻。不是打标签分类,是不同抽象级别的视图。

  3. 异构存储。底层事实用数据库,高层画像用 Markdown。让每层数据用最适合的载体存。SQLite 适合批量检索,Markdown 适合人机共读。

快速上手

如果你已经在用 OpenClaw,接入很简单:

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

默认使用本地 SQLite + sqlite-vec,零配置即可启用。短期记忆压缩是可选功能,需要额外配置一下触发水位。

项目同时也支持 Hermes Agent 的 Docker 部署。长远来看,团队还规划了跨 Agent / 跨框架的记忆迁移、自动 Skill 生成、可视化调试面板。这让它不只是一个插件,更像一个独立的记忆基础设施。


一句话总结:Agent 记忆的解法不在"更大上下文",而在"更聪明的组织"。这套开源方案在工程落地上做得比大多数项目扎实,值得关注。

最近更新

基于 MIT LICENSE 许可发布