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、整个代码仓库、运行配置、历史事故和当前用户问题。正确做法不是把它们全部发送给模型。
完整制品留在外部;模型通过引用继续读取,而不是一次吞下全部内容
更多 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 与长期记忆有什么不同?一条检索结果满足哪些条件后,才适合写入长期记忆?