来源:互联网 更新时间:2026-06-29 07:11
先说一个核心判断:在真实的编码会话中,token 总量轻松飙到 400K 甚至更高,而模型的上下文窗口只有 200K。Claude Code 究竟是怎么把“无限增长的对话”塞进“固定大小的窗口”,还能一路保持思路连贯的?
答案不是“撑满了就总结一下”这么简单。其背后是一条
src/services/compact/,约 
不妨把上下文窗口想象成模型的
问题在于:
grep、让它改几轮代码——每次工具调用都往台面上堆 2K–8K token。不处理的话,迟早撑爆。
更微妙的是:
所以 Claude Code 的目标不是“用满”,而是

整条流水线只有一句话原则:
每往下一层,要么消耗更多算力,要么丢掉更多细节。于是系统能做到:“能用零成本手段解决的,绝不动用花钱又有损的 LLM 摘要。” 实测结论也印证了这一点:
下面是完整的 5 级全景。
DEFAULT_MAX_RESULT_SIZE_CHARS,约 Output too large (2.3 MB). Full output sa ved to: /tmp/.claude/session-xxx/tool-results/toolu_abc123.txt Preview (first 2.0 KB): [前 2000 字节内容] ...
Read 工具从磁盘把完整文件取回来。2KB 预览则刚好够它判断“要不要去取”。
这是对很多笔记里“Snip 就是直接截断”说法的修正:第一层的本质是
可以把这一层理解成
这是最关键、也最精妙的一层。一句话定性:
MicroCompact 不是“总结历史”,而是“对旧工具输出做垃圾回收”。

微压缩只回收“旧工具调用返回的大块原始内容”,因为这些内容有个共同点——
| 工具类型 | 为什么适合清理 |
|---|---|
| Read | 文件之后可以重新读取 |
| Bash / Shell | 旧日志通常很大,而且可能已经过时 |
| Grep | 搜索结果可以重新生成 |
| Glob | 文件列表可以重新扫描 |
| WebSearch / WebFetch | 网页内容可以重新获取 |
| Edit / Write | 修改结果通常已经落到文件系统里 |
微压缩内部分两条路,
microcompactMessages()
|
+-------------+--------------+
| |
长时间未交互? 缓存仍然有效?
| |
是 是
| |
Time-based Microcompact Cached Microcompact
(直接改本地消息内容) (改用 cache_edits)
| |
冷缓存场景 热缓存场景
| 对比项 | Time-based Microcompact | Cached Microcompact |
|---|---|---|
| 使用场景 | 长时间没继续对话,缓存大概率已过期 | 对话持续进行,缓存仍然有效 |
| 是否修改本地消息 | 修改 | 不修改 |
| 如何删除内容 | 把旧结果替换为固定占位符 | 给 API 发送 cache_edits |
| 是否保留提示缓存 | 不需要(缓存已经冷了) | 尽量保留缓存前缀 |
| 触发依据 | 时间间隔 | 工具数量阈值 |
| 优先级 | 最高 | 时间路径未触发时才执行 |
cache_edits 指令,让服务端已有缓存: A B C D E F G
↓ 发送 cache_edits:基于原缓存,把 C 标记为删除
有效视图: A B D E F G
微压缩后,被标记删除的旧工具结果,cache 里还缓存着吗?会暂时同时存在于“服务端原始缓存块”和“本地消息历史”里,但在
| 所在位置 | 是否还在 |
|---|---|
Claude Code 本地 messages | 还在 |
| 本地会话记录 / transcript | 通常还在 |
| 服务端原始缓存块 | 很可能暂时还在,直到 TTL 过期 |
| 模型当前有效上下文 | 不在 |
| 后续请求的有效 token 统计 | 不再计入活动上下文 |
如果前几层还不够,进入折叠层。它的定位和“自动压缩”有本质区别:
Context Collapse 是持续、增量式的上下文管理;AutoCompact 是达到阈值后对整段会话的一次集中式重写。
折叠层最大的优点是
projectView() 在请求时把摘要“叠加”到原始消息之上。换句话说,模型看到的是折叠后的视图,但底层数据还在——需要时能还原。
它大约在
| 对比项 | Context Collapse | AutoCompact(自动压缩) |
|---|---|---|
| 工作方式 | 持续、增量式管理 | 达到阈值后一次性执行 |
| 处理粒度 | 更细,逐步提交可保留信息 | 更粗,把旧上下文整体摘要化 |
| 触发阶段 | 约 90% 开始 commit,95% 进入阻塞处理 | 有效窗口剩约 13K token 时触发 |
| 是否调用模型 | 通常由独立 context agent 整理、提交 | 会调用模型生成摘要 |
| 对原消息的影响 | 维护独立的 committed log,逐步折叠活动上下文 | 直接用“摘要 + 保留的近期消息”替换旧消息 |
| 中断程度 | 偏增量、后台式整理 | 类似一次 stop-the-world 压缩 |
| 信息保留 | 倾向保存更细粒度的结构化信息 | 主要依赖摘要质量 |
| 能否与自动压缩并存 | — | 开启 Collapse 后,主动 AutoCompact 被禁用 |
一句话记住差异:
走到这里,才会真的
/compact。
用户发一条消息
│
▼
主对话循环(query loop)
│
▼
autoCompactIfNeeded(messages, ...) ← 总指挥
│
▼
先查熔断器:连续失败 ≥ 3 次? ──是──▶ 直接放弃(防死循环)
│否
▼
shouldAutoCompact(...) ← 只负责判断「该不该」
│ 一连串"直接返回 false"的守卫(递归 / 实验开关 / 功能未开)
│ 都过了 → 数 token → calculateTokenWarningState → 返回 true/false
▼
返回 false → 不压,结束
返回 true → 继续:
│
▼
trySessionMemoryCompaction(...) ← ① 优先用「会话记忆」压
│ 成功 → 清理 + 返回 wasCompacted:true
│ 失败 / 不可用 ↓
▼
compactConversation(...) ← ② 退而用传统 LLM 摘要
│ 成功 → 清理 + consecutiveFailures:0 + 返回
└ 抛错 → 失败次数 +1 + 返回 wasCompacted:false
几个值得注意的设计:
messages 只剩一条,但 Agent 知道“之前发生过什么”,能接着干活。再周密的估算也有失手的时候——某个工具结果意外巨大、多个系统提醒同时注入、token 估算偏低……一旦 API 直接返回
hasAttemptedReactiveCompact 守卫保证它这一层的哲学很值得玩味:
除了自动触发,压缩也能被主动调用:你随时可以 /compact(还能附带指令,比如“重点保留认证相关的工作”);Agent 自己也可能在
compact 清空当前上下文,为新任务腾地方。
回到最初的灵魂拷问。先把结论说清楚:
Read 回来、折叠可还原、微压缩只是“视图”过滤。但只要它会发生,信息论上就一定有损耗。Claude Code 用两件事来兜底这条根本局限:
CLAUDE.md / auto memory 管的是“跨会话的长期知识”。每个会话从干净上下文开始,记忆文件在开头被读入;auto memory 还能让 Claude 根据你的纠正自动记笔记。两者配合,Agent 既不被当前对话淹没,又不丢失重要的长期信息。.transcripts/ 里保存了这是整套设计里一个容易被忽视、却很值得警惕的点:
摘要器(summarizer)会用同一条流水线处理“用户指令”和“工具结果”。如果攻击者在某个项目文件里埋了恶意指令,而模型恰好读了那个文件——这些指令会
草稿区,也会忠实地把注入指令一并保留下来。换句话说:
抛开 Claude Code 本身,这套压缩流水线其实是一份很好的
想自己摸一遍?在真实会话里跑一次 /context,对照本文的阈值,看看 system prompt、tools、memory、messages 和那块 autocompact 缓冲各占多少 token——把“理论”和“实测”对上号,比只读源码更有体感。
src/services/compact/,约 autoCompactIfNeeded / shouldAutoCompact / calculateTokenWarningState / trySessionMemoryCompaction / compactConversation / microcompactMessages / projectView。
archiveofourown 实战指南:常见用法整理
币安Binance虚拟货币交易平台 币安官方APP安卓苹果下载入口
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
折后价近千元 澳洲一店主将真老鼠缝到内裤上当时尚单品卖
电视剧《小欢喜》剧情介绍
如何在夸克浏览器中开启网页视频的倍速播放功能?
美好的简约网名男生(精选100个)
植物娘大战僵尸电脑端与手机端存档转移的方法
《梦幻西游》159五开五门怎么搭配-159五开五门常见搭配
欧易OKX官方网站直达入口 2026欧易官方App安卓版v7.1.0下载安装
腾讯元宝怎么用来分析股票基金的基本面信息?
盖乐世社区怎么删除帖子?盖乐世社区个人发布内容撤回步骤
wallpaper壁纸声音怎么开启
独家/李宰旭入伍前「登上孤岛服役」 惊见前辈裸体:忍不住笑了
国际贵金属走低,现货黄金价格跌0.49%
短剧《嫡女她是山大王》剧情介绍
问题:CIA币好不?Cia Protocol币今日上线:价格预测、代币经济学和未来潜力
看韩漫的APP推荐 2026免费韩漫阅读软件大全
OpenAI 调整手机端 ChatGPT,提示词可提前选 AI 响应档位
免费观看国外短视频的app有哪些 观看国外短视频的软件下载
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc