跳转到内容

上下文窗口管理

进阶

内容验证于 2026-06-24适用 Claude Code CLI v2.1

本教程属于学习路径: · 浏览全部路径

上下文窗口(context window)是 Claude Code 的“工作记忆”——每次对话中,Claude 能同时“记住”的信息总量是有限的。超出这个限制后,早期的对话内容会被遗忘,导致回复质量下降。这篇文章教你用桌面隐喻理解这个概念,并掌握三个核心操作:/clear/compact/rewind

根据使用经验,上下文管理不当是初学者的第一常见错误——比配置错误、权限问题、API key 设置都更普遍。好消息是:它只需要学会三个命令。

  • 已经完成 10 分钟上手 中的安装和配置
  • 能正常启动 Claude Code 对话
  • 有过至少一次“对话长到 Claude 开始忘事”的体验(如果没有,这篇帮你预防)

理解上下文窗口,不需要任何技术概念。想象一个场景:

Claude 只有一张办公桌。 这张桌子的面积是固定的。你每让它读一个文件,就像在桌上加一张纸。你每回复一句,就像再叠一张。时间长了,桌面堆满了纸,再想放新东西,只能在桌上挤——最早放的那些纸会被挤到地上,再也找不回来。

在 Claude Code 里,“纸张掉到地上”就是早期对话被遗忘。你会发现 Claude 开始问你“前面说过什么来着?”、或者给出的回复和几轮之前完全接不上。

这就是上下文窗口在起作用。它不是 bug,是物理限制——就像办公桌不可能无限大。具体有多大?Claude 当前模型的上下文窗口约为 200,000 token(具体因模型版本而异)——听起来很多,但一个 1000 行的代码文件就占了约 15,000 token,加上对话历史、CLAUDE.md、MCP 工具描述,桌面空间消耗得比你想象的快。

三个操作,对应三种桌面管理策略

Section titled “三个操作,对应三种桌面管理策略”
命令桌面类比什么时候用
/clear把所有纸收走,换一张空桌面任务完全切换时
/compact把一叠纸的内容摘要成一张索引卡,节省空间但保留关键信息桌面开始堆满,但当前任务还没做完
/rewind回到上次存档点(像玩游戏回到保存点)Claude 开始走偏,需要退回重试

下面逐个展开。

你在做数学作业,桌面摊满了草稿纸、公式表、计算器。做完了,你拿出语文作业,但数学草稿纸还铺在桌上。写字时,你手肘压着草稿纸,余光扫到公式,思路就歪了。

不对——如果你不收走数学作业就开始写语文,语文作业的质量会受影响。

Claude Code 完全一样。你上一轮让它帮你写前端页面,上下文里全是 HTML、CSS、React 组件。然后你突然说“帮我分析这个 Python 脚本的性能”,但前端对话还留在上下文里。Claude 可能把“组件”理解为 Python 类,把“样式”理解为代码风格——上下文污染,理解跑偏。

根据社区讨论的经验,最常见的初学者困惑不是“怎么装”、“key 在哪填”,而是“为什么 Claude 越聊越笨”。根因几乎都是:一个 session 里做了太多不相关的事,上下文被前面任务的残留信息污染了。

  • 切换任务时(比如从前端开发切到数据分析):/clear
  • 同一任务内换文件(比如还是开发这个页面,只是要看另一个组件):不要 /clear——你需要前文的上下文来理解当前文件
  • 同一 feature 内连续工作:不要 /clear,用 /compact(下一节)

判断口诀:问自己“现在的新任务还需要前面聊过的东西吗?” 如果答案是否定的,就 /clear

在 Claude Code 对话中输入:

/clear

Claude Code 会清空当前对话的上下文,从一张空桌面重新开始。但注意:CLAUDE.md 和记忆系统不受 /clear 影响——这些是 Claude 每次启动都会读的“永久便签”,不会因为清桌面而消失。

你开了一个很长的会议,白板上画满了架构图、贴了 20 张便签。会还没结束,白板已经没地方写了。你做什么?不是把所有便签撕掉(那是 /clear),而是把关键结论写成 5 行纪要,占一个小角落,原来的 20 张便签可以收起来了。

这就是 /compact。 Claude 把对话历史压缩成一份摘要——保留关键决策、重要上下文、当前进度——但占用远比原始对话少的空间。桌面一下子空了 60%,但关键信息还在。

Claude Code 会在上下文即将耗尽时自动建议 /compact。但等到那时候,早期的关键信息可能已经被挤出上下文窗口了——因为压缩需要 Claude 能“看到”这些信息才能摘要。如果信息已经被遗忘,压缩出来的摘要也缺少它。

主动 /compact 比被动等待效果好得多。

  • Claude 开始问你“前面说过什么来着?”
  • Claude 的回复明显变短、变敷衍、或者和前面接不上
  • 上下文使用率接近或超过 40%
  • 你已经连续对话超过一小时

建议节奏:每 30-45 分钟主动 /compact 一次,不管有没有出现上面的信号。养成习惯后,你会很少遇到“Claude 开始忘事”的尴尬。

在 Claude Code 对话中输入:

/compact

Claude Code 会生成一份对话摘要,替代原始对话历史。你会看到一条类似 “Context was compacted” 的提示。继续工作即可——Claude 仍然知道你们在做什么,但上下文空间释放出来了。

玩游戏时,你会在打 boss 前存档。如果打的过程死了,从存档点重来——不用从头玩一遍。

Claude Code 的 /rewind 就是回到上一次存档点。存档点通常是你的上一条消息之后。如果 Claude 开始走偏——改错了文件、理解错了需求、或者陷入无意义的循环——按 Esc 两次或输入 /rewind,回到好的状态重新来。

  • Claude 开始修改你没让它碰的文件
  • Claude 的回复明显跑偏(你问 A,它答了一个完全不相关的 B)
  • Claude 陷入循环(反复给出同一类回答、来回改同一个文件)
  • 你意识到刚才的需求描述有歧义,想重新说清楚
  • /rewind 回到上一个“好状态”,通常是上一条用户消息之后。但它不会回退 Claude 已经执行的文件修改——你需要在 git 里手动回退(git checkout -- <文件名>git stash
  • 在终端中使用 Claude Code 时,双击 Esc 等同于 /rewind,手不用离开键盘
/rewind

或者双击 Esc 键。

/usage 和上下文监控 — 监控你的桌面

Section titled “/usage 和上下文监控 — 监控你的桌面”

这些工具让你看到桌面的“剩余空间”,避免盲目操作。

/usage

返回当前会话的 token 消耗、成本估算。对于 API 付费用户(非订阅制),这是控制成本的直接手段。

查看上下文使用率 — 看桌面还剩多少

Section titled “查看上下文使用率 — 看桌面还剩多少”

Claude Code 会在界面底部显示上下文使用百分比(如 “Context: 45%”)。部分版本也支持输入 /context 查看,但具体命令可能因版本而异——以你实际使用的版本为准。把百分数对应到行动:

使用率行动
0-30%正常,继续工作
30-50%开始计划。如果当前任务快结束了,做完就 /clear。如果还有一段路,准备 /compact
50-70%必须行动。立即 /compact,或 /clear 后新 session
70%+紧急。上下文已经开始退化,Claude 可能已经“忘事”。尽快 /compact 或新 session

注意:上面的百分数不是绝对值,不同模型版本的上下文窗口大小不同。但比例判断的逻辑不变——过半就该行动。

Jason 实战总结的一条经验:单 session 超过 2 小时,上下文质量一定会退化。 即使你用了 /compact,摘要压缩也有信息损耗——第三次 /compact 相当于“摘要的摘要”,原始信息层层衰减,Claude 的理解精度会明显下降。

  1. 在 session 结束前运行 /wiki hot(如果你有 wiki 系统),把当前进度、关键决策、待办事项写成一份持久化记录
  2. 关闭当前 session,开一个新的
  3. 新 session 的 Claude 会重新读取 CLAUDE.md 和项目文件——相当于新桌面 + 新鲜记忆,不带旧对话的任何残留
  4. 告诉新 session:“上次我们在做 X,进度在 Y 文件里,继续完成 Z”

这就是为什么记忆系统(参考记忆系统)很重要——它让你在 session 之间传递关键信息,而不是依赖 Claude 的“短期记忆”(上下文窗口)。

从不 /clear(所有任务混在一起)

Section titled “从不 /clear(所有任务混在一起)”

一个 session 里从前端写到后端、从 bug 修复切到功能开发、中间又问了几次技术原理。上下文污染叠加,Claude 的回复质量从“优秀”跌到“勉强能用”。每次任务切换时判断:前面的对话对当前任务还有用吗?没有就 /clear

等到数据库连接报错、Claude 回复变成一两个词才开始管。此时上下文已经被挤出的信息永久丢失了。主动 /compact 的节奏是每 30-45 分钟一次。

连续工作 3、4 小时不换 session。到后面 Claude 的回复质量已经低到不可用,但你还在用。解决:2 小时规则——到点归档、新 session。

/clear 太早(丢了当前任务的有用上下文)

Section titled “/clear 太早(丢了当前任务的有用上下文)”

在一个 feature 内部频繁 /clear,每次都从“你是谁”重新开始。前面的设计讨论、中间调试的发现、临时的需求变更记录全没了。判断口诀:同一个 feature、同一个任务线不要 /clear;跨任务线必须 /clear。

/rewind 只撤回对话状态,不撤回 Claude 已经写过的文件。如果 Claude 在执行过程中改错了文件,你需要额外在 git 里回退:

Terminal window
git checkout -- path/to/wrong-file

或者一次性回退所有未提交改动:

Terminal window
git stash

打开 Claude Code,做一个三段式练习:

第一步:模拟不清桌的后果

  1. 告诉 Claude:“帮我写一个简单的 Python 函数,计算斐波那契数列”
  2. Claude 写完。不要执行 /clear
  3. 接着说:“帮我写一个 React 组件,显示用户名片”
  4. 不执行 /clear,继续说:“帮我写一个 shell 脚本,批量重命名文件”
  5. 运行 /usage,看 token 消耗
  6. 观察:第三次任务时,Claude 的回复质量是不是比第一次差了?如果 Claude 开始把 Python 语法混进 React,或者“忘记”了 React 组件写到哪了,这就是上下文污染的典型案例

第二步:用 /clear 切换任务

  1. 执行 /clear
  2. 说:“帮我写一个 shell 脚本,批量重命名文件”
  3. 观察这次 Claude 的回复质量——和第一次“被污染”的第三任务相比,差异明显

第三步:用 /compact 延长 session

  1. 选一个简单但需要多轮迭代的任务——比如“帮我写一个 HTML 页面,然后改样式、加动画、加响应式”
  2. 每两轮提示后查看上下文使用率
  3. 当使用率接近 40%,主动 /compact
  4. 观察:/compact 之后 Claude 是否还记得之前的进度?你的迭代是否连贯?

完成后总结:/clear/compact 的区别你感受到没有?哪个时候用哪个?

  • 上下文管理是日常节奏的基础——日常节奏 教你如何把这三个命令嵌入每天的开发流程
  • 验证是另一个视角的质量控制——验证方法论 教你确保 Claude 写出来的代码真的能用
  • 记忆系统是 session 之间的长期记忆——记忆系统 教你让 Claude 长记性