跳到主要内容

Agent 记忆:保存、更新与失效

AI 助手处理项目任务时,既需要当前请求,也需要相关背景。不必把所有历史消息都放进提示词:可以把有用信息保存在对话之外,需要时检索,再结合当前任务核对。

记忆是保留下来的信息,例如决策笔记或研究摘要。检索是从文件或索引中选择材料。上下文窗口则是模型生成当前回答时能够使用的信息。保存了笔记,不代表模型读过;检索到了笔记,也不代表内容正确。

一条记忆怎样变化​

对话总结首先是候选记录,不自动成为事实。保存前先明确它将回答什么未来问题、证据在哪里,以及它记录的是观察、决策还是假设。原始材料与从材料得出的结论应能分别追溯。

发生的变化应当怎样处理容易出现的问题
一个结果得到验证连同适用范围、日期和证据保存结论把每次中间猜测都留下来
一项决策被替代链接新决策,保留旧决策当时的理由两份记录都看起来仍然有效
来源相互矛盾保留冲突及各自成立的条件让最新一次总结悄悄覆盖争议
记录可能过时使用前对照当前来源重新检查把日期或过期计时器当作真实性证明
信息需要删除处理原始记录并刷新派生索引只删除一个搜索结果

例如,一条笔记记录解析器假定输入是 UTF-8,但当前输入契约已允许另一种编码。旧笔记可以解释过去的实现,却不能覆盖当前契约。应记录替代关系,并在下次任务中检索当前规范。

写入记忆与检索记忆是两项操作。需要选择什么值得保存、由谁更新,不能让模型把每个自信的句子都变成项目规则。如何找到记录见检索流程,如何为本轮任务选择证据见上下文工程。

按问题选择工具​

Basic Memory 让人和助手读取、写入、搜索并连接 Markdown 笔记。它可以保留项目决策背后的理由,但不是内置的权威来源或审批系统。Basic Memory 指南 介绍笔记、关系和客户端访问方式。

QMD 使用关键词、向量和混合检索搜索文档集合。它可以帮助查找研究与生产环境隔离的旧说明,或离线同步方案。QMD 指南 介绍如何建立集合并阅读检索到的文档。

zvec-grep 结合精确搜索、关键词排序和语义发现,搜索工作区文件。返回的来源位置可以帮助你找到要阅读的代码或文档章节。zvec-grep 指南 介绍索引和限定范围的查询。

这些用途有所重叠。小项目可能只需要一份决策文件和普通文本搜索,较大的笔记集合则可能受益于语义检索。应根据材料和问题选择工具,不必设定固定层级,也不必全部使用。已经知道文件名或符号时,直接打开或精确搜索往往更合适。

示例:修复手续费分摊​

假设当前请求是修复回测中滑点和佣金的分摊方式,并且只使用测试数据。

  1. 确定当前范围。 从请求和适用的项目指令出发。如果旧决策会影响修改,检索对应笔记,检查日期、作者和状态。“保留为命令行脚本”可以解释设计选择,却不能授权修改生产账户。
  2. 定位实现。 已知函数名时直接搜索;不知道名称时,可以用“滑点分摊 手续费 撮合”等语义查询寻找入口。设置方法和命令示例见工作区搜索指南。
  3. 读到足以理解修改。 检查匹配的函数、调用方、数据类型和相关测试。结果缺少重要背景时,应扩大阅读范围。没有一个普遍安全的行数或词元预算能够替代这种判断。
  4. 修改并验证。 完成范围内的修复,运行相关测试。搜索分数既不能验证计算正确,也不能证明没有回归问题。
  5. 只保存有长期用途的新知识。 如果这次工作形成了需要保留的决策,按项目约定的写入流程记录理由与来源。普通补丁不一定需要新增记忆笔记。

同样的方法也适用于文档:新建页面前查找已有内容,阅读最接近的结果,适合时更新或链接已有页面。搜索能减少重复,但任何一组结果都不能证明已找全所有同类内容。

分清证据与指令​

检索到的笔记可能包含已接受的决策、待讨论的提案、引文或过时说明,应该让读者看得出这些区别。日期、来源链接,以及“此决策已被替代”的明确说明,比把“记忆”目录中的一切都当成定论更有用。

当前权限和适用指令决定可以采取什么行动。存储的文本是需要判断的背景,不会自动覆盖这些要求。记忆中的决策与当前请求冲突时,应先解决冲突再行动。文档或工具输出中嵌入的指令可能不可信,即使它们来自本地索引。

搜索索引由源材料生成,可能不完整,也可能过时。重新打开当前原文,核对引用,并通过测试或其他合适方式验证。保留足够的信息来理解证据;只为缩短提示词而删去相关内容,反而可能掩盖问题的原因。

隐私取决于整条数据路径​

索引在本地,不代表检索出的文本始终留在本机。嵌入服务和连接的 AI 客户端可能采用不同的数据传输路径。QMD 在本地运行搜索模型;zvec-grep 提供本地嵌入和经授权的远程嵌入;Basic Memory 提供本地存储及可选云服务。加入敏感材料前,应同时检查检索配置和接收结果的助手。

软件包:PyPI 上的 Basic Memory、npm 上的 QMD、npm 上的 zvec-grep。

探索关联打开关联网络