<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Context on XEDCZQ的博客</title><link>https://xedczq.cn/tags/context/</link><description>Recent content in Context on XEDCZQ的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 19 May 2026 16:35:00 +0800</lastBuildDate><atom:link href="https://xedczq.cn/tags/context/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent_上下文工程</title><link>https://xedczq.cn/post/agent_%E4%B8%8A%E4%B8%8B%E6%96%87%E5%B7%A5%E7%A8%8B/</link><pubDate>Tue, 19 May 2026 16:35:00 +0800</pubDate><guid>https://xedczq.cn/post/agent_%E4%B8%8A%E4%B8%8B%E6%96%87%E5%B7%A5%E7%A8%8B/</guid><description>&lt;h1 id="上下文工程是什么"&gt;&lt;a href="#%e4%b8%8a%e4%b8%8b%e6%96%87%e5%b7%a5%e7%a8%8b%e6%98%af%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;上下文工程是什么
&lt;/h1&gt;&lt;p&gt;上下文工程（Context Engineering）可以定义为：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在每一步 Agent 执行时，为模型注入“刚好足够且高相关”的信息，并持续管理这些信息的生命周期。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果提示词工程主要关注“怎么说清楚任务”，上下文工程主要关注“给模型喂什么信息，按什么顺序喂，什么时候清理与重建”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="阶段一被动截断与滑动窗口时期"&gt;&lt;a href="#%e9%98%b6%e6%ae%b5%e4%b8%80%e8%a2%ab%e5%8a%a8%e6%88%aa%e6%96%ad%e4%b8%8e%e6%bb%91%e5%8a%a8%e7%aa%97%e5%8f%a3%e6%97%b6%e6%9c%9f" class="header-anchor"&gt;&lt;/a&gt;阶段一：被动截断与滑动窗口时期
&lt;/h2&gt;&lt;h3 id="典型特征"&gt;&lt;a href="#%e5%85%b8%e5%9e%8b%e7%89%b9%e5%be%81" class="header-anchor"&gt;&lt;/a&gt;典型特征
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;上下文窗口普遍较小，token 极度稀缺&lt;/li&gt;
&lt;li&gt;主要策略是“超了就截断”&lt;/li&gt;
&lt;li&gt;常见实现是 sliding window（仅保留最近 N 轮）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="解决了什么"&gt;&lt;a href="#%e8%a7%a3%e5%86%b3%e4%ba%86%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;解决了什么
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;至少保证系统不因超长输入直接失败&lt;/li&gt;
&lt;li&gt;保留最近交互，维持最基本的多轮连续性&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="核心问题"&gt;&lt;a href="#%e6%a0%b8%e5%bf%83%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;核心问题
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;早期关键信息容易被丢弃&lt;/li&gt;
&lt;li&gt;长任务中“目标漂移”严重&lt;/li&gt;
&lt;li&gt;历史状态无法稳定继承&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="阶段二外部拓扑引入时期-rag"&gt;&lt;a href="#%e9%98%b6%e6%ae%b5%e4%ba%8c%e5%a4%96%e9%83%a8%e6%8b%93%e6%89%91%e5%bc%95%e5%85%a5%e6%97%b6%e6%9c%9f-rag" class="header-anchor"&gt;&lt;/a&gt;阶段二：外部拓扑引入时期-RAG
&lt;/h2&gt;&lt;h3 id="典型特征-1"&gt;&lt;a href="#%e5%85%b8%e5%9e%8b%e7%89%b9%e5%be%81-1" class="header-anchor"&gt;&lt;/a&gt;典型特征
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;从“把所有信息塞进窗口”转向“按需检索再注入”&lt;/li&gt;
&lt;li&gt;向量检索 + 语义召回开始成为主流&lt;/li&gt;
&lt;li&gt;RAG 将参数知识与外部知识解耦&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="解决了什么-1"&gt;&lt;a href="#%e8%a7%a3%e5%86%b3%e4%ba%86%e4%bb%80%e4%b9%88-1" class="header-anchor"&gt;&lt;/a&gt;解决了什么
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;突破单窗口记忆上限&lt;/li&gt;
&lt;li&gt;降低幻觉（至少让回答有可检索证据）&lt;/li&gt;
&lt;li&gt;让知识更新不依赖模型重训练&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="核心问题-1"&gt;&lt;a href="#%e6%a0%b8%e5%bf%83%e9%97%ae%e9%a2%98-1" class="header-anchor"&gt;&lt;/a&gt;核心问题
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;检索召回质量不稳定（召不回、召偏）&lt;/li&gt;
&lt;li&gt;上下文拼接后仍会出现注意力稀释&lt;/li&gt;
&lt;li&gt;“召回了不等于模型用好了”&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="阶段三精细化压缩与重排时期"&gt;&lt;a href="#%e9%98%b6%e6%ae%b5%e4%b8%89%e7%b2%be%e7%bb%86%e5%8c%96%e5%8e%8b%e7%bc%a9%e4%b8%8e%e9%87%8d%e6%8e%92%e6%97%b6%e6%9c%9f" class="header-anchor"&gt;&lt;/a&gt;阶段三：精细化压缩与重排时期
&lt;/h2&gt;&lt;h3 id="典型特征-2"&gt;&lt;a href="#%e5%85%b8%e5%9e%8b%e7%89%b9%e5%be%81-2" class="header-anchor"&gt;&lt;/a&gt;典型特征
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;社区系统性关注 Long Context 利用率&lt;/li&gt;
&lt;li&gt;出现“Lost in the Middle”相关研究与工程优化&lt;/li&gt;
&lt;li&gt;策略从“堆上下文”升级为“压缩、重排、分层记忆”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="常见方法"&gt;&lt;a href="#%e5%b8%b8%e8%a7%81%e6%96%b9%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;常见方法
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;历史摘要压缩（state snapshot / handoff summary）&lt;/li&gt;
&lt;li&gt;工具输出裁剪（保留最近关键回合）&lt;/li&gt;
&lt;li&gt;信息重排（把最关键证据靠前/靠后放置）&lt;/li&gt;
&lt;li&gt;任务分段与阶段性交接&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="解决了什么-2"&gt;&lt;a href="#%e8%a7%a3%e5%86%b3%e4%ba%86%e4%bb%80%e4%b9%88-2" class="header-anchor"&gt;&lt;/a&gt;解决了什么
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;降低中段信息被忽视的问题&lt;/li&gt;
&lt;li&gt;提高长任务状态继承稳定性&lt;/li&gt;
&lt;li&gt;让 Agent 跨窗口执行更可控&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="核心问题-2"&gt;&lt;a href="#%e6%a0%b8%e5%bf%83%e9%97%ae%e9%a2%98-2" class="header-anchor"&gt;&lt;/a&gt;核心问题
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;压缩摘要可能引入信息损失&lt;/li&gt;
&lt;li&gt;重排规则依赖任务类型，难一套通吃&lt;/li&gt;
&lt;li&gt;需要评估体系验证“压缩后是否仍可执行”&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="阶段四无限长上下文与基建缓存时期"&gt;&lt;a href="#%e9%98%b6%e6%ae%b5%e5%9b%9b%e6%97%a0%e9%99%90%e9%95%bf%e4%b8%8a%e4%b8%8b%e6%96%87%e4%b8%8e%e5%9f%ba%e5%bb%ba%e7%bc%93%e5%ad%98%e6%97%b6%e6%9c%9f" class="header-anchor"&gt;&lt;/a&gt;阶段四：无限长上下文与基建缓存时期
&lt;/h2&gt;&lt;h3 id="典型特征-3"&gt;&lt;a href="#%e5%85%b8%e5%9e%8b%e7%89%b9%e5%be%81-3" class="header-anchor"&gt;&lt;/a&gt;典型特征
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;模型上下文窗口持续增大&lt;/li&gt;
&lt;li&gt;供应商和框架层引入更完善的缓存/复用机制&lt;/li&gt;
&lt;li&gt;Agent 系统从“上下文管理”走向“上下文基础设施”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="常见能力"&gt;&lt;a href="#%e5%b8%b8%e8%a7%81%e8%83%bd%e5%8a%9b" class="header-anchor"&gt;&lt;/a&gt;常见能力
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Prompt/前缀缓存（减少重复 token 成本）&lt;/li&gt;
&lt;li&gt;会话状态快照与恢复&lt;/li&gt;
&lt;li&gt;多层记忆架构（短期工作记忆 + 长期外部记忆）&lt;/li&gt;
&lt;li&gt;基于策略的动态上下文构建&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="解决了什么-3"&gt;&lt;a href="#%e8%a7%a3%e5%86%b3%e4%ba%86%e4%bb%80%e4%b9%88-3" class="header-anchor"&gt;&lt;/a&gt;解决了什么
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;降低长链路调用成本与时延&lt;/li&gt;
&lt;li&gt;提升长任务连续执行能力&lt;/li&gt;
&lt;li&gt;让“记忆管理”可工程化治理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="核心问题-3"&gt;&lt;a href="#%e6%a0%b8%e5%bf%83%e9%97%ae%e9%a2%98-3" class="header-anchor"&gt;&lt;/a&gt;核心问题
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;成本与复杂度上升&lt;/li&gt;
&lt;li&gt;记忆污染与过时信息治理更难&lt;/li&gt;
&lt;li&gt;需要可观测性来定位上下文失效点&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="行业内知名的上下文工程文章与资料"&gt;&lt;a href="#%e8%a1%8c%e4%b8%9a%e5%86%85%e7%9f%a5%e5%90%8d%e7%9a%84%e4%b8%8a%e4%b8%8b%e6%96%87%e5%b7%a5%e7%a8%8b%e6%96%87%e7%ab%a0%e4%b8%8e%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;行业内知名的上下文工程文章与资料
&lt;/h2&gt;&lt;p&gt;以下是我认为对上下文工程最有代表性的公开资料：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Anthropic: &lt;a class="link" href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents" target="_blank" rel="noopener"
 &gt;Effective context engineering for AI agents&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;明确提出“上下文工程是提示词工程的自然延伸”&lt;/li&gt;
&lt;li&gt;强调 Agent 可靠性的瓶颈在上下文构建而非单次提示词&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Anthropic: &lt;a class="link" href="https://www.anthropic.com/research/prompting-long-context" target="_blank" rel="noopener"
 &gt;Prompt engineering for Claude&amp;rsquo;s long context window&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;早期长上下文实践文章，给出长输入结构化使用建议&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Anthropic Docs: &lt;a class="link" href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/long-context-tips" target="_blank" rel="noopener"
 &gt;Long context prompting tips&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;偏工程落地，适合作为 checklist&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="4"&gt;
&lt;li&gt;LangChain Docs: &lt;a class="link" href="https://docs.langchain.com/oss/python/langchain/context-engineering" target="_blank" rel="noopener"
 &gt;Context engineering in agents&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;关注代码层面的可实现策略&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="5"&gt;
&lt;li&gt;论文: &lt;a class="link" href="https://arxiv.org/abs/2307.03172" target="_blank" rel="noopener"
 &gt;Lost in the Middle: How Language Models Use Long Contexts&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;对“中间信息利用率下降”给出系统性证据&lt;/li&gt;
&lt;li&gt;直接推动了后续压缩与重排策略的工程化&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="6"&gt;
&lt;li&gt;RAG 经典论文: &lt;a class="link" href="https://arxiv.org/abs/2005.11401" target="_blank" rel="noopener"
 &gt;Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;奠定“外部检索 + 生成”的主流范式&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="上下文工程到底解决了什么问题"&gt;&lt;a href="#%e4%b8%8a%e4%b8%8b%e6%96%87%e5%b7%a5%e7%a8%8b%e5%88%b0%e5%ba%95%e8%a7%a3%e5%86%b3%e4%ba%86%e4%bb%80%e4%b9%88%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;上下文工程到底解决了什么问题
&lt;/h2&gt;&lt;p&gt;可以归纳为 6 个核心问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;信息选择问题&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;不是把所有内容都给模型，而是给“当前步骤最有用的信息”&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;记忆延续问题&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;让长任务跨多轮、多窗口、多会话仍能连续执行&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;成本与性能问题&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;控制 token 成本、时延与吞吐，避免无效上下文浪费&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="4"&gt;
&lt;li&gt;可靠性问题&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;降低模型漏读关键证据、误读历史状态、重复试错&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="5"&gt;
&lt;li&gt;可治理问题&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;让上下文策略（压缩/检索/重排）可配置、可评估、可迭代&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="6"&gt;
&lt;li&gt;与工具链协同问题&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;把上下文与 RAG、缓存、状态机、任务编排系统协同起来&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话总结：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;上下文工程解决的不是“模型会不会回答”，而是“模型能否在复杂任务里持续、稳定、低成本地做对”。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="我的实践结论"&gt;&lt;a href="#%e6%88%91%e7%9a%84%e5%ae%9e%e8%b7%b5%e7%bb%93%e8%ae%ba" class="header-anchor"&gt;&lt;/a&gt;我的实践结论
&lt;/h2&gt;&lt;p&gt;对于 Agent 项目，建议按下面顺序建设：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先有 Prompt 工程（明确任务契约）&lt;/li&gt;
&lt;li&gt;再做 Context 工程（管理信息生命周期）&lt;/li&gt;
&lt;li&gt;最后上 Harness 工程（形成端到端执行闭环）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果只做 Prompt，不足以支撑长任务；如果跳过 Context 直接做 Harness，系统复杂度会快速上升且难排障。&lt;/p&gt;</description></item><item><title>Agent_上下文压缩提示词</title><link>https://xedczq.cn/post/agent_contextcompression/</link><pubDate>Fri, 15 May 2026 17:58:59 +0800</pubDate><guid>https://xedczq.cn/post/agent_contextcompression/</guid><description>&lt;h1 id="agent-上下文压缩设计笔记"&gt;&lt;a href="#agent-%e4%b8%8a%e4%b8%8b%e6%96%87%e5%8e%8b%e7%bc%a9%e8%ae%be%e8%ae%a1%e7%ac%94%e8%ae%b0" class="header-anchor"&gt;&lt;/a&gt;Agent 上下文压缩设计笔记
&lt;/h1&gt;
 &lt;blockquote&gt;
 &lt;p&gt;参考文章：&lt;a class="link" href="https://wakeup-jin.github.io/Practical-Guide-to-Context-Engineering/%E4%B8%8A%E4%B8%8B%E6%96%87%E7%AE%A1%E7%90%86/%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9%E6%8C%87%E4%BB%A4%EF%BC%9AClaudeCode%E4%B8%8EGemini%E7%9A%84%E5%8E%8B%E7%BC%A9%E6%8F%90%E7%A4%BA%E8%AF%8D%E8%A7%A3%E6%9E%90.html" target="_blank" rel="noopener"
 &gt;上下文压缩指令：ClaudeCode与Gemini的压缩提示词解析&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="上下文压缩解决什么问题"&gt;&lt;a href="#%e4%b8%8a%e4%b8%8b%e6%96%87%e5%8e%8b%e7%bc%a9%e8%a7%a3%e5%86%b3%e4%bb%80%e4%b9%88%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;上下文压缩解决什么问题
&lt;/h2&gt;&lt;p&gt;Agent 的上下文窗口不是无限的。随着多轮对话、工具调用、文件读取、报错日志和代码 diff 不断累积，模型会逐渐接近上下文上限。上下文压缩的目标不是简单地“变短”，而是在尽量少损失任务连续性的前提下，把历史对话整理成下一轮 Agent 可以继续工作的状态。&lt;/p&gt;
&lt;p&gt;可以把上下文压缩理解为一次“工作交接”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留用户真正想做什么&lt;/li&gt;
&lt;li&gt;保留项目约束、技术栈和关键决策&lt;/li&gt;
&lt;li&gt;保留已经读过、改过、创建过的文件状态&lt;/li&gt;
&lt;li&gt;保留报错、修复方案和仍未解决的问题&lt;/li&gt;
&lt;li&gt;丢弃重复、过时、冗长的工具输出&lt;/li&gt;
&lt;li&gt;让新的上下文窗口可以接着做，而不是重新探索&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个好的压缩系统应该回答三个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什么时候压缩：由 token 阈值、消息长度、工具输出规模等调度策略决定&lt;/li&gt;
&lt;li&gt;压缩什么：决定保留用户消息、系统约束、工具结果、文件状态还是计划&lt;/li&gt;
&lt;li&gt;如何压缩：使用 LLM 摘要、规则裁剪、检索重建，或组合方案&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="经典方案一llm-摘要压缩"&gt;&lt;a href="#%e7%bb%8f%e5%85%b8%e6%96%b9%e6%a1%88%e4%b8%80llm-%e6%91%98%e8%a6%81%e5%8e%8b%e7%bc%a9" class="header-anchor"&gt;&lt;/a&gt;经典方案一：LLM 摘要压缩
&lt;/h2&gt;&lt;p&gt;Claude Code 和 Gemini CLI 都采用了一个重要思路：当上下文过长时，把历史消息交给一个模型，让模型输出结构化摘要。这个摘要会成为新上下文窗口中的核心记忆。&lt;/p&gt;
&lt;p&gt;这类方案的优点是语义保留能力强，能够把分散在历史中的目标、约束、错误和计划重新组织起来。缺点是压缩结果依赖模型判断，如果提示词设计不好，可能丢失文件路径、代码片段、用户偏好或未完成任务。&lt;/p&gt;
&lt;h3 id="claude-code-风格详细结构化摘要"&gt;&lt;a href="#claude-code-%e9%a3%8e%e6%a0%bc%e8%af%a6%e7%bb%86%e7%bb%93%e6%9e%84%e5%8c%96%e6%91%98%e8%a6%81" class="header-anchor"&gt;&lt;/a&gt;Claude Code 风格：详细结构化摘要
&lt;/h3&gt;&lt;p&gt;Claude Code 的压缩提示词偏“完整交接文档”。它强调按时间顺序分析历史，并关注用户请求、技术细节、文件变更、错误修复和下一步。&lt;/p&gt;
&lt;p&gt;适合保留的字段可以设计为：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;字段&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;主要请求和意图&lt;/td&gt;
 &lt;td&gt;保留用户最初目标和后续意图变化&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;关键技术概念&lt;/td&gt;
 &lt;td&gt;记录技术栈、框架、架构模式、依赖&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;文件和代码部分&lt;/td&gt;
 &lt;td&gt;记录读过、改过、创建过的文件，以及关键代码片段&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;错误和修复&lt;/td&gt;
 &lt;td&gt;避免压缩后重复踩坑&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;问题解决&lt;/td&gt;
 &lt;td&gt;区分已经解决的问题和仍在排查的问题&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;用户消息&lt;/td&gt;
 &lt;td&gt;保留用户原始反馈，减少意图被摘要扭曲&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;待处理任务&lt;/td&gt;
 &lt;td&gt;让 Agent 知道还有哪些明确任务没做&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;当前工作&lt;/td&gt;
 &lt;td&gt;记录压缩发生前正在做什么，停在哪里&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;可选下一步&lt;/td&gt;
 &lt;td&gt;只保留与当前任务直接相关的后续动作&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这个方案的核心不是“总结得漂亮”，而是“让下一个上下文窗口能继续干活”。尤其是 coding agent 场景，文件路径、函数名、测试命令、失败日志和用户纠正非常关键。&lt;/p&gt;
&lt;p&gt;可以抽象成下面的压缩模板：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请将历史对话压缩为一份可继续执行任务的工作交接摘要。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;必须保留：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 用户的主要目标和明确请求
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 项目技术栈、架构约束和关键决策
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 已读取、修改、创建、删除的文件及其原因
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 关键代码片段、函数签名、配置项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. 已遇到的错误、报错信息、修复方式
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;6. 用户的重要反馈和偏好
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;7. 已完成事项、待处理事项、当前停顿位置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;8. 下一步建议，但只能包含与当前任务直接相关的动作
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;必须删除：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 重复解释
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 过时的工具输出
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 对后续没有帮助的中间尝试
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 无关寒暄
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="gemini-cli-风格状态快照"&gt;&lt;a href="#gemini-cli-%e9%a3%8e%e6%a0%bc%e7%8a%b6%e6%80%81%e5%bf%ab%e7%85%a7" class="header-anchor"&gt;&lt;/a&gt;Gemini CLI 风格：状态快照
&lt;/h3&gt;&lt;p&gt;Gemini CLI 的压缩提示词更像是生成一个精简的 &lt;code&gt;state_snapshot&lt;/code&gt;。它保留的字段更少，但密度更高。&lt;/p&gt;
&lt;p&gt;典型字段包括：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;字段&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;overall_goal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;用一句话描述用户的高层目标&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;key_knowledge&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;记录必须记住的事实、约束、约定&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;file_system_state&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;记录文件系统层面的创建、读取、修改、删除&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;recent_actions&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;记录最近关键动作和结果&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;current_plan&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;记录当前计划，以及哪些步骤已完成&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这个方案适合做“运行状态快照”，尤其适合 Agent 在任务中断后恢复执行。它比 Claude Code 风格更短，但对细节保留的要求更严格。&lt;/p&gt;
&lt;p&gt;可以抽象成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;state_snapshot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;overall_goal&amp;gt;&lt;/span&gt;用户当前想完成的高层目标&lt;span class="nt"&gt;&amp;lt;/overall_goal&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;key_knowledge&amp;gt;&lt;/span&gt;关键事实、约束、偏好、技术决策&lt;span class="nt"&gt;&amp;lt;/key_knowledge&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;file_system_state&amp;gt;&lt;/span&gt;文件读取、修改、创建、删除状态&lt;span class="nt"&gt;&amp;lt;/file_system_state&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;recent_actions&amp;gt;&lt;/span&gt;最近执行过的重要动作及结果&lt;span class="nt"&gt;&amp;lt;/recent_actions&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;current_plan&amp;gt;&lt;/span&gt;当前计划、已完成步骤、未完成步骤&lt;span class="nt"&gt;&amp;lt;/current_plan&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/state_snapshot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="经典方案二工具消息裁剪"&gt;&lt;a href="#%e7%bb%8f%e5%85%b8%e6%96%b9%e6%a1%88%e4%ba%8c%e5%b7%a5%e5%85%b7%e6%b6%88%e6%81%af%e8%a3%81%e5%89%aa" class="header-anchor"&gt;&lt;/a&gt;经典方案二：工具消息裁剪
&lt;/h2&gt;&lt;p&gt;在真实 Agent 系统里，最占上下文的往往不是用户消息，也不是助手回复，而是工具调用结果。例如读取文件、搜索代码、运行测试、查看日志，都会产生大量文本。&lt;/p&gt;
&lt;p&gt;因此，工具消息裁剪是非常实用的压缩策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留系统消息&lt;/li&gt;
&lt;li&gt;保留普通用户消息和助手消息&lt;/li&gt;
&lt;li&gt;删除过时的工具调用和工具结果&lt;/li&gt;
&lt;li&gt;只保留最近 N 轮工具调用&lt;/li&gt;
&lt;li&gt;对关键工具结果先摘要，再删除原始长输出&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个简单策略是：识别所有工具调用轮次，只保留最后 &lt;code&gt;N&lt;/code&gt; 轮工具调用，其余工具输入和输出全部移除。&lt;/p&gt;
&lt;p&gt;伪代码如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ts" data-lang="ts"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;MessageRole&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;system&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;user&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;assistant&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tool&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;Message&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;role&lt;/span&gt;: &lt;span class="kt"&gt;MessageRole&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;content&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;tool_calls?&lt;/span&gt;: &lt;span class="kt"&gt;unknown&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;tool_call_id?&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;CompressionOptions&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;enabled&lt;/span&gt;: &lt;span class="kt"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;keepLastToolRounds&lt;/span&gt;: &lt;span class="kt"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;compressToolMessages&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;messages&lt;/span&gt;: &lt;span class="kt"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;options&lt;/span&gt;: &lt;span class="kt"&gt;CompressionOptions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;toolRounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;identifyToolRounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;roundsToKeep&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;toolRounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;keepLastToolRounds&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;keepIndexes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;roundsToKeep&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;flatMap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;round&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;round&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;indexes&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;role&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;system&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;keepIndexes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isToolRelated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;role&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tool&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;role&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;assistant&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tool_calls&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isToolRelated&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个方案的关键判断是：工具输出是不是还能帮助后续决策。如果已经被模型吸收成结论，或者只是中间探索结果，就可以删；如果是最新测试结果、关键报错、重要文件内容，则应该保留或先摘要。&lt;/p&gt;
&lt;h2 id="经典方案三中间移除最旧移除与混合策略"&gt;&lt;a href="#%e7%bb%8f%e5%85%b8%e6%96%b9%e6%a1%88%e4%b8%89%e4%b8%ad%e9%97%b4%e7%a7%bb%e9%99%a4%e6%9c%80%e6%97%a7%e7%a7%bb%e9%99%a4%e4%b8%8e%e6%b7%b7%e5%90%88%e7%ad%96%e7%95%a5" class="header-anchor"&gt;&lt;/a&gt;经典方案三：中间移除、最旧移除与混合策略
&lt;/h2&gt;&lt;p&gt;除了让 LLM 总结，也可以用规则算法直接裁剪消息。这种方案更可控、成本更低，但语义理解能力弱一些。&lt;/p&gt;
&lt;p&gt;常见三种裁剪方式：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;策略&lt;/th&gt;
 &lt;th&gt;做法&lt;/th&gt;
 &lt;th&gt;适用场景&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;中间移除&lt;/td&gt;
 &lt;td&gt;保留开头和结尾，删除中间消息&lt;/td&gt;
 &lt;td&gt;开头有系统约束、结尾有当前任务&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;最旧移除&lt;/td&gt;
 &lt;td&gt;从最早消息开始删除，保留最近消息&lt;/td&gt;
 &lt;td&gt;长对话、近期上下文最重要&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;混合策略&lt;/td&gt;
 &lt;td&gt;根据对话特征动态选择&lt;/td&gt;
 &lt;td&gt;不同模型、不同任务混合使用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="中间移除策略"&gt;&lt;a href="#%e4%b8%ad%e9%97%b4%e7%a7%bb%e9%99%a4%e7%ad%96%e7%95%a5" class="header-anchor"&gt;&lt;/a&gt;中间移除策略
&lt;/h3&gt;&lt;p&gt;中间移除适合这种结构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;开头：系统提示词、项目规则、用户目标
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;中间：大量工具调用、搜索过程、尝试过程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;结尾：当前问题、最近代码、最新错误
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;它的优势是保留“任务框架”和“当前现场”。缺点是中间可能包含关键决策，如果没有先做摘要，容易丢失重要信息。&lt;/p&gt;
&lt;h3 id="最旧移除策略"&gt;&lt;a href="#%e6%9c%80%e6%97%a7%e7%a7%bb%e9%99%a4%e7%ad%96%e7%95%a5" class="header-anchor"&gt;&lt;/a&gt;最旧移除策略
&lt;/h3&gt;&lt;p&gt;最旧移除更像传统滑动窗口。它默认最近消息最重要，适合长对话持续推进的场景。&lt;/p&gt;
&lt;p&gt;它的优势是简单直接，能保持当前任务连续性。缺点是可能丢掉早期用户约束、架构决策或项目目标。&lt;/p&gt;
&lt;h3 id="混合策略"&gt;&lt;a href="#%e6%b7%b7%e5%90%88%e7%ad%96%e7%95%a5" class="header-anchor"&gt;&lt;/a&gt;混合策略
&lt;/h3&gt;&lt;p&gt;混合策略可以根据以下特征选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前 token 数与目标 token 数的压缩比例&lt;/li&gt;
&lt;li&gt;消息总数&lt;/li&gt;
&lt;li&gt;最近几条消息占总 token 的比例&lt;/li&gt;
&lt;li&gt;是否包含长消息&lt;/li&gt;
&lt;li&gt;是否包含系统消息&lt;/li&gt;
&lt;li&gt;是否包含大量工具消息&lt;/li&gt;
&lt;li&gt;当前使用的模型和上下文窗口大小&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个可落地的选择规则：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;条件&lt;/th&gt;
 &lt;th&gt;推荐策略&lt;/th&gt;
 &lt;th&gt;原因&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;轻度压缩且对话较短&lt;/td&gt;
 &lt;td&gt;中间移除&lt;/td&gt;
 &lt;td&gt;开头和结尾通常最重要&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;重度压缩且对话很长&lt;/td&gt;
 &lt;td&gt;最旧移除&lt;/td&gt;
 &lt;td&gt;最新上下文优先级更高&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;最近消息 token 占比很高&lt;/td&gt;
 &lt;td&gt;中间移除&lt;/td&gt;
 &lt;td&gt;需要保护最近现场&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;有系统消息或工具消息&lt;/td&gt;
 &lt;td&gt;中间移除&lt;/td&gt;
 &lt;td&gt;保留开头规则和结尾状态&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;不确定&lt;/td&gt;
 &lt;td&gt;同时试两种，按评分选择&lt;/td&gt;
 &lt;td&gt;用数据而不是拍脑袋&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可以用一个简单评分函数评估裁剪结果：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;效率分数 = token 减少率 * 0.6 + 消息保留率 * 0.4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果系统更重视“压到目标 token 以下”，就提高 token 减少率权重；如果系统更重视“少丢上下文”，就提高消息保留率权重。&lt;/p&gt;
&lt;h2 id="推荐的组合式压缩架构"&gt;&lt;a href="#%e6%8e%a8%e8%8d%90%e7%9a%84%e7%bb%84%e5%90%88%e5%bc%8f%e5%8e%8b%e7%bc%a9%e6%9e%b6%e6%9e%84" class="header-anchor"&gt;&lt;/a&gt;推荐的组合式压缩架构
&lt;/h2&gt;&lt;p&gt;单一压缩方式往往不够稳。更适合 Agent 的做法是组合：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;原始历史消息
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;统计 token 和消息结构
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;判断是否达到压缩阈值
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;先裁剪过时工具消息
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;对关键历史做 LLM 结构化摘要
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;生成 state snapshot / handoff summary
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;重建新上下文窗口
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;推荐保留四层上下文：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层级&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;th&gt;存放方式&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;稳定规则层&lt;/td&gt;
 &lt;td&gt;系统提示词、项目规则、安全约束&lt;/td&gt;
 &lt;td&gt;常驻 prompt 或规则文件&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;工作记忆层&lt;/td&gt;
 &lt;td&gt;当前目标、计划、待办、用户偏好&lt;/td&gt;
 &lt;td&gt;结构化摘要&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;证据层&lt;/td&gt;
 &lt;td&gt;最新工具结果、关键错误、关键代码片段&lt;/td&gt;
 &lt;td&gt;最近 N 轮工具消息或摘要&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;外部知识层&lt;/td&gt;
 &lt;td&gt;文档、代码库、历史记录&lt;/td&gt;
 &lt;td&gt;RAG / 文件检索&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;压缩后新上下文可以这样组织：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;系统提示词
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;项目规则
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;压缩说明开篇语
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;结构化摘要
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;最近几轮完整对话
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;最近关键工具结果
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;当前用户请求
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中“最近几轮完整对话”很重要。摘要可以保留大局，但最新几轮的原始表达通常包含微妙意图、语气、纠正和边界条件。&lt;/p&gt;
&lt;h2 id="压缩提示词设计要点"&gt;&lt;a href="#%e5%8e%8b%e7%bc%a9%e6%8f%90%e7%a4%ba%e8%af%8d%e8%ae%be%e8%ae%a1%e8%a6%81%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;压缩提示词设计要点
&lt;/h2&gt;&lt;p&gt;设计压缩 prompt 时，重点不是让模型自由发挥，而是给它一个稳定的交接格式。&lt;/p&gt;
&lt;p&gt;建议包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明确角色：你是上下文压缩器，不是任务执行者&lt;/li&gt;
&lt;li&gt;明确目标：生成下一轮 Agent 可以继续工作的状态&lt;/li&gt;
&lt;li&gt;明确保留项：目标、约束、文件、代码、错误、计划、用户反馈&lt;/li&gt;
&lt;li&gt;明确删除项：重复内容、无关工具输出、寒暄、中间噪声&lt;/li&gt;
&lt;li&gt;明确输出格式：Markdown、XML、JSON 或自定义标签&lt;/li&gt;
&lt;li&gt;明确禁止行为：不要编造文件状态，不要添加未发生的决策，不要开始执行下一步&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个实用压缩 prompt：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;你是 Agent 的上下文压缩器。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请把历史对话压缩成一份中文工作交接摘要。这个摘要将成为新上下文窗口继续执行任务的主要依据。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;必须保留：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 用户的主要目标、明确请求和重要反馈
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 技术栈、项目约束、架构决策、工具偏好
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 已读取、修改、创建、删除的文件路径
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 关键代码片段、函数名、配置项、命令
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 已遇到的错误、失败测试、修复过程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 已完成任务、未完成任务、当前停顿位置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 下一步建议，但只能包含与当前任务直接相关的动作
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;必须删除：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 重复解释
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 无关寒暄
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 已无价值的工具输出
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 没有影响最终决策的中间尝试
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;不要编造历史中没有出现的信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;不要执行任务，只输出压缩摘要。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="工程落地建议"&gt;&lt;a href="#%e5%b7%a5%e7%a8%8b%e8%90%bd%e5%9c%b0%e5%bb%ba%e8%ae%ae" class="header-anchor"&gt;&lt;/a&gt;工程落地建议
&lt;/h2&gt;&lt;h3 id="触发时机"&gt;&lt;a href="#%e8%a7%a6%e5%8f%91%e6%97%b6%e6%9c%ba" class="header-anchor"&gt;&lt;/a&gt;触发时机
&lt;/h3&gt;&lt;p&gt;可以在这些情况下触发压缩：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前 token 超过模型上下文窗口的 70% 到 85%&lt;/li&gt;
&lt;li&gt;单次工具输出超过阈值&lt;/li&gt;
&lt;li&gt;工具调用轮次超过阈值&lt;/li&gt;
&lt;li&gt;任务阶段完成，需要生成阶段性 handoff&lt;/li&gt;
&lt;li&gt;用户主动输入 &lt;code&gt;/compact&lt;/code&gt; 或类似命令&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="压缩顺序"&gt;&lt;a href="#%e5%8e%8b%e7%bc%a9%e9%a1%ba%e5%ba%8f" class="header-anchor"&gt;&lt;/a&gt;压缩顺序
&lt;/h3&gt;&lt;p&gt;推荐顺序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先清理明显无价值的工具输出&lt;/li&gt;
&lt;li&gt;再保留最近 N 轮完整对话&lt;/li&gt;
&lt;li&gt;对旧消息生成结构化摘要&lt;/li&gt;
&lt;li&gt;将摘要、规则、最近消息重新组装为新上下文&lt;/li&gt;
&lt;li&gt;记录压缩统计，如压缩前后 token、删除消息数、保留工具轮次&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="风险控制"&gt;&lt;a href="#%e9%a3%8e%e9%99%a9%e6%8e%a7%e5%88%b6" class="header-anchor"&gt;&lt;/a&gt;风险控制
&lt;/h3&gt;&lt;p&gt;上下文压缩最常见的失败不是“压缩率不够”，而是“关键事实丢失”。尤其要防止：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;丢失用户明确限制&lt;/li&gt;
&lt;li&gt;丢失文件路径&lt;/li&gt;
&lt;li&gt;丢失最新报错&lt;/li&gt;
&lt;li&gt;丢失已经尝试过但失败的方案&lt;/li&gt;
&lt;li&gt;把推测写成事实&lt;/li&gt;
&lt;li&gt;把已完成任务和待办任务混在一起&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，压缩结果最好保留“状态标签”：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[已完成] 修复登录页表单校验
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[失败尝试] 直接修改 schema 会破坏旧接口
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[待确认] 是否保留旧版导出格式
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[下一步] 运行 pnpm test 验证 auth 模块
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="我的总结"&gt;&lt;a href="#%e6%88%91%e7%9a%84%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;我的总结
&lt;/h2&gt;&lt;p&gt;上下文压缩本质上是 Agent 的“记忆管理”和“工作交接系统”。Claude Code 风格更适合保留完整开发上下文，Gemini CLI 风格更适合生成高密度状态快照，工具消息裁剪则是最直接有效的 token 降噪方案。&lt;/p&gt;
&lt;p&gt;如果要实现一个稳定的 Agent 压缩模块，我会优先选择这套组合：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;最近对话完整保留
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ 过时工具消息裁剪
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ LLM 结构化摘要
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ 文件状态快照
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ 当前计划和待办列表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ 压缩统计和可观测日志
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最终目标不是让上下文最短，而是让 Agent 在压缩之后仍然知道：用户要什么、项目是什么、我做过什么、哪里失败过、现在停在哪里、下一步该怎么走。&lt;/p&gt;</description></item></channel></rss>