DAY 04 · CLAUDE CODE ROADMAP · 20 DAYS

管理 Claude 的有限记忆

Claude 的上下文窗口就像一块白板——空间有限,写满了旧内容就没地方放新信息。 今天你将学习如何用 /compact 主动"擦白板"、理解自动压缩的触发机制、 掌握 /clear 的重置策略,以及在长时间工作中用 --continue--resume 维持最佳工作状态

DURATION 40–50 min THEORY 20 min HANDS-ON 15 min REVIEW 10 min COMMANDS /compact · /clear · --continue · --resume
M ·

思维导图

OVERVIEW
DAY 04 · 上下文管理CONTEXT WINDOW · COMPACT · CLEAR · STRATEGY01 · CONTEXT上下文窗口02 · /COMPACT主动压缩03 · /CLEAR清空与重置04 · STRATEGY对话策略·200K token 容量·系统提示词 + 对话历史·工具结果占用空间·"越靠后越清晰"·/compact 手动触发·自动压缩 (接近极限)·自定义压缩焦点·摘要替换旧消息·/clear 完全清空·何时该 clear·clear ≠ 退出对话·CLAUDE.md + Memory 仍在·--continue / -c·--resume 选择历史·一任务一对话原则·识别上下文劣化DELIVERABLES理解上下文生命周期掌握 /compact 时机建立对话管理习惯形成个人对话策略GOLDEN RULE不要和一个"忘了前因"的 Claude 硬聊 — 主动管理上下文比被动等待自动压缩更高效
FIG · Day 04 全景: 上下文窗口 → /compact 压缩 → /clear 重置 → 对话策略
01 ·

上下文窗口 — 理解"有限记忆"

8 MIN

Claude 不会真正"记住"你们之前聊了什么——它只是把所有对话内容放进一个固定大小的窗口里, 每次回答时从头到尾读一遍。窗口满了,旧内容就必须被压缩或丢弃。 理解这个机制是高效使用 Claude Code 的前提

上下文窗口里装了什么

CONTEXT WINDOW ANATOMY — ~200K TOKENSSYSTEM PROMPTCLAUDE.mdMemory内置规则工具定义~固定开销CONVERSATION HISTORY旧消息(压缩后会被摘要替代)新消息(越新 = 越清晰)← 占用空间随对话增长 →OUTPUTClaude 的回答空间~预留空间对话越长 → 历史越多 → 留给新内容和输出的空间越少 → Claude 的回答质量下降
FIG · 上下文窗口 = 系统提示词 + 对话历史 + 输出空间,三者共享固定容量

Token 是什么

内容大约 Token 数说明
1 个英文单词~1 token"hello" = 1 token
1 个中文字~1.5 token"你好" ≈ 3 tokens
1 行代码~10-15 tokens取决于变量名长度和复杂度
一次 Read 工具结果~500-5000 tokens读大文件会迅速填满上下文
典型 CLAUDE.md~300-800 tokens每次对话都会消耗的固定开销
KEY INSIGHT

"越靠后越清晰"

Claude 对最近的消息注意力最强——如果对话很长,前面讨论过的细节可能被"遗忘"或混淆。这不是 Bug,而是 Transformer 架构的固有特性。对策:在长对话中重复关键信息,或用 /compact 把旧内容压缩为摘要。

WARNING

工具结果是隐形的大户

每次 Read 文件、grep 搜索、运行 Bash 命令,返回的结果都会被完整存入上下文。一次 Read 一个 500 行文件可能消耗 5000+ tokens。连续读几个文件后,你的对话空间可能已经用掉一半了——即使你只说了两句话。

你可以在 Claude Code 界面底部看到当前上下文使用量的进度条——养成瞥一眼的习惯。
02 ·

/compact — 主动压缩上下文

10 MIN

/compact 是你管理上下文的核心武器。 它让 Claude 把当前对话中的旧消息压缩成一段精简摘要, 然后用这段摘要替换原始内容——腾出大量空间给后续对话。

/compact 的用法

# 基础用法: 压缩当前对话
> /compact
# Claude 会把之前的对话历史压缩为一段摘要
# 你会看到: "Conversation compacted. Summary: ..."

# 带焦点的压缩: 告诉 Claude 重点保留什么
> /compact 保留关于数据库迁移的讨论细节
# 摘要会侧重数据库迁移的上下文

> /compact focus on the API endpoints we designed
# 摘要会侧重 API 设计细节

何时使用 /compact

场景信号操作
上下文快满了底部进度条超过 70%/compact — 立刻释放空间
任务阶段切换调试完毕,准备写测试/compact 保留修复方案的结论
大量文件读取后连续 Read 了多个文件/compact — 文件内容已理解,不需要原文
Claude 开始"忘事"重复问你已经回答的问题/compact 重点保留关键决策
主动预防预感接下来的操作会很长先 /compact,再开始大任务

自动压缩

即使你不手动调用 /compact,Claude Code 也会在上下文接近极限时 自动触发压缩。

AUTO-COMPACT FLOWSTEP 1对话持续增长...STEP 2接近上下文上限STEP 3自动压缩触发RESULT继续工作你在聊天⚠ 触发阈值旧消息 → 摘要空间释放自动压缩是静默的——你会看到一条通知,对话无缝继续,但旧的原始消息已被摘要替代
FIG · 自动压缩: 检测上下文接近上限 → 压缩旧消息为摘要 → 释放空间继续工作
KEY INSIGHT

主动优于被动

自动压缩是安全网,但不是最优方案。它在紧急时刻触发,没有焦点参数——Claude 只能猜测哪些信息重要。手动 /compact 让你控制保留哪些细节,压缩质量更高。养成在任务阶段切换时主动 compact 的习惯。

DETAIL

压缩后发生了什么

压缩后,Claude 看到的不是原始对话,而是一段压缩摘要 + 未被压缩的最近消息。摘要保留了关键事实和决策,但具体的代码片段和工具输出会丢失。如果压缩后需要某个文件的内容,你需要让 Claude 重新读取。

/compact 不是"删除历史"——它是"把厚厚的笔记整理成提纲"。信息在,但细节减少了。
03 ·

/clear — 清空与重置

5 MIN

/clear 是最彻底的上下文管理手段—— 它完全清空当前对话历史,回到"刚打开 Claude"的状态。 但注意:CLAUDE.md 和 Memory 仍然生效, 因为它们不是对话的一部分。

/clear 的用法

# 清空当前对话
> /clear
# 对话历史完全清空
# CLAUDE.md 和 Memory 仍然加载
# 就像刚打开一个新的 claude 会话

/compact vs /clear — 何时选哪个

维度/compact/clear
效果压缩旧消息为摘要完全删除所有对话历史
上下文保留保留摘要 + 最近消息零——全部清空
适用场景同一任务需要继续切换到完全不同的任务
CLAUDE.md仍然生效仍然生效
Memory仍然生效仍然生效
类比把笔记整理成提纲翻到全新的一页
WHEN TO CLEAR

适合 /clear 的场景

换任务:从写代码切换到写文档。陷入循环:Claude 在同一个 Bug 上打转,给的方案越来越差。污染的上下文:之前的讨论引入了错误假设,想重新开始。敏感信息:刚讨论了包含密码/密钥的内容,想清理。

TIP

/clear 不等于退出

/clear 在当前会话中原地重置,你不需要退出终端再重新启动 claude 命令。这比 Ctrl+C 退出再重开更快——而且保持了工作目录和环境不变。

/clear 之后 Memory 仍在——但如果你刚告诉 Claude "记住 XX",确保在 /clear 之前它已经保存到 Memory。
04 ·

对话策略 — 会话的生命周期管理

12 MIN

/compact 和 /clear 是"会话内"的工具。但真正的效率来自于会话间的策略—— 什么时候该开新对话、什么时候该延续旧对话、什么时候该从历史中恢复。

--continue 和 --resume

# 继续上一次对话 (最常用)
$ claude --continue
# 或简写
$ claude -c
# 恢复上次退出时的完整上下文

# 带消息继续
$ claude -c "继续修那个 Bug,我发现还有一个边界情况"

# 从历史对话中选择 (交互式)
$ claude --resume
# 显示最近的对话列表,你选择要恢复哪个

# 直接恢复指定会话 ID
$ claude --resume SESSION_ID

"一任务一对话"原则

高效使用 Claude Code 的核心策略是:每个独立任务用一个独立对话。 对话是廉价的资源,上下文是昂贵的资源。

场景推荐做法原因
修复 Bug A新对话干净的上下文 = 精准的理解
Bug A 修完,写测试--continue测试需要了解修复细节
测试完,做另一个功能 B新对话Bug A 的上下文对功能 B 是噪音
昨天的功能 B 发现问题--resume 昨天的会话恢复功能 B 的完整上下文
大规模重构(多文件)新对话 + 勤用 /compact重构读的文件多,上下文消耗快

识别上下文劣化的信号

SIGNAL 1

重复提问

Claude 开始问你已经回答过的问题——说明早期对话在它的注意力中已经淡化。此时应该 /compact(如果还在同一任务)或开新对话(如果已经是不同任务)。

SIGNAL 2

方案漂移

Claude 给出的方案跟之前讨论的不一致,或者忘记了你们达成的约定(比如用 A 方案不用 B 方案)。这是上下文过载的典型症状——旧的决策信息在长对话中被淹没了。

SIGNAL 3

回答变短变泛

原本给出详细方案的 Claude 开始回答变得笼统和简短——可能是因为输出空间被对话历史挤占了。/compact 可以释放输出空间,让 Claude 恢复详细的回答风格。

SIGNAL 4

编辑错误增多

Claude 的 Edit 操作开始失败——old_string 匹配不上,因为它记忆中的文件内容是早期版本。这说明上下文中的文件内容已经过时。/compact + 重新 Read 文件是最有效的修复。

经验法则: 如果你在一个对话中超过 20 分钟还没 compact 过,很可能已经该 compact 了。
05 ·

上下文管理决策流程

CHEAT SHEET

四个命令、一棵决策树——以后遇到"该怎么管理这个对话"时,按此流程判断。

CONTEXT MANAGEMENT DECISION TREE当前对话的状态是?对话还短,正常聊了很久 / 快满要换一个新任务上次退出了想恢复KEEP GOING继续聊就好/COMPACT压缩后继续/CLEAR or NEW清空或开新对话--CONTINUE或 --resume同一项目?/clear换项目?exit + new刚退的?-c旧的?--resume核心原则: 对话是廉价的,上下文是昂贵的 — 不要在一个臃肿的对话里硬撑
FIG · 上下文管理决策树: 根据当前状态选择 继续 / /compact / /clear / --continue

四大命令速查表

命令作用保留的内容典型场景
/compact压缩旧消息为摘要摘要 + 最近消息 + CLAUDE.md + Memory对话变长,同一任务还在继续
/clear清空全部对话历史CLAUDE.md + Memory切换任务 / 陷入循环 / 重新开始
--continue恢复上次退出的对话完整的上次对话上下文午饭回来继续工作
--resume从历史中选择对话恢复选中会话的完整上下文回到昨天某个任务的讨论现场
这四个命令组合使用形成完整的"上下文生命周期管理"——从新建到延续到压缩到清空。
06 ·

动手练习

15 MIN

今天的练习重点是感受上下文管理—— 不只是知道命令怎么用,而是体会"什么时候该用"。

Lab 1 — 观察上下文增长

刻意制造一个长对话,观察上下文使用量的变化。

# 开始一个新对话
$ claude

# 让 Claude 读几个文件 (消耗上下文)
> 读一下 package.json
> 读一下 src/index.ts
> 读一下 README.md

# 观察: 底部的上下文进度条变化了多少?
# 每次 Read 后注意进度条的跳跃幅度

# 继续对话几轮
> 分析一下项目结构
> 帮我列出所有的 API 端点
# 再看看进度条——对话内容也在消耗空间

Lab 2 — 体验 /compact

在上一个 Lab 的基础上尝试 /compact,感受压缩前后的差异。

# 在上面那个已经有一些历史的对话中:
> /compact
# 观察: 进度条应该明显缩短了

# 验证摘要质量
> 总结一下我们之前讨论了什么
# Claude 应该能从摘要中回忆出要点

# 验证细节丢失
> package.json 里 React 的版本号是多少?
# Claude 可能答不上来——具体版本号在压缩中丢失了
# 这就是压缩的代价: 细节换空间

Lab 3 — 带焦点的 /compact

体验自定义焦点参数如何影响压缩质量。

# 先和 Claude 讨论两个话题
> 帮我分析 src/auth/ 目录的认证逻辑
# ... 讨论一番 ...
> 再看看 src/api/ 目录的路由设计
# ... 又讨论一番 ...

# 用带焦点的 compact
> /compact 保留认证逻辑的讨论,路由设计可以简略

# 验证
> 认证那块我们讨论出了什么结论?
# 应该能详细回忆
> 路由设计那块呢?
# 可能只有简略的摘要

Lab 4 — --continue 和 --resume

体验对话的跨会话延续。

# 对话 1: 正常工作
$ claude
> 帮我写一个 utility 函数: 把驼峰转蛇形
# Claude 写好了函数
# 按 Ctrl+C 退出

# 对话 2: 用 --continue 接上
$ claude -c "给刚才那个函数加上单元测试"
# Claude 知道你说的是驼峰转蛇形的函数
# 因为 -c 恢复了上次的完整上下文

# 对话 3: 用 --resume 选择历史
$ claude --resume
# 看到最近的对话列表,选择想恢复的
完成这四个 Lab 后,你应该对"上下文满了是什么感觉"有了直觉——这个直觉在后续每天的实操中都会用到。
Q ·

常见疑问

5 QUESTIONS
Q1 /compact 会丢失重要信息吗?如何确保关键决策不被压缩掉? +
ANS

会丢失细节,但不会丢失关键决策——前提是你用了焦点参数。无参数的 /compact 让 Claude 自行判断什么重要,通常做得不错但不完美。带焦点的 /compact 保留关于 XX 的细节 让你明确控制保留什么。最关键的信息保护策略是:把它写进 CLAUDE.md 或让 Claude 保存到 Memory——这两者不受 /compact 影响。

Q2 自动压缩和手动 /compact 有什么区别? +
ANS

本质上做的事一样——把旧消息替换为摘要。区别在于:(1) 时机:手动 /compact 你选择最佳时机(比如任务阶段切换时),自动压缩在不得不压的时候触发;(2) 焦点:手动 /compact 可以指定保留什么,自动压缩没有焦点参数;(3) 可预期性:手动 /compact 你知道什么时候发生,自动压缩可能在你不注意时悄悄发生。所以手动优于被动

Q3 --continue 和 --resume 恢复的对话还能再 /compact 吗? +
ANS

可以。--continue--resume 只是恢复上下文,恢复后的对话和正常对话没有任何区别——你可以继续聊天、/compact、/clear,完全自由操作。一个常见的好习惯是:--continue 恢复对话后,先 /compact 一下再继续工作,因为恢复时上下文可能已经比较满了。

Q4 VS Code 扩展和 Desktop App 中的上下文管理有什么不同? +
ANS

核心机制相同——都是 200K 上下文窗口,都支持 /compact 和 /clear。差异主要在 UI 表现:VS Code 扩展和 Desktop App 提供可视化的上下文进度条,CLI 需要你自己留意。--continue--resume 是 CLI 特有的命令行参数——在 VS Code 中,你可以通过面板重新打开之前的对话来实现类似效果。

Q5 有没有办法查看当前上下文还剩多少空间? +
ANS

CLI 界面底部有一个上下文使用量指示器,显示当前已使用的百分比。VS Code 扩展和 Desktop App 同样有可视化进度条。没有精确到 token 数的显示,但百分比足够你判断是否需要 /compact。一般来说,超过 70% 就应该考虑压缩了,超过 90% 自动压缩随时可能触发。

R ·

复盘问题

5 QUESTIONS
  1. 上下文窗口里包含哪三大类内容?为什么"越靠后越清晰"?
  2. /compact 的焦点参数有什么作用?给出一个适合带焦点的场景。
  3. 自动压缩和手动 /compact 的核心区别是什么?为什么推荐主动压缩?
  4. /compact/clear 各自适合什么场景?说出判断标准。
  5. --continue--resume 的区别是什么?描述一个适合用 --resume 而不是 --continue 的场景。
✓ ·

今日检查清单

7 ITEMS
  • 理解上下文窗口的组成(系统提示词 + 对话历史 + 输出空间)
  • 体验过 /compact 并观察了上下文进度条的变化
  • 尝试过带焦点参数的 /compact,理解焦点的作用
  • 知道自动压缩的触发条件和与手动 /compact 的区别
  • 理解 /clear 的效果,知道它不影响 CLAUDE.md 和 Memory
  • 使用过 --continue-c 恢复上次对话
  • 能识别上下文劣化的四个信号(重复提问、方案漂移、回答变短、编辑错误)
📖 ·

推荐阅读

3 ITEMS
OFFICIAL

Claude Code: Context Management

Anthropic 官方文档中关于上下文管理的完整章节——包含 /compact 的工作原理、自动压缩的触发机制、以及长会话的最佳实践建议。

DEEP DIVE

Transformer 注意力机制

想理解"为什么越靠后越清晰"?这篇关于 Transformer 架构的科普文章解释了注意力窗口的工作方式——理解原理后,你会更好地预判 Claude 的行为。

PRACTICE

Claude Code: CLI Reference

--continue--resume 以及其他 CLI 参数的完整列表——今天学的只是最常用的几个,完整参考列表值得通读一遍。

» ·

Day 05 预告

NEXT
COMING NEXT

Git 工作流 — commit · PR · 分支管理 · Code Review

掌握了基础工具和配置后,是时候让 Claude Code 接管你最常做的开发任务了。明天你将学习如何用自然语言让 Claude 生成智能 commit message、创建 Pull Request、管理分支——以及最实用的:让 Claude 帮你做 Code Review,从此你有了一个 24/7 在线的审查搭档。

"The art of being wise is the art of knowing what to overlook."

DAY 04 · CLAUDE CODE 20-DAY ROADMAP