天机亘古 TAIMUMACHINN 天机亘古 TAIMUMACHINN
首页
CC Bots
开源商业
登录 →
天机亘古 天机亘古
首页 CC Bots 开源商业
登录
  1. 首页
  2. Claude Code 上下文管理机制技术解析:渐进式加载、三级压缩与会话恢复

Claude Code 上下文管理机制技术解析:渐进式加载、三级压缩与会话恢复

  • 发布于 2026-08-09
  • 0 次阅读
大卫
大卫
验证基准 2.1.226 2026-08-08 Formal · 技术报告 · 图解版 strings 字符串级核验

摘要

Claude Code 的上下文管理体系由四个相互衔接的子系统构成:按固定顺序组装的全局上下文、面向大体量工具结果的渐进式加载与磁盘分页、按成本与容量分级触发的三级压缩(snip、微压缩、全局压缩),以及基于只增不减磁盘日志的会话持久化与恢复。

本文整理自对其源码结构的技术分析,并以本地安装的 2.1.226 版发行产物做了字符串级验证:各机制的内部标识(microcompact、snipTokensFreed、autoCompactThreshold、九段式压缩提示词全部段落标题)均得到证实;具体数值参数未能在混淆产物中逐一定位,文中以「据源码分析」标注。

图例(全图通用) 驻留窗口 / 受保护 一般上下文内容 清除产物 / 标记 / 有损 磁盘 / 占位 / 按需

§ 1 · SCOPE & METHOD

范围与方法

分析对象为 Claude Code 的上下文管理子系统,不涉及权限模型与插件体系。Claude Code 以混淆后的 JavaScript 产物形式分发,其内部机制可经由还原分析与字符串检索加以考察。全文按两档标注证据强度:已证实——机制标识、遥测事件名或提示词文本可在 2.1.226 产物中直接命中;据源码分析——机制成立、但具体数值未能以字面量定位。

§ 2 · ASSEMBLY & LOOP

全局上下文的构成与请求循环

会话启动时,运行时将 CLAUDE.md、内置系统提示词与全部工具定义拼接为初始上下文。此后每轮响应包含三类内容块——思考过程、文本回复、工具调用 JSON——三者连同后续的工具执行结果全部写回窗口。工具结果与思考过程由此构成上下文增长的主要来源,后续全部管理机制都围绕这一增长压力展开。

CLAUDE.md 项目级配置 内置系统提示词 工具定义 名称 · 描述 · 调用方法 拼接 全局上下文窗口 系统提示词 · 工具定义 CLAUDE.md · 初始请求 对话 · 思考 · 工具结果 持续增长 大模型(主 agent) 每轮请求:携带全量上下文 思考过程 文本回复 工具调用 JSON 返回 三类全部写回窗口 调用 工具执行 结果写回窗口(大体量结果的处理见图 2)
图 1 · 请求循环。窗口底部两层(青绿)为固定前缀:系统提示词、工具定义与初始请求在后续各级压缩中受到不同程度的保护;其上的对话、思考与工具结果随轮次持续增长,构成全部管理机制所应对的压力源。

§ 3 · LARGE RESULTS

大体量工具结果的处理

分页落盘(渐进式加载)。以联网搜索为例,单次返回可达数万字符。运行时不将其直接写入窗口,而是按最大页长分页、拼装为文本文件写入磁盘,仅将首页内容与文件路径插入上下文;模型如需查阅剩余内容,依据路径按需读取。产物中的 Output too large、saved to disk 与遥测事件 tool_result_persisted 证实了该落盘机制(已证实)。

小模型定向摘要。对网页抓取工具 WebFetch,运行时由小规模模型按主 agent 下发的任务提示词对长文本做定向摘要,仅摘要入窗。工具描述 Fetches content from a specified URL and processes it using an AI model 与多处 small, fast model 表述证实该路径(已证实)。

上下文 窗口 首页 + 路径 定向摘要 小结果直写 A · 分页落盘(渐进式加载) 联网搜索结果 ≈ 9 万字符 分页 每页设上限 磁盘文本文件 首页 ⋯ 仅首页 + 路径入窗 按需按路径读取 B · 小模型定向摘要(WebFetch) 网页全文 WebFetch 抓取 主 agent 任务提示词 小模型定向摘要 small, fast model 仅摘要入窗 未超阈值的工具结果 直接写入(不分页)
图 2 · 两条降载路径。数万字符的原始返回停留在磁盘(虚线域),窗口内只保留数百字符量级的「入口」——首页加路径,或定向摘要。窗口条上入项之小与左侧数据块之大的反差,即渐进式加载的全部要义。

§ 4 · SUBAGENT ISOLATION

子 agent 的上下文隔离

需要并行探索时,主 agent 可派生若干子 agent。每个子 agent 的初始上下文由主 agent 撰写的任务描述与其自身系统提示词拼接而成;执行期间适用与主 agent 完全相同的上下文管理机制;任务完成后仅回传一段总结,全部执行轨迹随即丢弃。探索期的大量工具调用消耗因此被隔离在一次性的独立上下文中,代价是中间证据不可回溯,需由子 agent 在总结中自行保全关键信息。

主上下文(主 agent) 只承接结论 · 保持精简 派生:任务描述 仅回传总结 任务描述 子agent系统提示词 ⋯ 轨迹增长 ✕ 总结 任务描述 子agent系统提示词 ⋯ 轨迹增长 ✕ 总结 任务描述 子agent系统提示词 ⋯ 轨迹增长 ✕ 总结 ✕ 执行轨迹与中间过程随任务结束丢弃,不回传主上下文
图 3 · 消耗隔离。子 agent 内部的灰色轨迹条会照常增长并接受同一套压缩机制,但对主上下文而言只有青绿的「总结」存在——探索的 token 成本被留在一次性上下文里。

§ 5 · THREE-TIER COMPACTION

三级压缩体系

当窗口接近容量上限时,运行时依次动用三种压缩机制,整体遵循「低损优先、有损殿后」的次序。snip 与微压缩均属对历史消息的改写;由于 Anthropic 提示缓存(prompt caching)按前缀匹配生效,改写历史会使缓存前缀失效、反而抬高成本,二者因此被安排在缓存失效之后触发——据源码分析,条件为距首次 API 调用超过约 60 分钟,与提示缓存的一小时扩展有效期相对应;遥测事件 tengu_time_based_microcompact 证实了时间维度触发路径(已证实)。全局压缩则由上下文长度触发。

① snip 触发:距首次 API 调用 > 约 60 分钟(据源码分析) 保护区 = 系统提示词 · 工具定义 · 初始请求 保护区 较老对话 其余内容 较老对话 → 一枚压缩标记 保护区 其余内容 释放 ② 微压缩 microcompact 触发:同上(时间触发 路径已证实) 保护区 较老工具结果 历史思考 图 最近内容 老结果→占位 · 思考仅留最近一条 · 图片→占位符 保护区 最近内容 释放 ③ 全局压缩 auto-compact 触发:长度阈值(见图 5) 有损 系统提示词 · 工具定义 其余全部内容(含初始请求 · 对话 · 结果 · 思考) 全部内容 → 九段式结构化摘要 · 重读最近文件 · 插入边界标识 系统提示词 · 工具定义 九段式摘要 近文件 释放 九段式提示词的段落标题(Primary Request and Intent … Optional Next Step)已在产物中全部命中(已证实)。
图 4 · 三级压缩的作用对象。每行为一次「改写前 → 改写后」对照:青绿保护区始终原样保留;琥珀色块是改写产物(压缩标记、边界标识);虚线块为占位或释放出的空间。三行自上而下信息损失递增,全局压缩是唯一的有损操作,因而排在触发序列末端。

全局压缩的触发与断路保护

据源码分析,运行时以字符数除以 4 估算 token 规模,对当前上下文总量与最近一次 API 调用新增量之和的估算值乘以三分之四的系数后,与约 167K token 的阈值比较,超出即启动压缩;该公式与阈值未能以字面量证实,但阈值变量 autoCompactThreshold 及配套字段确认存在(部分证实)。压缩失败累计超过 3 次后放弃本轮(据源码分析),构成断路保护;compact_failed 遥测与 isRecompactionInChain、willRetriggerNextTurn 等连锁压缩控制字段证实了失败记录与再压缩调度逻辑(已证实)。

token 用量估算 (总字符+新增)÷4 ×4/3 超过阈值? 约167K·据源码分析 是 发起压缩调用 九段式压缩提示词(已证实) 否 继续会话 成功? 是 摘要替换旧上下文 重读最近文件(据源码分析 5 个) 插入压缩边界标识 否 失败计数 +1 重试(累计 < 3 次) 累计 ≥ 3 次 放弃本轮压缩 断路机制
图 5 · 控制流。压缩调用本身也可能因上下文过长而失败,重试上限构成断路保护,避免反复烧钱的死循环;willRetriggerNextTurn 字段表明压缩后仍超阈值时存在下一轮再触发的调度。

§ 6 · PERSISTENCE & RESUME

会话持久化与恢复

全部上下文操作——内容新增、各级压缩、以及压缩前的原始上下文——均以只增不减(append-only)的形式持续写入磁盘日志。会话恢复因此成为一次纯粹的重放:进程退出或主机重启后,按序读取日志中的最新状态并附带对应的磁盘文件目录,即可还原至中断前的现场。磁盘容量远大于上下文窗口,渐进式加载与会话恢复共用同一存储事实——磁盘是上下文的外存层。

上下文窗口 内存 · 易失 · 容量受限 中断:进程退出 / 重启 恢复后的窗口 重放最新状态还原现场 会话日志(磁盘 · JSONL) append-only 用户消息 模型输出(思考 · 回复 · 调用) 工具结果 压缩边界(压缩前原文保留在日志中) 后续新增 … ← 尾部追加 全部操作即时追加 恢复:按序读取最新状态
图 6 · 磁盘兜底。压缩只改写窗口内的视图,日志中的原文一概保留——这既是「压缩可追溯」的保证,也是断点恢复的全部依据。

§ 7 · DESIGN NOTES

设计评述

综合来看,该体系呈现出三条清晰的工程原则。原分析对其给出了很高的工程评价,本文认同这一判断:上述机制单独看均非首创,但其组合覆盖了 agent 长程运行中上下文膨胀、成本控制与断点恢复的完整闭环,工程完成度较高,对同类系统具有直接的参考价值。

PRINCIPLE 01

无损优先,有损殿后

分页落盘、定向摘要、snip 与微压缩要么可按路径找回原文,要么只裁剪低价值历史;唯一不可逆的全局压缩被置于触发序列末端,并配有断路保护。

PRINCIPLE 02

成本感知的调度

对历史消息的改写与提示缓存的失效窗口对齐——避免为节省上下文而破坏缓存前缀,反使后续请求成本上升。

PRINCIPLE 03

以磁盘为外存

分页、日志与恢复共用同一存储事实;上下文窗口被当作稀缺的一级资源来调度,热数据驻留窗口,冷数据留盘按需取回。

§ 8 · VERIFICATION

验证方法与局限

验证方式为对本地安装的 2.1.226 版发行产物(约 285 MB 打包 JavaScript)执行 strings 检索,以机制标识、遥测事件名与提示词文本的命中情况核对各项论断。

论断验证状态关键证据字符串
snip 机制存在已证实snipEnabled · snipTokensFreed
微压缩保留最近工具结果已证实compact_micro_keep_recent · keepRecent
压缩存在时间触发路径已证实tengu_time_based_microcompact
九段式压缩提示词已证实九个段落标题全部命中
压缩后恢复最近文件已证实post_compact_file_restore_success
大体量结果落盘已证实Output too large · tool_result_persisted
WebFetch 小模型摘要已证实small, fast model
压缩失败记录与再压缩调度已证实compact_failed · isRecompactionInChain
触发窗口 60 分钟 · 恢复 5 文件 · 熔断 3 次据源码分析数值未以字面量命中
阈值公式(字符 ÷4 · ×4/3 · 167K)部分证实仅 autoCompactThreshold 变量命中

局限有三:字符串命中证实机制存在,但不覆盖其全部运行时行为,未做动态跟踪;混淆产物中的数值常量无法与特定机制可靠关联,所有数值均按源码分析结果转述并明确标注;版本迭代频繁,结论以 2.1.226 为基准。

SOURCES

信息来源

  • 本地 Claude Code 2.1.226 发行产物字符串检索(2026-08-08 实测)
  • Anthropic 官方文档:Prompt caching(提示缓存的前缀匹配语义与一小时扩展有效期)
标签: #Claude Code 1 #Agent 1 #上下文工程 1
目录

主菜单

  • 首页
  • CC Bots
  • 开源商业

All Rights Reserved.Powered by 天机亘古

闽ICP备2024072539号.