📄 文档列表
🎬 口播文案
✏️ 编辑文档
标题
工具栏
加粗
H2 标题
H3 标题
引用
无序列表
有序列表
代码块
📷 上传图片
点击或拖拽上传图片
支持 PNG, JPG, GIF, WebP 格式
内容 (Markdown 格式)
# TencentDB Agent Memory 突然火了:让 Agent 记住该记的,让人把注意力留给判断、创造和真正有价值的工作。 **作者:小创** --- 上个月给它跑的 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 的思路很直接:**记忆要有层次,压缩要有路径,召回要有结构。** ## 分层记忆:L0 到 L3,层层提炼但条条可溯 这是 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 让你像查档案一样,沿着链路定位到底是哪一层出了问题。 ## 符号化记忆:上下文只塞 Mermaid,细节按需下钻 说完分层,再来说另一个核心创新——**符号化记忆**。 长程任务最费 Token 的是什么?是工具调用日志。搜索结果、代码片段、报错信息,这些东西既厚重又没营养,但模型必须读完才能继续。 TAgent Memory 的做法是: **完整工具日志 → 卸载到外部文件系统(`refs/*.md`)→ 只在上下文里留一张轻量级的 Mermaid 任务地图(带 `node_id`)。** ```mermaid 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%。 ## 接入方式:OpenClaw 插件,零配置跑起来 TAgent Memory 目前官方支持 **OpenClaw** 和 **Hermes** 两个框架。先说 OpenClaw,零配置门槛极低。 **第一步:安装插件** ```bash openclaw plugins install @tencentdb-agent-memory/memory-tencentdb openclaw gateway restart ``` **第二步:启用** ```jsonc // ~/.openclaw/openclaw.json { "memory-tencentdb": { "enabled": true } } ``` 默认使用本地 SQLite + sqlite-vec 后端,不需要任何 API key。 装完之后,插件会**自动完成**:对话录制 → 记忆提取 → 场景归纳 → 用户画像生成 → 下一轮对话前召回。全程不需要你写一行代码。 **第三步(可选):开启短期记忆压缩** 这个功能需要版本 ≥ 0.3.4,而且要手动注册一个 slot 并跑一个 patch 脚本: ```jsonc // 在 openclaw.json 的 plugins.slots 里加一行 { "plugins": { "slots": { "contextEngine": "openclaw-context-offload" } } } ``` 然后执行 patch: ```bash bash scripts/openclaw-after-tool-call-messages.patch.sh ``` patch 每个 OpenClaw 安装只需跑一次,升级后建议重新跑。 > ⚠️ **注意**:这个 patch 注入了一个 `after-tool-call` 消息钩子,让工具调用结果能被正确卸载与回溯。不跑的话,短期记忆压缩功能不会生效,但长期记忆(L0→L3)不受影响。 ## Hermes 模式:Docker 一条命令 如果你用的是 Hermes,也有官方适配,通过 Docker 跑: ```bash # 构建 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 时被"记性差"折磨过吗?评论区说说你的场景。** ---
摘要
标签
多个标签用逗号分隔
分类
技术文章
教程指南
工具测评
项目实战
行业观察
默认
💾 保存修改
← 返回查看
返回列表