跳转到内容

状态与记忆

跨多个步骤工作的智能体需要连续性。它必须知道任务是什么、哪些行动已经生效、还有什么未解决、以及哪些信息以后可能有用。把这一切都称作“记忆”,会模糊不同的正确性与治理要求。

状态记录系统当前接受为真的内容;记忆存储可能再次有用的信息。被检索出的记忆只是候选输入,而非权威状态。

架构应当明确由谁维护事实,以及状态和记忆各自的更新规则、范围、有效性、来源、保留与删除方式。模型可以提出更新建议,但由应用代码决定它成为状态还是记忆。

记录 目的 典型示例
权威状态(authoritative state) 正确执行所需的当前公认事实 订单状态、已批准的行动、活动中的目标、剩余预算
事件记录(event record) 对实质性尝试与变更的仅追加式记账 请求的行动、授予的审批、写入已确认
检查点(checkpoint) 一次边界明确的运行所使用的恢复点 当前阶段、待生效的影响、状态版本、限额
派生视图(derived view) 面向特定消费方的可再计算投影 仪表盘状态或面向模型的任务摘要
记忆候选(memory candidate) 为未来可能复用而提出的信息 偏好、可复用发现、先前任务结果
产物(artifact) 被状态引用的持久工作产物 报告、计划、代码补丁、证据包

一个存储系统可以同时承载其中若干类,但其语义应当保持区分。对话记录通常更接近事件日志;它并不会自动构成当前任务状态。摘要是派生视图;它不应悄然抹去生成它的事实。

权威状态需要所有者与明确结构

Section titled “权威状态需要所有者与明确结构”

对于每个实质性字段,定义:

  • 哪个系统是事实来源(source of truth);
  • 谁或什么可以提出并提交更改;
  • 有效取值与合法转换;
  • 版本、观察时间与时效性要求;
  • 冲突与并发行为;
  • 审计与保留要求;以及
  • 模型如何接收一个范围明确的状态投影。

当正确性依赖精确值时,使用领域标识符与具有明确类型的字段。文字说明可以解释状态,但不应成为金额、权限、接收方、测试结果或已提交影响的唯一表示。

控制回路应基于已验证的行动结果来更新状态。若写入超时,记录 outcome_unknown 并与权威记录系统(system of record)对账。不要让模型从一条含糊的文本消息中在“可能成功了”和“重试”之间自行选择。

长时间运行且有多个参与者的任务,很容易出现基于旧状态的写入。智能体暂停时,人可能更正了一个值;两个执行者可能基于同一版本完成工作;一次重试可能在取消之后才到达。

常见控制包括:

  • 乐观版本检查或对比并设置(compare-and-set,CAS);
  • 针对副作用请求使用幂等性键(idempotency key);
  • 用于限定所有权的租约(lease),在需要时包含到期与栅栏(fencing);
  • 仅追加事件加确定性投影;
  • 显式的合并或冲突状态;以及
  • 在关键性提交前先读回(read-back)。

正确机制取决于数据存储与后果。架构上的要求是以策略来呈现并解决冲突,而不是把它隐藏在“最后写入者胜出(last writer wins)”的叙述之中。

记忆是一套完整生命周期,而非向量数据库

Section titled “记忆是一套完整生命周期,而非向量数据库”

记忆在写入与读取时都需要决策:

observe information
propose a memory candidate
validate source, scope, consent, sensitivity, and usefulness
store with provenance, validity, retention, and owner
retrieve for a named future decision
recheck permission, relevance, freshness, and conflicts
include as attributed context or update authoritative state through its normal path

嵌入与相似度检索可以实现检索的一部分。它们并不能界定应当记住什么、它是否仍然为真、谁可以看到它、或人如何更正它。

MemGPT 探索了一种分层记忆设计,在有限的模型上下文与外部存储之间移动信息(Packer et al., 2023)。Generative Agents 将观察流与检索、反思与规划相结合于一个模拟环境中(Park et al., 2023)。这些系统是外部记忆管理的有用研究示例。它们并未确立一种通用于生产的分类法或正确性保证。

按用途、范围与有效性对记忆分类

Section titled “按用途、范围与有效性对记忆分类”

诸如情景记忆、语义记忆、程序性记忆等标签有助于比较研究,但要把机制落实到工程中,还需要以下字段:

维度 问题
预期用途 这是用于恢复任务、个性化交互、复用发现,还是改进流程?
对象与所有者 它涉及用户、团队、租户、系统,还是公共领域?由谁控制?
范围 哪些任务、产品、身份与模型可以使用它?
来源 由人陈述、自系统观察、由模型生成,还是推断而来?
有效性 它是长期偏好、有明确时限的事实,还是不确定的假设?
敏感性 是否包含个人、机密、受监管或与安全相关的信息?
保留 何时到期,删除由哪些法律或产品规则约束?
替代(supersession) 更正如何与旧条目关联并在其之上被优先采用?

技能是有所有者与版本的程序性指导,不只是从一次运行中提取的记忆。持久的领域知识通常应存放在受治理的知识源中,而不是作为未审核的智能体记忆逐渐堆积。

“记住一切”会带来成本、隐私暴露、矛盾与检索噪声。仅在命名了未来用途且收益足以支撑治理时才存储。

有用的写入闸门会询问:

  • 保留该信息是否被允许且有必要?
  • 该来源是否有权断言它?
  • 它是一条观察信息、用户陈述、推断,还是模型生成的假设?
  • 同样的需求是否可以由权威状态或被引用的产物来满足?
  • 适用的范围、到期时间、置信度与更正路径是什么?
  • 记住它是否会让相关人感到意外?

对推断需特别谨慎。“用户请求简短回答”是一条事件;“用户总是偏好简洁交流”是一种概括,可能是错的。保持区分。

读取策略:检索不等于确立事实

Section titled “读取策略:检索不等于确立事实”

在检索时,先按主体(principal)、租户、目的、同意、敏感性与时间进行过滤,然后再考虑相似度。接着按任务相关性、来源权威性、时效性与置信度进行排序。连同内容一起返回来源与有效性的元数据。

当某条记忆与当前用户输入或权威状态冲突时,当前的经授权证据通常优先。一些冲突应当触发澄清,而不是自动适用优先级规则。上下文管道应将被检索的记忆标识为记忆,而不是将其无形地合并进治理指令中。

记忆使数据在交互之间保持持久性,因此用户与运营者需要有意义的控制。产品与用户体验(UX)将负责呈现,但架构必须支持:

  • 对实质性已存记忆的可见性;
  • 更正、删除与遗忘;
  • 在适当情况下按范围或全局启用;
  • 保留与到期的强制执行;
  • 租户与身份隔离;
  • 删除对索引、缓存与派生视图的传播;以及
  • 记录在决策中为何使用了某条记忆。

NIST AI 600-1 建议记录溯源与数据流,并在 GAI 生命周期中考虑隐私风险(NIST, 2024)。具体控制由本地法律与政策要求决定。

当前事实从包含修订与猜测的对话中被重建。将权威状态单独存储,并把它投影到上下文中。

在没有未来目的的情况下不断扩张保留,提升隐私风险与检索噪声。应用写入策略并默认到期。

有损的解释覆盖了源记录。将其保留为带溯源与再生成规则的派生视图。

语义上接近的记忆跨越用户、租户、目的或时间边界。在排序前进行授权与范围过滤。

模型的猜测成为稳定画像。标注推断、置信度、来源与到期;当后果重大时要求确认。

无声的最后写入者胜出(last-writer-wins)

Section titled “无声的最后写入者胜出(last-writer-wins)”

并发的智能体或人覆盖了更新的状态。使用版本与显式冲突处理。

嵌入、缓存、摘要与备份仍会暴露已删除内容。定义删除传播与记录其边界。

创建两份独立的约定:

State contract
- source of truth, schema, legal transitions, versioning
- writers, validators, concurrency and reconciliation
- checkpoint and resume fields
- model-visible projection and freshness
Memory contract
- named future use, subject, owner, scope, and source
- write gate, sensitivity, consent, validity, expiry
- retrieval filters and ranking
- conflict, correction, supersession, deletion, and audit
  • 是否区分了权威状态、事件历史、检查点、派生视图、记忆与产物?
  • 每个实质性状态字段是否都有事实来源与受控的更新路径?
  • 是否通过版本或显式冲突处理了陈旧写入、重试与并发参与者?
  • 记忆是否有明确的未来用途和写入策略?
  • 记忆是否连同来源、范围、有效性、敏感性、保留与所有者一起存储?
  • 是否在记忆排序前应用了授权与租户过滤?
  • 被检索的记忆在使用前是否经过归因与再验证?
  • 当前证据是否能够更正或替代旧记忆?
  • 人们在需要时是否可以检查、更正与删除实质性记忆?
  • 删除与到期是否会传递到索引、缓存与派生视图?