跳转到内容

AI Agent 记忆系统设计:工作上下文、跨会话记忆与执行事实

Agent 记忆要分别保存当前任务状态、跨会话可复用的信息和实际执行记录。 当前任务靠状态继续,偏好与经验按需检索;工具是否执行成功,要按操作 ID 查业务记录,不能靠相似度猜。

记忆只是来源可查的偏好或证据。用户本轮明确要求覆盖旧偏好,外部资料也不能变成授权。短期、长期描述复用范围;情景、语义等描述内容类型,两者不是同一条分类轴。LangChain Memory 概念

假设用户曾确认“中文回复,代码示例用 TypeScript”。下次会话可以默认沿用,但本轮说“这次用 Java”,就用 Java。

信息保存方式本轮怎样使用
这次任务与“用 Java”当前任务状态直接指导这轮执行
历史 TypeScript 偏好结构化偏好,带来源与版本本轮不覆盖明确要求
用户何时确认过偏好情景记录,带时间与原始来源冲突时回查
工具是否已修改文件任务或业务记录,按操作 ID 查询决定是否继续、重试或核对

情景记忆保存经历,语义记忆保存事实与偏好,程序记忆保存操作规则。语义事实可以直接来自用户确认,也可以从事件提炼;提炼结果必须能回到来源。用户删除信息时,还要清理派生摘要、嵌入和缓存。

当前任务、相关记忆与门控写回

工作上下文保留当前步骤、约束和失败原因。下面是周报任务的结构示例,不是框架必填字段:

{
"goal": "完成用户的周报自动生成",
"currentStep": "收集本周 PR 合并记录",
"constraints": ["必须中文输出", "不得泄露内部仓库地址"],
"attempts": 2,
"lastError": "GitHub API rate limit",
"nextAction": "切换 GraphQL 批量查询并加缓存"
}

情景记录保留时间与来源;importance、ttlDays 是自定示例,普通对话可短期保留,仍有效的已确认偏好不能一刀切过期:

{
"eventId": "evt_20260305_001",
"userId": "u_123",
"content": "用户偏好 PR 说明先结论后细节",
"embedding": "...",
"timestamp": "2026-03-05T10:12:00Z",
"source": "chat|tool|system",
"importance": 0.82,
"ttlDays": 30
}

稳定偏好可放结构化表,不必每次重新检索整段聊天。记录还需关联来源和版本:

{
"userId": "u_123",
"preferences": {
"language": "zh-CN",
"codeStyle": "readability-first",
"reportStyle": "executive-summary-first"
},
"lastUpdated": "2026-03-05T10:00:00Z"
}

LangGraph 等框架把会话状态放在 thread 的检查点中,跨会话记忆放在 namespace 的存储中。业务执行事实则独立落库。需要处理服务重启时,可以按 Agent 状态持久化与恢复中的 LangGraph 与 PostgreSQL 示例,验证新进程能否复用工具结果并继续任务。

环节可执行规则
写入门控筛选偏好、决策、经验与稳定事实;确认来源、允许保存范围,敏感字段脱敏,去重并定有效期
记忆提炼聚类事件、提炼稳定信息;低置信结论保留待核对;派生结果回链来源,变更留版本
检索先按租户、用户和权限过滤,再查询相关内容,避免跨用户召回
注入加载当前状态和最新指令,只放这一步相关的记忆与引用;事实核对时可读原始记录
冲突显式确认高于历史推断,当前要求高于旧偏好;行为变化只作更新线索,不自动改权限
删除与过期清理原记录及其派生内容,保留必要的删除状态,避免下一次又被重新提炼

检索可同时考虑相关度、新鲜度和重要性,权重由任务评测调整,不能只看“语义很像”:

Score = α × Similarity + β × Recency + γ × Importance

Similarity 是语义相关度,Recency 是时间信号,Importance 是规则或模型产生的重要性评分。过期事实先过滤,不能仅靠高分压过时效。

选择得到什么要承担什么
同步写入(hot path)下一步立即可读到新记忆增加本轮延迟
后台写入(background)不阻塞当前响应短暂不可见,需处理重试与冲突
压缩旧会话减少当前上下文占用有损;约束、进度、未解问题与原始引用必须保留

保留几轮原文、何时压缩都按任务调整,不必每轮固定压缩。步骤、单动作重试与 token 预算设上限,超限后停止、降级或接管。

先用状态表和一张带来源的偏好表解决真实需求。事件增多、有语义召回需求时再加向量索引;不需要跨会话复用的产品可能只需当前状态。评测检查召回是否相关、注入后是否改善任务、成本是否可接受,并覆盖偏好变化、跨租户、过期与删除。Agent 评测、Hindsight 接入参考

具体实现可读 OpenClaw 记忆系统深度拆解:用周末旅行规划场景,追踪记忆何时写入、怎样召回,以及模型与程序各自负责什么。