返回
官网 Claude 官方博客 AI 逐段翻译 发布 2026-04-15 08:00 收录于 08-11

Claude Code 会话管理与100万上下文实践

DataHot 速览

Anthropic 发布了 /usage 命令,帮助用户了解 Claude Code 的使用情况,该功能源于与客户的多次对话。文章讨论了用户管理会话的多种方式,特别是在更新到100万上下文后,如何通过继续、回退、清空或压缩等操作优化上下文窗口使用。还介绍了上下文窗口、压缩和上下文腐烂的概念,并强调会话管理对体验的重要影响。

为什么值得关注:数据从业者使用 Claude Code 等 AI 编码工具时,上下文管理直接影响效率和质量,本文提供了实用指南。

本文目录 7 节
  1. 关于上下文、压缩和上下文衰减的快速入门
  2. 每一轮都是分支点
  3. 何时开启新会话
  4. 用回退而非纠正
  5. 压缩与开启全新会话
  6. 是什么导致自动压缩效果不佳?
  7. 子代理和新上下文窗口

译文

AI 逐段翻译

我们发布了/usage,这是一个新的斜杠命令,旨在帮助你了解如何使用Claude Code。此功能源于与客户的多次对话。

在这些通话中反复出现的问题是,用户管理会话的方式差异很大,尤其是在我们更新了Claude Code的100万上下文之后。

你只在终端中保留一个或两个会话吗?每次提示都开始新会话吗?何时使用compact、rewind或subagents?哪些因素会导致糟糕的compact或会话?

这里有很多令人惊讶的细节,它们能真正影响你使用Claude Code的体验,而几乎所有细节都源于管理你的上下文窗口。

关于上下文、压缩和上下文衰减的快速入门

__wf_reserved_inherit

上下文窗口是模型在生成下一个响应时能“看到”的所有内容,包括系统提示、当前对话历史、每次工具调用及其输出,以及已读取的每个文件。Claude Code的上下文窗口为一百万个tokens。

不幸的是,使用上下文会对性能产生轻微影响,这通常被称为上下文衰减。上下文衰减是指随着上下文增长,模型性能下降的观察结果,因为注意力分散到更多tokens上,而较旧的、无关的内容开始干扰当前任务。

上下文窗口是硬性限制,因此当接近上下文窗口末尾时,你正在进行的任务会被自动总结成较短的描述,模型会在新的上下文窗口中继续工作,我们称之为压缩。你也可以手动触发压缩。

__wf_reserved_inherit

每一轮都是分支点

假设你刚让Claude完成某件事——此时上下文中已有一些信息(工具调用、工具输出、你的指令),而接下来你有许多令人惊奇的选项:

  • 继续— 在同一会话中发送另一条消息
  • /rewind(按Esc两次)— 跳回之前某条消息并从那里重新尝试
  • /clear— 开启新会话,通常使用你从之前内容中提炼的简报
  • 压缩— 总结当前会话,并在总结基础上继续
  • 子代理— 将下一部分工作委托给具有独立干净上下文的代理,并只将其结果带回

虽然最自然的做法是继续,但其他四个选项都是为了帮助你管理上下文。

__wf_reserved_inherit

何时开启新会话

什么时候保持长时间会话,什么时候开始新会话?我们的经验法则是:当你开始新任务时,也应该开启新会话。

虽然100万上下文窗口意味着你现在可以更可靠地完成更长的任务,例如从头构建全栈应用,但可能会出现上下文衰减。

有时你可能执行相关任务,部分上下文仍然必要,但并非总是如此。例如,为你刚实现的功能编写文档。虽然可以开启新会话,但Claude必须重新阅读你刚实现的文件,这会更慢且更昂贵。

用回退而非纠正

__wf_reserved_inherit

在Claude Code中,双击Esc键(或运行/rewind)可以跳回到之前任意一条消息并从那里重新提示。该点之后的消息将从上下文中移除。

回退通常是更好的纠正方法。例如,Claude读取了五个文件,尝试了一种方法但失败了。你的本能可能是输入“那没奏效,换X试试。”但更好的做法可能是回退到刚读完文件之后,并利用你学到的知识重新提示:“别用方法A,foo模块不暴露那个——直接采用B。”

你还可以使用“从此处总结”或/rewind斜杠命令,让Claude总结其学到的东西并创建交接消息,有点像未来的自己给之前迭代的Claude发消息说尝试过某方法但没用。

压缩与开启全新会话

一旦会话变长,你有两种方式来去除无关上下文:/compact或/clear(并重新开始)。它们感觉相似,但行为却大不相同。

压缩要求模型总结当前对话,然后用该总结替换历史记录。它是有损的,但你无需自己编写任何内容,Claude可能更彻底地包含重要的学习成果或文件。你还可以通过传递指令来引导它(/compact 专注于认证重构,放弃测试调试)。

__wf_reserved_inherit

使用/clear 时,你写下重要内容(“我们正在重构认证中间件,约束条件是X,重要文件是A和B,我们排除了方法Y”)并干净地开始。这更费功夫,但产生的上下文是你认为相关的。

是什么导致自动压缩效果不佳?

如果你运行许多长时间会话,你可能会注意到有时压缩特别糟糕。在这种情况下,我们经常发现,当模型无法预测你的工作方向时,就可能发生糟糕的压缩。

在上面的例子中,长时间调试后自动压缩会总结调查过程,而你的下一条消息是“现在修复我们在bar.ts中看到的那个其他警告。”

但由于会话专注于调试,那个其他警告可能被从总结中省略了。

这尤其困难,因为由于上下文衰减,模型在压缩时处于最不智能的状态。有了100万上下文,你可以有更多时间主动使用/compact,并附上你想做什么的描述。

子代理和新上下文窗口

子代理在你知道某部分工作会产生大量你不再需要的中间输出时,往往效果很好。

当Claude通过Agent工具生成子代理时,该子代理会获得自己的全新上下文窗口。它可以做尽可能多的工作,然后综合结果,只将最终报告返回给父代理。

__wf_reserved_inherit

我们在Anthropic使用的心理测试:我是否需要再次使用这个工具的输出,还是只需要结论?

虽然Claude Code会自动调用子代理,但您可能希望明确告诉它这样做。例如,您可能希望告诉它:

  • “启动一个子代理,根据以下规范文件验证此工作的结果”
  • “启动一个子代理,阅读其他代码库并总结其如何实现认证流程,然后您自己以相同方式实现”
  • “启动一个子代理,根据我的git更改为此功能编写文档”

综合运用

为了帮助您选择使用哪个上下文管理功能,我们编制了这个有用的表格,概述了常见情况、应使用的工具以及原因。

情况考虑使用原因
同一任务,上下文仍然相关继续窗口中的所有内容仍然承载重要信息;不要付出重建的代价。
Claude走错了路回退(双击Esc)保留有用的文件读取,丢弃失败的尝试,根据您学到的东西重新提示。
任务中途但会话充满了过时的调试/探索内容/compact <提示>低努力;Claude决定什么重要。如果需要,可以用指令引导它。
开始一个真正的新任务/clear零腐化;您精确控制哪些内容继续保留。
下一步将生成大量输出,您只需要其中的结论(代码库搜索、验证、文档编写)子代理中间工具噪音保留在子上下文中;只有结果返回。

我们期待看到您的成果。

‍

立即开始使用Claude Code。

关于作者: Thariq Shihipar是Anthropic的技术人员,负责Claude Code。

‍

这篇内容对你有用吗?

反馈只用于改善内容筛选,不等同于收藏

分享这条资讯
分享海报
保存图片
iOS 也可以长按图片保存