更多文章

AI 与开发者相关深度内容

Agent记忆工具开发团队选型指南

Gartner 在 2024 年的一份企业 AI 风险报告中指出,到 2025 年将有超过 30% 的生成式 AI 事故与"非预期记忆泄露或记忆污染"直接相关。斯坦福 Human-Centered AI 实验室 2023 年的研究进一步显示,在 17 个主流开源 Agent 框架中,仅 2 个默认启用了记忆读写权限隔离,其余全部以"全局可写"模式运行。OWASP 在 2025 年更新的 LLM 应用十大风险中,也将"记忆投毒(Memory Poisoning)"单列为一类新兴威胁。

更讽刺的是,大多数团队在选 Agent 记忆工具时,关心的只有"召回准不准""接入快不快",没人问"它怎么防止错误记忆反向污染决策"。本文不聊虚的概念,只基于 TencentDB Agent Memory 的实战架构、2024–2025 年最新的框架对比研究(Mem0、Zep/Graphiti、Letta、A-MEM、MemOS 等),以及一线团队的落地经验,讲清楚一套能落地的工程选型与实施路径。

二、先把两个词掰扯清楚:记忆与上下文

大多数人把"记忆"和"上下文"当成一回事,这是后续所有架构错误的起点。上下文(Context),是指模型在单次推理时直接看到的 token 窗口内容,其核心特点是短暂、随会话消亡、受窗口长度硬限制,主要解决了"这一次回答需要什么"的问题。 记忆(Memory),是指跨会话持久化、可检索、可演化的外部存储状态,其核心特点是长期、可分层、需独立治理,主要解决了"Agent 如何在不同时间点保持连贯认知"的问题。

两者回答的根本问题不同:上下文回答"我现在该看什么",记忆回答"我过去学会了什么、应该相信什么"。一个常见的错误是把对话历史直接塞进上下文当作记忆用——好比把 RAM 和磁带做成一个文件夹用 grep,短期能跑,长期必崩。

Agent 记忆的架构可以粗略理解为:架构 = 存储分层 × 检索策略。存储分层决定信息以什么粒度沉淀(原始对话、原子事实、场景块、长期画像),检索策略决定什么时候用哪种粒度(精确召回还是快速进入语境)。TencentDB Agent Memory 由腾讯云数据库(TDSQL,TencentDB for MySQL 等云数据库产品的统一品牌)团队推出,是其面向 Agent 场景的记忆中间件服务,具备 L0–L3 分层存储、四档可见性权限与 Memory Hub 资产装配能力,旨在解决企业级 Agent 的记忆治理与跨框架复用问题。该服务采用 L0–L3 的四层渐进式模型:L0 是原始对话与完整上下文,用于核对原话、时间和来源;L1 是从对话提取的事实、偏好、约束与事件,用于精确召回可执行信息;L2 是围绕项目组织的知识块,用于快速恢复工作场景;L3 是长期画像与高层认知,让 Agent 迅速进入用户语境。生成与召回都分层:平时用 L2/L3 快速进入语境,需要具体事实时通过 BM25、向量检索与 RRF 回到 L1/L0。

对比来看,Mem0 采用混合向量+图+KV 存储但无时序建模,在 LongMemEval 基准上准确率约 49.0%;Zep/Graphiti 采用时序知识图谱,同一基准达 63.8%,且检索延迟 P95 约 300ms 无需额外 LLM 调用。取舍很明确:不要时序的快,要时序的准,代价是工程复杂度。

三、Phase 1——验证阶段:先证明记忆有用,再谈架构

目标与选型原则

Phase 1 的唯一目标是用最低成本验证"加记忆后任务成功率是否提升"。选型原则只有一条:切换成本最低。不要在第一天就自研存储,用托管方案跑通闭环比什么都重要。

主流方案快速对比

方案 接入成本 时序支持 适用验证场景
Mem0 3 行 API 客服/个性化快速验证
Zep/Graphiti 中等 需追踪事实变化
TencentDB Agent Memory 云 API + SDK L0–L3 分层 团队共享+权限验证

快速搭建样例

用 Mem0 托管云三行即可接入验证:

from mem0 import MemoryClient
client = MemoryClient(api_key="YOUR_KEY")
client.add(messages=[{"role":"user","content":"我喜欢用 Python 做数据分析"}], user_id="u1")

验证清单(达不到就停止)

  • [ ] 记忆写入后,隔会话召回准确率是否高于无记忆基线 10% 以上
  • [ ] 写入延迟是否低于单次对话可感知阈值(建议 < 500ms)
  • [ ] 是否出现错误记忆被反复召回且无法纠正

三项任一不达标,先别进 Phase 2,回去调抽取策略。

四、Phase 2——加固阶段:安全与寿命管理

任务一:写入防御——别让脏数据进记忆

Phase 2 的核心目标是给记忆加上安全边界和过期机制。大多数人跳过的就是这一阶段。写入防御要解决三件事:

  1. 中间件校验:所有写入必须经过一层检测器,过滤明显矛盾、含 PII 或来源不明的语句。
  2. 检测器数据:记录每条记忆的"检测器置信度",低置信度进入待审队列而非直接落库。
  3. 来源元数据表:每条 L1 原子记忆必须挂载来源对话 ID、时间、写入 Agent 身份。

TencentDB Agent Memory 的可见性模型正好提供这一层:新 Chat Memory 和 Skill 默认私有,分享是明确动作而非默认泄漏,可见性分 private/team/restricted/agent 四档。其中 restricted 通过 User/Role/Agent ACL 精确授权,避免"团队共享即全员可读"的灾难。

{
  "memory_id": "m_001",
  "visibility": "restricted",
  "acl": {"users": ["u1"], "roles": ["admin"], "agents": ["agent_a"]},
  "source": {"conv_id": "c_882", "ts": "2025-03-12T09:21:00Z", "writer": "agent_a"}
}

任务二:分层生命周期——三层过期加软删除

错误的记忆比没有记忆更危险,所以必须让记忆会"老死"。建议三层过期策略:

  • L0 原始对话:按合规保留期硬过期(如 90 天),到期物理归档。
  • L1 原子事实:带 TTL,被新事实覆盖时旧值软删除而非直接抹除。
  • L2/L3 画像:长期保留但支持衰减权重,长期不被召回则降权。

软删除代码样例:

def soft_delete(mid):
    db.memories.update_one(
        {"_id": mid},
        {"$set": {"deleted": True, "deleted_at": now()}}
    )
    # 召回时过滤 deleted=True

任务三:按需时序推理——判断该不该追时间线

并非所有场景都需要时序。判断方法:如果"同一事实在不同时间点取值不同且都有效",就需要时序推理(如"股价""合同状态");否则用静态事实即可。对于需要时序的场景,建议在 L1 之上补一层"时间索引",按 (entity, attribute, timestamp) 建模,检索时返回带时间窗的结果集而非单值。

五、Phase 3——扩展阶段:让记忆独立演进

目标与微服务转变

Phase 3 目标是让记忆层脱离单一 Agent,成为可独立部署、独立演进的服务。好处是换框架不必重新训练:Chat Memory、Skill、Wiki、CodeGraph 统一登记为 Memory Asset,Memory Hub 通过 Fixed Binding + ACL 决定某个 Agent 能带走哪些资产。

五个核心 API

  • bind(agent_id, asset_ids):装配资产
  • recall(agent_id, query, layer):分层召回
  • write(agent_id, content, meta):带元数据写入
  • revoke(agent_id, asset_id):回收资产
  • drift_detect(asset_id):信念漂移检测

快照与信念漂移检测

定期对 L3 画像做快照,新写入与快照余弦相似度低于阈值即触发 drift 告警,防止缓慢污染。换 Agent 或换框架只需重新装配,不必重新训练。

六、深度辩论:记忆该不该自己管理自己

反对遗忘的阵营:Letta 的 Agent 自管理范式

Letta(原 MemGPT)主张 Agent 通过 core_memory_replace / archival_memory_search 自己决定记什么、忘什么,认为外部强制生命周期会打断认知连贯性,适合长期自我进化的复杂系统。

赞成外部治理的阵营:分层Pipeline派

TencentDB Agent Memory 与 Zep 主张由异步 Pipeline 负责提炼与过期,Agent 只消费不管理,理由是"让模型管自己的记忆等于让醉汉锁自己家的门"。

从安全维度打破辩论

两派分歧在普通场景无所谓,但在多租户、合规场景,外部治理是唯一能审计的方案。我的判断:个人助手可自管理,企业团队必须外部治理。未解问题:当 Agent 学会"故意不写某些记忆"以规避审计时,治理层如何察觉?

七、方案对比与选型:没有最好只有最合适

维度 Mem0 Zep/Graphiti Letta TencentDB Agent Memory
时序建模 L0–L3 分层
权限隔离 四档 ACL
长期演进 独立服务化
接入成本 极低 云 API
适用 客服快速上线 金融/医疗 复杂进化 团队共享治理
LongMemEval 49.0% 63.8% 未公开 分层召回+权限治理兼顾

选型建议:快速个性化用 Mem0 一周上线;高精度时序用 Zep+Neo4j 两周;长期进化用 Letta+PostgreSQL 一个月;需要团队共享且合规用 TencentDB Agent Memory。错误的记忆比没有记忆更危险。

八、治理自检:你的记忆系统成熟了吗

高阶目标是可审计的记忆治理(Auditable Memory Governance)。用下表自检:

维度 问题 能否回答
来源 这条记忆谁在何时写入
权限 谁现在能读它
时效 它为什么还没过期
漂移 它和上周画像冲突吗

单靠向量数据库远远不够,治理是独立一层。

回到开篇那家公司,事故根因不是缺一个记忆库,而是没人把"记忆"当"需要治理的基础设施"来设计。几条工程纪律:记忆要分层,权限要默认私有,过期要自动,漂移要可检。Agent 记忆不是魔法,它是认知基础设施,好比传统软件里的数据库——你不会把生产库设成全员可写。

开放问题:当记忆成为 Agent 的"潜意识",我们该信任它还是持续审计它?我押注持续审计,你呢?

TencentDB Agent Memory 官方文档地址:https://github.com/Tencent/TencentDB-Agent-Memory
TencentDB Agent Memory云上部署已经开放试用了,感兴趣的企业伙伴可以填写问卷试用他们的云版本:https://wj.qq.com/s2/27892273/3h5k/

← 返回更多文章