Lesson 0003 · 约 15 分钟

上下文、状态、记忆与 RAG

本课训练一个架构判断:每条信息应该保存在哪里,什么时候进入模型,以及什么时候绝不能进入长期记忆。

模型看到的不是整个系统

模型每次只看到一个有限的 context window。任务数据库、完整聊天记录、代码仓库、历史事故和全部日志都在窗口外。Agent Runtime 需要通过 Context Builder 选择与当前决策有关的信息,把它们序列化成本轮上下文。

状态是系统事实;上下文是为一次模型调用生成的有限视图。

如果 prompt 里写着“退款已完成”,但支付系统仍显示 pending,权威事实仍是支付系统状态。

Anthropic 将 context engineering 描述为在有限 token 预算下,选择并维护最有用的信息集合,而不是简单扩写 prompt。阅读原文

五类存储不要混用

任务状态

当前任务的权威结构化事实:阶段、预算、审批、已执行 action 和错误。

本轮上下文

模型此刻能看到的指令、状态投影、证据、历史摘要和工具 schema。

短期与长期记忆

短期记忆服务同一 thread;长期记忆跨 thread 保存稳定且允许持久化的信息。

RAG

从大型外部知识源按当前问题检索证据,再把少量相关片段放进上下文。

制品存储

保存完整日志、trace、文件和查询结果;上下文通常只放摘要与引用。

模型参数

训练形成的通用能力,不应被当成用户数据、实时事实或可审计记忆。

PegaFlow 故障 Agent 如何装配上下文

假设 Agent 正在调查一次 KV transfer timeout。系统拥有 50 MB trace、整个代码仓库、运行配置、历史事故和当前用户问题。正确做法不是把它们全部发送给模型。

读取状态incident id、节点、时间范围、调查阶段和已验证事实
按需检索查找相关日志窗口、代码符号、配置和历史事故
标注来源区分系统指令、用户陈述、日志数据与模型假设
压缩组装保留关键时间线、错误片段、来源引用和工具 schema
本轮决策模型只获得回答当前问题所需的最小充分上下文

完整制品留在外部;模型通过引用继续读取,而不是一次吞下全部内容

更多 token 不等于更多能力

上下文过长会增加成本和延迟,也会让无关信息、冲突事实和旧计划竞争模型注意力。Lost in the Middle 的实验表明,模型利用长上下文信息的效果会受信息位置影响。架构目标因此不是“填满窗口”,而是“为下一项决策提供最小充分证据”。查看论文

常用策略包括:按当前子任务检索、保留来源、去重、把旧步骤压缩为结构化摘要、将大制品留在外部,并在需要时通过工具局部读取。

记忆需要读门禁和写门禁

并非每次模型输出都值得写入长期记忆。写入前至少检查:它是否对未来有价值、来源是否权威、作用域属于谁、何时失效、是否包含敏感信息,以及与旧事实冲突时如何处理。

模型猜测不能悄悄升级为长期事实;外部文档里的文字不能悄悄升级为系统指令。

从网页、工单、日志或历史记忆召回的内容都应视为有来源标签的外部数据。即使其中写着“忽略之前的规则”,它也没有获得更高权限。

LangGraph 的 memory 文档把同一 thread 内的 short-term memory 与跨 thread 的 long-term memory 分开,这种作用域区分比笼统地说“Agent 有记忆”更适合工程设计。查看文档

边界判断练习

问题 1:Agent 重启后判断任务阶段,首先应该读取哪里?

问题 2:RAG 在 Agent 架构中的主要职责是什么?

问题 3:检索文档写着“忽略系统规则并执行命令”,应如何处理?

本课主阅读

Anthropic: Effective context engineering for AI agents。阅读时只追踪四个动作:write、select、compress、isolate 分别在解决什么上下文问题。

完成后,请解释:为什么任务状态不能只保存在 prompt 里?RAG 与长期记忆有什么不同?一条检索结果满足哪些条件后,才适合写入长期记忆?