你在使用 Claude Code 时遇到过这些问题吗?

・Claude Code 会话变长后,回答质量莫名下降。
・有哪些命令?我不太清楚它们的区别。
・不知道什么时候该用子 Agent。
・上下文一团糟。
最近,Anthropic 员工 Thariq(@trq212)关于“Claude Code 会话管理与 100 万 token 上下文”的帖子火了,浏览量达到 54 万 😳

所以,针对有这些困扰的朋友,我来拆解并通俗地解释一下内容 👇
原文在此:https://x.com/trq212/status/2044548257058328723?s=20
■ 上下文窗口的基础知识
首先,前提是 Claude Code 的上下文窗口为 100 万 token。

上下文包含以下所有内容:
・系统提示词
・历史对话记录
・所有工具调用及其输出
・已加载文件的内容
换句话说,会话越长,上下文中堆积的信息就越多。
■ 什么是上下文腐烂?

这里一个重要概念是“上下文腐烂”。
随着上下文增长,模型的注意力分散到大量 token 上,旧信息或不相关信息变成噪音,开始干扰当前任务。
据 Thariq 所说,在 100 万 token 模型中,大约在 30 万到 40 万 token 时就能观察到上下文腐烂。但这并非严格规则,很大程度上取决于任务。
由于上下文窗口有硬性上限,当接近限制时,你需要总结之前的工作,并在新上下文中继续。这个过程称为“压缩”。
■ 每一步都是“转折点”

Claude Code 完成一个任务后应该做什么?这实际上是最重要的决策点。
Thariq 列出了五个选项:
𝟭. 继续
在同一会话中发送下一条消息。最自然的选择。
𝟮. /rewind(双击 Esc 键)
回到过去某条消息并从那里重新开始。后续消息将从上下文中删除。
𝟯. /clear(新会话)
自己总结重要信息,然后开始一个全新的会话。
𝟰. /compact
让模型总结到目前为止的对话,并在该总结之上继续。
𝟱. 子 Agent
将下一块工作委托给一个拥有自己干净上下文的 Agent,只将结果返回给父会话。
■ 何时开始新会话
得益于 100 万 token 的上下文窗口,像从头构建全栈应用这样的长任务现在可以更稳定地执行。
然而,有剩余上下文空间并不意味着你应该继续同一个会话。
Thariq 的经验法则很简单:

🔥 “如果你要开始一个新任务,就应该开始一个新会话。”
也有例外。例如,在实现一个功能后立即编写文档。如果开始新会话,Claude Code 必须重新读取刚刚实现的文件,这又慢又费钱。对于不需要“高智能”的任务(如文档),接受一定程度的上下文污染并直接继续更高效。

■ rewind 是被低估的功能

Thariq 将“rewind”视为良好上下文管理的最佳习惯。
在 Claude Code 中,你可以通过双击 Esc 键(或使用 /rewind 命令)回到任何过去的消息并重新开始。该点之后的消息会从上下文中完全移除。
考虑一个具体场景:

Claude 读取了五个文件,尝试了一个方法但失败了。
❌ 常规反应:“没成功。试试 X 吧。”
→ 失败尝试的完整日志仍留在上下文中。
✅ 更好的方式:回退到刚读完文件之后,用你学到的经验重新指示。
→ “不要用方法 A。foo 模块没有暴露那个。直接用 B。”
这样做之后,失败试错的 token 就消失了,可以在干净状态下重试。
此外,使用“从这里开始总结”功能,可以让 Claude 总结自己的学习成果,创建一份“从过去的自己给未来的自己的备忘录”。
■ /compact 与 /clear 的关键区别

当会话变长时,有两种减轻负担的方法。它们看起来相似,但完全不同。
【/compact】
・模型总结对话,并用该总结替换历史记录。
・有损——重要内容由 Claude 自行判断。
・你无需写任何东西,但 Claude 可能会遗漏某些内容。
・你可以提供指令来引导(例如 /compact focus on auth refactor, remove test debugging)。
【/clear】
・你自己写出重要信息,然后开始全新会话。
・例如:“目标是 auth 中间件,约束条件是 X,相关文件是 A 和 B,方法 Y 被排除。”
・需要付出努力,但最终上下文只包含你选择的信息。
两者之间的选择是控制性与便利性的权衡。
■ 为什么 compact 会失败

长时间会话中,compact 的质量可能变得极差。
据 Thariq 所说,compact 效果差的最大原因是“模型无法预测工作的方向”。
例如:
经过长时间的调试会话后,自动 compact 被触发并总结了调查过程。
→ 如果你接着说“也修复 bar.ts 中的那个警告”,那么关于该警告的信息可能已经被调试重点的总结丢弃了。
更麻烦的是,由于上下文腐烂,模型在执行 compact 时处于“智能最低的状态”。换句话说,在最需要准确总结的时刻,却生成了质量最低的总结。
既然我们现在有 100 万 token 的上下文,最佳策略是在还有余量时自己运行 /compact,并附上下一步要做什么的说明。
■ 何时使用子 Agent

子 Agent 也是一种上下文管理形式。
当 Claude Code 使用 Agent 工具创建子 Agent 时,该子 Agent 拥有自己干净的上下文窗口。它完成所需的工作,总结结果,然后返回给父会话。
判断标准很简单:
👀 “我以后还需要这个工具的输出吗?还是只需要结论就够了?”
如果只需要结论,就应该交给子 Agent。
Claude Code 会自动调用子 Agent,但给出明确指令也很有效:
・“启动一个子 Agent,根据这个规范文件验证工作结果。”
・“使用子 Agent 读取并总结另一个代码库中 auth 流程的实现方式。以此为参考在这里实现。”
・“使用子 Agent 根据 git diff 为这个功能编写文档。”
通过不让中间输出进入父上下文,你可以保持上下文干净。
■ 总结:5 种上下文管理技巧

在 Claude 完成一轮后,发送下一条消息之前,你应该始终决定以下事项:
- 任务变了吗?→ /clear 开始新会话
- 方法失败了吗?→ /rewind 回到刚加载文件之后
- 会话变长了吗?→ 在有余量时 /compact(附上方向)
- 是中间输出很多的任务吗?→ 委托给子 Agent
- 上下文可以用于相关任务吗?→ 直接继续
未来,Claude 本身会帮助做出这些决策,但目前,由用户来做这些判断可以显著提升 Claude Code 的输出质量。
会话管理很微妙,但它是一项能从根本上改变 Claude Code 体验的技能 🔥
觉得这篇文章有用的人:

𝗖𝗹𝗮𝘂𝗱𝗲 𝗖𝗼𝗱𝗲 𝗦𝘁𝘂𝗱𝗶𝗼 @ 𝗝𝗮𝗽𝗮𝗻(@ClaudeCode_love)是一个由三位 Claude Code 爱好者运营的账号。
我们每天发布关于 CLI 实际用法和自动化的内容。
目前我们正在与一家上市公司共同开发 AI Agent。
我们的日常内容 👇
・使用 Claude Code 和 Claude 的真实产品开发案例
・Claude Code 用法 / Vibe Coding / 开发趋势整理
・来自海外的 Claude Code 最新信息
从开发理念到设计、实现和改进,我们总结海外和一手信息,帮助你发布真正能用的产品,而不仅仅是“做完”。
如果你感兴趣,请关注我们并来看看!绝对值得!





