腾讯花了 6 个月解决一个问题:Agent 在长 session 中丢失上下文。最终成果是开源的 TencentDB Agent Memory——一个完全本地的 Agent 长期记忆系统,零外部 API 依赖。
核心数据
接入 OpenClaw 后的实测效果:
| 记忆能力 | Benchmark | OpenClaw 成功率 | 接入插件后 | 相对提升 | OpenClaw Token | 接入插件后 Token | 相对降低 |
|---|---|---|---|---|---|---|---|
| 短期 | WideSearch | 33% | 50% | +51.52% | 221.31M | 85.64M | −61.38% |
| 短期 | SWE-bench | 58.4% | 64.2% | +9.93% | 3474.1M | 2375.4M | −33.09% |
| 短期 | AA-LCR | 44.0% | 47.5% | +7.95% | 112.0M | 77.3M | −30.98% |
| 长期 | PersonaMem | 48% | 76% | +59% | — | — | — |
结果在连续长程 session 中测量,非孤立轮次。例如 SWE-bench 每 session 连续跑 50 个任务,模拟真实长程 Agent 的上下文累积压力。
核心理念
记忆不是关于在 AI 中囤积一切——而是关于让人类不必重复自己。
实践中,我们不断向 Agent 重复解释同样的 SOP、项目背景、工具约定和输出格式。这些信息不应该需要重复,也不应该被不加区分地 dump 进上下文。
TencentDB Agent Memory 帮助 Agent 学习你的工作流、保留任务上下文、复用过往经验。团队拒绝暴力历史累积和不可逆的有损摘要,而是将记忆设计为分层系统:符号化记忆处理任务内信息过载,记忆分层处理跨 session 经验。
核心技术:拒绝扁平存储,拥抱分层与符号化
架构建立在两根支柱上:记忆分层和符号化记忆。共同确保 Agent 不只是"记得更多",而是"推理得更好"。
1. 记忆分层:渐进式披露 + 异构存储
传统记忆系统将数据撕成碎片,dump 进扁平向量库。召回退化为在断连碎片间的盲目搜索,没有宏观指导。
无论长期知识、短期任务还是未来技能能力,记忆永远不该是扁平的——其形成和召回都必须是分层的。TencentDB Agent Memory 采用分层作为统一架构范式:
短期上下文分层
- 底层:归档原始工具输出(
refs/*.md) - 中层:提取步骤级摘要(
jsonl) - 顶层:将状态浓缩为轻量级 Mermaid 画布
- Agent 只需关注上下文中的顶层结构,出错时通过
node_id钻取到下层
长期个性化分层
- 用语义金字塔替代扁平日志:
- L0 Conversation(原始对话)
- L1 Atom(原子事实)
- L2 Scenario(场景块)
- L3 Persona(用户画像)
- Persona 层携带日常偏好;系统仅在细节重要时才钻取到 Atom
技能生成分层
- 分层也适用于动作。中层从底层执行轨迹(Conversation)推导常见解决模式(Scenario),顶层提炼可复用技能或标准 SOP(Persona)
异构存储与渐进披露
- 双层存储策略支撑架构。底层(事实、日志、轨迹)持久化在数据库中,支持健壮的全文检索;顶层(画像、场景、画布)存储为人类可读的 Markdown 文件,信息密度高、可白盒检查
- 下层保留证据;上层保留结构
全可追溯与无损恢复
- 压缩常牺牲可追溯性。TencentDB Agent Memory 通过维护从高层抽象到 ground-truth 证据的确定性路径,避免不可逆压缩
- 无论是卸载的错误日志还是提炼的用户偏好,系统保证完整的钻取路径:"顶层符号(Persona / canvas)→ 中层索引(Scenario / jsonl)→ 底层原始文本(L0 Conversation / refs)"
2. 符号化记忆:最小符号中的最大语义(Mermaid Canvas)
长任务中最大的 token 消耗者是冗长的中间日志(搜索结果、代码、错误轨迹)。为此,团队结合上下文卸载与符号化记忆:
- Mermaid 符号图:不用冗长散文或扁平 JSON,用高密度的 Mermaid 语法编码任务状态转换——精确到 LLM 能解析,简洁到人类能阅读
- 历史卸载:完整工具日志卸载到外部文件;上下文中只保留轻量级 Mermaid 任务图
node_id追踪:Agent 在符号图上推理;要验证细节时,grepnode_id瞬间检索完整原始文本——降低 token 成本同时保留完全可追溯性
Verbose Logs (hundreds of thousands of tokens)
→ 1. Offload full text → External FS (refs/*.md)
→ 2. Extract relations → Mermaid Canvas (with node_id)
→ 3. Light injection → Agent Context (a few hundred tokens)
← 4. Recall via node_id ← External FS
快速接入
OpenClaw
openclaw plugins install @tencentdb-agent-memory/memory-tencentdb
openclaw gateway restart
默认使用本地 SQLite + sqlite-vec 后端,零配置启用。
Hermes
提供 hermes-plugin,安装后自动启用记忆能力。
关键洞察
-
分层是记忆的正确抽象。大多数系统卡在 L0,把原始对话往向量库一扔就完事。TencentDB 的四层金字塔(Conversation → Atom → Scenario → Persona)让召回有结构、有层次。
-
符号化是压缩的正确方式。不是有损摘要,而是用 Mermaid 等高密度格式保留语义结构,通过
node_id保持无损钻取能力。 -
记忆系统的目标是让人少重复。不是存得多,是存得对、 recall 得准、用得顺。