当前位置: 首页 > article >正文

TencentDB Agent Memory 架构拆解:告别 Agent 失忆,构建四层可追溯记忆与上下文治理系统

拆解 TencentDB Agent Memory 如何用分层记忆、上下文卸载和降级检索让 Agent 留住工作现场。原文链接AI 小老六Agent 真正难用的地方往往不是它不会调用工具而是它记不住工作现场。你刚给它讲完项目背景、编码偏好、部署约束和排障 SOP换一个会话又要从头解释一次稍微复杂的开发任务跑下来搜索结果、文件内容、测试日志和报错堆满上下文模型开始抓不住重点。于是很多记忆方案会走向两个极端要么把历史尽可能塞回上下文要么把所有内容压成摘要或向量。前者贵且吵后者省但容易丢证据。TencentDB Agent Memory的价值正在于它没有把“记忆”理解成一个简单的向量库插件而是把它做成了一套本地化的 ​Agent 记忆与上下文治理系统​。它试图同时回答两个问题跨会话经验如何沉淀避免人反复教学单次长任务如何控住 Token、保住证据、维持任务进度感项目地址https://github.com/Tencent/TencentDB-Agent-Memory.git​Memory Pipeline​记忆系统首先要解决“压缩后还能不能查证”多数 Agent Memory 的第一反应是“召回”。但在真实工程里召回之前还有一个更基础的问题被召回的信息从哪里来它有没有来源抽象错了能不能回查。几类常见做法各有价值也都带着明显短板方案能解决什么主要代价全量历史回灌细节完整几乎不丢上下文Token 快速膨胀注意力被日志和噪音冲散强摘要压缩成本低上下文短摘要不可逆关键证据一旦被丢弃很难补救扁平向量库可按语义找相似经验缺少层次关系不知道用户、场景、任务之间的结构只维护 Persona能保留长期偏好和用户画像太抽象无法支撑具体问题的证据追溯TencentDB Agent Memory 的核心判断是记忆不能只有一个形态。低层要保留原始证据高层要沉淀稳定结构中间层要能把碎片事实组织成可读场景。这样 Agent 既能从宏观层面理解用户和项目又能在需要时钻回细节。这套思路可以概括为一句话压缩可以发生但压缩结果必须可逆抽象可以存在但抽象必须带着索引。图记忆压缩不是丢弃证据而是在抽象层和原始来源之间建立可回查索引。​L0-L3 Memory Stack​把“记住”拆成四种不同职责项目把长期记忆拆成 L0、L1、L2、L3 四层。它们不是简单的缓存层级而是四种不同的信息表达方式。L3 Persona 长期稳定画像用户偏好、工作方式、长期习惯 L2 Scenario 场景块项目、任务类型、流程经验、上下文集合 L1 Atom 结构化事实明确指令、偏好、历史事件、可检索片段 L0 Conversation 原始对话完整消息与工具证据必要时回L0 是证据底座。这一层记录原始 user/assistant 消息也可以写入 JSONL、SQLite 或 VectorDB。它不急着判断哪些内容更重要而是先把干净的原始材料留下来。它的存在让上层抽取和总结有了兜底如果 L1、L2、L3 的判断不够可信还能回到源消息核对。L1 是事实抽取层。它把对话中的明确偏好、指令、历史事件抽成结构化记忆。例如{content:用户偏好使用 pnpm 管理前端依赖避免使用 npm。,type:instruction,priority:80,scene_name:前端工程规范,source_message_ids:[msg_...]}这个结构里最关键的不是content而是source_message_ids。它意味着一条事实不是凭空生成的而是能追溯到具体对话来源。L2 是场景组织层。单条 L1 事实适合检索却不适合人和 Agent 长期阅读。L2 会把相关事实整理成 Markdown 场景块比如“某业务项目的开发习惯”“某类线上排障流程”“某用户的测试偏好”。这一层让碎片记忆变成可理解的上下文。L3 是稳定画像层。它生成persona.md沉淀用户长期稳定的偏好、背景和工作方式。相比 L1 的任务相关事实L3 更像 Agent 每次进入工作状态前需要先理解的“合作对象说明书”。四层叠在一起后记忆系统不再是一个大杂烩。Agent 可以先读高层结构如果缺少证据再沿着 L3/L2/L1 的索引向下查到 L0。这个过程就是渐进式披露默认给模型最有用、最少噪音的信息只在必要时暴露更细的原文。​Retrieval Placement​召回内容放哪里比召回多少更影响工程成本很多记忆系统会停在“按相似度找几段内容”这一步。TencentDB Agent Memory 更进一步关心召回到的内容应该注入到哪里。一次 Agent 会话开始前它通常会准备几类信息当前用户输入相关的 L1 记忆。稳定的 L3 Persona。L2 场景导航或场景块。记忆工具说明告诉 Agent 必要时如何继续查 L1 或 L0。这些信息被分成​动态上下文和稳定上下文​。动态部分每轮都可能变化比如针对当前任务召回出来的 L1relevant-memories以下是当前对话召回的相关记忆不代表当前任务进程仅作为参考 - [instruction] 用户偏好使用 pnpm 管理前端依赖/relevant-memories稳定部分包括 Persona、Scene Navigation、工具指南变化频率低更适合放在 system prompt 尾部。这样做有一个很现实的收益更容易命中模型厂商的 prompt cache。高频变化的信息放在用户 prompt 附近低频稳定的信息放在可缓存区域既减少重复开销也降低上下文组织的抖动。这类细节说明它不是只在做“记忆功能”而是在做“可落地的 Agent Runtime 记忆链路”。记忆质量、注入位置、缓存命中、召回成本都会影响最终体验。​Local-First Storage​SQLite、FTS5、sqlite-vec 组成可降级检索路径这套方案默认本地运行使用 ​SQLite 保存 L0/L1 元数据​配合 FTS5 全文索引和 sqlite-vec 向量表需要时也可以接 Tencent Cloud VectorDB。检索路径不是单点依赖而是分成三种策略检索策略依赖能力适用场景keywordFTS5 BM25关键词明确或没有配置 embeddingembedding向量相似度表达不完全一致但语义接近hybridFTS 向量 RRF默认综合策略兼顾精确匹配和语义召回这里最值得注意的是​降级设计​。如果没有配置 embedding系统可以直接走 FTS如果 embedding 调用失败也不会阻塞主流程SQLite L0 写入还支持先写元数据和 FTS再后台补向量避免一次agent_end被远程 embedding 服务卡住。这类设计不炫技但很关键。记忆系统一旦进入公司内网、代理环境、权限边界和模型服务波动场景失败路径会比演示环境复杂得多。没有降级能力的 Memory很难成为 Agent 平台的基础设施。图SQLite、FTS5 与向量检索组成可降级的本地优先记忆检索路径。​Context Offload​长任务真正的 Token 黑洞是工具结果跨会话记忆解决的是“下次别让我重复说”。但在单次长任务里更常见的问题是工具结果把上下文撑爆。Agent 做研发任务时经常会遇到这些情况搜索代码返回上百个候选结果。测试失败输出几千行日志。读取大文件后整段内容进入上下文。多轮工具调用后历史记录越来越像滚雪球。如果把这些内容都留在上下文里模型会被噪音拖慢如果直接摘要又会丢掉后续排障需要的证据。TencentDB Agent Memory 的短期记忆方案选择“上下文卸载”把完整结果挪到外部文件只把任务状态和必要摘要留给模型。完整工具结果 - 写入 refs/*.md 工具调用摘要 - 写入 offload JSONL 任务状态结构 - 更新 Mermaid MMD 上下文注入 - 只放 Mermaid 任务地图 需要细节时 - 按 node_id/ref 回查原文这个链路的核心是让 Agent 不必背着所有日志继续工作。它只需要知道任务走到哪、下一步是什么、证据存在哪里。图长任务把完整工具结果外置只把任务地图和证据索引留在上下文中。一个简化后的 hook 流程大致是after_tool_call └─ 收集 ToolPair ├─ 完整结果写 refs ├─ L1 总结工具调用 ├─ L1.5 判断任务边界 ├─ L2 更新 Mermaid 图 └─ L3 根据 token 压力压缩历史上下文最终注入给 Agent 的可能不是一堆日志而是一张任务地图图Context Offload 将工具结果、任务摘要与 Mermaid 任务地图分层保存按需回查证据。每个节点背后关联node_id或ref。当 Agent 需要回看某次搜索结果、某段测试输出或某个大文件片段时再按引用回查完整材料。这其实是把“上下文窗口”从原始记录容器改造成任务状态面板。模型看到的是结构化进展而不是未经整理的工具噪声。​L1.5 Boundary Detector​任务图能不能复用取决于边界判断短期上下文卸载里有一个容易被忽视的点工具调用并不天然知道自己属于哪个任务。用户可能连续提出帮我修这个 bug 顺便看下测试为什么慢 再把刚才那个实现整理成文档这些动作可能属于同一个工作流也可能已经切到了新任务。如果所有工具调用都塞进同一个 Mermaid 文件任务地图会混乱如果每个动作都新建一张图又会打断上下文延续。L1.5 的职责就是判断任务边界当前工具调用应该复用 active MMD还是开启新的任务图。它并不负责长期记忆沉淀却直接影响短期任务态势是否可靠。这说明上下文治理不只是“少放点内容”。它还需要识别任务阶段、任务归属和状态迁移。否则再漂亮的 Mermaid 图也可能变成误导 Agent 的噪声。​Engineering Trade-offs​这套架构强在完整也复杂在完整TencentDB Agent Memory 的设计很完整但完整也意味着系统复杂度上升。几个关键模块的收益和风险可以拆开看模块工程收益可能的坑L0-L3 分层结构清晰压缩后仍可追溯Pipeline 长调试和观测门槛更高LLM 抽取 L1/L2/L3语义质量比纯规则更强模型稳定性会影响记忆质量JSONL DB 双写兼顾原始证据、索引和检索一致性边界需要设计清楚offload Mermaid节省 Token任务态势更清晰Hook 依赖强patch 或生命周期失效会影响链路多宿主抽象OpenClaw、Hermes、Gateway 等场景可复用适配层、权限、生命周期管理更复杂L2/L3 直接由 LLM 读写 Markdown 文件灵活性很高但也要求 prompt、沙箱和后处理足够稳。项目里已经有 workspace 限制、备份、软删除清理等机制如果要进入更大规模的生产场景还可以继续补场景块 schema 校验、Persona diff 审核、异常回滚策略。另一个需要评估的是成本。L1 抽取 prompt、去重判断、Persona 更新频率、召回阈值都会影响系统资源消耗。即便很多动作可以异步执行也需要按业务场景调参不是所有记忆都值得长期保存不是所有会话都需要高频抽取也不是所有任务都需要向量召回。​Platform Implication​内部 Agent 记忆不应从“向量库中心化”开始如果把这套思路迁移到企业内部 Agent 平台有三个启发比较直接。第一向量库适合做候选召回不适合承载全部记忆结构。内部研发 Agent 至少需要区分原文证据、结构化事实、场景上下文和长期画像。只有一个向量库会把“能搜到相似内容”和“真正理解工作关系”混在一起。第二压缩必须带回查链路。很多 Agent 失败不是因为没有总结而是总结丢了关键证据。更可靠的链路应该是Persona / Scene / Mermaid 提供高层结构索引负责定位原文负责核验。第三短期上下文治理和长期记忆同样重要。真实研发任务里单次 session 的工具日志爆炸比跨会话遗忘更频繁。把工具结果外置把任务状态符号化往往比盲目扩大 context window 更有性价比。结语Agent Memory 的边界决定 Agent 能不能长期协作TencentDB Agent Memory 最有价值的地方不是用了 SQLite、向量库、Mermaid 或 LLM 抽取这些技术单独看都不新。它真正值得讨论的是架构取舍原始证据要保留 结构事实要抽取 场景上下文要组织 长期画像要稳定 短期日志要卸载 压缩结果要能回查 失败路径要能降级这套设计把 Agent Memory 从“记住几段历史”推进到“管理工作现场”。它既处理跨会话经验沉淀也处理单次任务的上下文爆炸既强调高层抽象也保留低层证据既考虑召回质量也考虑缓存、降级和工程稳定性。真正落到内部研发 Agent 上还需要回答一个更细的问题哪些信息应该进入用户级长期记忆哪些应该进入项目级共享记忆哪些只应该停留在单次任务的短期地图里。这个边界一旦清晰Agent 才有可能从一次性问答工具变成懂项目、懂团队习惯、还能自己翻工作笔记的协作者。

相关文章:

TencentDB Agent Memory 架构拆解:告别 Agent 失忆,构建四层可追溯记忆与上下文治理系统

拆解 TencentDB Agent Memory 如何用分层记忆、上下文卸载和降级检索,让 Agent 留住工作现场。 原文链接:AI 小老六 Agent 真正难用的地方,往往不是它不会调用工具,而是它记不住工作现场。 你刚给它讲完项目背景、编码偏好、部署…...

如何在10分钟内搭建自己的游戏串流服务器:Sunshine开源游戏串流完整教程

如何在10分钟内搭建自己的游戏串流服务器:Sunshine开源游戏串流完整教程 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想在任何设备上玩PC游戏吗?Sunshin…...

RK3588开发板Debian系统从零配置到实战:安全加固、Docker部署与性能调优

1. 项目概述:从零上手TL3588的Debian系统最近在折腾一块基于瑞芯微RK3588芯片的开发板,型号是TL3588。这板子性能是真不错,八核CPU加上强大的NPU,拿来做边缘计算、多媒体网关或者轻量级服务器都挺合适。但刚拿到手,面对…...

终极窗口分辨率自定义指南:SRWE如何突破显示限制

终极窗口分辨率自定义指南:SRWE如何突破显示限制 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 在数字创作和游戏体验的领域中,窗口分辨率自定义工具SRWE(Simple Runtime Wi…...

在Windows上直接安装APK的完整指南:告别模拟器时代

在Windows上直接安装APK的完整指南:告别模拟器时代 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想过,在Windows电脑上直接运行Andro…...

自托管MCP服务器模板:快速构建AI智能体私有工具箱

1. 项目概述:一个为AI智能体赋能的“工具箱”模板最近在折腾AI智能体(Agent)开发的朋友,可能都听说过MCP(Model Context Protocol)这个概念。简单来说,MCP就像是为AI大模型准备的一套标准化的“…...

QMCDump终极指南:快速免费解锁QQ音乐加密文件,重获数字音乐自由 [特殊字符]

QMCDump终极指南:快速免费解锁QQ音乐加密文件,重获数字音乐自由 🎵 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.co…...

基于OpenClaw与Railway的自动化部署实践:从原理到实战

1. 项目概述:一个基于OpenClaw的铁路系统自动化工具最近在GitHub上闲逛,发现了一个挺有意思的项目,叫Mattslayga/openclaw-railway。光看这个名字,可能有点摸不着头脑,又是“OpenClaw”又是“Railway”的。简单来说&am…...

基于STM32F401与TM8211的I2S音频播放系统:从WAV解析到硬件驱动全解析

1. 硬件选型与系统架构设计 第一次接触音频项目时,我被各种专业术语搞得晕头转向。后来发现,用"音乐快递员"的比喻就能轻松理解整个系统:STM32F401是快递分拣中心,I2S是运送音乐包裹的高速公路,TM8211则是把…...

新手开发者第一步,在Taotoken平台获取API Key并完成基础验证

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 新手开发者第一步,在Taotoken平台获取API Key并完成基础验证 对于希望快速体验和接入大模型能力的开发者而言&#xff…...

3个步骤让Photoshop拥抱AVIF时代:免费插件解锁下一代图像格式

3个步骤让Photoshop拥抱AVIF时代:免费插件解锁下一代图像格式 【免费下载链接】avif-format An AV1 Image (AVIF) file format plug-in for Adobe Photoshop 项目地址: https://gitcode.com/gh_mirrors/avi/avif-format 还在为Photoshop无法处理AVIF格式而烦…...

手把手教你用kafka-storage.sh修复Kafka KRaft模式启动报错(附UUID生成与格式化全流程)

手把手教你用kafka-storage.sh修复Kafka KRaft模式启动报错(附UUID生成与格式化全流程) 当Kafka集群从ZooKeeper模式迁移到KRaft模式时,技术人员常会遇到因元数据问题导致的启动失败。本文将深入解析kafka-storage.sh工具的核心功能&#xff…...

2026年最新实测 目前哪款英语教学软件功能更全面好用?

行业深度痛点:功能冗余≠好用,核心场景适配才是关键我们团队做了5年英语教学技术测评,每年都会测市面上主流的教学工具,2026年我们抽测了12款覆盖公立校、教培机构、个人使用的英语教学软件,发现行业普遍存在一个共性问…...

浏览器标签页管理新思路:基于服务化架构的TabStack-OpenClaw实践

1. 项目概述与核心价值最近在整理浏览器标签页时,我又一次陷入了那种熟悉的焦虑:几十个标签页像一堵墙一样堆在浏览器顶部,每个都代表着一个“稍后阅读”的承诺,但最终它们都变成了数字垃圾。我尝试过各种标签页管理扩展&#xff…...

别再写一堆CASE WHEN了!PostgreSQL里COALESCE和NULLIF这两个函数,帮你把SQL写得又短又稳

告别冗长SQL:用PostgreSQL的COALESCE和NULLIF重构条件逻辑 在数据处理的世界里,SQL就像是我们与数据库对话的语言。但你是否经常遇到这样的情况:为了处理各种空值和边界条件,你的SQL查询变成了一个由无数CASE WHEN语句组成的庞然大…...

自托管小说创作平台部署指南:从Docker到API集成

1. 项目概述:一个为小说创作者量身打造的全能工具箱最近在折腾一个个人项目,想搭建一个私有的、功能全面的小说创作与管理平台。作为一个深度文字爱好者兼技术从业者,我受够了在各种零散的文档、表格和笔记软件之间来回切换,也厌倦…...

手把手教你用STM32CubeMX配置PWM驱动DRV8833模块,轻松搞定智能小车调速

基于STM32CubeMX的DRV8833电机驱动开发实战 在嵌入式开发领域,电机控制一直是热门且实用的技术方向。无论是智能小车、机器人还是工业自动化设备,精准的电机调速都是核心需求。传统开发方式需要手动配置大量寄存器,不仅耗时耗力,还…...

工业多串口通信实战:基于EM9170的8串口方案设计与优化

1. 项目概述:为什么8串口在今天依然重要?在物联网、工业自动化、智能楼宇这些领域里摸爬滚打久了,你会发现一个有趣的现象:那些看似“古老”的通信接口,生命力往往比我们想象的要顽强得多。串口,或者说RS-2…...

收藏!小白程序员必看:读懂AI岗位JD,精准投递不陪跑

本文针对AI岗位认知模糊、JD理解困难等问题,为读者提供六步解析法,包括明确岗位性质、了解公司类型、评估薪资水平、硬性条件筛选、分析岗位职责和技能匹配。通过这些步骤,帮助读者精准定位适合自己的AI岗位,避免盲目投递。同时&a…...

如何快速解决AKShare股票数据获取失败:完整的数据采集优化指南

如何快速解决AKShare股票数据获取失败:完整的数据采集优化指南 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirror…...

一键封装成EXE!让Windows命令行像Linux一样直接敲‘binwalk’的懒人方案

一键封装成EXE!让Windows命令行像Linux一样直接敲‘binwalk’的懒人方案 每次打开命令行都要先cd到Python的Scripts目录才能使用binwalk,这种操作对于效率至上的开发者来说简直是时间杀手。本文将带你用PyInstaller打造一个开箱即用的binwalk.exe&#…...

长期使用Taotoken Token Plan套餐对项目开发成本的实际影响

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken Token Plan套餐对项目开发成本的实际影响 1. 从按需付费到固定预算的转变 在项目开发中引入大模型能力&#xf…...

个人开发者对比使用Taotoken前后在模型API管理与调用上的效率变化

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 个人开发者使用 Taotoken 前后在模型 API 管理与调用上的效率变化 作为一名个人开发者,在探索和应用大模型能力时&…...

Excel高手私藏技巧:用LOOKUP和FIND函数自动归类文本,快速整理海量调研问卷和评论关键词

Excel文本归类实战:用LOOKUPFIND构建智能关键词标签系统 当面对数千条开放式问卷反馈时,市场分析师小张正在为如何高效归类"用户最关注的手机功能"发愁。传统人工阅读标注不仅耗时,还容易因主观判断产生偏差。而Excel中一组被低估的…...

用Arduino Nano和MAX7219模块,5分钟搞定一个8x8 LED点阵显示(附完整代码)

用Arduino Nano和MAX7219模块快速打造8x8 LED点阵显示系统 周末整理零件箱时翻出一片落灰的MAX7219模块和Arduino Nano,突然想起可以给工作室做个实时温度显示器。这个组合堪称电子爱好者的"乐高积木"——不需要复杂的电路设计,短短几行代码就…...

数字图像处理入门:像素、通道与卷积操作的核心原理与实践

1. 项目概述:为什么“基本知识”是数字图像处理的基石刚入行做图像处理那会儿,我犯过一个典型的“新手错误”:拿到一张图,二话不说就开始调OpenCV的函数,什么高斯模糊、边缘检测、二值化,一顿操作猛如虎&am…...

游戏大世界别再只盯着算法了!聊聊Houdini PCG管线搭建中那些让人头大的‘流程债’

游戏大世界开发中的Houdini PCG管线:如何规避"流程债"陷阱 当技术美术团队第一次将Houdini引入游戏大世界项目时,往往会被其强大的程序化生成能力所震撼——地形自动生成、植被智能分布、建筑群快速布局,这些传统上需要数周手工完成…...

Java String.split() 方法陷阱:为什么你应该始终使用 split(regex, -1)

核心问题 Java 的 String.split(regex) 默认等价于 split(regex, 0),会静默丢弃尾部的所有空字符串。这个设计在结构化数据处理中是灾难性的。 "A,B,C,".split(","); // ["A", "B", "C"] 长度 3 ❌ 尾部…...

Windows 11系统优化终极指南:免费提升性能与隐私保护的完整方案

Windows 11系统优化终极指南:免费提升性能与隐私保护的完整方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutt…...

RIS辅助无人机通信的能效优化与深度强化学习应用

1. 项目概述:RIS辅助无人机通信的能效革命在应急救灾、偏远地区覆盖等场景中,无人机(UAV)通信系统常面临两大核心挑战:一是复杂地形导致的信号遮挡问题,二是无人机有限的续航能力制约了长期作业。传统解决方案如增加中继节点会引入…...