给 AI Agent 装上记忆:TencentDB-Agent-Memory 上手指南

34 阅读4分钟

给 AI Agent 装上记忆:TencentDB-Agent-Memory 上手指北

让 Agent 记住该记住的,人才有精力做判断、创造和真正重要的事。


最近逛 GitHub 发现腾讯开源了一个有意思的项目:TencentDB-Agent-Memory——给 AI Agent 装上分层记忆系统。花了一个下午踩坑装上,记录一下。

为什么需要 Agent 记忆?

用 Agent 最烦的就是重复解释。每次新对话都要重新交代项目背景、工具约定、输出格式——这些东西不该每次都讲,但直接全塞进上下文窗口又是 token 地狱。

现在的"记忆"方案大多是把对话切碎丢进向量库,召回靠相似度盲搜。问题是:

  • 碎片化:失去了对话的层次和结构
  • 不可追溯:召回了什么、为什么召回、原始证据在哪——全是黑盒
  • 压缩不可逆:摘要一旦生成,原文就丢了,细节无法恢复

TencentDB 这个方案做得不一样。

核心思路:分层 + 符号化

1. 分层长期记忆

不是扁平向量堆,而是四层金字塔:

L0  原始对话  →  完整保留,可追溯
L1  原子事实  →  从对话中提取的独立事实
L2  场景块    →  相关事实聚合为场景(项目、习惯、偏好)
L3  用户画像  →  persona.md,你的"说明书"

关键设计:上层做判断,下层做证据。任何时候都能从 Persona → Scenario → Atom → Conversation 一路追溯到底,不是黑盒。

2. 符号化短期记忆(Mermaid Canvas)

长任务里真正吃 token 的是工具调用的中间日志。这套系统把冗长的搜索结果、代码、错误栈压缩成 Mermaid 图,原文通过 node_id 索引到外部文件,需要时 grep 回捞。

原始日志(几十万 token)
  → 1. 原文转存到 refs/*.md
  → 2. 提取关系 → Mermaid 图(几百 token)
  → 3. 轻量注入上下文
  → 4. 需要细节时通过 node_id 回查

实际数据

在 OpenClaw 上跑出来的 benchmark:

场景原始通过率加记忆后提升
WideSearch33%50%+51.52%
SWE-bench58.4%64.2%+9.93%
PersonaMem 准确率48%76%+59%

token 用量最多砍掉 61.38%——不是省一点,是对半砍。

安装踩坑记录

它是 OpenClaw 原生插件,理论上一条命令搞定:

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

但实际装的时候碰到几个坑:

坑 1:npm install 超时。 插件依赖多(better-sqlite3sqlite-vec 等原生模块),openclaw plugins install 自带的 npm install 超时机制不够长,连试两次都在装依赖时被 kill。

解法:手动 npm pack → 解压 → 进目录 pnpm install --prod。用 pnpm 快不少。

坑 2:残留安装目录。 openclaw plugins install 失败后会留下 .openclaw-install-stage-* 临时目录,重启 gateway 时自动扫描导致 duplicate plugin id 报错。

解法:rm -rf ~/.kimi_openclaw/extensions/.openclaw-install-stage-*

坑 3:白名单。 插件装好了但默认不在 plugins.allow 列表里,状态是 disabled。

解法:在 openclaw.jsonplugins.allow 中加上 memory-tencentdb,并在 plugins.entries 里显式 enabled: true

坑 4:Kimi 桌面端管控。 我用的是 Kimi 桌面版,gateway 生命周期由桌面端 supervisor 管理,不能直接 openclaw gateway restart——会导致双 owner 冲突 gateway 挂掉。

解法:Cmd+Q 彻底退出 → 重新打开,让桌面端自行拉起 gateway。

装好后的状态

重启后插件自动创建了记忆目录:

~/.kimi_openclaw/memory-tdai/
├── conversations/   # L0 原始对话
├── records/         # L1 原子记忆
├── scene_blocks/    # L2 场景块
└── vectors.db       # SQLite + sqlite-vec 混合检索

默认每 5 轮对话触发一次 L1 提取,每 50 条新记忆生成 L3 用户画像。零配置开箱即用,SQLite 本地存储,不上传任何数据。

另外多了两个工具:tdai_memory_searchtdai_conversation_search,Agent 可以在对话中主动搜记忆。

暂时没开的功能

短时压缩(Context Offload)——就是那个 Mermaid 图 + token 砍半的功能——默认关闭。开启需要注册 slot + 打 runtime patch,偏侵入式。打算先用基础记忆跑一周,稳定了再考虑。

总结

这个项目的设计理念我挺认同的:记忆不该是扁平碎片堆,也不该是不可逆的信息压缩。它用分层保证可追溯,用符号化压缩节省 token,两者形成闭环。

跟 Anthropic 推的 Agent Skills 是一个方向的互补——一个管"记住做过什么",一个管"能做什么"。以后 Agent 生态的标配大概就是 Skills + Memory 双轨。

跑一段时间再回来更新实际体验。


2026-05-19 · 基于 v0.3.5