Agent 状态与记忆
区分当前运行状态、会话历史、长期记忆与外部事实源。
学习目标
- 能说明Agent 状态与记忆解决什么问题,以及何时适用。
- 能解释为什么“把聊天历史等同于记忆”是误区。
学习前需要掌握
背景与问题
多步任务需要记住哪些资料已查、哪些动作已做;跨会话服务又可能需要保存偏好。把全部聊天记录不断附加给模型,会混入过期信息、占用上下文,也难以撤回错误记忆。
因此要分清本次任务的工作状态、短期对话历史和长期可检索记忆。它们保存多久、由谁修改、何时可被使用,应由任务与用户需求决定。
概念定义
状态是一次决策需要的当前数据;记忆是跨步骤或跨会话保留并可检索的信息。
直观理解
状态像工作台,短期记忆像本次任务笔记,长期记忆像经过筛选的档案库。
核心原理
工作状态描述当前进度,例如订单版本、待审批操作和已经验证的证据。更新时应有明确所有者,必要时使用版本号检查并发冲突;“计划执行”不能写成“已经执行”。
对话历史按时间记录交互,适合恢复上下文,但不等于精炼事实。摘要能降低长度,也会丢失限定条件;影响决策的数字、授权和来源应另外结构化保存,以便重新核对。
长期记忆应围绕明确用途选择内容,例如可修改的语言偏好,而不是默认永久保存全部用户输入。每条记录最好有来源、确认状态、更新时间和删除策略;一次性要求不应自动升级成长期偏好。
检索到的旧记忆仍是候选信息。当它与当前明确指令冲突时,应以当前有效要求处理,并修正或过期旧记录。外部文本更不能未经验证写成“用户同意”的授权记忆。
案例:行程规划中的一次性预算与长期偏好
用户平时偏好火车,这可以在得到适当确认后保存为可修改偏好。本次说“这趟赶时间,可以坐飞机”,应改变当前行程状态,而不是让旧偏好阻止选飞机,也不一定永久覆盖偏好。
本次预算、出发日期与已查到的票价属于任务状态;过期票价不能下周继续当事实使用。若用户要求删除出行偏好,删除应作用于实际存储与相关缓存,不能只让模型回答“已忘记”。记忆系统的可靠性体现在读写生命周期,而不只是检索是否命中。
理解与实践步骤
- 定义状态 Schema
- 确定保存周期
- 写入前验证和去敏
- 检索时按任务过滤
- 完成后清理临时状态
实际应用
- 长任务连续性
- 个性化
常见错误
- 把聊天原文或自动摘要当成准确、永久有效的事实数据库。
- 从一次任务推断永久偏好,或把资料中的声明写成用户授权。
- 没有来源、过期、纠错和删除机制,导致旧记忆持续影响新任务。
输入、输出与执行边界
输入
- 会话事件
- 工具结果
- 用户允许保存的信息
输出
- 当前状态快照
- 受控记忆条目
能力
- 长任务连续性
- 个性化
安全风险与信任边界
持久记忆应区分事实、用户偏好与模型推断,并记录来源和更新时间。旧任务中的临时决定不能无条件沿用到新任务;敏感资料也不应仅因“以后可能有用”就长期保存或提供给所有子任务。
性能与失败模式
更长记忆会增加检索、上下文与维护成本,摘要又可能丢失条件和例外。评估应检查跨轮目标保持、事实冲突和遗忘后的恢复,而不只统计存了多少条;检索命中率高也不代表取回的是当前有效信息。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。