突破AI上下文限制!Claude Code四层压缩策略让对话“无限”延续
一、问题:上下文窗口有限,但对话可以无限增长
大语言模型有一个根本性限制:上下文窗口有限。Claude 的窗口约为 200K tokens,看似很大,但在真实编程对话中消耗极快。
一次 FileRead 可能占用数千 tokens;一次 Grep 搜索结果、一次 Shell 命令输出、一次错误日志——每步操作都在消耗窗口空间。一个复杂的重构任务可能涉及几十个文件、上百次工具调用。
当 token 消耗逼近窗口上限:
- • 不处理 → API 报错(Prompt Too Long),对话崩溃
- • 简单截断 → 丢失关键上下文,AI 行为错乱
- • 全部重新总结 → 成本高、延迟大
需要一套分层的、渐进式的压缩策略,在信息保真度、空间效率和成本之间取得平衡。
二、分析:压缩策略的设计约束
| 约束 | 说明 |
|---|---|
| 信息保真 | 压缩后不能丢失正在进行的工作所需的关键信息 |
| 成本敏感 | 每次 LLM 调用都有 token 费用和时间开销 |
| API 兼容 | 不能破坏 tool_use / tool_result 的成对结构 |
| 实时性 | 压缩过程不能阻塞主交互流程太久 |
| 可恢复性 | 压缩后仍需恢复当前工作台的关键状态 |
核心设计哲学:能不花钱就不花钱,能少花钱就少花钱。
三、方案:四层压缩体系
四层从"零成本"到"有成本"渐进排列,形成级联降级策略:
成本 ↑ 能力 ↑ │ │Layer 4 ──┤ 局部压缩 ├── 用户手动选择范围Layer 3 ──┤ LLM 完整压缩 ├── AI 生成九区段摘要Layer 2 ──┤ SM 替换 ├── 用现成笔记替换旧消息Layer 1 ──┤ 规则清理 ├── 纯规则驱动,清除过期内容 │ │ 零成本 高成本3.1 Layer 1:MicroCompact(规则清理)
成本:零。不调用任何 LLM。
触发时机:每次 API 调用前自动执行。
三条执行路径:
| 路径 | 机制 | 清理对象 |
|---|---|---|
| A:时间间隔 | 清除超过 60 分钟未引用的工具结果 | 旧的 tool_result 内容体(保留结构) |
| B:Cached MC | 利用 API 的cache_edits指令 | 服务端虚拟清理,本地历史不变 |
| C:API 管理 | 使用clear_tool_uses/clear_thinking | 非近期工具调用和思考块 |
关键细节:
- • 路径 A 只清理内容体,保留工具调用的结构记录(知道调用过什么,但不保留详细输出)
- • 路径 B 是"虚拟压缩"——本地消息历史不变,不破坏 Prompt Cache
- • 三条路径均为规则驱动,无需 AI 理解内容
3.2 Layer 2:Session Memory Compaction(零成本替换)
成本:零 API 调用。这是最"反直觉"也最巧妙的一层。
前提——Session Memory 系统:
Claude Code 在后台持续维护一份结构化的 Markdown 笔记,记录当前会话的关键信息。这份笔记由一个后台 Forked Agent 实时更新。
笔记的9 个区段:
| 区段 | 内容 |
|---|---|
| Current State | 当前正在进行的工作 |
| Task Specification | 用户的原始需求 |
| Files and Functions | 已查看/修改的文件 |
| Workflow | 执行步骤和决策路径 |
| Errors & Corrections | 遇到的坑和修复记录 |
| Codebase Documentation | 项目结构发现 |
| Learnings | 项目特定知识 |
| Key Results | 已产出的结果 |
| Worklog | 详细时间线 |
每个区段约 2,000 tokens,总计不超过 12,000 tokens。
更新触发条件(三重阈值,必须同时满足):
上下文 tokens ≥ 10,000 AND 距上次更新增长 ≥ 5,000 tokens AND 距上次更新 ≥ 3 次工具调用压缩机制:当需要压缩时,直接用已维护好的 Session Memory 笔记替换掉旧消息。
这就是"预计算"思想的核心:
传统方案: 需要压缩 → 调用 LLM 生成摘要 → 替换(成本 = 1 次 LLM 调用)SM 方案: 后台持续维护笔记 → 需要压缩时直接用 → 替换(成本 = 0)适用范围:上下文在 10K-40K tokens 之间。
API 不变量保护:adjustIndexToPreserveAPIInvariants()函数确保删除旧消息时,不会拆散tool_use/tool_result成对结构。切割点自动调整到安全的消息边界。
3.3 Layer 3:Full LLM Compaction(AI 结构化摘要)
成本:一次 LLM 调用。
触发条件:当前 tokens ≥上下文窗口 - 最大输出 tokens - 13,000(13K 为安全缓冲区)。
摘要结构:系统指令要求 AI 生成九区段结构化摘要:
| 区段 | 内容 |
|---|---|
| Primary Request | 用户的核心需求和意图 |
| Key Technical Concepts | 涉及的技术约束和概念 |
| Files and Code | 查看/修改过的文件清单 |
| Errors | 遇到的错误和修复方案 |
| Problem Solving | 关键决策节点和推理过程 |
| All User Messages | 用户的所有重要指示 |
| Pending Tasks | 尚未完成的任务 |
| Current Work | 当前进行中的工作 |
| Suggested Next Step | 建议的下一步操作 |
双段式生成:先<analysis>自由分析,再<summary>输出结构化摘要。最终只保留 summary,analysis 丢弃。
Forked Agent + Prompt Cache 复用:
摘要由 Forked Agent 执行(而非主 Agent),好处在于:
- 共享父进程的 System Prompt + 对话历史作为 cache prefix
- API 侧 Prompt Cache 命中 → 只对增量指令计费
- 零工具权限——只能输出文本,不能操作文件
后处理恢复:压缩完成后,系统精心恢复关键状态:
| 恢复项 | 预算 |
|---|---|
| 最近操作的文件内容 | 最多 5 个文件,50K tokens |
| 活跃的 Plan | 无限制 |
| 已加载的 Skill 上下文 | 每个 5K,总计 25K tokens |
| 尚未完成的工具调用 | 无限制 |
设计原则:压缩的是历史,恢复的是当前。
PTL 重试:如果摘要本身太长导致 Prompt Too Long 错误,从最旧的对话轮次逐步丢弃,最多重试 3 次。
3.4 Layer 4:Partial Compaction(局部压缩)
成本:一次 LLM 调用(范围更小)。
触发方式:用户手动选择。
两种模式:
| 模式 | 说明 |
|---|---|
from | 从某条消息到最新——只压缩这个区间 |
up_to | 从最早到某条消息——只压缩这个区间 |
适用场景:对话前半段任务已完成,需要集中精力做后半段时,手动压缩已完成部分。
四、级联降级策略
四层之间构成明确的降级链路:
上下文膨胀 → 触发自动压缩 │ ├─ 尝试 Layer 2 (SM Compaction) │ ├─ 成功 → 完成 (零成本) ✅ │ └─ 不可用/不够 → 降级 │ ├─ 尝试 Layer 3 (Full LLM Compaction) │ ├─ 成功 → 完成 (一次 LLM 调用) ✅ │ └─ PTL 错误 → PTL 重试 (最多 3 次) │ └─ 仍失败 → 熔断 (停止自动压缩) │ └─ Layer 1 (MicroCompact) → 每次 API 调用前自动执行(不参与级联) Layer 4 (Partial) → 用户手动触发(不参与级联)安全保护:
- •递归保护:压缩过程中不触发新的压缩
- •熔断机制:连续 3 次失败 → 停止自动压缩,避免死循环
五、关键设计亮点
5.1 "预计算"思想
Session Memory 的核心价值在于将压缩成本分摊到日常维护中:
| 维度 | 传统方案 | Claude Code 方案 |
|---|---|---|
| 压缩时机 | 紧急时刻临时总结 | 日常后台持续更新笔记 |
| 压缩成本 | 一次高成本 LLM 调用 | 零额外成本(笔记已就绪) |
| 信息时效 | 即时但延迟高 | 准实时(后台增量更新) |
类比:数据库的物化视图、CDN 的预热缓存、编译器的增量编译。
5.2 不可能三角的工程折衷
上下文管理面临一个不可能三角:
信息完整性 /\ / \ / \ / 不可 \ / 能三角 \ /____________\ 空间效率 成本最优Claude Code 的策略是在不同层级牺牲不同维度:
| 层 | 牺牲的维度 | 保留的优势 |
|---|---|---|
| Layer 1 | 时间维度的信息(旧工具输出) | 零成本 + 保持结构 |
| Layer 2 | 信息粒度(摘要替代原文) | 零成本 + 结构化笔记 |
| Layer 3 | 成本(一次 LLM 调用) | 高质量九区段摘要 |
| Layer 4 | 用户参与(需手动选择) | 最精确的范围控制 |
六、小结
| 层 | 成本 | 触发方式 | 核心机制 |
|---|---|---|---|
| Layer 1: MicroCompact | 零 | 每次 API 调用前 | 规则清理过期工具结果 |
| Layer 2: SM Compaction | 零 | 自动(10K-40K tokens) | 用预维护的 Session Memory 笔记替换旧消息 |
| Layer 3: Full Compaction | 一次 LLM | 自动(接近窗口上限) | Forked Agent 生成九区段摘要 + 后处理恢复 |
| Layer 4: Partial | 一次 LLM | 手动 | 用户选择压缩范围 |
四层策略的价值:在上下文窗口这个硬约束下,实现了"几乎无感"的压缩体验。用户无需关心窗口管理,系统在后台自动处理,从免费到付费逐级升级。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
