【学习笔记-AI工程化系列】长上下文时代的压缩、缓存与遗忘-6/16

发布时间:2026/10/6 2:33:28

【学习笔记-AI工程化系列】长上下文时代的压缩、缓存与遗忘-6/16 现在很多模型的上下文窗口已经很大。大到足以塞进长文档、代码库摘要、会议记录、工具输出和一大段历史对话。于是很多人会自然地产生一个判断既然窗口够大就不用太管理上下文了。这个判断很危险因为长上下文解决的是容量问题不是质量问题也不是成本问题。更不是状态管理问题。窗口变大以后你确实可以放更多东西。但你仍然要回答哪些内容值得长期保留 哪些内容应该压缩 哪些内容应该缓存 哪些内容应该落盘 哪些内容应该忘掉如果这些问题没解决长上下文只是让垃圾堆变大。一、长上下文的三个代价1.1 成本。更多 token 意味着更多输入成本。如果每次请求都重复带上系统提示、工具说明、项目说明、历史对话、检索片段成本会很快变成隐性税。你可能不是被单次调用拖垮而是被每一步重复携带的上下文拖垮。1.2 延迟。上下文越长模型处理越慢。尤其是多步 Agent。一次慢一点不明显。循环多步以后延迟会被放大。1.3 注意力。长上下文不等于模型会同等重视每一段信息。无关内容越多关键状态越容易被淹没。这不是模型“忘了”。是你把工作台堆满了。真正成熟的上下文系统不是尽可能多塞。而是让每一步上下文保持可读、可控、可恢复。二、Compaction 不是摘要很多人一听压缩就想到摘要。把长历史总结成短文字。这只是最低层的做法。Agent 的 context compaction 不是文学摘要它要保留任务状态。一个好的 compaction 至少要保留当前目标 用户约束 已完成动作 关键事实 决策理由 已调用工具 产生的副作用 未解决问题 下一步计划 验证结果注意这里有几个词决策理由、副作用、未解决问题、验证结果。这些比“刚才聊了什么”更重要。因为 Agent 不是在写会议纪要。它是在恢复执行状态。如果压缩只保留结论不保留为什么做这个结论后续 Agent 很容易重复走弯路如果压缩丢掉副作用后续 Agent 可能重复执行危险动作如果压缩丢掉 open issues任务会看起来完成实际还有洞。三、Prompt Caching 解决的是重复成本Prompt caching 经常被误解成提升模型质量的技巧。它不是。它主要解决重复上下文的成本和延迟。适合缓存的内容通常有这些系统提示 工具定义 项目规则 代码库摘要 长文档 产品手册 稳定 policy 少变化的 examples这些内容在很多请求里重复出现。如果每一步都重新付全价就很浪费。但缓存也有边界。它适合稳定前缀。不适合频繁变化的任务状态。比如当前进度 最新工具输出 用户刚刚修正的约束 待确认问题 执行错误这些东西不应该为了命中缓存而硬塞进稳定前缀。缓存是成本优化。不是上下文设计的替代品。更不是把所有东西固定住的理由。四、工具输出应该落盘Agent 系统里最容易膨胀的上下文往往不是聊天历史。而是工具输出。比如测试日志 构建日志 grep 结果 网页 HTML 数据库查询 代码 diff 长 PDF 提取内容这些东西直接塞回上下文会导致三个问题贵 慢 污染下一步推理更好的方式是 offloading也就是把原始输出放到上下文之外。比如artifacts/test-log-20260623.txt artifacts/search-results.json artifacts/page-snapshot.md artifacts/query-result.csv然后只把三类内容放回上下文4.1 结构化摘要。比如测试失败 3 个集中在 auth/session 模块。 首个失败是 TokenRefreshTest错误为 expired token not refreshed。4.2 关键片段。比如错误行、堆栈顶部、相关文件路径。4.3 索引引用。告诉 Agent 原始输出在哪里需要时再读。这就像人工作时不会把整份日志背下来。你会记录摘要、错误位置和文件路径。五、遗忘是设计不是事故很多人把 memory 设计成“尽量多记”。这是另一个坑。生产系统需要遗忘机制。因为上下文里有很多东西会过期。比如用户临时偏好 过期需求 旧版本 API 已解决 bug 上一次任务的假设 一次性授权 错误的中间结论如果这些东西不被清理它们会变成污染源。遗忘不是模型能力不足。遗忘是系统能力。一个好的记忆系统应该支持scope这条记忆属于用户、项目、任务还是系统 ttl什么时候过期 owner谁能修改 source从哪里来 confidence可信度多高 delete能否删除 audit谁在什么时候用了它尤其是用户相关记忆。不能因为模型觉得“这个偏好可能有用”就永久写入。长期记忆应该是可解释、可编辑、可删除的。六、状态文件模式长任务 Agent 不能只靠聊天历史恢复。它需要外部状态。我建议至少拆成四类状态文件。6.1 progress.md。记录任务进度当前目标 已完成步骤 正在处理什么 下一步是什么6.2 decisions.md。记录关键决策选择了什么方案 为什么这么选 拒绝了什么方案 决策依据是什么6.3open-issues.md。记录未解决问题缺少什么信息 哪里需要用户确认 哪些测试失败 哪些风险还没处理6.4 verification.md。记录验证状态跑过哪些测试 结果是什么 哪些没法验证 为什么没法验证这些文件不是为了形式主义。它们有两个作用。第一让 Agent 可以恢复。上下文压缩后下一轮还能知道任务状态。第二让人类可以审计。你不需要翻 200 轮对话才能知道 Agent 为什么这么做。七、一个长任务上下文生命周期可以把长任务 Agent 的上下文设计成一个生命周期Initialize - Load Stable Context - Plan Task - Execute Step - Offload Tool Output - Update State Files - Compact Working Memory - Verify - Continue / Pause / Escalate这里的关键是分层稳定上下文比如系统提示、项目规则、工具定义可以缓存。任务状态比如进度、决策、问题要写入外部文件。工具输出原始内容落盘摘要进入上下文。工作记忆阶段性压缩。验证结果单独记录。人类输入标记来源和有效范围。这样做之后Agent 不再依赖“聊天记录还在不在”。它有可恢复的任务状态。八、常见反模式8.1 长期把完整历史塞进上下文。看似保险实际贵、慢、乱。8.2 把 compaction 做成普通摘要。丢掉决策理由和副作用后续执行会失真。8.3 为了缓存命中牺牲上下文正确性。缓存应该服务系统不应该绑架系统。8.4 工具输出原样回填。日志和 HTML 最容易污染上下文。8.5 memory 永不过期。长期记忆如果不能更新和删除就不是资产是风险。8.6 没有恢复点。Agent 一旦中断只能重跑或靠模型猜前面发生了什么。九、实践 checklist设计长上下文 Agent 前先问这些问题[ ] 哪些上下文是稳定前缀可以缓存 [ ] 哪些上下文是任务状态必须外部化 [ ] 工具原始输出是否落盘 [ ] 进入模型的是摘要、关键片段还是整段原文 [ ] compaction 是否保留目标、决策、风险和下一步 [ ] 哪些记忆有 TTL [ ] 用户记忆是否可编辑、可删除 [ ] 任务中断后能否从状态文件恢复 [ ] 验证结果是否单独记录 [ ] 哪些信息应该被主动遗忘这张表决定了长任务 Agent 是可运行还是只是长对话。十、长上下文不是免管理长上下文是一种能力不是一种架构。它让我们可以放更多材料。但生产系统真正需要的是压缩保留任务状态 缓存降低重复成本 落盘外置原始输出 遗忘避免旧信息污染 恢复让任务可以继续到这里Context Engineering 的第二阶段就完整了。第 4 篇我们讲每一步该看什么。第 5 篇我们讲 RAG 只是取回候选材料真正难的是上下文装配。第 6 篇我们讲长上下文时代仍然需要压缩、缓存和遗忘。下一篇系列进入第三阶段Harness Engineering模型之外的一切。Prompt 和 Context 解决“模型怎么想”。Harness 要解决的是模型如何在真实系统里安全、可控、可验证地行动。参考资料Effective context engineering for AI agents | Anthropic EngineeringContext engineering for agents | LangChainAnthropic Prompt Caching docsEffective harnesses for long-running agents | Anthropic Engineering参考文献长上下文时代的压缩、缓存与遗忘
延伸阅读

更多相关文章

2026/10/6 2:28:28

免费实现网盘直链下载:三步安装 + 六大下载通道完整指南

免费实现网盘直链下载:三步安装 六大下载通道完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

2026/10/6 3:43:32

Python+PySpark+DeepSeek-R1实现弹幕情感分析与推荐系统

每年到这个时间点,总有学弟学妹拿着差不多的题目来问我:能不能用 Python 做弹幕情感分析,能不能把大模型接进去,能不能再加一个推荐系统和一个可视化大屏凑成一整套毕业设计。说实话,这种题目现在很常见,但…

2026/10/6 3:43:32

Notepad++ Markdown插件安装与预览:轻量级写作环境搭建指南

简介:面向需要在Notepad中编写Markdown文档的开发者和IT从业者,这款资源提供了一套轻量且可扩展的Markdown编辑增强方案,特别适合日常技术写作、项目README维护和博客素材整理。压缩包共含2个文件,分别是dll插件核心与xml语法高亮…

2026/10/6 3:43:32

Flutter鸿蒙开发实践:报销单生成器跨平台落地要点

最近刚把一版用 Flutter 做的报销单生成器 APP 跑到鸿蒙真机上,整个过程可以算是典型的跨平台方案落地:业务逻辑全部复用,平台差异只留在文件目录和系统能力调用那一层。做这个小项目之前,我对鸿蒙适配多少有些犹豫,担…

2026/10/6 3:43:32

跨数据库SQL优化:四大引擎的索引、执行计划与等待事件实战指南

把Oracle上跑得顺滑的SQL原封不动扔到SQL Server里,结果慢了十几倍,客户当场质疑你是不是换了一台渣服务器——这种事我经历过不止一次。换成MySQL,表现可能又不一样。锅从来不在“机器性能”,而在于每个数据库引擎各自那套存储模…

2026/10/6 3:43:32

EIG算法详解:拜占庭容错共识的奠基之作

最近重新翻到 Pease、Shostak 和 Lamport 在 1980 年发表的这篇《Reaching Agreement in the Presence of Faults》,越读越觉得有意思。这几年分布式系统、区块链、共识算法的文章铺天盖地,但很多人一上来就聊 PBFT、Raft、HotStuff,却很少有…

2026/10/6 3:38:32

Windows与VMware Ubuntu虚拟机文件共享方案详解

本地win系统和vmware 虚拟机 ubuntu实现文件共享这事儿,我前前后后在好几台机器上折腾过,踩过的坑能写小半本笔记。先说结论:如果你还在用U盘来回拷、靠微信传文件、或者每次都在虚拟机里开个网盘下载,那这篇文章就是给你准备的。…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑