作者:小创 的架构,发现它和 OpenCode、Hermes 可以这样组合
上下文爆炸,是所有长程 Agent 的噩梦。
跑了 50 个任务之后,Token 消耗轻轻松松破千万,Agent 开始出现「失忆」症状——前面刚记住的偏好,后面完全不认识了。传统的解法是把历史全部塞进向量数据库,但扁平的向量堆砌召回效果差,而且「压缩即丢失」,调试起来跟开盲盒一样。
腾讯开源的 TencentDB Agent Memory 给出了一条不同的路:分层记忆 + 符号化压缩,Token 消耗降低 61%,通过率相对提升 51%。今天小创把它的架构拆透,聊一聊和 OpenCode、Hermes 组合落地的可能性。
Agent Memory 的设计哲学围绕两个关键词:记忆分层 和 符号化记忆。
传统记忆系统把数据切片后平铺成向量,召回时就像在一堆毫无关联的便利贴里找线索。Agent Memory 认为——不管是长期知识、短期任务还是未来经验,记忆都不应该平铺,生成和召回都必须有层次。
它的分层结构长这样:
| 层级 | 名称 | 内容 | 用途 |
|---|---|---|---|
| L0 | Conversation | 原始对话记录 | 需要考证细节时回溯 |
| L1 | Atom | 结构化事实片段 | 需要精确事实时召回 |
| L2 | Scenario | 场景块(Markdown) | 高密度理解用户当前场景 |
| L3 | Persona | 用户画像 | 把握长期偏好和习惯 |
关键是:每一条信息都可以完整溯源。L3 的 Persona 可以追到对应的 L2 Scenario → L1 Atom → L0 Conversation。不存在「不可逆的压缩」。
长程任务中最消耗 Token 的,是繁杂的过程日志(搜索结果、代码、报错)。Agent Memory 提出了符号化记忆:
refs/*.md)node_id)node_id 找回完整原文降 Token 效果是实打实的:
| Benchmark | 原通过率 | 加插件后 | 变化 | 原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 评测是把多个任务拼接到同一个 Session 中连续执行,SWE-bench 每个 Session 连续执行 50 个任务,模拟真实长程 Agent 的上下文累积压力。
OpenCode 是一个代码智能体,每次新项目都要重新解释:
- 项目结构是怎样的
- 输出格式偏好(PR 规范、commit message 风格)
- 常用的技术栈和工具
接入 Agent Memory 后,这些信息会被逐轮沉淀,最终形成一个 L3 Persona。下次开新项目,Agent 直接从记忆里读你的偏好,不需要重新解释。
# OpenClaw 接入方式
openclaw plugins install @tencentdb-agent-memory/memory-tencentdb
openclaw gateway restart
// ~/.openclaw/openclaw.json
{
"memory-tencentdb": {
"enabled": true
}
}
零配置,开箱即用。默认用本地 SQLite + sqlite-vec 后端。
Hermes 本身是一个多功能的 AI Agent 网关,接入 Agent Memory 后能解决长程任务的「失忆」问题。
比如:跑一个需要 50 步的代码重构任务,中途断了。传统 Agent 需要从头开始;有 Agent Memory 之后,Agent 可以从上次中断的地方继续,并且理解「之前为什么这样做」。
# Hermes Docker 模式
docker build -f Dockerfile.hermes -t hermes-memory .
docker run -d \
--name hermes-memory \
--restart unless-stopped \
-p 8420:8420 \
-e MODEL_API_KEY="***" \
-e MODEL_BASE_URL="https://api.lkeap.cloud.tencent.com/v1" \
-e MODEL_NAME="deepseek-v3.2" \
-e MODEL_PROVIDER="custom" \
-v hermes_data:/opt/data \
hermes-memory
镜像内置腾讯云 DeepSeek-V3.2 默认值,使用该模型时
MODEL_BASE_URL/MODEL_NAME/MODEL_PROVIDER都可以省略。
| 记忆层级 | 在 OpenCode/Hermes 中的作用 |
|---|---|
| L3 Persona | 理解「你是谁,你习惯怎么工作」 |
| L2 Scenario | 理解「当前在做什么项目,用什么技术栈」 |
| L1 Atom | 召回具体的技术细节和历史决策 |
| Mermaid 画布 | 长任务中实时跟踪进度,中断后可恢复 |
本质区别:没有 Agent Memory 的 Agent,每次对话都是「陌生人」;有了之后,每次对话是「认识你的助手」。
这个问题官方文档没有给具体的配置表,但小创根据架构做了推算,先说结论:
| 组件 | 配置 | 说明 |
|---|---|---|
| Gateway(Node 服务) | 1核 / 1GB | 无状态 HTTP sidecar,很轻 |
| SQLite 本地存储 | 5-10GB SSD | L0-L3 语义文件 + sqlite-vec 向量 |
| Node 版本 | >= 22.16 | 硬性要求 |
| 内存余量 | 建议 2GB+ | LLM 调用时 Embedding 模型会吃内存 |
| 组件 | 配置 | 说明 |
|---|---|---|
| Gateway | 2-4核 / 2-4GB | 并发多个 Agent 请求时需要 |
| 向量数据库(可选) | 腾讯云 VDB | 如用远程向量库,本地压力更小 |
| Embedding 服务 | 独立调用 | OpenAI 兼容 API,或腾讯云 bge-large-zh |
| LLM 服务 | 独立调用 | 可以是 OpenAI / DeepSeek / 腾讯云等 |
| 存储 | 50GB+ SSD | 长程会话日志会积累,建议定期归档 |
memory-tencentdb-ctl.sh)127.0.0.1:8420,仅本地访问http://xxx-vdb.tencentclb.com:8100这是小创觉得 Agent Memory 最有价值的设计细节之一——记忆不是黑盒向量。
传统的记忆系统:召回错了,只能看到一串向量分数,不知道哪里出了问题。
Agent Memory 的调试路径:
L3 Persona.md → L2 Scenario.md → L1 Atom/*.jsonl → L0 refs/*.md
所有中间产物都是可读文件:
- L2 Scenario 是 Markdown,直接打开检查
- L3 Persona 存放在 persona.md,可以追溯到对应的 Scenario
- 短期任务画布是 Mermaid,人能看,Agent 也能读
- 原文、摘要、node_id 之间有 result_ref 关联
这些分层记忆产物都存放在
~/.openclaw/memory-tdai/下,可以直接打开目录逐层查看。
这对开发者来说意味着:出了问题不用靠「直觉」猜,直接翻文件定位。
很多人会问:既然 OpenCode 和 Hermes 本身已经有 Agent 能力,Agent Memory 的价值在哪里?
| 对比维度 | OpenCode / Hermes | Agent Memory |
|---|---|---|
| 定位 | Agent 执行框架 | 记忆与上下文管理层 |
| 解决的问题 | 「怎么做」 | 「记得什么、怎么记、怎么召回」 |
| 上下文处理 | 长程对话时 Token 持续膨胀 | 分层卸载 + 符号压缩 |
| 记忆能力 | 无(每次都是新对话) | L0-L3 分层 + 可溯源 |
| 适用场景 | 单次任务执行 | 长程、多会话、项目级协作 |
简单说:OpenCode/Hermes 决定 Agent 做什么,Agent Memory 决定 Agent 记住什么。两者是互补关系,不是替代关系。
如果你是 OpenClaw 用户,直接装插件,零配置体验:
openclaw plugins install @tencentdb-agent-memory/memory-tencentdb
openclaw gateway restart
默认 SQLite 后端,不需要额外基础设施。
如果你用 Hermes,希望记忆跨 session 持久化:
# 构建带记忆的 Hermes 镜像
docker build -f Dockerfile.hermes -t hermes-memory .
# 启动,记得挂载数据卷
docker run -d \
--name hermes-memory \
--restart unless-stopped \
-p 8420:8420 \
-e MODEL_API_KEY="你的KEY" \
-v hermes_data:/opt/data \
hermes-memory
# 启用 hermes memory provider
memory-tencentdb-ctl --hermes enable-hermes-memory
如果用户量上去,SQLite 向量召回性能不够,可以切换到腾讯云 VDB:
memory-tencentdb-ctl config vdb \
--url "http://xxx-vdb.tencentclb.com:8100" \
--api-key "YOUR-VDB-API-KEY" \
--database "openclaw_memory" \
--embedding-model "bge-large-zh" \
--restart
TencentDB Agent Memory 解决的不是「Agent 怎么干活」的问题,而是「Agent 怎么记住干活的方式」的问题。
这对长程任务、多会话协作、项目级上下文管理来说,是本质性的提升。结合 OpenCode 的代码执行能力和 Hermes 的多场景调度能力,三者组合能形成一个有记忆、能进化、懂你习惯的智能体系统。
现在还处于早期阶段(Roadmap 还有 Skill 自动生成、可视化调试面板),但核心架构已经跑通。如果你也在做 Agent 相关的事情,值得关注。
你在用 Agent Memory 吗?或者对多 Agent 协作有什么想法?评论区聊聊。
分层记忆这个设计思路很清晰
自己改写比拿来主义靠谱
省了不少时间
原来可以这样用
💬 评论区