TP
TaskPilots

面向生产环境的智能体平台。

预约演示
4 条产品线,一套运行底座
智能体系统 1775235100 3m45s

长期记忆和任务记忆不是一回事

围绕可靠多智能体工作流构建的研究与运营笔记。

TP

TaskPilots 编辑部

AI 系统研究

更新日期

1775235100

长期记忆和任务记忆不是一回事

围绕可靠多智能体工作流构建的研究与运营笔记。

很多团队把“记得更多”当成多 Agent 系统更可靠的捷径,于是不断给控制器、执行者和人工接管者追加历史记录。表面上看,所有角色都拿到更完整的信息;实际上,系统最需要的往往不是更多长期记忆,而是一份能支撑当前步骤安全完成的任务记忆。两者一旦混用,交接就会越来越像转发聊天记录,而不是传递可执行的工作包。

长期记忆适合保存跨任务可复用的事实、偏好、规则和审计痕迹,任务记忆则应服务于某一条任务在当前阶段的目标、约束、会话身份和回传要求。LangGraph 对持久化状态的讨论、MemGPT 对分层内存的设计,以及 Generative Agents 对记忆检索与反思机制的展示,都在提醒同一件事: 不是所有被保存下来的东西都该在下一步继续参与决策。对 TaskPilots 这类依赖上下文包、消息流转和回传契约的系统来说,真正的治理重点是把可长期保留的信息和本轮必须执行的信息拆开。

为什么这个问题重要

真实运行代价

一旦长期记忆和任务记忆没有分层,系统就会把“能检索到”误当成“应该带入”。控制器明明只需要当前任务的目标、阶段和停止条件,却被迫反复读取旧工单、历史偏好和过期中间结论;执行角色明明只该看到最小上下文包,却继承了不再适用的讨论痕迹。结果不是信息更完整,而是每一步都更难判断哪些内容仍然有效。

  • 同一任务的提示前缀不断变长,延迟、成本和噪声一起上升。
  • 下游角色容易把跨任务偏好或旧轮结论误认成当前硬约束,返工率变高。
  • 人工升级时看见的是一堆混合历史,而不是“现在该判断什么”的清晰摘要。

如果不处理会怎样

生产环境里最先暴露的,通常不是模型答错,而是链路越来越难恢复。第一次出问题时,你可能只觉得某个角色“理解偏了”;到了第三次重试,你会发现系统根本分不清哪些是长期背景、哪些是当前任务状态、哪些只是上一轮试错留下的噪声。再继续堆历史,只会让契约变松、回传变散、会话边界越来越模糊。

这类失效一般会沿着四条路径扩散:上下文膨胀让每次交接都更重,契约失真让接手方理解各不相同,异步队列丢状态让恢复像重猜,人工升级失焦则让人不得不重新补课整段过程。问题核心不是记忆不够,而是任务面和长期面被放进了同一个桶。

适用场景

谁最需要这套方法

只要任务会跨角色、跨步骤或跨时间继续执行,而系统又要求可恢复、可审计、可转人工,这套区分就很重要。典型场景包括客服升级链路、销售分诊、研究助理编排、复杂工单处理、运营自动化,以及任何要在控制器、专家 Agent 和人工节点之间多次转手的流程。它们的共同特征不是“对话很长”,而是“同一条任务必须在多次交接后仍保持语义稳定”。

  • 控制器需要记住任务目标、阶段、风险和 join 条件。
  • 执行角色只需要完成当前步骤的必要事实、工具权限和回传格式。
  • 人工接管需要看到最新有效状态、关键证据和待决策问题,而不是整段旧历史。

什么时候先不要这么做

如果当前流程本质上还是单 Agent 加少量工具调用,任务同步完成、不会暂停恢复,也没有跨角色转手,那么先把长期记忆和任务记忆拆成复杂层次未必有立刻收益。此时更优先的是定义好输入输出、失败类型和停止条件。另一个不适用边界,是会话本身就是交付物的场景,例如高互动咨询、深度访谈或共同创作,此时完整历史本来就属于工作对象的一部分,不能被简单压缩成任务包。

推荐系统结构

核心角色与状态

比较稳的做法,是至少把信息拆成三层。第一层是长期记忆,保存跨任务复用的事实、规则、偏好、审计事件和组织约束;第二层是任务记忆,绑定单条任务的目标、当前阶段、已确认事实、未决风险、会话身份和完成标准;第三层是工作会话,保存某个角色在本轮执行中的局部推理、工具调用和临时中间结果。前两层都可以持久化,但只有任务记忆应该被默认送入交接链路。

  1. 长期记忆回答“组织和系统长期知道什么”,不直接代替当前任务指令。
  2. 任务记忆回答“这条任务现在要做什么、做到哪一步、下一步交给谁”。
  3. 会话层回答“这一轮执行发生了什么”,结束后只提炼必要结论回写。

与 TaskPilots 的映射

映射到 TaskPilots,可以把上下文包视为任务记忆的投递形态,把消息流转视为会话与状态跃迁的编排层,把回传契约视为任务记忆回写的入口。控制器不该把长期记忆全文复制给下游,而应先判断这条任务此刻真正需要哪些长期事实,再把这些事实和当前目标一起压缩进上下文包。回传时,下游也不应整段回放推理,而应只返回结构化结果、证据、未决项和下一步建议。

如果需要补一个判断标准,可以这样问: 这条信息在下一个无关任务里是否仍然成立?如果成立,它更像长期记忆;如果只服务于当前任务阶段,它就应该留在任务记忆里。像 交接包应该有多小:只传必要事实,不传整段历史可恢复交接为什么必须有显式会话身份 讨论的上下文包最小化和会话身份,也是这套分层真正落地的两个支点。

风险与失效点

常见失控方式

第一种高频失控,是把长期记忆做成“默认全量注入”,导致任何一次委派都背上整个系统历史。第二种是任务记忆缺少字段边界,已确认事实、待验证猜测和旧轮结论混写在一起,下游无法判断什么能直接执行。第三种是异步队列只搬运文本,不搬运状态,任务恢复时拿到的是一段看似熟悉、实际没有引用点的上下文。第四种则是人工升级时没有结构化交接,人仍然要自己重新整理当前任务事实。

  • 长期记忆污染任务判断,角色开始根据过期背景做当前决策。
  • 任务记忆回写过度,整段推理都被沉淀进去,下一轮再次膨胀。
  • 会话结束不做摘要提炼,导致后续只能依赖长历史检索。

需要人工兜底的地方

凡是涉及高风险外部动作、权限升级、写库修改、客户承诺、资金或合规判断的节点,都不应仅靠长期记忆或自动回传继续流转,必须保留人工审批与审计证据。人工兜底时,最有价值的不是原始长对话,而是当前任务记忆的快照: 目标是什么、已确认事实有哪些、证据在哪里、系统建议下一步做什么。只要人工接管仍然需要先读几十轮历史,就说明你还没有把任务记忆真正独立出来。

验证指标

上线前怎么验证

上线前建议拿一批真实样本同时做两组实验: 一组把长期记忆和任务记忆混用,另一组只给下游最小任务包,并在需要时从长期层检索少量事实。然后对比任务完成率、返工率、平均恢复时间和人工阅读时长。如果在结果相近的前提下,最小任务包组更快、更稳、更容易恢复,就说明这层拆分是有效的。

  • 做字段删减实验,确认哪些事实一旦拿掉就会影响当前步骤完成。
  • 做恢复演练,验证中断后能否仅靠任务记忆快照续跑,而不是重放全历史。
  • 做人工升级抽样,检查接管者能否在短时间内读懂待决策问题。

上线后怎么持续判断

生产阶段至少跟踪四类指标: 交接成功率、返工率、平均恢复时间和人工升级清晰度。除此之外,还值得补两项更贴近记忆治理的指标。第一项是长期记忆引用率,观察被持久化的长期事实有多少会在后续任务中真实复用;第二项是任务包膨胀率,检查每次交接所携带的字段和字数是否持续变长。如果长期层越来越像无差别资料库,任务层越来越像整段聊天转发,分层就已经开始失效。

下一步 / FAQ

下一步建议

最实际的下一步,不是先上更复杂的记忆框架,而是先盘点最近十到二十条交接失败案例,逐条回答三个问题: 哪些信息本应跨任务保留、哪些只属于当前任务、哪些其实只是本轮会话噪声。然后把答案固化成一份最小任务记忆模板,至少包含任务目标、当前阶段、必要事实、约束、会话身份、回传字段和升级条件。先在一条高频链路里跑通,再逐步推广到其他队列,通常比继续堆历史更容易见到收益。

FAQ

长期记忆是不是不重要? 不是。长期记忆很重要,但它更适合作为可检索、可审计的背景层,而不是每次交接都默认塞进 prompt 的任务层。

任务记忆会不会太短,导致角色丢上下文? 只要上下文包覆盖当前步骤的目标、约束和必要事实,它丢掉的是噪声,不是关键上下文。

怎么判断一条信息该放哪一层? 看它是否跨任务复用、是否会影响当前步骤执行、以及是否只是本轮推理中暂时出现的中间材料。

组织协作最容易卡在哪里? 最常卡在谁有权把信息从会话层升级为任务事实,或再进一步沉淀成长期记忆。这个升级规则如果不清楚,分层很快又会重新混回去。