Appearance
会话生命周期:compact、clear、resume 与检查点
缓存篇讲了"别破坏前缀",上下文窗口篇讲了"窗口只增不减"。本篇讲日常操作层面:一个会话从开始到结束,什么时候该压缩、该重开、该回滚、该续跑。
核心命令速查
| 命令 | 作用 | 对上下文的影响 |
|---|---|---|
/context | 查看窗口占用明细 | 无(诊断工具) |
/compact | 把历史压缩成摘要 | 大幅缩小,细节丢失 |
/clear | 清空对话,重新开始 | 归零(系统提示、CLAUDE.md 仍在) |
/resume | 列出历史会话,挑一个继续 | 恢复所选会话的完整历史 |
claude -c / --continue | 直接续上最近一个会话 | 同上 |
Esc Esc / /rewind | 回滚到之前的检查点 | 对话和/或代码回到当时状态 |
/cost | 查看本会话花费(API 计费时) | 无 |
Compact:压缩是有损的
窗口接近上限时,Claude Code 会自动 compact:把早期历史总结成一段摘要,腾出空间继续。这是保底机制,但把压缩时机交给自动触发有两个问题:压缩发生在任务中间(正是上下文最值钱的时候),而且你无法控制保留什么。
更好的做法是主动压缩,选好时机:
- 在阶段边界压缩:一个功能改完、测试通过、刚提交——此刻旧历史的细节价值最低,是压缩的黄金时间;
- 带指令压缩:
/compact 保留所有文件修改记录和未解决的报错—— 告诉它摘要里什么必须留下; - 压缩前把状态写进文件:让 Agent 先把进展、待办、关键决定写到一个 markdown(如
PROGRESS.md),文件不怕压缩——摘要丢了细节,随时能从文件读回来。这是长任务最重要的习惯。
与缓存的关系
compact 会改写对话历史 ⇒ 缓存前缀必然重建一次。所以"少量多次"是最差策略——每次都付重建成本。攒到阶段边界一次压到位,然后在新前缀上继续累积命中。
Clear:重开比压缩更常被低估
经验法则:换任务就 /clear,别舍不得。
上一个任务的历史对新任务不但没帮助,还是三重负担:占窗口、增加每轮成本、且残留的旧上下文会干扰模型对新任务的判断(它可能"惯性"沿用上个任务的假设)。/clear 之后系统提示、CLAUDE.md、MCP 都还在,只是对话归零——相当于换了一张干净的桌子,而不是搬了办公室。
什么时候不该 clear:同一任务的自然延续(修复刚才实现里的 bug)、需要引用前面结论的追问。
Resume 与续跑:跨会话的长任务
会话历史保存在本地,随时可以捞回来:
claude --continue:续上最近一次会话,适合"昨天干到一半今天接着来";claude --resume(或会话内/resume):从列表中挑选历史会话。
但要清醒:恢复的会话把整个历史重新载入窗口,而且缓存早已过期(TTL 只有 5 分钟到 1 小时),第一轮是全额重建。所以跨天的长任务,靠 resume 不如靠文件化的状态:
text
推荐的长任务模式:
1. 让 Agent 维护一个 TODO.md / PROGRESS.md,每完成一步就更新;
2. 阶段完成 → 提交 git → /clear;
3. 新会话开场:"读 PROGRESS.md,继续下一项"。
── 每个会话都从小而干净的上下文开始,状态却一点不丢。这个模式同时解决了窗口膨胀、缓存重建、compact 丢细节三个问题,是本站最推荐的工作方式。
检查点与回滚:大胆尝试的安全网
Claude Code 会在每次修改前自动记录检查点(checkpoint)。按 Esc Esc(或 /rewind)可以回滚,且对话和代码可以分开回:
- 只回代码:方案 A 改坏了,代码回到改动前,但对话里保留"方案 A 为什么失败"的记忆——让 Agent 带着教训试方案 B(非常好用);
- 只回对话:代码是对的,但对话被带偏了,回到之前的提问重新说;
- 都回:彻底重来。
注意检查点不替代 git:它不覆盖 Bash 命令产生的副作用(比如脚本删的文件),跨会话的持久保障仍然是"小步提交"。
一张时机决策表
| 情形 | 动作 |
|---|---|
| 开始一个不相关的新任务 | /clear |
任务没完,窗口 /context 显示超过 ~60-70% | 阶段边界处 /compact(先写状态文件) |
| 改动方向错了 | Esc Esc 回代码,保留对话教训 |
| 今天收工,明天继续 | 状态写文件 + git 提交;明天新会话读文件(优于 resume) |
| 改 CLAUDE.md / 增删 MCP / 换模型 | 顺手 /clear——反正缓存要重建(见缓存策略) |
| 大任务里的独立探索 | 别污染本会话,派子代理 |