Valhalla 静态工程审阅 #030|TencentDB Agent Memory 源码证据驱动评测【开源基础设施特辑】
硬核工业风技术文章,建议搭配封面图阅读。
本文基于固定 Commit 快照开展只读静态工程审阅,不代表动态安全结论;所有观测均以可复查源码证据为边界。
📌 本文档声明
- 性质:本文系基于固定代码快照(
fe3230f)的静态工程特征分析,属于开源组件尽职调查参考材料,不构成任何形式的安全漏洞最终判定或法律合规意见。 - 证据锚定:所有结论均以文内引用的源码文件路径为唯一证据边界,未经验证的动态运行数据不纳入本文分析范畴。
- 使用建议:若将 TencentDB Agent Memory 纳入生产或核心业务系统,建议结合内部 SAST/DAST 扫描及实际部署测试,形成完整的评估报告。
摘要
Agent 每开一个新会话,都是一次从零开始。昨天讲过的项目背景,今天要重讲;喂过的文档,换个 Agent 得再喂一遍;一下午摸索跑通的排障流程,下次会话照样重走弯路。这跟模型够不够聪明关系不大,问题在于 Agent 天生没有“长期记忆”。
2026 年 5 月 13 日,腾讯云数据库团队正式开源TencentDB Agent Memory——一套面向 AI Agent 的分层记忆引擎,采用MIT 协议开源,开箱即用。项目上线一周即在社区获得超4000 Stars。2026 年 8 月 6 日,项目发布v2.0.0 大版本,核心升级是Team Memory(团队记忆)——将长期记忆能力从个人使用扩展到整个团队协作场景。
它的核心命题很直白:让 Agent 沉淀经验,让人专注创造。凡是能让下一个 Agent 少走弯路的信息——偏好、决策、跑通的做法、读过的文档、改过的代码——都应该被保存下来、组织好,并在合适的时候被复用。
本文从 Valhalla 静态工程审阅视角,拆解 TencentDB Agent Memory 的架构底层与工程特征。
1. 评测基础信息
| 字段 | 内容 |
|---|---|
| 评测类型 | 证据驱动只读静态审阅 |
| 目标项目 | TencentCloud/TencentDB-Agent-Memory |
| 项目性质 | Agent 长期记忆引擎 / 团队级记忆 Hub |
| 分析快照 | fe3230f176f1bf5832fee79d12494bbc2d19a8aa |
| 分析范围 | 仓库文件、模块结构、风险标签 |
| 排除范围 | 动态执行、渗透测试、性能压测、商业生态判断、法律合规意见 |
2. 项目全景:Agent 的“长期记忆”为什么是刚需
2.1 痛点:Agent 天生“金鱼记忆”
在长周期、跨会话的业务场景中,智能体“失忆”带来的代价正随采用率攀升而放大。传统 LLM Agent 是无状态的——每次对话结束后,工具调用经验与问题解决模式都会烟消云散,下一次面对相同问题只能从零推理。
| 痛点 | 表现 |
|---|---|
| 跨会话断裂 | 昨天反复确认的代码规范,今天新开会话又全忘了 |
| 事实与偏好混淆 | “我用 TypeScript”和“帮我查天气”被同等对待 |
| 上下文膨胀 | 任务越长,堆进上下文的历史信息越多,Token 消耗持续攀升 |
| 经验无法复用 | 跑通的排障流程,换个 Agent 照样重走弯路 |
2.2 解法:四层记忆金字塔
TencentDB Agent Memory 通过把不同粒度的信息放在不同的“楼层”,构建四层渐进式记忆架构:
| 层级 | 名称 | 内容形态 |
|---|---|---|
| L0 | 原始对话 | 完整的对话记录、工具调用日志、文档片段 |
| L1 | 原子记忆 | 从原始对话中抽取的原子事实,每条带来源链接 |
| L2 | 场景记忆 | 同类原子事实归纳出的场景模式与高频路径 |
| L3 | 核心记忆 | 跨场景沉淀的核心洞察、稳定结论与团队规范 |
每一层只做一件事,层与层之间通过“提取-聚合-蒸馏”的管道连接,任何一层都可以独立升级或替换。底层保留证据,上层保留结构——Agent 日常只接触 L2-L3 的轻量信息驱动任务推进,需要细节时通过node_id逐层下钻到原始记录。
2.3 四类记忆资产:从“痕迹”到“资产”
除了对话记忆,TencentDB Agent Memory 还将 Agent 在工作中产生的痕迹,自动沉淀成四类可复用资产:
| 资产类型 | 说明 |
|---|---|
| Chat Memory(聊天记忆) | 从对话里逐层提取偏好、事实、决策和交互历史 |
| Skill(技能) | 从跑通的任务里提炼可复用做法,带版本号、触发边界、执行步骤 |
| Wiki(知识库) | 把文档变成结构化页面加链接图谱,可持续维护 |
| Code Graph(代码图谱) | 用文件、符号、函数、调用链描述代码关系 |
2.4 短期记忆压缩:Mermaid 任务画布 + 上下文卸载
长期记忆解决“跨会话遗忘”,短期记忆解决“单次长任务信息过载”。
Agent 处理多步骤、长时间任务时,工具调用产生的中间结果会迅速填满上下文空间。TencentDB Agent Memory 采用“上下文卸载 + Mermaid 任务画布”的组合方案:
上下文卸载:每次工具调用结束后,完整结果写入外部文件(refs/*.md),上下文里只保留一行摘要和索引路径。
Mermaid 任务画布:用 Mermaid Flowchart 把任务执行过程组织成一张可导航的任务画布。Agent 不需要记住所有内容,只需要知道哪些信息重要、它们被组织在哪里,以及必要时如何一步步展开。
2.5 性能数据
| 场景 | 指标 | 数据 |
|---|---|---|
| 短期记忆 | Token 消耗 | 最高节省61.38% |
| 短期记忆 | 任务通过率 | 相对提升51.52% |
| 长期记忆 | PersonaMem 准确率 | 从48%提升到76% |
| 长期记忆 | 用户事实召回率 | 从不足30%提升至79%以上 |
3. 资产微观面板
| 指标 | 观测值 | 工程解读 |
|---|---|---|
| 受支持源文件 | 647+ | 中型代码基 |
| 主导语言 | TypeScript(629 个文件) | 类型安全全覆盖 |
| 辅助语言 | Python(15)、JavaScript(3) | SDK 与工具脚本 |
| 一级模块根 | 5 | MemoryCore、MemoryKnowledge、MemoryPanel、MemoryProxy、sdk |
| 构建/依赖文件 | 14+ | Dockerfile + pnpm-lock + pyproject.toml |
| 入口证据 | 20+ | MemoryProxy、MemoryPanel、MemoryKnowledge 多入口 |
| 静态风险命中 | 30+ | 需分层归因 |
3.1 模块拓扑
4. 核心模块职责
| 模块 | 职责 | 关键文件 |
|---|---|---|
| MemoryCore | 记忆读写、鉴权、Skill/RAG 数据面 | src/core/skill/、src/core/store/sqlite.ts |
| MemoryKnowledge | 知识库引擎:代码库/ Wiki 抓取与索引 | src/engines/wiki/、src/source-fetcher/git-fetcher.ts |
| MemoryPanel | Web 管理面板 | src/panel/http/routes/ |
| MemoryProxy | LLM 请求代理(Anthropic / OpenAI 双协议) | src/injection/agents/、src/session/ |
| sdk | Python / TypeScript SDK | sdk/memory-core/python/、sdk/memory-core/typescript/ |
4.1 部署方式
项目提供“三件套一键起”的部署方式:memory-core+memory-hub+proxy:
| 服务 | 端口 | 用途 |
|---|---|---|
| Memory Core | 8420 | 记忆读写、鉴权、skill/RAG 数据面 |
| Memory Hub | — | 团队记忆 Hub |
| Proxy | 8096 | LLM 请求代理(Anthropic / OpenAI 双协议) |
部署命令:
gitclone https://github.com/Tencent/TencentDB-Agent-Memory.gitcdTencentDB-Agent-Memory/deploy/global-imagescp.env.example .env$EDITOR.env# 填写两组 LLM 参数./start-all.sh5. 静态风险标签
5.1 风险命中概览
| 风险类型 | 命中数量 | 典型文件 |
|---|---|---|
RISK-DYNAMIC-EXECUTION | 25+ | MemoryProxy、MemoryCore、MemoryKnowledge多个模块 |
RISK-SHELL-INVOCATION | 2 | MemoryKnowledge/src/source-fetcher/git-fetcher.ts、MemoryCore/hermes-plugin/ |
RISK-SECRET-LITERAL | 3 | MemoryProxy/src/config.ts、sdk/memory-core/python/客户端 |
5.2 需重点关注的命中
| 文件 | 风险类型 | 定级 |
|---|---|---|
MemoryProxy/src/config.ts | RISK-SECRET-LITERAL | 高关注点 |
MemoryProxy/src/credit-reporter.ts | RISK-DYNAMIC-EXECUTION | 高关注点 |
MemoryProxy/src/injection/agents/claude-code/index.ts | RISK-DYNAMIC-EXECUTION | 高关注点 |
MemoryKnowledge/src/source-fetcher/git-fetcher.ts | RISK-SHELL-INVOCATION | 高关注点 |
MemoryCore/src/core/skill/skill-store.ts | RISK-DYNAMIC-EXECUTION | 高关注点 |
sdk/memory-core/python/.../client.py | RISK-SECRET-LITERAL | 中关注点 |
关键解读:
MemoryProxy/src/config.ts中的RISK-SECRET-LITERAL需优先确认:是否为硬编码的 API 密钥或凭证。如是,需立即迁移至环境变量管理。
MemoryProxy/src/injection/agents/目录负责为 Claude Code、CodeBuddy 等编码 Agent 注入记忆能力。其中的动态执行风险需重点审查——是否涉及用户可控的输入?是否在正常注入流程中被触发?
MemoryKnowledge/src/source-fetcher/git-fetcher.ts中的 Shell 调用涉及 Git 仓库抓取,需确认输入(仓库 URL、分支名等)是否经过严格校验,避免命令注入。
6. 生态接入
6.1 支持的框架与接入方式
| 接入方式 | 说明 |
|---|---|
| OpenClaw 插件 | 作为记忆增强插件一键接入 |
| Hermes 网关 | 提供标准 API 与协议适配 |
| 自研 Agent SDK | Python / TypeScript SDK 面向自研场景 |
| Claude Code / CodeBuddy | 通过 Proxy 注入团队记忆 |
6.2 自研 Agent 接入流程
把 TencentDB Agent Memory 接入 Agent 主流程,本质上是“召回 + 写入”两步:
用户输入 → ① 召回(从云端拉相关记忆,拼进 prompt)→ LLM → ② 写入(把本轮对话写回云端)SDK 初始化需要传入team_id、agent_id、user_id三个字段,记忆抽取以agent_id为粒度——不同 Agent 之间的记忆相互隔离。
7. 对话式总结
问:TencentDB Agent Memory 是什么?
答:腾讯云数据库团队开源的Agent 长期记忆引擎,采用 MIT 协议。它将 Agent 的对话、做法、文档、代码沉淀成四类可复用记忆资产(Chat Memory、Skill、Wiki、Code Graph),让下一个 Agent 直接“读档”开工。
问:它解决了什么问题?
答:Agent 天生没有长期记忆,每次新会话都是从零开始。TencentDB Agent Memory 通过四层记忆金字塔(L0-L3)和短期记忆压缩(Mermaid 画布 + 上下文卸载),让 Agent 跨会话记住偏好、复用经验、降低 Token 消耗。
问:性能怎么样?
答:接入 OpenClaw 后,最高节省61.38% Token,任务通过率相对提升51.52%,PersonaMem 准确率从48%提升到76%。
问:和 Mem0 等竞品有什么区别?
答:普通 RAG 做的是记忆的存储,TencentDB Agent Memory 做的是记忆的治理。它不只是把对话塞进向量库,而是从对话里逐层提炼出有价值的部分,区分事实、偏好、场景、画像。每条记忆资产还有 Owner、版本、可见性。
问:适合在生产环境用吗?
答:适合。MIT 协议、多框架支持、已有 OpenClaw 生产验证。但使用前建议复核MemoryProxy/src/config.ts等文件中的密钥字面量,确认是否迁移至环境变量。
8. 后续验证建议
| 优先级 | 验证动作 | 目的 |
|---|---|---|
| P0 | 审查MemoryProxy/src/config.ts中的密钥字面量 | 排除密钥泄露风险 |
| P0 | 审查MemoryProxy/src/injection/agents/的动态执行上下文 | 确认注入路径安全性 |
| P0 | 审查MemoryKnowledge/src/source-fetcher/git-fetcher.ts的 Shell 调用参数校验 | 排除命令注入 |
| P1 | 在隔离环境中执行./start-all.sh部署测试 | 验证部署可复现性 |
| P1 | 复核所有RISK-DYNAMIC-EXECUTION命中的上下文 | 确认真阳性 / 误报 |
| P2 | 测试 Python/TypeScript SDK 的接入流程 | 验证自研 Agent 集成可用性 |
📌 本文档声明
- 性质:本文系基于固定代码快照(
fe3230f)的静态工程特征分析,属于开源组件尽职调查参考材料,不构成任何形式的安全漏洞最终判定或法律合规意见。 - 证据锚定:所有结论均以文内引用的源码文件路径为唯一证据边界,未经验证的动态运行数据不纳入本文分析范畴。
- 使用建议:若将 TencentDB Agent Memory 纳入生产或核心业务系统,建议结合内部 SAST/DAST 扫描及实际部署测试,形成完整的评估报告。
本文不是 Agent 记忆能力评测或性能压测,而是一次基于固定 Commit 快照的开源组件静态工程尽职画像。
更新日志
| 版本号 | 发布日期 | 修订内容 |
|---|---|---|
| v2.0 | 2026-08-09 | 发布,完成项目核心架构评测、安全风险审计与场景落地建议 |
本文由 Valhalla Matrix V2 评测体系出品,仅作技术研究与风险提示,不构成任何部署建议。