Document

📅 2026-04-17 📄 技术文档
💬 引用
原文:Anthropic 官方博客,作者 Thariq(Claude Code 工程师) 原文链接:https://claude.com/blog/using-claude-code-session-management-and-1m-context

01

新功能:/usage 命令

/usage

新增斜杠命令,用于查看你在 Claude Code 中的使用情况。该功能是基于用户反馈开发的。


02

核心概念

上下文窗口

  • 大小: 100 万 token
  • 包含: 系统提示词、对话历史、所有工具调用/输出、所有读取的文件
  • 硬性上限: 必须主动管理

上下文腐烂(Context Rot)

💬 引用
"随着上下文增长,模型性能会下降——因为注意力被分散到越来越多的 token 上,旧的、无关的内容开始干扰当前任务。"

压缩(Compaction)

当接近上下文限制时,任务会自动被总结为更小的描述,然后在新上下文窗口中继续工作。也可以手动触发。


03

每一步的会话管理选项

当 Claude 完成一个任务后,你有 5 个选择:

操作 命令 用途
继续 (自然流程) 保留当前所有上下文
回退 双击 Esc/rewind 跳回到之前任意消息,丢弃之后的所有内容
压缩 /compact 总结对话,替换历史记录
清空 /clear 完全清空上下文,从头开始
子代理 (自动/显式调用) 为噪音任务生成独立上下文

04

什么时候应该开新会话

经验法则: 开始新任务时,开新会话

例外: 当上下文仍然有价值的关联任务(比如刚写完一个功能,要给这个功能写文档)。如果重新开始,Claude 需要重新读取文件——更慢,也更费钱。


05

回退 vs 纠正

不要只是说"这样不行"——应该用回退。

更好的做法: 1. Claude 读取了 5 个文件,尝试方案 A → 失败 2. /rewind 回到读取文件之后 3. 用你学到的信息重新提示:"不要用方案 A,foo 模块没有暴露那个接口——直接用方案 B。"

专业技巧:"从这里开始总结" 配合 /rewind 来创建一个交接消息——就像"未来 Claude"给"过去 Claude"写的便条,告诉它什么行不通。


06

压缩 vs 清空:关键区别

/compact

/compact 聚焦在认证重构上,丢弃测试调试的内容
  • Claude 总结对话并替换历史记录
  • 有损的,但 Claude 可能会包含你自己会忘记的重要发现
  • 可引导——传入指令来告诉它什么重要
  • 你花更少力气

/clear

  • 你自己写下来什么重要:"我们在重构认证中间件,约束条件是 X,涉及的文件是 A 和 B,已排除方案 Y"
  • 前期需要更多工作,但你完全控制哪些信息被保留
  • 零上下文腐烂

07

什么会导致糟糕的自动压缩?

💬 引用
"糟糕的压缩发生在模型无法预测你的工作方向时。"

典型失败模式: 1. 漫长的调试过程 → 触发自动压缩 2. 总结聚焦在调试调查上 3. 你的下一条消息:"现在修一下我们在 bar.ts 里看到的那个警告" 4. 那个警告已经在总结中被丢弃了

关键洞察: 由于上下文腐烂,模型在执行压缩时正处于它最不聪明的时刻。有了 1M 上下文,你有更充裕的时间主动执行 /compact,并附上你接下来计划做什么的描述。


08

子代理:隔离噪音工作

子代理拥有自己全新的上下文窗口。它们完成任务后合成结果——只有最终报告会返回给主会话。

Anthropic 的思维测试:

💬 引用
"我之后还需要这个工具输出吗,还是只需要结论?"

适合用子代理的场景: 代码库搜索、验证任务、文档编写——任何会产生大量你不会复用的中间输出的任务。


09

决策矩阵

场景 工具 原因
同一任务,上下文仍然相关 继续 所有内容都有用;不要浪费 token 重建上下文
Claude 走错了方向 回退双击 Esc 保留有用的文件读取,丢弃失败尝试,用经验重新提示
任务进行中但会话被大量调试内容塞满 /compact <提示> 低成本;让 Claude 决定什么重要。用指令引导
开始全新的任务 /clear 零腐烂;你完全控制哪些信息被保留
下一步会产生大量输出,只需要结论 子代理 中间噪音留在子上下文里;只有结果返回

10

核心要点

  1. 1M 上下文 ≠ 无限——上下文腐烂仍然会随时间降低性能
  2. 新任务 = 新会话(紧密关联的工作除外)
  3. 回退优于纠正——丢弃失败尝试,保留有用的读取
  4. 主动压缩优于自动压缩——模型在压缩时最不聪明
  5. 子代理隔离噪音——当你只需要结论时使用,不需要中间步骤