核心要点

  • 能分层管理状态:短期(对话历史/最近上下文)、长期(向量记忆等持久知识)、结构化状态(变量、scratchpad、计划进度)

  • 能用会话 id 持久化:以 session/thread id 为键把状态落库,支持跨轮、跨进程、断点恢复

  • 能控上下文窗口:对历史做摘要、滑窗、选择性检索,避免超窗与 Lost in the Middle

  • 能用状态机/图管流程:用 LangGraph 等以图/状态机显式建模节点与转移,让多轮流程可控、可恢复、可观测

标准回答

状态分层

  • 短期记忆:当前会话的对话历史与最近若干轮上下文,直接进 prompt
  • 长期记忆:跨会话的持久知识,存向量库/知识库,按需检索召回。
  • 结构化状态:变量、scratchpad、计划与进度、待办动作等显式状态,用于精确控制流程。

持久化

以 session/thread id 为键,把上述状态写入数据库或检查点存储,实现跨轮、跨进程乃至人工介入后的断点恢复,保证长流程不丢上下文。

上下文窗口管理

历史会无限增长,需做摘要压缩、滑动窗口、按相关度选择性注入,把关键信息放首尾,缓解超窗与中段信息利用率低的问题。

流程编排

用状态机/状态图(如 LangGraph)显式建模节点、转移与中断点,使多轮 Agent 的执行可控、可暂停恢复、可观测,便于审批与调试。

常见误区

⚠️ 常见踩坑

把所有历史无脑全量塞进上下文——会超窗、变贵且触发 Lost in the Middle;应分层管理、对长期信息用检索召回、对历史做摘要与滑窗,并以会话 id 持久化支持恢复。

追问

追问 1短期记忆和长期记忆怎么分工?

题库专题:Agent 系统如何设计人在回路(Human-in-the-Loop)?

短期记忆是当前会话的近期上下文,直接进 prompt,保证连贯;长期记忆是跨会话的持久知识(用户偏好、历史事实),存向量库,按当前 query 相关度检索召回需要的部分注入。短期保连贯、长期保广度且可控规模,避免把一切都塞进窗口。

追问 2上下文太长超出窗口怎么处理?

上下文压缩与筛选:对早期历史滚动摘要、保留近窗口原文(滑动窗口)、用检索只召回与当前任务最相关的片段,并把关键信息放首尾缓解 Lost in the Middle。结构化状态(计划、变量)单独存储,需要时再注入,而非依赖模型从长历史里"记住"。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。