第 1.7.2 节:把短期上下文和长期记忆放进不同存储边界
进入实现之前,先围绕“把短期上下文和长期记忆放进不同存储边界”划清适用场景、不做范围和判断条件。完成本节后,你应该能够写出短期上下文和长期记忆的适用场景、不适用场景、前置条件和进入工程实现的判断标准。
核心概念
状态
状态是一次任务执行中的当前事实。它记录 Agent(智能体)现在处于哪一步、已经知道什么、还缺什么、调用过哪些工具、工具结果是什么、是否需要人工确认、为什么停止。
人话解释:状态就是任务进度条和任务记录本。它不是聊天全文,而是告诉系统“现在处理到哪里了”。
项目位置:在客服工作台里,状态连接第 1.5 章的分流结果和第 1.6 章的工具调用结果。没有状态,系统不知道用户补充的订单号是不是已经用过,也不知道工单是否已经创建。
工程动作:你要设计状态字段、状态迁移、更新规则、日志记录、恢复策略和停止条件。
面试说法:Agent 的状态管理不是保存聊天记录,而是把多轮任务拆成可追踪、可恢复、可审计的执行过程。
会话
会话用于组织同一个用户在一段时间内的多轮交互。会话通常包含 session_id(会话编号)、用户身份、当前任务摘要、最近几轮关键输入和当前状态。
人话解释:会话像一个客服窗口。用户没有关闭这个窗口前,系统应该知道刚才聊到哪里。
项目位置:在客服工作台里,会话让用户补充订单号后,系统能接上上一轮退款请求,而不是把它当成一个全新的问题。
工程动作:你要定义 session_id(会话编号)、会话过期时间、会话摘要、上下文裁剪规则和多任务冲突处理。
面试说法:会话管理解决的是多轮交互的连续性,但它不等于长期记忆,也不应该无限保存全部聊天。
记忆
记忆是跨会话或跨任务保留的信息。它可以保存用户偏好、已确认的长期设置、常见问题摘要或客服处理经验,但不能随意保存敏感信息。
人话解释:记忆是“下次还能用的信息”,不是“什么都记下来”。
项目位置:客服工作台可以记住用户偏好的沟通渠道,或记住某类问题的处理经验;但订单状态、退款结果、客户隐私必须回到业务系统查询。
工程动作:你要设计记忆类型、写入条件、读取权限、保存周期、删除机制和审计记录。
面试说法:我会把记忆当成有权限和生命周期的数据治理问题,而不是简单把历史对话放进向量库。
短期上下文
短期上下文是本次模型调用需要看到的材料,例如当前用户问题、当前状态摘要、必要的工具结果和本轮任务指令。
短期上下文不应该包含全部历史。它应该服务于当前任务,越精确越好。
长期记忆
长期记忆是跨会话保留的信息。它必须满足三个条件:
读图重点:能记住不等于应该记住:先判断信息属于哪种生命周期,再决定存储位置和权限。
- 对后续任务有明确价值。
- 用户或业务规则允许保存。
- 有权限、过期和删除机制。
如果一个信息只是当前任务临时需要,就不应该进入长期记忆。
本章在客服 Agent(智能体)工作台中的位置
客服工作台可以分成 7 层。本章负责其中的状态与记忆治理层。
| 层级 | 作用 | 本章关注点 |
|---|---|---|
| 用户入口 | 接收用户问题和补充信息 | 维护 session_id(会话编号)和用户身份。 |
| 分流层 | 判断意图、风险和下一步动作 | 接收第 1.5 章输出并写入状态。 |
| 工具治理层 | 查订单、查政策、创建工单 | 接收第 1.6 章工具结果并更新状态。 |
| 状态与记忆层 | 记录当前进度、会话摘要和可保存信息 | 本章核心。 |
| 人工协作层 | 转人工、审批、复核 | 记录审批状态和人工确认。 |
| 日志审计层 | 复盘每一步为什么发生 | 记录状态迁移和停止原因。 |
| 展示层 | 给用户和客服展示当前处理结果 | 展示下一步动作、缺失信息和处理进度。 |
状态与记忆层的价值在于:让 Agent 不只是会回答,而是能稳定完成多轮任务。
系统流程图
这张图的重点是:每一步都要更新状态。否则系统只能依赖模型临时记忆,无法验收和复盘。
读图重点:任何输入、工具或人工结果都先更新状态;恢复和停止由规则决定,不由模型凭感觉继续。
模块拆分
客服工作台的状态与记忆能力可以拆成 7 个模块。
| 模块 | 作用 | 关键产出 |
|---|---|---|
| 会话管理器 | 创建、读取、过期和恢复会话 | session_id(会话编号)、会话摘要、过期策略。 |
| 任务状态管理器 | 维护当前任务进度 | current_step(当前步骤)、missing_fields(缺失字段)、stop_reason(停止原因)。 |
| 上下文构造器 | 选择本轮模型需要看到什么 | 当前输入、状态摘要、必要工具结果、边界规则。 |
| 工具结果摘要器 | 把工具返回变成可保存状态 | 订单状态摘要、政策结果摘要、工单创建状态。 |
| 记忆策略模块 | 决定哪些信息能长期保存 | 写入条件、读取权限、保存周期、删除机制。 |
| 恢复处理器 | 处理失败、中断和重试 | retry_count(重试次数)、recovery_action(恢复动作)。 |
| 状态审计日志 | 记录每次状态变化 | trace_id(追踪编号)、事件、前后状态、操作来源。 |
模块拆分的价值是让读者知道“记忆”不是一个神秘功能,而是一组可设计、可测试的工程模块。