所有章节
HRN-005记忆状态: Draft · 更新于 2026-06-21

智能体系统中的记忆

harness 如何管理模型所见和所记的内容——工作记忆、短期记忆和长期记忆;作为预算的上下文窗口;检索、压缩和刻意遗忘。

证据: 理论研究置信度: 来源: 行业观察来源: 个人经验

智能体系统中的记忆\n\n## 执行摘要\n记忆是 Harness Engineering(智能体支撑系统工程)中的支撑组件,它决定了模型在每次调用时能看到什么,以及在多次调用之间能保留什么。由于模型是无状态的,且其上下文窗口是一个硬性且昂贵的预算,因此记忆并不是一个强行附加的数据库功能,而是一个主动的、有主见的筛选系统。本章涵盖了记忆层级(工作记忆、短期记忆、长期记忆)、作为绑定约束的上下文窗口,以及使大规模记忆变得可控的三种操作:检索、压缩和遗忘。\n\n## 核心概念\n- 工作记忆: 模型当前正在进行推理的直接上下文——即当前步骤组装后的提示词。\n- 短期记忆: 当前任务或会话的累积状态(对话、中间结果、草稿纸)。\n- 长期记忆: 跨会话的持久知识——用户偏好、历史结果、组织事实。\n- 上下文窗口: 单次模型调用的固定 token 预算;是循环中最稀缺的资源。\n- 检索: 从更大的存储中选择相关项并放入上下文中。\n- 压缩: 在保留有用内容的同时,减少信息的 token 占用空间(总结、提炼)。\n- 遗忘: 主动丢弃或降低信息的权重,以控制成本、相关性和陈旧度。\n\n## 定义\n智能体系统中的记忆是管理模型所使用信息生命周期的 Harness 子系统——包括在单步、单任务以及系统生命周期的跨度内,信息的获取、存储、上下文选择、压缩和移除。其职责是在正确的时间将正确的信息放入模型有限的上下文空间中,除此之外别无他物。\n\n## 架构图\nmermaid\nflowchart TB\n subgraph LTM[\"长期记忆(持久化)\"]\n VEC[(向量 / 语义存储)]\n KV[(结构化事实 / 画像)]\n EPI[(情景记忆:历史任务结果)]\n end\n subgraph STM[\"短期记忆(单任务)\"]\n HIST[对话 / 步骤历史]\n SCR[草稿纸 / 中间结果]\n end\n RET[检索] --> CTX\n COMP[压缩] --> CTX\n LTM --> RET\n STM --> COMP\n STM --> CTX\n CTX[[工作记忆 = 组装后的上下文]] --> MODEL{{模型}}\n MODEL --> WRITE[记忆写入器]\n WRITE --> STM\n WRITE --> LTM\n FORGET[遗忘 / 驱逐] -.修剪.-> STM\n FORGET -.修剪.-> LTM\n\n\n## 详细解析\n\n### 上下文窗口是预算,而非容器\n关于记忆,最重要的一点是上下文窗口是有限且昂贵的,并且随着窗口被填满,质量会下降。即使窗口很大,塞入所有内容也会增加成本和延迟,并稀释模型对关键内容的注意力(即“迷失在中间”效应)。因此,记忆工程是一个预算问题:在历史记录或检索到的上下文上花费的每个 token,都是在推理上失去的 token。Harness 必须持续决定哪些内容值得留在窗口中。\n\n### 记忆层级\n- 工作记忆是当前调用中上下文窗口内的任何内容。它在每一步都从其他层级重新组装。\n- 短期记忆保存当前任务的演变状态:迄今为止的对话、工具结果以及中间推理的草稿纸。除非加以管理,否则它会单调增长,这也是它成为压缩和遗忘的主要目标的原因。\n- 长期记忆跨任务和会话持久存在:语义存储(通常使用向量索引进行相似度检索)、结构化画像和事实(键值或关系型),以及智能体可以从中学习的历史任务结果的情景记录。长期记忆是让智能体在不同会话之间保持一致性并随着时间推移而改进的关键。\n\n### 检索——选择呈现什么\n检索从长期(有时是短期)记忆中选择相关项,并将其注入工作记忆。主流方法是基于嵌入(embeddings)的语义相似度,通常辅以关键词/词法搜索(混合检索)和重排序(re-ranking)。检索质量决定了下游回答的质量:不相关或缺失的上下文无法通过更好的提示词来修复。常见的优化包括查询重写、元数据过滤以及时效性/权威性加权。诸如 PAT-006(知识检索)等模式将这些选择进行了规范化。\n\n### 压缩——在预算内装入更多内容\n当短期记忆超出预算时,Harness 会对其进行压缩。技术范围从简单的截断(丢弃最旧的轮次),到滚动总结(用运行中的摘要替换旧轮次),再到分层/语义压缩(在多个粒度上进行总结并保留指向细节的指针)。从定义上讲,压缩是有损的,因此工程上的问题是哪些内容可以安全丢失——这取决于具体任务。代码智能体必须保留精确的标识符;而客服智能体则可以激进地总结闲聊。\n\n### 遗忘——主动而非意外\n遗忘是一种主动控制,而不是缺陷。Harness 必须丢弃陈旧的(已改变的事实)、不相关的(偏离主题的上下文)或超出预算的(压力下的驱逐)信息。如果没有显式的遗忘,长期记忆会积累矛盾和噪音,短期记忆也会溢出。良好的遗忘策略会根据时效性和相关性进行降权,使具有已知波动性的事实过期,并解决冲突(最新的权威值获胜)。遗忘也是一个治理层面:数据保留和“被遗忘权”的要求都存在于此。\n\n### 记忆写入与巩固\n闭环操作中,Harness 决定将已完成步骤或任务中的哪些内容写回记忆:提取持久事实、总结该情境、更新用户画像。这一巩固步骤——类似于将工作记忆移入长期存储——是将无状态模型转变为积累知识系统的关键。如果处理不当,智能体也可能会用幻觉“事实”污染自己未来的上下文,这就是为什么写入应该像其他执行操作一样进行验证。\n\n### 作为攻击面的记忆\n任何写入记忆并在随后读取到上下文中的内容都是提示词注入(prompt-injection)的向量。检索到的文档和存储的“事实”可能携带对抗性指令。因此,记忆与安全性(HRN-011)直接交织在一起:应将检索和召回的内容视为不可信的输入,而不是可信的系统提示词。\n\n## 生产实践证据\n> 证据等级: 理论推导 · 置信度: 中 · 来源: 行业观察\n>\n> 说明性、代表性场景——非单一验证部署。\n\n- 背景: 在多轮会话中运行的长期企业助手智能体(客服、研究、编码)。\n- 场景: 随着会话变长,将完整的对话历史简单地累积到上下文窗口中会导致成本和延迟上升,且回答质量下降;引入滚动总结和混合检索,能以极低的 token 成本恢复质量。\n- 技术: 前沿 LLM、向量存储、带重排序的混合检索器、用于压缩的总结模型。\n- 负载: 会话长度从几轮到数百轮不等,长期存储包含数千到数百万个条目。\n- 结果: 代表性经验表明,一旦对记忆进行主动管理而非被动累积,每轮 token 消耗将大幅减少,且任务一致性得到提升。\n\n## 观察到的失效模式\n- 上下文溢出: 未管理的短期记忆超出窗口,导致恰好关键的信息被截断。\n- 迷失在中间: 过度填充的上下文降低了对提示词中间内容的注意力;更多的上下文导致更差的回答。\n- 检索遗漏: 相关文档从未被呈现,模型自信地针对信息空白进行回答。\n- 陈旧或矛盾的记忆: 长期存储保存了过时或冲突的事实;智能体基于错误的事实采取行动。\n- 记忆污染: 幻觉或对抗性的“事实”被写回,并污染了未来的推理。\n\n## KPI\n| 指标 | 目标 | 备注 |\n|--------|--------|-------|\n| 检索精准率/召回率 | 依赖于领域,需测量 | 呈现在上下文中的项的质量 |\n| 上下文利用率 | 低于窗口并留有余量 | 每次调用使用的 token 数与预算对比 |\n| 每轮 Token 数 | 在质量保持不变的前提下最小化 | 直接成本驱动因素 |\n| 回答事实依据性 | 高 | 被检索上下文支持的主张比例 |\n\n## 成本指标\n记忆是主要的成本杠杆。放入上下文中的 token 在每次调用时都需要付费,因此压缩和精准检索能直接减少推理开销。长期记忆增加了存储和嵌入/索引成本,而压缩增加了总结模型的调用。净收益几乎总是正向的:主动的记忆管理用廉价的批量总结和索引,换取了昂贵的单次调用上下文 token。\n\n## 扩缩容特性\n记忆沿着两个轴扩展:会话长度(驱动短期记忆和压缩频率)和语料库大小(驱动长期存储和检索延迟)。随着长期存储的增长,检索延迟和质量通常是瓶颈;分片、过滤和重排序变得必不可少。至关重要的一点是,管理良好的记忆能在会话变长时保持单次调用成本平稳,而被动累积则会导致成本无限制增长。\n\n## 相关内容\n- HRN-003 — Harness 分类法\n- PAT-004 — (记忆 / 上下文模式)\n- PAT-006 — (知识检索模式)\n\n## 参考文献\n- 关于 LLM 中上下文长度效应的研究(“迷失在中间”)。\n- 关于 RAG、混合检索和重排序的从业者文献。\n- Santa María, S. — 关于智能体记忆架构的工作笔记。\n\n## 常见问题\n问: 拥有百万 token 的上下文窗口,记忆工程过时了吗?\n答: 没有。更大的窗口提高了预算,但并没有消除预算——成本、延迟和注意力稀释仍然随着你放入的内容而增加。更大的窗口使记忆工程变得有价值,而不是更无用,因为过度填充的诱惑更大了。\n\n问: 记忆仅仅是 RAG 吗?\n答: 检索(RAG)是记忆中的一种操作。记忆还涵盖短期/工作状态、压缩、遗忘和写回巩固。没有这些,RAG 就是不完整的。\n\n问: 模型应该决定记住什么吗?\n答: 部分如此。模型可以建议巩固什么,但 Harness 应该验证和治理写入——未经验证的自我写入是智能体污染自身记忆的方式。

相关内容