AI Agent(四):上下文与记忆

AI Agent / RAG / 上下文工程2026.10.098 分钟阅读

上下文预算、证据检索、任务状态与长期记忆的管理。

上下文的组成与预算

上下文是模型进行当前决策时实际收到的信息集合,包括任务指令、用户请求、工具定义、历史消息和检索材料。数据库记录通过工具返回或检索进入上下文后,才能参与这一轮判断。上下文工程关注的是信息选择、组织和更新。

可用窗口有限,而且更长的输入会增加处理成本。可以把预算写为 B = I + T + H + E + O,其中 I 是指令,T 是工具定义,H 是保留历史,E 是证据,O 是为输出预留的空间。各项按同一模型的 token 计数方式估算。

订单调查保留 O-1042 的版本、物流事件、适用政策和已尝试操作。压缩历史时,可删去无关闲聊,保留尚未解决的审批请求、任务约束和关键事实。

信息组织可以采用固定顺序:先放不可变任务约束,再放当前目标与已确认状态,然后是带来源的新增观察。相互矛盾的材料并列呈现并标注差异,供后续核查。工具定义也要与当前可用权限一致,避免模型反复选择已经被禁用的能力。

检索与证据组织

检索负责从较大资料集中选择当前任务需要的材料。订单号适合精确查询;“延迟后能否申请调查”适合政策检索;跨实体关系可能需要图查询。检索方法由问题决定,向量相似度高的文本不一定属于正确地区、时间或客户。

检索前按租户和访问范围过滤,结果附上来源、版本、位置和适用条件。国内配送与跨境配送政策分别保留,按订单所属范围选用。

{
  "evidence_id": "policy:delivery:2026-10",
  "source": "delivery-policy",
  "version": "2026-10",
  "scope": "domestic",
  "statement": "超过约定配送期后可申请物流调查",
  "locator": "section-4"
}

判断 O-1042 是否满足这项政策,还需要订单约定日期与当前时间。将政策和订单事实分别保存,便于核对申请条件。

检索接口用状态码区分无匹配、权限不足与服务故障。无匹配时调整查询,权限不足时说明访问范围,服务故障时等待或转人工。

短期状态与长期记忆

短期状态保存一次任务的进度,例如订单已查询、物流待确认、工具失败两次。长期记忆保存跨任务复用的信息,例如用户偏好的联系方式或已确认的业务配置。两者分别设置有效期、访问范围和删除策略。

单次查询的订单和未经确认的丢失推测,都只保留在当前任务中。写入记忆前需要判断信息来源、确认程度、适用范围和保留期限。模型可以提出候选记忆,应用决定哪些类别允许持久化。

信息合适位置失效条件
当前工具返回任务观察记录新的版本替代
待批准操作任务状态与审批存储批准过期或参数变化
经确认的用户偏好用户级长期存储用户修改或删除
业务政策版本化知识库政策生效区间结束
模型的暂时推测任务内候选判断证据否定或任务结束

检索用户偏好时用 user_id 限定范围,保持不同用户的记忆隔离。管理员角色等权限信息由认证系统提供。

摘要与上下文压缩

摘要压缩通过保留关键状态来减少历史输入。Anthropic 的上下文工程资料将压缩、结构化笔记等作为长任务的信息管理手段,并指出过度压缩可能遗漏后续才显现重要性的细节。摘要会丢失信息,应保留原始轨迹的引用。

订单任务摘要保留目标、已确认事实、来源、待查问题、操作约束和待核查操作。例如“物流查询超时,未确认派送状态”和“已提交调查,响应未知”,压缩后仍保留未知状态。

{
  "goal": "调查 O-1042 配送延迟",
  "confirmed": [{"fact": "订单已发货", "evidence_id": "order:O-1042:v3"}],
  "unresolved": ["物流查询超时,当前派送状态未知"],
  "constraints": ["仅调查,不提交退款"],
  "pending_operations": [],
  "trace_ref": "run-17/events/1-8"
}

压缩后应重新检查约束是否保留、证据引用是否可解析、未知状态是否被肯定化。对高影响任务,可以把关键约束放在确定性状态字段中,每轮由运行时重新注入。

记忆更新与质量验证

新事实与旧记忆冲突时,按版本和时间确定当前有效记录。修改后的收件偏好用于后续任务,历史订单地址保留原记录。删除记忆时,同步清理向量索引、摘要和缓存。

质量评估可以比较无记忆、原始历史和压缩历史三种配置。固定同一任务集,检查关键条件保留率、引用正确率、无关信息召回和输入费用。跨用户泄露单独作为失败项统计。

对上下文污染应设置专门案例:物流备注包含“忽略指令”,旧摘要把未知结果写成失败,政策缓存晚于源文档失效。分别检查数据是否被当作指令、状态是否被恢复正确,以及回答是否引用了已撤回版本。

写入错误记忆后,找到受影响的记忆版本、检索索引和任务,撤销或修订记录,再检查后续检索是否仍使用旧结论。为记忆记录保留写入来源,并提供删除接口,才能完成这类修复。

— 本页完 —
← 返回文章列表

搜索内容

输入关键词搜索文章、笔记与随笔。