作者:小创
上个月给它跑的 SOP,这周又忘得一干二净;让它处理个多步骤任务,每步都得把项目背景重新交代一遍;20 轮对话跑下来,Token 账单直接爆表——这不是你调教得不够,是 Agent 天然的痛:上下文越来越长,记忆越来越糊,模型读的全是不相干的噪音。
这不是个例。这是目前所有长程 Agent 的通病:上下文越来越长,记忆越来越糊,Token 越烧越多。
最近腾讯放出了一个开源方案,叫 TAgent Memory(TencentDB Agent Memory),直接把这个问题的解决思路拉高了一个层次——不是简单地往向量数据库里塞历史记录,而是搞了一套"分层 + 符号化"的记忆系统。
实测数据挺吓人的:WideSearch 场景 Token 消耗直接降了 61.38%,任务通过率相对提升 51.52%(数据来源:项目官方 README,第三方验证暂无)。
今天把核心设计掰开说说,以及怎么接进你的 Agent。
大多数 Agent 的记忆方案,说白了就是:把对话切片 → 灌进向量数据库 → 召回时做语义相似度匹配。
听着合理,但实际跑长程任务就知道疼了。
第一,平铺的向量没有层次。你让 Agent"记住我喜欢用中文回复",结果召回出来的可能是七八条零散对话碎片,Agent 得自己拼凑上下文,召回精度全靠玄学。
第二,历史堆砌不可逆。对话一多就开始做摘要,但摘要完了原始信息就没了——一旦 Agent 对某条记忆的理解有偏差,你连追证据的地方都没有。
第三,Token 爆炸。工具调用日志、搜索结果、代码片段,这些厚重的内容全往上下文里塞,模型读的都是"噪音"而不是"信号"。
TAgent Memory 的思路很直接:记忆要有层次,压缩要有路径,召回要有结构。
这是 TAgent Memory 最核心的设计。
它把记忆拆成了四层,每一层都有自己的使命:
| 层级 | 名称 | 存什么 | 文件形式 |
|---|---|---|---|
| L0 | Conversation | 原始对话记录,最完整的证据 | refs/*.md |
| L1 | Atom | 结构化事实片段,提取关键事实 | *.jsonl |
| L2 | Scenario | 场景块,多个 L1 的归纳 | Markdown(可直接读) |
| L3 | Persona | 用户画像,偏好和习惯总结 | persona.md |
这个设计最妙的地方在于:每层都可完整溯源。
什么意思?你在 L3 看到一条"用户偏好用中文输出",这不是一条凭空生成的摘要——它是从 L2 的 Scenario 归纳来的,Scenario 又是从 L1 的多个 Atom 提炼的,Atom 则对应 L0 的原始对话。
也就是说,记忆不是压缩,是蒸馏。你可以沿着 Persona → Scenario → Atom → Conversation 这条链路一层层往下追,还原出完整的推理过程。
这一点太重要了。很多记忆系统出问题,你只能看到一串向量分数,不知道哪里错了。TAgent Memory 让你像查档案一样,沿着链路定位到底是哪一层出了问题。
说完分层,再来说另一个核心创新——符号化记忆。
长程任务最费 Token 的是什么?是工具调用日志。搜索结果、代码片段、报错信息,这些东西既厚重又没营养,但模型必须读完才能继续。
TAgent Memory 的做法是:
完整工具日志 → 卸载到外部文件系统(refs/*.md)→ 只在上下文里留一张轻量级的 Mermaid 任务地图(带 node_id)。
graph LR
Log["繁杂冗长的过程日志<br/>(几十万 Token)"] -->|"1. 卸载完整原文"| FS[("外部文件系统<br/>(refs/*.md)")]
Log -->|"2. 提取关系"| MMD["Mermaid 符号图谱<br/>(带 node_id)"]
MMD -->|"3. 轻量级注入"| Agent(("Agent 上下文<br/>(几百 Token)"))
Agent -. "4. 随时按 node_id 下钻恢复原文" .-> FS
style Log fill:#f1f5f9,stroke:#94a3b8,stroke-dasharray: 5 5
style FS fill:#f8fafc,stroke:#cbd5e1
style MMD fill:#eff6ff,stroke:#3b82f6,stroke-width:2px
style Agent fill:#fffbeb,stroke:#f59e0b,stroke-width:2px
Agent 看到的是一张拓扑清晰的任务图,每个节点带一个 node_id。它可以沿着图的逻辑往下推理,如果需要查某个步骤的完整细节,grep 一下对应的 node_id,秒级找回原文。
这样一来,上下文只保留几百 Token 的"地图",原始日志全部卸载到文件系统,需要时再下钻。官方数据显示 WideSearch 场景 Token 消耗降低了 61.38%,任务通过率从 33% 提升到 50%。
TAgent Memory 目前官方支持 OpenClaw 和 Hermes 两个框架。先说 OpenClaw,零配置门槛极低。
第一步:安装插件
openclaw plugins install @tencentdb-agent-memory/memory-tencentdb
openclaw gateway restart
第二步:启用
// ~/.openclaw/openclaw.json
{
"memory-tencentdb": {
"enabled": true
}
}
默认使用本地 SQLite + sqlite-vec 后端,不需要任何 API key。
装完之后,插件会自动完成:对话录制 → 记忆提取 → 场景归纳 → 用户画像生成 → 下一轮对话前召回。全程不需要你写一行代码。
第三步(可选):开启短期记忆压缩
这个功能需要版本 ≥ 0.3.4,而且要手动注册一个 slot 并跑一个 patch 脚本:
// 在 openclaw.json 的 plugins.slots 里加一行
{
"plugins": {
"slots": {
"contextEngine": "openclaw-context-offload"
}
}
}
然后执行 patch:
bash scripts/openclaw-after-tool-call-messages.patch.sh
patch 每个 OpenClaw 安装只需跑一次,升级后建议重新跑。
⚠️ 注意:这个 patch 注入了一个
after-tool-call消息钩子,让工具调用结果能被正确卸载与回溯。不跑的话,短期记忆压缩功能不会生效,但长期记忆(L0→L3)不受影响。
如果你用的是 Hermes,也有官方适配,通过 Docker 跑:
# 构建
docker build -f Dockerfile.hermes -t hermes-memory .
# 运行(腾讯云 DeepSeek-V3.2 默认值,只需要传 API_KEY)
docker run -d \
--name hermes-memory \
--restart unless-stopped \
-p 8420:8420 \
-e MODEL_API_KEY="你的KEY" \
-v hermes_data:/opt/data \
hermes-memory
# 验证 Gateway
curl http://localhost:8420/health
# 进入对话
docker exec -it hermes-memory hermes
镜像内置了腾讯云 DeepSeek-V3.2 的默认值,如果你用这个模型,MODEL_BASE_URL、MODEL_NAME、MODEL_PROVIDER 都可以省略。
这是我觉得最值得强调的一点。
很多记忆系统,召回错了你就只能干瞪眼——分数在那儿摆着,但不知道为什么召回了这条。
TAgent Memory 所有中间产物都存在 ~/.openclaw/memory-tdai/ 目录下,可以直接打开查看:
~/.openclaw/memory-tdai/
├── refs/ # L0 原始对话 Markdown
├── L1/ # L1 结构化事实 JSONL
├── L2/ # L2 场景归纳 Markdown(可直接读!)
│ └── *.md
├── L3/ # L3 用户画像
│ └── persona.md
└── vector.db # sqlite-vec 向量索引
L2 是 Markdown,L3 是 Markdown,连 Mermaid 任务画布都是人能看懂的格式。调试记忆系统不再是翻数据库,而是读文档。
出了问题,你打开 persona.md 看看 Agent 总结的用户偏好对不对;再顺着 node_id 追溯到 refs/ 里的原始日志,完整还原推理链路。
项目官方 README 放出了一组 Benchmark 数据,我整理如下(来源:项目官方 README,非第三方验证):
| 记忆类型 | 测试集 | 原始通过率 | 加插件后 | 相对提升 | Token 降幅 |
|---|---|---|---|---|---|
| 短期记忆 | WideSearch | 33% | 50% | +51.52% | −61.38% |
| 短期记忆 | SWE-bench | 58.4% | 64.2% | +9.93% | −33.09% |
| 短期记忆 | AA-LCR | 44.0% | 47.5% | +7.95% | −30.98% |
| 长期记忆 | PersonaMem | 48% | 76% | +59% | — |
WideSearch 场景数据最漂亮,51.52% 的通过率提升和 61.38% 的 Token 降幅主要来自短期记忆压缩(Context Offload)。这个功能开启后,Mermaid 图谱替换了原始工具日志,上下文体积大幅缩水。
SWE-bench 和 AA-LCR 的提升相对温和,但 Token 降幅依然可观。
⚠️ 提醒:以上数据均来自项目官方 README。TAgent Memory 目前的版本是 v0.3.5(npm,2026-05-16),GitHub tag 显示的是 v0.3.4,npm 包比源码新。尚未找到第三方独立评测,建议谨慎参考。
说完技术,再从直觉上理一下区别。
传统方案:对话 → 向量 → 召回(扁平的,丢了证据,不可逆)
TAgent Memory:对话 → 分层蒸馏 → 结构化召回(带层次,可溯源,可展开)
最核心的差异是信息没有被压缩消失,而是被结构化了。每一条记忆都有明确的层级和出处,Agent 既可以读高层画像做快速判断,也可以在需要时展开到底层查证。
TAgent Memory 解决的不是"Agent 记不住"的问题,而是"Agent 记住的到底是啥、能不能信"的问题。
分层记忆解决了经验沉淀的结构性,符号化上下文解决了长程任务的 Token 爆炸,白盒调试解决了线上问题的定位难题。三件事本来是互相牵制的,它硬是给拧到一块去了。
当然,目前 v0.3.5 能力还在快速迭代中,Roadmap 上还有"记忆可迁移""Skill 自动生成""可视化调试面板"没上线。但对于 OpenClaw 和 Hermes 用户来说,现在装上已经能拿到实实在在的收益了。
你在用 Agent 时被"记性差"折磨过吗?评论区说说你的场景。
💬 评论区