探讨了在前一章提到的“自动压缩”完成后,Claude Code 如何通过附件(Attachments)机制**有选择地恢复关键上下文,以防止模型出现“失忆”现象。
以下是该章节的核心内容总结:
1. 核心哲学:恢复比压缩更重要
作者指出,“没有恢复的压缩只是多了一步数据丢失”。压缩会清空原始对话历史,如果模型不记得刚刚读过哪些文件或正在执行什么计划,就会导致模型重复操作或工作流中断。
2. 快照-清空模式 (Snapshot-Clear)
在执行压缩前,系统会先启动快照逻辑:
先存:将内存中的
FileStateCache(文件状态缓存)序列化保存,记录模型读过的每一个文件、内容及时间戳。再清:随后显式清空缓存。这样做是为了确保系统进入一个干净的状态,避免因旧缓存导致后续的文件去重逻辑出错。
3. 专项恢复通道
除了文件和技能,系统还通过特定附件恢复以下内容:
计划与计划模式:
Plan附件恢复计划内容,PlanMode附件确保模型继续以“计划模式”运行,防止其回退到执行模式。Delta 增量重播:通过传入空的消息历史,触发延迟工具、Agent 列表和 MCP 指令的完整重新宣告。
异步 Agent:恢复正在后台运行或已完成但未检索的 Agent 任务状态,防止重复启动相同任务。
4. 刻意的工程权衡
为了节省成本,系统故意不恢复 sentSkillNames(已发送的技能名称列表)。虽然这会节省约 4K Token 的缓存创建成本,但模型仍能通过工具定义的 Schema 感知到技能的存在,这是一个收益大于损失的工程决策。
5. 给用户的实操建议
刷新时间戳:由于只恢复最近的 5 个文件,在预感要压缩时,可以让模型重新读取一次核心文件以确保其在压缩后不丢失。
结构优化:将关键的技能指令放在文件开头,以应对 5K Token 的截断逻辑。
利用计划模式:对于超长任务,使用
/plan可以确保计划跨越压缩边界被完整保留。
6. 版本演进
v2.1.91:新增了
staleReadFileStateHint,增强了单轮对话内对陈旧文件状态的追踪能力。v2.1.100:引入了**工具结果去重(Tool Result Dedup)**机制,通过哈希引用替换重复的巨量输出,从源头上减少了触发压缩的频率。
总结而言,本章展示了 Claude Code 如何通过分层过滤、预算控制和多通道重播,在极致节约 Token 的同时,维持了复杂长会话的连贯性。
