RepoDaily · 2026-07-10 · Infrastructure / Runtime

TencentDB Agent Memory:零外部 API 依赖的本地四层 Agent 记忆系统,Token 用量直降 61%

#10 Infrastructure / Runtime TypeScript +625 TencentCloud/TencentDB-Agent-Memory 打开仓库

一个 OpenClaw 插件,将碎片化的 Agent 对话通过 L0→L1→L2→L3 渐进式管道转化为结构化记忆,完全基于本地 SQLite 向量搜索运行。

项目类型Infrastructure / Runtime
最适合使用 OpenClaw 或 Hermes 框架、需要跨会话持久记忆且不想将对话数据发送到第三方 API 的团队
风险等级中等——当前版本 0.3.6,依赖 OpenClaw >= 2026.3.13 和 Node >= 22.16
评估时间2–4 小时完成安装、本地插件链接和一轮短基准测试

核心问题: L0→L1→L2→L3 渐进式管道在你的 Agent 工作负载上,能否在零外部 API 调用下产出可用的 persona 和 scene 记忆?

91/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 91/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 5 个来源、覆盖 4 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 6 个工作流步骤、6 个下一步动作,以及 4 个命令/安装信号。

65维护可信度

趋势热度为 +625 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

93生产准备度

采纳风险标记为 medium,并包含 5 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 3 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

84Agent / AI 适配度

文章正文和元数据中检测到 6 个 AI/Agent 相关信号。

项目概览

TencentDB Agent Memory 是一个 MIT 许可的 TypeScript 插件,npm 包名为 @tencentdb-agent-memory/memory-tencentdb,当前版本 0.3.6。它为 AI Agent 提供基于四层渐进式管道的持久记忆系统:L0 捕获原始对话,L1 提取结构化记录,L2 聚合场景,L3 构建用户画像。整个管道在本地运行,使用 SQLite 配合 sqlite-vec 0.1.7-alpha.2 进行向量搜索,可选通过 node-llama-cpp 加载本地 LLM,默认零外部 API 依赖。

插件主要通过 openclaw.plugin.json 清单和 src/hooks/ 目录下的钩子系统与 OpenClaw(>= 2026.3.13)集成。hermes-plugin/ 目录提供了 Hermes Agent 框架的适配器。开发过程无需构建步骤——Node.js 22.16+ 原生支持 TypeScript 类型剥离,OpenClaw 可直接在运行时加载 .ts 源文件。

根据 README 数据,与 OpenClaw 集成后,该插件在 WideSearch 基准上将 Token 用量降低 61.38%(221.31M → 85.64M),通过率相对提升 51.52%(33% → 50%),PersonaMem 准确率从 48% 提升至 76%。在 SWE-bench 上,Token 用量下降 33.09%(3474.1M → 2375.4M),通过率从 58.4% 升至 64.2%。这些基准在连续 50 个任务的长时间会话中测量,模拟真实长程 Agent 的上下文累积压力。

解决什么问题

  • 扁平向量库将对话碎片化为互不关联的片段,召回退化为无宏观指引的盲目搜索——README 明确拒绝这种模式
  • Agent 浪费 Token 反复解释本应跨会话持久化的 SOP、项目背景、工具约定和输出格式
  • 暴力历史累积撑爆上下文窗口;不可逆的有损摘要则丢弃后续可能必需的信息
  • 将对话数据发送到外部 Embedding API 会带来隐私和数据主权问题
  • 运行 50+ 连续任务的长程 Agent 面临上下文累积压力,同时降低召回质量和 Token 效率

工作原理

  1. L0 会话层(src/conversation/):将原始对话捕获为 JSONL 分片,每日分片边界现已可通过 timezone 配置项控制
  2. L1 记录层(src/record/):从 L0 数据中提取结构化信息,包括去重和提取提示词,提示词自动适应用户输入语言
  3. L2 场景层(src/scene/):将记录聚合为场景摘要,内置快照与恢复保护——LLM 提取失败时 BackupManager.restoreLatestDirectory 从最新备份恢复,而非留下半写入的 scene_blocks/
  4. L3 画像层(src/persona/):从累积的场景中构建用户画像,生成 persona.md 文件,字段名保持英文作为稳定契约,自由文本内容跟随用户语言
  5. 存储层(src/store/):持久化到 SQLite 或 TCVDB,时间戳始终以 UTC 即时存储;migrate-sqlite-to-tcvdb CLI 处理后端之间的数据库迁移
  6. 符号化短期记忆:将繁重的工具日志压缩为紧凑的 Mermaid 符号以减少活跃任务中的 Token 消耗,与长期分层管道分离

产品演示与界面预览

Retrievable and Recoverable Drill-Down Chain
Retrievable and Recoverable Drill-Down Chain — 官方流程图展示 L0 到 L3 各层之间的可检索、可恢复逐级下钻链路,帮助理解数据如何在管道中流转与回滚。 README.md image
TencentDB Agent Memory L0 to L3 semantic pyramid
TencentDB Agent Memory L0 to L3 Semantic Pyramid — L0 到 L3 语义金字塔图,从原始对话逐层提炼到结构化画像,直观展示渐进式分层记忆的设计理念。 README.md image

架构解读:L0→L1→L2→L3 管道与存储

源码目录直接映射到四层管道。src/conversation/ 处理 L0 原始捕获,src/record/ 执行 L1 提取,src/scene/ 进行 L2 聚合,src/persona/ 构建 L3 画像。src/store/ 中的存储层在 SQLite 和 TCVDB 之上提供统一接口,sqlite-vec 0.1.7-alpha.2 负责向量相似度搜索。

插件入口为 index.ts,在 openclaw.plugin.json 中声明 pluginApi 兼容性要求 >= 2026.3.13。package.json 的 main 字段指向 ./dist/index.mjs,通过 tsdown 构建。三个 CLI 二进制随包发布:migrate-sqlite-to-tcvdb、export-tencent-vdb 和 read-local-memory,各自在 scripts/ 下有独立的 tsconfig.json。

关键依赖揭示技术选型:@ai-sdk/openai(^3.0.53)用于 LLM 通信,@node-rs/jieba(^2.0.1)用于中文分词,js-tiktoken 用于 Token 计数,zod(^4.4.3)用于 Schema 验证,undici(^8.1.0)用于 HTTP。可选依赖 opik(^1.0.0)提供可观测性集成。node-llama-cpp(^3.16.2)和 openclaw(>= 2026.3.7)在 peerDependenciesMeta 中均标记为可选。

集成接口:OpenClaw、Hermes 与配置

  • OpenClaw 集成:通过 openclaw plugins install --link . 将当前目录注册为本地插件;代码修改后重启 Gateway 即可生效
  • Hermes 集成:hermes-plugin/ 目录包含适配器;Python 客户端支持 MEMORY_TENCENTDB_GATEWAY_API_KEY 自动附加 Bearer 头
  • 网关安全:server.apiKey / TDAI_GATEWAY_API_KEY 在所有非 /health 路由启用 Bearer 鉴权,使用 crypto.timingSafeEqual 防时序攻击
  • CORS 控制:server.corsOrigins / TDAI_CORS_ORIGINS 接受显式来源列表;空列表不发送 CORS 头,"*" 保持旧版宽松行为
  • 召回预算:recall.maxCharsPerMemory 和 recall.maxTotalRecallChars(默认 0 = 不变)在注入 <relevant-memories> 前裁剪超长条目
  • Embedding 兼容性:embedding.sendDimensions(默认 true)可设为 false,适配 BGE-M3 等拒绝 dimensions 字段的固定维度模型(原会返回 HTTP 400)
  • 推理模型控制:llm.disableThinking 和 offload.disableThinking 支持 vllm、deepseek、dashscope、openai、anthropic、kimi、gemini 等策略关闭思维链

试用路径:从克隆到运行插件

  • 前置条件:Node.js >= 22.16.0、npm 或 pnpm、OpenClaw >= 2026.3.13
  • 克隆仓库:git clone https://github.com/Tencent/TencentDB-Agent-Memory.git
  • 安装依赖:npm install(postinstall 脚本会补丁 OpenClaw 工具调用消息)
  • 注册本地插件:openclaw plugins install --link .
  • 开发无需构建——Node 22.16+ 类型剥离让 OpenClaw 直接加载 .ts 文件
  • 读取已捕获记忆:node ./bin/read-local-memory.mjs 检查存储的对话和提取的各层数据
  • 运行测试:npm test 执行 vitest run;npm run test:coverage 通过 @vitest/coverage-v8 添加覆盖率

谁适合关注

适合关注

  • 基于 OpenClaw 的 Agent 部署,跨会话记忆持久化可直接降低运营 Token 成本
  • 隐私敏感或隔离网络环境,无法将对话数据发送到外部 Embedding 或 LLM API
  • 长程 Agent 工作流(50+ 连续任务),上下文累积压力降低性能
  • 中文 Agent 应用——@node-rs/jieba 分词和多语言提示词自适应是一等公民功能
  • 评估通过 node-llama-cpp 进行本地 LLM 卸载、同时需要结构化记忆的团队

可以先跳过

  • 不使用 OpenClaw 或 Hermes 作为 Agent 框架的项目——插件清单和钩子与这些运行时紧耦合
  • Node.js 低于 22.16 的环境——engines 字段和类型剥离要求是硬约束
  • 仅需简单 RAG 检索、不需要渐进分层的场景——四层管道增加了扁平存储方案所没有的复杂性
  • 需要生产级稳定性保证的团队——版本 0.3.6 且 changelog 有 Unreleased 部分表明仍在频繁变动

风险与注意事项

当前功能完整且可本地部署,但版本 0.3.6、活跃的 Unreleased 变更、alpha 级 sqlite-vec 依赖,以及对 OpenClaw/Hermes 运行时的硬耦合,带来了集成和稳定性不确定性。

  • sqlite-vec 0.1.7-alpha.2 是核心向量搜索能力的 alpha 版本依赖
  • CHANGELOG.md 的 Unreleased 部分描述了时区、disableThinking 和备份恢复变更,可能在下一个稳定标签前改变行为
  • 插件 API 要求 OpenClaw >= 2026.3.13;没有 OpenClaw 的团队无法使用主要集成路径
  • postinstall 脚本运行 scripts/openclaw-after-tool-call-messages.patch.sh,补丁 OpenClaw 运行时——对 CI/CD 环境并非无足轻重
  • L2 场景提取数据丢失 bug(#88)在 0.3.6 中修复,说明场景层在之前版本中存在可靠性问题
  • MIT 许可证附带标准免责声明——已在 LICENSE 文件中确认
  • 网关 Bearer 鉴权使用 crypto.timingSafeEqual 防止 API 密钥比较的时序侧信道攻击
  • CORS 白名单默认禁用(空列表 = 不发送 CORS 头),跨域访问需要显式启用
  • 网关启动时打印安全态势摘要,绑定非回环地址且无 apiKey 时输出 WARN
  • 无论配置时区如何,SQLite/TCVDB 中所有时间戳均以 UTC 即时存储,防止时区相关数据损坏

替代方案比较

方案适用场景代价
mem0
需要跨多个 Agent 框架(而非仅 OpenClaw/Hermes)工作的托管或自托管记忆层开源(Apache 2.0),提供托管云层
Letta(原 MemGPT)
需要操作系统级记忆管理配合 REST API,不需要四层渐进式分层模型开源,提供托管云选项
Zep
需要从对话历史中提取时序知识图谱,偏好 GraphRAG 方法而非 persona/scene 分层开源(Apache 2.0),提供云服务
LangGraph checkpointers(SQLite/Postgres)
已在使用 LangGraph,需要更简单的状态持久化而不需要专门的记忆抽象层免费,随 LangGraph 提供

这个趋势说明了什么

隔离网络企业 Agent 部署

政府、医疗和金融机构无法将对话数据发送到 OpenAI 或 Anthropic Embedding API。该插件可通过 node-llama-cpp 加载本地 LLM,配合 SQLite 存储,在隔离环境中完整运行。零外部 API 设计和 UTC 即时存储模型满足常见合规要求。

确认安全团队是否接受 sqlite-vec alpha 在生产中使用;验证 node-llama-cpp 在你的硬件上对 L1–L3 提取提示词的模型质量。

中文 Agent 应用

@node-rs/jieba 依赖和自动多语言提示词自适应(issue #38)使该插件特别适合中文 Agent 工作流,分词质量直接影响 L1 提取和 L2 场景质量。

用中文运行 50 轮对话会话,通过 read-local-memory 检查 persona.md 输出,验证提取质量是否匹配你的领域词汇。

大规模 Token 成本削减

WideSearch 上 61.38% 的 Token 降幅直接转化为推理成本节省。对于每天消耗数百万 Token 的 Agent,即使是这一降幅的一部分也足以证明集成投入的合理性。

在你的 Agent 实际工作负载上复现 WideSearch 或 SWE-bench 基准,确认 Token 节省在报告测试条件之外仍然成立。

下一步建议

安装为本地 OpenClaw 插件并运行 50 轮对话测试会话

克隆仓库,链接到 OpenClaw,运行一轮真实的多轮对话,然后使用 read-local-memory 检查 L0→L3 管道捕获了什么。将 Token 用量和召回质量与基线对比。

  1. 确认已安装 Node.js >= 22.16.0 和 OpenClaw >= 2026.3.13
  2. 执行:git clone https://github.com/Tencent/TencentDB-Agent-Memory.git && cd TencentDB-Agent-Memory && npm install
  3. 执行:openclaw plugins install --link .
  4. 启动 Gateway 并运行一轮 50 条消息的 Agent 对话会话
  5. 执行:node ./bin/read-local-memory.mjs 检查捕获的各层和 persona.md 输出
  6. 将 Token 消耗与未启用插件的相同会话进行对比

RepoDaily 判断

TencentDB Agent Memory 在 Agent 记忆领域提供了技术上有辨识度的方案——渐进式四层分层配合本地 SQLite 向量搜索和零外部 API 依赖。基准数字有说服力,MIT 许可和 TypeScript 源码降低了采用门槛,安全特性(时序安全鉴权、CORS 控制、UTC 存储)体现了生产意识。主要顾虑在于 alpha 级 sqlite-vec 依赖、与 OpenClaw 的紧耦合以及活跃的 Unreleased 变更。对于需要在无外部 API 调用下实现持久记忆的 OpenClaw 团队,值得进行一轮专项评估。

信息来源