2.5 上下文压缩(Compaction)
什么是上下文压缩
上下文压缩是 Claude Code 的服务端功能,当对话历史接近 Token 限制时,自动将早期对话压缩为简洁摘要,从而扩展有效上下文长度。这让你能够进行更长时间、更高复杂度的任务,而无需手动管理对话历史。
工作原理
Claude Code 使用 compact-2026-01-12 机制进行服务端压缩:
- 当对话进行到约 80% Token 限制时,自动触发压缩
- 早期消息被替换为一个摘要,保持关键上下文
- 压缩过程在服务端完成,不消耗额外 API 调用
- 压缩后的摘要保留了关键决策、文件修改和用户意图
触发条件
| 条件 | 说明 |
|---|---|
| Token 达到阈值 | 对话历史接近模型上下文窗口的 80% |
| 手动触发 | 使用 /compact 命令主动压缩 |
| 自动触发 | Claude Code 根据对话密度自动判断 |
手动压缩命令
/compact
手动触发上下文压缩,将当前对话历史压缩为摘要。
与自动压缩的区别
- 自动压缩:静默进行,不打断工作流
- 手动压缩:你可以控制压缩时机,查看摘要内容
压缩后的状态
压缩完成后,你可以:
- 继续当前任务,仿佛没有压缩发生过
- 询问「之前的摘要是什么」,了解压缩保留的内容
- 用
/full查看完整对话历史(压缩前的版本)
避免压缩抖动(Thrashing)
如果自动压缩反复失败,出现 Autocompact is thrashing 提示,说明对话结构导致压缩困难。可以:
- 使用更精确的文件引用(如
@filename#100-200)代替整文件 - 用
/clear开始新会话 - 将大任务分解为多个子任务
- 使用子代理处理独立模块
压缩与 /memories 的关系
上下文压缩处理的是会话历史,而 Memory Tool(/memories 目录)处理的是跨会话持久化。两者配合使用:
- 压缩:让你在单个长会话中走得更远
- Memory Tool:让你在会话之间保留关键信息
Beta 状态说明
上下文压缩目前处于 Beta 阶段,使用 compact-2026-01-12 头部。功能可能随版本更新变化,建议关注官方更新日志。