跳到主要内容

第 1.7.4 节:为恢复、遗忘和错误记忆设计风险控制

设计恢复、遗忘和错误记忆时,关键是提前写清何时停止、怎样降级、由谁接手。完成本节后,你应该能够列出恢复、遗忘和错误记忆的触发条件、兜底动作、日志字段和人工升级条件。

权限、状态和日志​

状态管理不仅是体验问题,也是权限和审计问题。

权限原则​

场景控制方式
用户补充订单号订单号必须和当前用户身份匹配,不能只相信用户输入。
读取历史工单只允许读取当前用户或授权范围内的工单。
写入长期记忆必须有明确业务用途和保存周期。
高风险退款诉求状态只能进入审批或人工确认,不能直接完成资金动作。
客服人员查看状态按角色展示必要信息,不展示不必要隐私。

状态变更日志​

字段含义为什么需要
trace_id(追踪编号)串联一次请求或工具调用复盘一次具体问题。
session_id(会话编号)串联多轮交互解释用户补充信息如何被使用。
task_id(任务编号)串联一个业务任务一个会话多个任务时不混乱。
from_state(原状态)变化前的状态判断迁移是否合理。
to_state(新状态)变化后的状态说明系统进入哪一步。
event(触发事件)用户输入、工具成功、工具失败、人工确认解释为什么迁移。
actor(操作来源)用户、Agent(智能体)、工具、人工客服审计责任边界。
reason(原因)状态变化原因面试和排障时最有价值。

不要只记录最终回答。真实项目排查问题时,最需要的是状态怎么一步步变化。

失败场景与兜底表​

失败场景表现兜底方式验收标准
上下文膨胀历史越来越长,成本和延迟上升用会话摘要和状态字段替代全部历史单次模型调用只包含必要上下文。
重复追问信息用户已经给过订单号,系统还在问missing_fields(缺失字段)更新后必须持久到任务状态多轮测试不重复问已知字段。
工具结果丢失查过订单后下一轮忘记结果tool_results(工具结果)保存摘要,并带来源 trace_id(追踪编号)工具成功后能继续下一步。
状态不一致当前步骤和工具结果矛盾状态迁移必须通过规则校验,异常时转人工不允许从缺订单号直接进入退款审批。
记忆泄露隐私长期保存订单、联系方式或敏感投诉细节限制记忆类型,设置过期和删除策略记忆表中不保存不必要敏感数据。
用户中断后回来系统不知道是否继续旧任务读取 session_status(会话状态)和 current_step(当前步骤),提示恢复或新建任务用户能选择继续或重新开始。
重试失控工具失败后反复调用retry_count(重试次数)设上限,超过后转人工日志能看到重试次数和停止原因。
高风险自动推进退款投诉未经确认进入执行approval_required(需要审批)和人工确认状态必须存在高风险样例不能自动完成资金动作。

工程检查清单​

  • 是否有 session_id(会话编号)?
  • 是否有 trace_id(追踪编号)?
  • 是否有 task_id(任务编号)?
  • 是否记录 current_step(当前步骤)?
  • 是否记录 missing_fields(缺失字段)?
  • 是否记录 used_tools(已用工具)和 tool_results(工具结果)?
  • 是否有 retry_count(重试次数)和最大重试次数?
  • 是否有 approval_required(需要审批)和人工确认状态?
  • 是否有 stop_reason(停止原因)?
  • 是否区分短期上下文、会话状态和长期记忆?
  • 是否定义长期记忆的权限、过期和删除机制?
  • 是否记录状态变更日志?
  • 是否有多轮验收样例?

继续学习​