跳到主要内容

03-状态记忆与任务恢复

核对日期:2026-05-13。

不稳定项:长期记忆产品形态、向量记忆、agent state store、浏览器/IDE Agent 状态恢复机制和隐私治理方案变化较快;生产项目必须结合目标平台重新设计。

1. 学习目标

本专题关注 Agent 的“脑内工作台”:状态和记忆。好的 Agent 不是把聊天历史无限塞回模型,而是维护可读、可恢复、可审计的任务状态。

学完后你应该能做到:

  • 区分聊天历史、短期状态、长期记忆和任务日志。
  • 设计结构化 Agent state。
  • 定义记忆写入、读取、过期和删除策略。
  • 处理事实冲突、过期信息和来源追踪。
  • 为长任务设计暂停、恢复、交接和失败重试。

2. 状态不是聊天历史

聊天历史是对话记录,状态是任务对象。

维度聊天历史Agent 状态
内容用户和模型消息目标、事实、计划、证据、错误
结构时间顺序文本结构化字段
用途上下文补充控制任务推进
风险膨胀、污染、遗忘设计成本
恢复难恢复可恢复

Agent 状态应该回答:

  • 目标是什么。
  • 已经确认了什么。
  • 还有什么未解决。
  • 下一步是什么。
  • 哪些动作需要审批。
  • 为什么停住了。

3. 推荐状态对象

{
"task_id": "task_001",
"goal": "分析代码库中登录模块的风险",
"success_criteria": ["定位相关文件", "说明调用链", "列出风险并引用路径"],
"constraints": ["只读", "不能修改文件"],
"facts": [],
"open_questions": [],
"plan": [],
"completed_steps": [],
"pending_actions": [],
"tool_results": [],
"approvals": [],
"errors": [],
"budget": {
"max_steps": 8,
"used_steps": 0,
"max_tokens": 20000
}
}

状态更新规则:

  • 新事实必须有来源。
  • 冲突事实不能静默覆盖。
  • 过期事实要标注。
  • 工具原始返回要摘要。
  • 高风险状态变更要写入审计。

4. 记忆类型

类型内容风险
短期记忆当前任务上下文上下文膨胀
长期用户记忆用户偏好、习惯设置隐私和过时
项目记忆代码约定、业务规则版本冲突
操作记忆历史工具调用敏感信息泄漏
失败记忆失败样例和修复经验误泛化

不是所有信息都应该写入长期记忆。写入比读取更危险。

5. 记忆写入策略

写入前必须判断:

  • 是否来自可信来源。
  • 是否是稳定事实。
  • 是否含敏感信息。
  • 是否用户允许保存。
  • 是否有过期时间。
  • 是否可删除。

不要写入:

  • 密钥、token、密码。
  • 未经用户确认的偏好。
  • 模型猜测。
  • 临时任务细节。
  • 高敏业务数据。

推荐字段:

字段说明
memory_id记忆 ID
typepreference / fact / project_rule / failure
content内容
source来源
confidence置信度
created_at创建时间
expires_at过期时间
scope用户、项目或组织

6. 事实冲突处理

冲突来源:

  • 用户偏好改变。
  • 文档版本更新。
  • 工具返回不一致。
  • 历史记忆过期。
  • 不同系统口径不同。

处理原则:

新证据不一定覆盖旧证据
高权威来源优先
版本和时间必须展示
冲突进入 open_questions
必要时请求人工确认

反模式:模型自己选择一个看起来合理的事实并继续执行。

7. 任务恢复

长任务需要可暂停和恢复。

恢复需要保存:

  • task_id。
  • goal。
  • state snapshot。
  • 已完成步骤。
  • 已确认事实。
  • 未完成动作。
  • 审批状态。
  • 工具结果摘要。
  • trace id。
  • 当前预算。

恢复时要检查:

  • 权限是否仍有效。
  • 文档或数据是否更新。
  • 工具结果是否过期。
  • 用户目标是否改变。
  • 是否需要重新确认高风险动作。

8. 上下文压缩

长任务不能无限塞历史。

压缩策略:

  • 保留目标和成功标准。
  • 保留已确认事实和来源。
  • 保留未解决问题。
  • 保留关键工具结果摘要。
  • 丢弃重复推理和无关对话。
  • 对高风险动作保留完整审计引用。

压缩输出应该是状态摘要,不是文学性总结。

9. 工程案例

9.1 代码库分析 Agent

状态:

  • 目标文件候选。
  • 已读文件。
  • 调用链假设。
  • 风险点。
  • 需要验证的问题。

恢复:

  • 继续读取未完成候选文件。
  • 避免重复搜索相同关键词。
  • 保留路径和行号引用。

9.2 客服工单 Agent

状态:

  • 用户诉求。
  • 订单事实。
  • 政策匹配结果。
  • 回复草稿。
  • 需要审批的动作。

恢复:

  • 重新校验订单状态。
  • 审批过期则重新申请。
  • 不使用过期政策。

10. 常见反模式

反模式表现后果修正
全靠聊天历史越聊越长遗忘和污染结构化 state
什么都写长期记忆临时信息永久化隐私风险写入策略
模型猜测入记忆“用户可能喜欢”误个性化用户确认
冲突静默覆盖新旧规则混乱错误执行冲突显式化
恢复不校验权限旧权限继续用越权恢复前重验

11. 练习

为“研究资料整理 Agent”设计 state:

  • goal。
  • success criteria。
  • sources。
  • confirmed facts。
  • open questions。
  • draft outline。
  • citation map。
  • budget。
  • recovery checkpoint。

再说明哪些字段可以进入长期记忆,哪些只能保存在当前任务。

12. 验收题

  1. Agent 状态和聊天历史有什么区别?
  2. 为什么记忆写入比读取更危险?
  3. 长期用户记忆需要哪些治理字段?
  4. 事实冲突时 Agent 应该如何处理?
  5. 任务恢复前为什么要重新检查权限和数据版本?
  6. 上下文压缩应该保留哪些信息?