AI CXYKK AI 教程
MEM Agent 记忆和状态管理
面向程序员 · Agent 状态工程课

Agent 记忆和状态管理

Agent 要跨多轮持续工作,就不能每次都从零开始。状态记录当前任务做到了哪里,记忆保存跨任务可复用的信息。但记忆不是越多越好,企业 Agent 更需要结构化、可更新、可删除、可追溯的状态设计。

短期上下文 当前对话和本轮任务能看到的输入、资料、工具结果。
任务状态 目标、进度、已知事实、已查资料、待确认、下一步。
长期记忆 跨任务可复用的偏好、稳定事实、团队规则或历史决策。
治理规则 权限、过期、删除、审计和纠错机制决定记忆是否可靠。
agent state store context / state / memory
当前上下文 本轮输入、资料片段、工具返回。
任务状态 目标、进度、事实、待办、阻塞。
长期记忆 稳定偏好、团队规范、历史决策。
下一轮继续 恢复任务、检索相关记忆、避免重做。
TTL
过期时间
ACL
权限范围
Trace
审计来源
01 · 先给定义

状态让 Agent 继续工作,记忆让 Agent 跨任务复用经验

状态偏“当前任务”,记忆偏“长期复用”。这两个词很容易混,面试时要先区分边界。

Context

短期上下文

模型当前能看到的信息,通常随对话和上下文窗口变化。

State

任务状态

记录当前任务目标、进度、已知信息、阻塞和下一步。

Memory

长期记忆

跨会话保存的稳定事实、用户偏好、团队规范和历史决策。

Governance

治理机制

控制哪些信息能写入、谁能读取、何时过期、如何删除。

一句话面试版 可直接背

Agent 状态管理是记录当前任务的目标、进度、事实、已查资料、待确认问题和下一步;长期记忆则保存跨任务可复用的信息。企业 Agent 不能盲目记住所有对话,而要做结构化、可删除、可审计、受权限控制的记忆和状态设计。

02 · 为什么需要状态

没有状态,Agent 每一轮都像重新上班

复杂任务经常跨多轮、跨天、跨多人协作。没有状态,Agent 容易重复查资料、忘记待确认问题、覆盖历史决定,或者把已否定的方案又拿出来。

没有状态

重复劳动和上下文丢失

用户第二天补充信息时,Agent 不知道昨天查过什么、哪些问题已确认、草稿到了哪个版本,只能重新开始。

有状态

可以从上次进度继续

Agent 读取任务状态,知道目标、已知事实、资料来源、open questions、当前草稿和下一步,能继续推进。

状态的价值 工程收益
  • 1可继续:跨多轮、跨天、跨人接手时不丢进度。
  • 2可复盘:知道每个结论来自哪个资料和哪次决策。
  • 3可控制:知道任务是否阻塞、是否超预算、是否需要人工确认。
  • 4可评测:可以检查状态更新是否正确,而不是只看最终回答。
03 · 三类信息

短期上下文、任务状态、长期记忆不要混用

这三类信息的生命周期、存储方式和风险都不同。混在一起会造成上下文污染和隐私问题。

短期上下文

本轮任务临时工作台

用户输入、当前资料片段、工具返回、中间推理材料。用完可以丢,不一定长期保存。

任务状态

当前任务看板

任务 ID、目标、进度、已确认事实、待办、阻塞、草稿版本、下一步。

长期记忆

跨任务知识资产

用户偏好、团队规范、稳定业务规则、历史决策。必须有来源、权限和过期策略。

速记 边界

短期上下文回答“这轮能看到什么”,任务状态回答“这件事做到哪里”,长期记忆回答“以后还值得复用什么”。

04 · 任务状态字段

企业 Agent 应该优先保存结构化任务状态

结构化状态比一大段聊天历史更可靠。它能被查询、更新、校验、权限过滤和审计。

PRD Agent 状态字段 示例
字段 说明
taskId 任务唯一 ID,便于恢复和审计。
goal 最终目标和验收标准。
knownFacts 已确认事实,必须带来源或确认人。
sourcesChecked 已查资料、版本、sourceId 和摘要。
openQuestions 待用户、产品、研发确认的问题。
draftVersion 当前草稿版本和变更摘要。
nextSteps 下一步动作、负责人和阻塞原因。
prd task state JSON
{
  "taskId": "PRD-2026-001",
  "goal": "生成商品导入失败明细 PRD",
  "status": "drafting",
  "knownFacts": [
    {
      "fact": "现有接口只返回任务级失败统计",
      "sourceId": "api-import-task-result-v3"
    }
  ],
  "sourcesChecked": ["product-import-prd-v2", "error-code-table-v4"],
  "openQuestions": ["是否支持失败明细下载?"],
  "draftVersion": "v0.3",
  "nextSteps": ["确认失败策略", "补充验收标准"],
  "updatedAt": "2026-06-12T15:00:00+08:00"
}
05 · 长期记忆

长期记忆只保存稳定、可复用、经过确认的信息

长期记忆一旦写错,会污染后续很多任务。企业系统里,写入长期记忆要比写入任务状态更谨慎。

适合长期记忆
  • 1用户明确偏好:PRD 输出喜欢表格和验收清单。
  • 2团队稳定规范:接口字段命名、PRD 模板、评审维度。
  • 3长期有效事实:系统模块归属、负责人、常用资料入口。
  • 4经过确认的决策:某类需求固定走审批流程。
不应长期记忆
  • 1一次性临时输入、草稿、未确认猜测。
  • 2敏感个人信息、密钥、账号、合同价格。
  • 3过期概率高的状态,例如当前库存、订单物流。
  • 4用户没有授权保存的信息。
06 · 写入规则

记忆写入要有门槛,不能让模型想记什么就记什么

长期记忆应该像数据库写入一样有规则:来源、确认、类型、权限、过期时间、更新策略都要明确。

1 识别候选 从对话或任务结果中提取可能值得复用的信息。
2 分类 区分偏好、事实、规则、决策、临时状态和敏感信息。
3 校验 检查来源、确认人、权限、过期时间和冲突。
4 写入 结构化保存,带 source、scope、ttl 和 confidence。
5 审计 记录谁写入、为什么写入、何时更新或删除。
memory write policy 伪代码
shouldWriteMemory(candidate):
  if candidate.isSensitive:
    return false
  if candidate.isTemporaryStatus:
    return false
  if not candidate.hasSource:
    return false
  if candidate.type in ["preference", "team_rule", "confirmed_decision"]:
    return candidate.confirmedByUserOrSystem
  return false
07 · 更新和删除

记忆必须能改、能删、能过期

记忆不是刻在石头上。业务规则会变,用户偏好会变,权限会变。不能更新和删除的记忆会越来越危险。

Update

更新

同一事实有新版本时,要替换旧值并保留变更记录。

Expire

过期

库存、订单、负责人、接口版本这类信息要设置有效期。

Delete

删除

用户要求删除、权限变化或信息不再需要时,要真正清除或不可再用。

Correct

纠错

发现错误记忆后,要标记无效,避免后续检索继续命中。

版本策略 实用

长期记忆最好带 versionvalidFromvalidUntilownersourceIdupdatedAt。当新旧记忆冲突时,不要直接覆盖事实,要保留变更原因。

08 · 记忆检索

记忆要按任务需要取出来,不要全部塞进提示词

很多系统的记忆问题不是存不住,而是取出来太多、太旧、太不相关。检索记忆也要做相关性、权限和新鲜度过滤。

任务触发 用户要求生成 PRD,系统识别任务类型、用户身份和业务域。
检索相关记忆 查用户偏好、团队 PRD 模板、商品系统规则和历史决策。
过滤记忆 按权限、过期时间、置信度、业务域过滤。
注入上下文 只把当前任务需要的摘要、规则和 sourceId 放进上下文。
检索记忆的排序因素 Ranking
  • 1相关性:是否和当前任务、业务域、用户角色有关。
  • 2新鲜度:是否仍在有效期内,是否被新版本替代。
  • 3可信度:是否有来源、确认人和审计记录。
  • 4权限:当前用户和 Agent 是否有权读取。
09 · 隐私和权限

记忆越长期,越要谨慎

短期上下文用完可以丢,长期记忆会影响未来任务。它涉及用户隐私、企业数据、访问权限和合规风险。

敏感信息

默认不记

密钥、账号、合同金额、个人隐私、未公开商业信息,不应进入长期记忆。

用户授权

明确同意

用户偏好和个人信息需要明确授权,并提供查看、修改和删除入口。

权限范围

按角色读取

记忆要带 scope 和 ACL,避免跨部门、跨租户、跨项目泄露。

审计追踪

能解释来源

每条记忆要知道来源、写入时间、写入原因和更新记录。

10 · 暂停和恢复

状态管理的一个关键能力,是让任务可暂停、可恢复

企业任务经常不会一次完成。产品要补信息,研发要确认接口,评审要修改意见。Agent 要能从状态恢复,而不是重开一局。

1 保存快照 记录目标、进度、已知事实、产物版本和阻塞原因。
2 标记阻塞 说明需要谁补充什么信息,为什么不能继续。
3 接收新输入 用户或系统补充答案、接口结果、评审意见。
4 合并状态 更新 knownFacts、openQuestions、draftVersion 和 nextSteps。
5 继续执行 从下一步恢复,而不是重复已完成动作。
resume rule 状态恢复规则
resumeTask(taskId, newInput):
  state = loadState(taskId)
  changes = extractConfirmedUpdates(newInput)
  state = merge(state, changes)
  state.openQuestions = removeAnsweredQuestions(state.openQuestions, changes)
  state.nextSteps = planNextSteps(state)
  saveState(state)
  return continueFrom(state.nextSteps[0])
11 · 常见坑

状态和记忆最怕三件事:乱记、乱取、乱信

很多 Agent 失败不是因为没有记忆,而是记错了、取多了、信过头了。

把聊天全存

上下文污染

历史对话里有废话、猜测和过期信息,全部保存会干扰后续任务。

事实偏好不分

类型混乱

“用户喜欢表格”是偏好,“接口没有字段”是事实,处理方式完全不同。

没有过期

旧信息继续生效

接口版本、负责人、政策规则变了,旧记忆还在影响回答。

不可删除

合规风险

用户无法查看、修改、删除记忆,企业系统会很难治理。

12 · 评测指标

评测记忆和状态,要看是否帮 Agent 更可靠地继续工作

不要只看“记住了多少”。好的记忆和状态管理,应该减少重复、降低错误、提升可恢复性和可审计性。

01 状态完整率

任务目标、进度、事实、来源、待确认和下一步是否完整。

02 恢复成功率

暂停后能否从正确步骤继续,而不是重复或遗漏。

03 记忆命中质量

检索出来的记忆是否相关、不过期、有权限、有来源。

04 错误记忆率

有多少记忆是错误、过期、无来源或不该保存的。

13 · 企业案例

为 PRD Agent 设计任务状态

这个案例能把前面课程串起来:需求输入、多轮澄清、查知识库、生成草稿、评审修改和继续迭代。

1
第一天 产品输入“商品导入失败明细”需求,Agent 记录目标、初始范围和待确认问题。
2
查资料 Agent 查历史 PRD、接口文档和错误码表,把 sourceId 和摘要写入 sourcesChecked。
3
生成草稿 Agent 输出 v0.3 草稿,记录已覆盖章节、风险和 openQuestions。
4
第二天继续 产品补充“本期不做下载”,Agent 更新决策,继续完善验收标准。
5
评审后 Agent 保存评审意见、版本差异、未解决问题和下一步负责人。
state update example PRD 任务
{
  "taskId": "PRD-IMPORT-FAILURE-DETAIL",
  "status": "waiting_for_review",
  "goal": "生成商品导入失败明细 PRD",
  "decisions": [
    {
      "text": "本期只支持后台查看失败明细,不支持下载",
      "confirmedBy": "product-owner",
      "confirmedAt": "2026-06-12"
    }
  ],
  "openQuestions": [
    "错误码是否需要给出用户可理解建议?"
  ],
  "nextSteps": [
    "补充埋点字段",
    "让研发确认接口字段"
  ]
}
这个案例的讲解重点 面试友好

PRD Agent 不是“记住所有聊天”,而是把任务目标、资料来源、确认过的决策、草稿版本和下一步保存成结构化状态。这样下一轮才能可靠继续,也方便评审和审计。

14 · 面试问答

回答时要区分短期上下文、任务状态和长期记忆

面试官问记忆,不是想听“让 AI 记住用户”。更重要的是看你是否知道企业级记忆的风险和治理。

Q1:Agent 记忆和状态管理是什么?

A:状态管理记录当前任务的目标、进度、已知事实、已查资料、待确认问题和下一步,让 Agent 能跨多轮继续工作。记忆则保存跨任务可复用的信息,例如稳定偏好、团队规范和历史决策。

Q2:短期上下文、任务状态、长期记忆有什么区别?

A:短期上下文是当前对话和本轮任务能看到的信息;任务状态是当前任务的结构化进度;长期记忆是跨会话复用的信息。它们的生命周期、权限和风险不同,不能混在一起。

Q3:为什么不能把所有历史都保存成记忆?

A:因为历史里有临时信息、过期事实、错误猜测和敏感内容。全保存会造成上下文污染、隐私风险和错误传播。企业 Agent 更应该保存结构化状态和经过确认的长期记忆。

Q4:什么信息适合长期记忆?

A:适合保存稳定、可复用、经过确认的信息,例如用户输出偏好、团队模板、系统模块归属、历史业务决策。不适合保存密钥、隐私、一次性输入、实时状态和未确认猜测。

Q5:企业落地记忆系统要注意什么?

A:要有写入规则、权限范围、来源记录、过期时间、更新删除机制、审计日志和用户可控入口。记忆检索时也要按相关性、权限、新鲜度和可信度过滤。

15 · 练习和速查

练习目标:设计一份 PRD Agent 任务状态字段

学完这一课,要能把一个跨多轮任务设计成可保存、可恢复、可审计的状态结构。

练习 1

设计 10 个状态字段

为 PRD Agent 设计 taskId、goal、knownFacts、sourcesChecked、openQuestions 等字段。

练习 2

写状态更新规则

用户补充一个答案后,说明如何更新 openQuestions、decisions、nextSteps 和 draftVersion。

练习 3

列出不能长期记忆的信息

至少列出 5 类,并说明原因:隐私、实时状态、未确认猜测、敏感资料、临时草稿。

一页速查卡 复习
  • 1短期上下文回答“这轮看到了什么”。
  • 2任务状态回答“这件事做到哪里”。
  • 3长期记忆回答“以后还值得复用什么”。
  • 4企业 Agent 优先保存结构化状态,不盲目保存全部聊天。
  • 5记忆要有来源、权限、过期、更新、删除和审计机制。