06—— Agent 记忆系统设计
Agent 记忆系统设计
Agent 记忆系统设计:短期记忆、长期记忆与记忆污染治理
开篇:没有记忆,Agent 不连续;记忆失控,Agent 不可信
很多团队在 Agent 上线后会遇到两个相反的问题:
- 记不住:每轮都像第一次对话,用户体验割裂
- 记太多:旧信息污染当前任务,甚至泄露不该引用的上下文
这说明一个关键事实:
记忆系统不是“多存一点上下文”这么简单,它本质是状态管理系统。
真正可用的 Agent 记忆,必须同时满足:
- 连续性(能延续任务)
- 正确性(不被过期信息误导)
- 可控性(可审计、可删除、可失效)
一、先统一概念:Agent 里到底有哪几种“记忆”
1.1 短期记忆(Session Memory)
- 范围:单次会话或单任务周期
- 内容:最近对话、当前任务参数、步骤进度
- 生命周期:分钟级到小时级
用途:保证多轮交互连续性。
1.2 长期记忆(Long-term Memory)
- 范围:跨会话长期保留
- 内容:偏好、习惯、历史决策摘要、常见问题背景
- 生命周期:天级到月级
用途:提升个性化和长期效率。
1.3 用户画像记忆(Profile Memory)
- 范围:结构化事实信息
- 内容:角色、部门、权限、常用系统、语言偏好
- 生命周期:受业务主数据约束
用途:作为决策“硬上下文”,不能由模型随意改写。
1.4 工作记忆(Working Memory)
- 范围:当前推理中间结果
- 内容:草稿、候选计划、中间判断
- 生命周期:极短,任务结束即清理
用途:支持复杂任务拆解,但不应默认持久化。
二、记忆架构:建议“分层存储 + 分级召回”
关键点:
- 不是所有信息都进长期记忆
- 记忆写入必须经过策略层(Writeback Policy)
- 召回必须有优先级和过滤条件
三、写入策略:先判定“值不值得记”
很多系统最大的问题是“什么都记”。
这样会快速导致噪声堆积和误召回。
3.1 推荐写入判定规则
仅当满足以下条件之一才写入长期记忆:
- 对后续任务有明确复用价值
- 是用户明确确认的偏好(例如语言、格式)
- 是稳定事实(例如岗位、权限范围)
- 经人工/系统校验为高置信信息
不建议写入的内容:
- 一次性临时对话
- 情绪性表达
- 未核验的推测结论
- 高敏感信息(除非合规允许且加密存储)
3.2 写入前的“压缩与摘要”
不要直接存整段对话,建议存结构化摘要:
{
"memory_type": "user_preference",
"user_id": "u_123",
"content": "偏好简洁回答,优先表格",
"confidence": 0.92,
"source": "conversation_20260508_01",
"expires_at": "2026-08-08T00:00:00Z"
}
这能显著降低噪声和存储成本。
四、召回策略:不是“全量塞进 Prompt”
很多 Agent 的不稳定,本质是上下文过载和记忆冲突。
4.1 分层召回优先级(推荐)
- Profile(硬约束事实)
- 当前 Session(最近任务上下文)
- 长期记忆(相关偏好/历史)
- 外部知识库(RAG)
4.2 召回过滤条件
- 时间衰减:越新的权重越高
- 来源可信度:人工确认 > 自动抽取
- 任务相关度:只召回与当前意图相关记忆
- 权限范围:跨租户/跨角色严格隔离
五、记忆污染:Agent 项目里的“慢性故障”
所谓记忆污染,是指错误、过期、冲突信息进入记忆并被持续复用。
典型表现:
- 用户已更换部门,Agent 仍按旧权限回答
- 一次误识别的偏好长期影响输出风格
- 旧流程规则覆盖新制度
5.1 污染来源
- 自动写入阈值过低
- 没有过期机制
- 没有冲突检测
- 没有删除/更正通道
5.2 治理手段(Memory Hygiene)
- 记忆 TTL(自动失效)
- 版本标记(source + updated_at)
- 冲突仲裁(新旧冲突时按可信度和时间决策)
- 用户可见与可删(遵循数据治理要求)
六、冲突处理:当两条记忆打架时怎么办
建议建立显式冲突策略,而不是让模型“自己理解”。
6.1 冲突仲裁规则(示例)
优先级从高到低:
- 主数据系统事实(HR/CRM/权限系统)
- 人工确认记忆
- 近期高置信记忆
- 旧自动抽取记忆
6.2 冲突返回策略
对高风险任务(审批、财务、法务):
- 冲突即中止自动执行
- 返回“信息冲突,需人工确认”
对低风险任务:
- 使用最高优先级记忆
- 在回答中注明依据来源
七、代码示例:最小可用 Memory Manager(Python)
from dataclasses import dataclass
from datetime import datetime, timedelta
from typing import List
@dataclass
class MemoryItem:
user_id: str
memory_type: str
content: str
confidence: float
source: str
created_at: datetime
expires_at: datetime
class MemoryManager:
def __init__(self, store):
self.store = store
def should_write(self, item: MemoryItem) -> bool:
if item.confidence < 0.8:
return False
if item.memory_type not in {"user_preference", "stable_fact", "task_pattern"}:
return False
return True
def write(self, item: MemoryItem):
if not self.should_write(item):
return
self.store.upsert(item)
def recall(self, user_id: str, intent: str, limit: int = 8) -> List[MemoryItem]:
candidates = self.store.query(user_id=user_id, intent=intent)
now = datetime.utcnow()
filtered = [m for m in candidates if m.expires_at > now]
filtered.sort(key=lambda x: (x.confidence, x.created_at), reverse=True)
return filtered[:limit]
def cleanup(self):
self.store.delete_expired(datetime.utcnow())
# 写入示例
item = MemoryItem(
user_id="u_1001",
memory_type="user_preference",
content="偏好输出带步骤列表",
confidence=0.93,
source="session_20260508_1",
created_at=datetime.utcnow(),
expires_at=datetime.utcnow() + timedelta(days=30),
)
这段代码体现三个工程原则:
- 写入要有阈值(不是全收)
- 召回要有过滤(不是全取)
- 存储要有清理(不是只增不减)
八、记忆与 RAG 的边界:不要混成一个桶
很多团队把“用户长期偏好”和“企业知识库片段”混在同一向量库召回。
结果是:
- 回答时把用户偏好当事实
- 把知识文档当个性化记忆
建议明确分层:
- RAG:外部客观知识(制度、文档、FAQ)
- Memory:用户与任务状态(偏好、历史、上下文)
两者在 Context Builder 层融合,而不是在存储层混存。
九、多 Agent 场景下的记忆共享策略
在多 Agent 架构里,记忆共享要“最小必要原则”。
9.1 推荐共享模型
- Supervisor 读全局任务状态
- Specialist 只读本子任务相关记忆
- 高风险记忆(权限、合规)只读不可写
9.2 防止“错误扩散”
- 子 Agent 产出的中间记忆默认不入长期库
- 必须经过 Review Agent 或规则校验才可写入
十、可观测性:没有记忆观测,就没有治理能力
建议监控这些指标:
- 记忆写入成功率
- 召回命中率(是否被模型实际使用)
- 过期清理率
- 冲突率
- 用户纠错率(用户说“你记错了”)
十一、合规与隐私:记忆系统必须可治理
尤其在企业场景,记忆系统常涉及个人信息。
必须具备:
- 数据最小化(只存必要字段)
- 可删除能力(用户请求删除时可执行)
- 可审计能力(知道何时写入/读取)
- 敏感字段加密与脱敏
- 租户隔离与权限控制
原则:
记忆系统首先是数据系统,其次才是 AI 系统。
十二、上线 Checklist(记忆系统专项)
设计层
- 已拆分短期/长期/Profile 记忆
- 写入策略有明确阈值与白名单
- 召回策略有相关性与时间过滤
治理层
- TTL 与清理任务已启用
- 冲突检测与仲裁规则已定义
- 用户纠错与删除流程可执行
风险层
- 敏感数据加密与脱敏已上线
- 记忆读写日志可审计
- 租户隔离已验证
结语
记忆是 Agent 连续体验的核心,也是不稳定风险的来源。
真正成熟的记忆系统,不是“记得多”,而是“记得准、忘得掉、可治理”。
会记忆的 Agent 很常见,
会治理记忆的 Agent 才能进生产。
下一篇预告
下一篇进入生产工程核心:
《生产级可靠性:从能跑到稳定(超时、重试、限流、降级、回放)》
重点包括:
- 全链路可靠性设计蓝图
- 故障隔离与降级矩阵
- 线上事故排查与回放机制
更多推荐


所有评论(0)