← 返回 Tony's Lab

TencentDB Agent Memory 源码拆解

腾讯云开源的「团队级 Agent 记忆中枢」:把对话、文档、代码沉淀成四种可复用记忆资产,让下一个 Agent 直接读档开工。
⭐ 17.5k · 4 个月 MIT TypeScript v2.0.0 · 2026-08-03 4 资产 · 4 组件
发布于 2026-08-08

01一句话结论

这是一个把 Agent 经验资产化 的完整方案:对话、文档、代码不再是流水账,而是变成带版本、权限、用途的可治理资产,在团队里流转、配装。项目 2026 年 4 月才开源,4 个月冲到 17.5k stars,是 Agent Memory 赛道里完成度第一梯队的参考实现。

17.5k
GitHub Stars
4 个月
从零到爆火
4 种
记忆资产
+59%
PersonaMem 相对提升

02记忆不是平铺记录,是逐层蒸馏

对话先原样存为 L0,再由异步 Pipeline 提炼成更小、更稳、更长期的知识。平时只注入 L2/L3 快速进入语境,需要具体事实时再通过 BM25 + 向量检索 + RRF 混合下钻到 L1/L0。

L3
Persona · 长期画像
稳定模式、高层认知——"Jay 是产品向用户,偏好正式沟通"
▲ 归纳
L2
Scenario · 场景知识块
围绕项目/场景组织——"支付项目"的知识块
▲ 归纳
L1
Atom · 原子记忆
事实、偏好、约束、事件——可精确召回的最小单位
▲ 提取
L0
Conversation · 原始对话
一字不改的完整上下文,用于核对原话、时间、来源

03具体例子:你说的一句话,被拆成什么

假设你对 Agent 说了一句很普通的话:

"以后回答别用表情包了,正式点。另外我住深圳南山,昨天把支付模块重构上线了。"

它先作为 L0 原样落盘,然后后台提取管线(源码 l1-extraction.ts 里写死了三大类型和打分规则)把它拆成这样:

你说的内容提取结果类型优先级打分
"以后回答别用表情包""用户要求 AI 以后回答时……"instruction 全局指令90–100 → 进长期画像
"我住深圳南山""用户(Jay)居住在深圳南山"persona 个性80–100(住所=核心特质)
"昨天把支付模块重构上线""用户(Jay)于 [时间] 完成支付模块重构并上线"episodic 事件80–100

而"这次帮我翻译一下"这种一次性请求,提取 prompt 明确要求 宁缺毋滥、直接丢弃——它只留值得跨会话复用的信息。

04四种记忆资产

🧠
Chat Memory
记住人和事:偏好、事实、决策、交互历史。每个 Agent 创建时自动获得独立记忆,不用重新自我介绍。
⚡
Skill
可执行经验:排障、Review、上线检查。带版本/资源文件/触发边界/执行步骤/验证规则,练会一次全队可用。
📖
LLM-Wiki
文档变结构化页面 + 链接图谱(灵感来自 Karpathy 的 LLM 知识库),Agent 先看地图再开工。
🔗
CodeGraph
代码符号/文件/调用关系/影响路径索引。不只告诉"代码在这",还告诉"改了影响谁"。

05架构:四个组件各管一段

MemoryCore:8420
记忆与元数据核心
  • L0–L3 存储与提取管线
  • SQLite + sqlite-vec(本地优先)或腾讯云向量库
  • 无 Embedding 也能用 BM25 召回
  • User/Team/Agent/Skill 资产管理 + ACL
MemoryProxy:8096
透明 LLM 请求代理
  • Claude Code / CodeBuddy 零改动接入
  • 首轮弹表单选 team→agent→task
  • 每轮注入记忆/Skill/知识到 system prompt
  • 限流、计费、Opik/Langfuse 观测
MemoryPanel:8125
人工操作台(Hub)
  • 建 Team/Agent、审核/分享资产
  • Agent Loadout 配装
  • Wiki/CodeGraph 工坊
  • System Admin + 团队 Admin/Member 双角色
Knowledge:8421
Wiki + CodeGraph 引擎
  • LLM 抽取结构化页面 + FTS5 检索
  • CodeGraph 复用 @colbymchenry/codegraph
  • /v3/tools/list + call 按需调用
  • 附带 MCP stdio 适配器

部署上 start-all.sh 一键拉起三件套;Docker Hub agentmemory/* 镜像公开可拉,多架构(amd64 + arm64)。

06实拍:Proxy 往 system prompt 里塞了什么

MemoryProxy 转发的请求会拼上几个真实模板块:<cloud_skills>(相关 Skill 摘要)、<skill_tools>(curl 配方)、<knowledge_tools>(知识库工具)、<tdai_memory_tools>(L0/L1 按需召回)。<knowledge_tools> 里连 curl 示例和硬性约定都写好了:

curl -sSk -X POST <url>/tools/call \
  -H 'content-type: application/json' \
  -H 'x-tdai-service-id: <租户id>' \
  -d '{"knowledge_id":"<知识id>","tool_name":"<name>","params":{...}}'

# 硬性约定(原样):
# · 重构规划 = search → callers → impact
# · 信任它的返回,不要再用 grep 二次核对
# · 找文件不要用 files 两步走,一步 explore 即可

这是把工程实践直接焊死在 prompt 里——模型不用重新摸索"怎么用知识库",省 token 也省时间。

07Loadout:先招人,再配装备

同一个团队里,不同 Agent 绑定不同资产,少给噪音:

🔭 Scout    → 用户访谈 Chat Memory + 市场研究 Wiki + 竞品分析 Skill
🛠 Builder  → 产品 Wiki + 项目 CodeGraph + Feature Delivery Skill
🧪 Reviewer → 历史事故 Chat Memory + 项目 CodeGraph + Release Checklist Skill

可见性四级:新资产默认 private(Owner 独享,团队管理员都看不到),分享是显式动作,不是默认泄漏:

可见性语义例子
private只有 Owner 可读个人草稿记忆
team团队成员可读"架构 Wiki 给所有开发 Agent"
restrictedUser/Role/Agent ACL 精确授权只给特定成员/角色
agent同团队定向装配"发布 Skill 只给 Release Agent"

08设计亮点

值得抄资产化而非日志化
记忆是带 Owner/版本/状态/使用次数的资产,和普通 RAG 是两代产品。
值得抄注入与工具分离
L2/L3 进 system prompt,L0/L1/Wiki/CodeGraph 走工具按需查,不占上下文、不破坏 KV cache。
值得抄默认私有,显式分享
分享是明确动作,从机制上避免隐私默认泄漏。
值得抄冷启动=读档
直接导入已有代码库/文档/对话 session,把已付过的学习成本变成存档。
值得抄local-first
SQLite + sqlite-vec + BM25,没有 Embedding 也能跑,上手门槛低。
值得抄管线有暖机
L1 提取从 1 轮触发开始翻倍(1→2→4→8),空闲 600 秒也触发,省钱又及时。

09局限与槽点

槽点自称 Beta
v2.0.0 刚发布,Git 历史全 squash,commit 信息很水("Update package.json")。
槽点生态绑定
资产号称跨框架,实际接入面只有 OpenClaw / Hermes / Claude Code / CodeBuddy。
槽点CodeGraph 依赖第三方
复用 colbymchenry/codegraph,且只支持公开 HTTPS 仓库,私有仓库/SSH 还没完善。
槽点Benchmark 单薄
公开数据只有 PersonaMem 一项(48%→76%),且是自家口径。
槽点给腾讯云导流
tcvdb 后端、COS 存储、TokenHub 上游……local 模式能绕开,但功能打折。
槽点对个人偏重
四服务 + Docker + 双份 LLM 配置,个人轻量使用成本偏高。

10结论

一句话:理念(经验资产化)比实现更值得抄

适合:想给 Claude Code / OpenClaw 配团队级共享记忆的团队;研究 Agent 记忆架构(分层、注入 vs 工具、Loadout)的人——这是很好的参考实现。

不适合:只需要个人轻量记忆的人;完全不想沾腾讯云生态的人。

它更像"腾讯云全家桶的记忆层样板间"——产品定位和工程完成度是第一梯队,但独立使用时请掂量依赖成本。

11在 OpenClaw 里怎么用

OpenClaw 是它的官方适配对象——仓库自带 memory-tencentdb-client 插件。架构是"一个常驻服务 + 一个轻插件":插件只做捕获/召回/工具,真正的 L0→L3 提取管线跑在独立的 MemoryCore Gateway(:8420,SQLite 落盘)里。

你的 OpenClaw
  └─ memory-tencentdb-client 插件
       ├─ 每轮对话结束 → 写 L0(原始对话)
       ├─ 构建 prompt 前 → 搜 L1 + 注入 L2 场景/L3 画像
       └─ 工具:tdai_memory_search / tdai_conversation_search / tdai_read_cos
            │ HTTP /v3
            ▼
   MemoryCore Gateway :8420(独立进程)

安装步骤(前置:Node ≥ 22.16 + 一个 OpenAI-compatible LLM API):

git clone https://github.com/TencentCloud/TencentDB-Agent-Memory.git
cd TencentDB-Agent-Memory/MemoryCore
npm install && npm run build

# 起 Gateway(独立进程,别关)
export TDAI_GATEWAY_CONFIG="$PWD/tdai-gateway.standalone.yaml"
export TDAI_LLM_API_KEY="***"
export TDAI_LLM_BASE_URL="https://api.openai.com/v1"
export TDAI_LLM_MODEL="gpt-4o-mini"
node --import tsx src/gateway/server.ts

# 另开终端:一键装插件(自动 build + install + 写配置)
bash scripts/install-openclaw-plugin.sh

# 重启生效
openclaw gateway restart

装完自动占 plugins.slots.memory 槽位,之后每轮对话自动沉淀、新对话自动召回注入。

两个坑(源码文档明说):

坑说明
版本门配置里 hooks.allowPromptInjection / allowConversationAccess 字段需要 OpenClaw ≥ 2026.4.24,老版本带着会启动失败
槽位冲突它占 slots.memory,若已挂别的 memory 插件会打架,只能二选一
值不值得装:单个 Agent 个人用不划算(内置记忆够用,还多一个常驻进程 + LLM 提取费);多 Agent / 多机器共享经验才值得,那是它的主场。

12多机共享:一台中心 + N 台接入

多机共享的核心是中心化部署 + 分布式接入:记忆只存一份(中心服务器),各台机器上的 Agent 都是客户端——插件/代理把对话推上去、把记忆拉下来。机器坏了数据不丢,换机器接着用。

┌─ 中心服务器 ─────────────────────────────┐
│  MemoryCore :8420    ← 记忆中心,L0-L3 全在这 │
│  MemoryHub  :8125    ← 管理台:Team/Agent/资产 │
│  MemoryKnowledge :8421 ← Wiki/CodeGraph 引擎   │
│  Redis / Mongo(service 模式)              │
└───────────────────────────────────────────┘
        ▲  HTTP /v3(公网或 VPN)
   ┌────┼────────┬────────┐
 机器A         机器B       机器C
 OpenClaw      Claude Code  CodeBuddy
 +插件/server模式 +MemoryProxy +MemoryProxy
资产多机共享的例子
Chat Memory机器 A 聊出的"别再重构 auth 模块"沉淀为中心记忆 → 机器 B 同团队 Agent 自动召回注入,不用人转述
Skill机器 A 跑通的"登录态排查 SOP" → 审核发布为 team 资产 → 机器 B/C 的 Agent 直接配装
Wiki文档只在中心导入一次,所有机器的 Agent 按需查询,不用每台传一份
CodeGraph代码库在中心索引一次,任何机器改代码前都能做 impact analysis

共享但不串台:三层隔离

每台机器上的 OpenClaw 装插件用 server 模式(agentId 每台填自己的,teamId 填同一个):

MEMORY_INSTALL_MODE=server \
  TDAI_MEMORY_ENDPOINT="https://memory.你的域名.com" \
  TDAI_MEMORY_API_KEY="***" \
  TDAI_MEMORY_INSTANCE_ID="<实例id>" \
  TDAI_MEMORY_TEAM_ID="team-tiny-inc" \
  TDAI_MEMORY_AGENT_ID="agent-builder" \
  TDAI_MEMORY_USER_ID="user-后端" \
  bash scripts/install-openclaw-plugin.sh

故事线:3 人小团队,一台云服务器。第一天起三件套、面板建 Team;后端在机器 A 让 Builder 修 bug 并导入代码库;晚上管线自动提炼 L1 记忆 + Skill 草稿;第二天早上后端审核发布 Skill;测试在机器 B 让 Reviewer 干活,自动带上相关记忆 + Skill + CodeGraph 工具,第一次干却像老手。谁都不用重新教,经验滚雪球。

代价清单:一台常驻服务器(Core+Hub+Knowledge+Redis);LLM 花费翻倍(后台提取还要调 LLM);对话原文(L0)全上云——private 保护的是 Agent 间不可见,不是服务器管理员不可见;Beta 期要跟进升级。