精选·上下文与记忆

Agent 长期记忆的写入时机和写入策略怎么设计?

91学AI·2026/7/13·8 阅读

考察点

这是记忆系统设计题的深挖追问(面渣逆袭 Agent 专题中"Memory 机制是怎么设计的"的延伸),通常在你答完长短期记忆分层之后抛出。面试官真正想看的是:你知不知道"什么都往里写"是记忆系统变烂的第一原因,以及你能不能在写入延迟、成本、记忆质量之间做权衡。

参考答案

三种写入时机

第一种,逐轮写入:每轮对话后提取本轮产生的事实写入。好处是实时、不怕会话中断丢信息;坏处是成本翻倍(每轮多一次 LLM 提取调用),而且对话中间的试探性内容、被后续的更正,都会被过早固化进记忆库,噪声最大。只在对实时性要求极高的场景用,比如客服对话中用户刚报了订单号。

第二种,会话结束批量提炼:整个会话结束后,用一次 LLM 调用把全对话提炼成若干条记忆写入。好处是能看到完整上下文,提炼质量高,成本只多一次调用;坏处是会话异常中断会丢记忆,且"结束"本身不好定义(用户关页面算结束吗)。工程上一般用会话超时(比如 30 分钟无活动)触发异步提炼任务兜底。

第三种,触发式写入:模型或系统判断"这条值得记"才写。两个来源:用户显式说"记住我喜欢简明回答";模型在推理中通过工具(比如 save_memory)主动写入。这是 MemGPT 和现在很多编程 Agent 的路子。好处是写入意图明确、质量最高;坏处是依赖模型自觉,重要但模型没意识到要记的东西会漏。

生产上我倾向混合:触发式写入为主(事实型即时记),会话末批量提炼为辅(补经验和情景记忆),逐轮写入只在特定字段上用。

写入前的四道关卡

直接往库里塞文本是最常见的错误。写入管道至少要有四步:

  1. 重要性打分:让 LLM 给候选记忆打 1-10 分,低于阈值(比如 4 分)直接丢弃。"用户今天心情不错"这种就该被过滤掉。
  2. 查重:写入前 embedding 检索 top-5 相似记忆,相似度超阈值(比如 0.9)判定为重复,走更新而不是新增。
  3. 冲突解决:新旧记忆矛盾时(用户上次说喜欢 Python 这次说转 Go 了),策略是新的覆盖旧的、旧版本归档而不是删除,关键字段可以加用户确认环节。
  4. 打标签:来源(哪个会话、用户自述还是模型推断)、时间戳、置信度。推断出来的记忆要标低置信度,召回时区别对待。

两条经验

第一,宁可少写不要错写。漏记一条偏好,用户多说一遍就补上了;错记一条事实,它会污染后面所有会话,而且用户很难发现是记忆错了,只会觉得这个 Agent 不靠谱。

第二,写入路径要异步。提炼、打分、查重都是额外 LLM 调用,阻塞在主对话链路上会把响应延迟拖垮,放消息队列里后台跑。

可能的追问

  • 模型主动调 save_memory 乱写一气怎么管?——工具定义里写清什么该记(偏好、事实、决定)什么不该记(闲聊、一次性信息),写后抽查加反馈;严重的话收敛为只允许用户显式触发。
  • 写错了怎么改?——提供 forget/update 工具,用户可查看和删除自己的记忆;后台定期用 LLM 做一致性巡检,清掉自相矛盾的条目。
  • 多用户场景怎么隔离?——记忆表强制带 user_id 命名空间,所有读写路径都过租户过滤,召回时先在元数据层过滤再做向量检索。

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.