MemoryLake
返回全部文章
News2026 年 10 月 20 日·12 分钟阅读

Claude Code 现可在恢复旧会话消耗使用额度前发出警告 —— 何时恢复以及何时重新开始 (2026)

回到昨天的 Claude Code 会话可能感觉是免费的。你运行 claude --resume,选择对话,它就会在上次离开的地方打开。但屏幕上没有显示的是返回后的第一条消息所付出的代价:在一个漫长、闲置的会话中,在 Claude 做出任何新动作之前,它就可能消耗掉你套餐使用额度的很大一部分。

10 月 19 日发布的 Claude Code v2.1.304 将这一成本直观地呈现在你面前。其发布说明中增加了一项功能:“当恢复非活动对话将消耗 5 小时使用限制的显著份额时,在 Pro 和 Max 套餐上发出警告:是坚持恢复,还是开始新对话并在你提及旧对话时让 Claude 查找它”。

这是一个新的决策点。有时你需要恢复完整的对话。而其他时候,你只需要其中的几个结论,而一个全新的会话能以更低的成本帮你获取这些结论。

本文将解释为什么恢复旧会话成本高昂、该警告提供了什么选择,以及如何在恢复和重新开始之间做出决定。如果你仍在寻找会话本身,我们关于查找和恢复 Claude Code 会话历史的指南介绍了转录文本的存放位置以及选择器的工作原理。本文将在你找到会话后开始探讨。

v2.1.304 中有哪些变化

发布说明只有一行,但涵盖了三件事。

谁会看到它。 该警告适用于 Pro 和 Max 套餐,并根据这些套餐所消耗的 5 小时使用限制来衡量成本。说明中未提及其他套餐或 API 密钥登录。

何时出现。 当你恢复一个非活动对话,且这样做“将消耗 5 小时限制的显著份额”时,它就会出现。说明中没有给出具体阈值。根据下文的机制,它所描述的情况是:一个漫长的会话在闲置时间超过缓存生命周期后被重新唤醒。

它提供了什么。 两个选择:坚持恢复,或者开始新对话并让 Claude “在你提及旧对话时查找它”。第二种选择将旧会话视为可供咨询的参考,而不是重新加载的对象。

官方文档尚未跟上此版本的更新。会话页面描述了恢复、选择器和分支,但尚未描述查找或警告功能。目前请将发布说明视为该功能的描述,并将本文的其余部分作为解释该警告存在背景的参考。

为什么返回后的第一条消息最贵

Claude Code 的提示词缓存(prompt caching)文档直接解释了这一机制:“当你恢复会话时,Claude Code 会再次发送整个对话,请求会从缓存中读取其未更改且仍在缓存生命周期内的前缀部分。”

关键部分是缓存生命周期。当你工作时,每个请求都会重用已经处理过的对话,并为此支付更便宜的缓存费率。一旦你停止工作,缓存就会开始计时。费用页面写得很清楚:“在超过缓存生命周期的停顿之后,你的第一条消息将无法命中缓存,并重新处理你的完整上下文。”

生命周期有多长?在订阅模式下,“订阅用户的生命周期为一小时,一旦你开始消耗使用额度,生命周期就会降至五分钟”。提示词缓存页面有完整的表格,在套餐使用额度内的 Claude 订阅中,主对话默认获得一小时。在 API 密钥或云服务商上,默认是五分钟。

因此,高昂成本的情况是可以预测的。在订阅模式下,一个你离开超过一小时的会话将不再保留热缓存。恢复它会再次将整个对话作为全新输入发送,包括每个工具输出和文件读取,会话越大,第一条请求就越大。

人们最先想到的步骤往往成本最高

面对一个庞大的旧会话,人们很自然地会想要恢复它并立即运行 /compact,以便在进行更多工作之前缩小对话规模。但文档指出,这个顺序是错误的。

压缩(Compaction)的工作原理是发送一个带有相同历史记录的总结请求。当缓存处于热状态时,该请求会从缓存中读取大部分历史记录。而在长时间停顿之后,就没有缓存可读了:“在超过缓存生命周期的停顿之后,已无缓存可读,因此总结请求会将完整历史记录作为未缓存的输入进行重新处理。这就是为什么在恢复旧会话时运行 /compact 成本最高的原因。”

在冷恢复后立即进行压缩,需要支付旧对话的全部代价来生成总结。这只是提前了成本,而不是避免了成本。

回退(Rewinding)也有同样的限制。当你走了一条想要放弃的路径时,文档推荐使用 /rewind 而不是压缩,因为“回退会截断回已缓存的前缀,而不是像压缩那样构建一个新前缀。”这一建议取决于缓存是否处于热状态。在旧会话中,没有可供回退的已缓存前缀,因此该技巧所描述的节省并不适用。

费用页面列出的唯一免费操作是重新开始:“当你想要一个全新的开始而不是连续性时,/clear 不消耗任何费用”。这就是警告中第二个选项背后的逻辑。

恢复的会话会带回什么,而全新的会话不会

选择恢复的原因在于它恢复的不只是对话。会话文档列出了会带回的内容。以活动目标结束的会话将保留该目标。未过期的计划任务将被恢复。在终端中通过 ID 或名称恢复(不带 -p)会恢复会话之前所处的权限模式。随上一个进程结束的后台工作会显示为未完成的提示,并且“Claude 会在你的下一个提示词中读取它们。”

有些东西不会自动恢复。文档指出,诸如 --mcp-config、--settings、--plugin-dir、--fallback-model 和 --add-dir 等标志需要重新传递,并且“在会话中期通过 /add-dir 添加的目录也不会被恢复”。设置文件会在启动时重新读取,因此保存在那里的配置没有问题。

如果会话在你离开前已被压缩,那么带回的内容会更短。会话页面指出,这样的对话“会在 Conversation compacted 行打开。Claude 会继续使用上一次压缩的总结、压缩留下的未总结消息以及自那以后的每条消息。”如果你在终端中留下了一个长时间闲置的会话,这一点就很重要。Claude Code 可以在缓存过期前为你压缩它。提示词缓存页面指出,当长对话在 1 小时 TTL 内处于闲置状态时,“Claude Code 可以在缓存过期前不久对其进行压缩。”我们关于 Claude Code 闲置压缩 的说明介绍了这种行为以及关闭该设置的方法。

全新的会话在开始时没有任何历史记录。Claude Code 的工作原理被描述为:“每个新会话都从一个全新的上下文窗口开始,没有来自先前会话的对话历史记录。”但它确实会从你的项目上下文开始:CLAUDE.md 文件和在每个会话开始时自动加载的记忆(auto memory),这就是“Claude 如何跨会话持久化学习成果”的方式。新的警告增加了第三个来源,即先前的对话本身,它在你提及它时被查找,而不是被完整地重新加载。

导致旧会话成本超出预期的错误假设

假设恢复的会话很便宜,因为没有发生任何新事情。 成本与新工作无关。而是在缓存过期后,整个对话被再次发送。

假设压缩是缩小会话的方法。 在冷会话上运行,压缩会读取所有内容一次以进行总结。如果你想进行压缩,请按照文档的建议,在仍在工作时的自然停顿处进行,而不是在返回之后。

假设该警告适用于所有地方。 发布说明将其范围限制在 Pro 和 Max。在 API 密钥、云服务商或使用额度上,默认的缓存生命周期是五分钟,因此冷恢复成本会在更短的停顿后适用,你不会收到针对套餐限制的警告信号。

解决方案:检查会话的冷却程度,决定你需要从中获取什么,然后留下更好的交接信息

步骤 1:在恢复之前检查会话的大小和冷却程度

会话选择器为你提供了两个信号。会话文档指出,每一行都显示会话的名称或标题“以及自上次活动以来的时间、git 分支和文件大小”。在订阅模式下,闲置超过一小时的会话已超过默认的缓存生命周期。文件越大,第一条请求就越大。

在你离开会话之前,/usage 会在会话块中显示一行 Prompt cache (main),该行是在对话的第一次响应后添加的。费用页面指出,它报告“缓存当前是否处于热状态”,而当缓存处于冷状态时,“该行显示会话已闲置了多长时间”。该行需要 Claude Code v2.1.251 或更高版本。

如果你想在发送第一条请求之前获取该数值,SessionStart 钩子(hooks)会接收到它。当会话恢复时,钩子文档指出,钩子会接收到包括 context_tokens(被描述为“恢复会话的第一条请求作为其提示词重新发送的 Token 数”)和 prompt_cache_likely_expired 在内的字段。文档建议的用途是“在第一条请求之前报告恢复陈旧对话的成本”。这些字段同样需要 v2.1.251 或更高版本。

步骤 2:当你需要会话的状态时选择恢复,当你需要其结论时选择重新开始

当会话包含你无法轻易重建的状态时,选择恢复并接受其成本:仍在进行中的目标、你即将批准的计划、未完成的后台工作,或者你刻意设置的权限模式。在这些情况下,恢复状态才是重点。之后跳过反射性的 /compact,继续工作。

当你需要的是信息时,选择重新开始。选择警告中的第二个选项,然后在你的第一条消息中指明你想要从旧工作中获取什么:你正在进行哪些更改、你拒绝了哪种方法、哪个测试失败了。发布说明指出,Claude “在你提及旧对话时可以查找它”。具体细节能为它提供具体可寻的内容。

如果你只需要旧会话中的一个答案,你也可以在不以交互方式返回该会话的情况下向其提问。会话文档描述了将会话 ID 传递给 claude -p --resume “以发送后续提示词,例如总结请求”。请记住,这仍然是恢复:相同的缓存规则同样适用于该请求。

步骤 3:在离开之前,留下不需要转录文本的交接信息

最便宜的恢复是你不需要恢复。在离开你期望返回的会话之前,做两件事。

为其命名。费用页面建议:“在清除之前使用 /rename,以便稍后找到该会话,然后使用 /resume 返回它。”

写下能让转录文本变得多余的内容。让 Claude 将持久的要点添加到 CLAUDE.md 或自动记忆(auto memory)中,或者自己写下来:你达成的决定、起作用的命令、你停下的文件。这些内容会在每个新会话开始时加载。我们关于 在 Claude Code 会话之间共享上下文 的指南介绍了如何在它们之间进行选择。

如果你使用 API 密钥或云服务商登录,并且经常离开超过五分钟,提示词缓存页面记录了主对话的 promptCacheTtl。将其设置为 1h 可以让缓存保持热状态更长时间,但缓存写入的费率更高。这是一种权衡,而不是免费的解决方案。

在 MemoryLake 中进行设置

步骤 3 中的交接信息如果保存在独立于任何单一会话的地方,效果最好。转录文本包含整个对话,恢复它的成本很高。而你从中需要的内容可能很短:你决定了什么、原因是什么,以及还剩什么。

MemoryLake 是一个记忆层,用于将此类结论保存在你维护的一个列表中,供 Claude Code 以及你连接的其他助手(如 ChatGPT 和 Codex)使用,以便新会话可以从中开始。

你用自己的话亲自编写这些条目。不会从你的会话转录文本、你的 ~/.claude directory、你的自动记忆(auto memory)、你的 CLAUDE.md 文件或任何厂商的存储中读取、写入或删除任何内容。请不要包含机密和凭据,并遵守你组织关于项目细节的政策。

步骤 1:创建 API 密钥

登录并从控制面板生成一个密钥。该密钥属于你的 MemoryLake 工作区,与你的 Anthropic 账户相互独立。

MemoryLake 控制台显示 API 密钥屏幕,在此创建并复制新密钥以供智能体使用
MemoryLake 控制台显示 API 密钥屏幕,在此创建并复制新密钥以供智能体使用

步骤 2:上传你的第一批记忆

从你最常返回的会话开始。对于每个会话,写下新会话需要的内容:决定、原因和下一步。每个条目一个要点,注明日期,以及适用的代码仓库。

MemoryLake 工作区显示首批上传的文档,列出了每个文件成为可搜索记忆的过程
MemoryLake 工作区显示首批上传的文档,列出了每个文件成为可搜索记忆的过程

步骤 3:连接你的 AI 和智能体

连接 Claude Code 和你使用的其他助手。当警告出现时,重新开始会更容易,因为交接信息已经写好了。

MemoryLake 集成屏幕列出了可以连接到记忆层的 AI 客户端和智能体框架
MemoryLake 集成屏幕列出了可以连接到记忆层的 AI 客户端和智能体框架

这在实践中改变了什么

第一个区别是,你在付出代价之前就能看到成本。Pro 和 Max 上的警告、选择器的闲置时间和文件大小,以及 /usage 缓存行,共同告诉你恢复会话是便宜还是昂贵。

第二个区别是你不再支付双倍费用。恢复冷会话然后对其进行压缩,会完整读取旧对话以生成总结。在恢复和重新开始之间做出深思熟虑的选择可以避免这种情况。

第三个区别是,旧会话不再是你所学内容的唯一副本。简短的交接信息意味着新会话可以从结论开始,并且仅在你要求时才查找其余内容。我们关于 Claude Code 自动压缩时保留什么的指南介绍了在压缩中得以保留的内容。

恢复 Claude Code 会话的最佳实践

在选择之前先阅读选择器。 闲置时间和文件大小能告诉你警告所能提示的大部分信息。

不要在冷恢复后立即进行压缩。 在缓存尚热的停顿期间进行压缩。

为状态而恢复,为答案而重新开始。 目标、计划和未完成的后台工作值得恢复。而一个决定或一条命令则可能不值得。

重新开始时要具体。 指明你希望 Claude 查找的更改、文件或决定。

在离开前写好交接信息。 在 CLAUDE.md 或自动记忆(auto memory)中写下几行内容,加载这些内容不消耗任何费用。

结论

恢复旧的 Claude Code 会话会再次发送整个对话,一旦缓存生命周期过去,它将以全额成本发送。在订阅模式下,该生命周期默认是一小时。Claude Code v2.1.304 现在会在恢复将占用 5 小时限制的显著份额时向 Pro 和 Max 用户发出警告,并提供第二条路径:一个在你提及旧对话时查找它的新对话。

当你需要恢复会话的状态时,选择恢复。当你需要其结论时,选择重新开始,并跳过对冷会话的压缩。然后在离开前留下简短的交接信息,这样下一个会话就完全不需要转录文本了。如果你是在电脑之间移动会话,我们关于将 Claude Code 会话导出到另一台机器的指南涵盖了这种情况。

常见问题

为什么恢复 Claude Code 会话会消耗我如此多的使用额度?

恢复会话会再次发送整个对话。如果会话闲置时间超过了提示词缓存生命周期(订阅模式下默认是一小时),第一条请求将重新处理完整的上下文,而不是从缓存中读取。

Claude Code 中新的恢复警告有什么作用?

在 v2.1.304 中,当恢复非活动对话将消耗 5 小时限制的显著份额时,Pro 和 Max 用户会看到警告。你可以选择坚持恢复,或者开始新对话并让 Claude 查找先前的对话。

恢复旧会话后我应该运行 /compact 吗?

不要立即运行。Anthropic 的文档指出,在恢复旧会话时进行压缩成本最高,因为一旦缓存过期,总结请求必须重新处理完整的历史记录。

Claude Code 提示词缓存能持续多久?

在套餐使用额度内的 Claude 订阅中,主对话默认获得一小时的缓存。使用额度、API 密钥或云服务商时,默认是五分钟。promptCacheTtl 设置允许你选择 5m 或 1h。

恢复的 Claude Code 会话会还原什么?

对话、活动目标、未过期的计划任务,以及在终端中通过 ID 或名称恢复时的权限模式。诸如 --mcp-config 和 --add-dir 等启动标志需要重新传递。

我该如何查看会话的缓存是否仍然是热的?

在会话中,运行 /usage 并阅读 Prompt cache (main) 行,它会显示缓存是否为热状态以及会话已闲置了多长时间。SessionStart 钩子(hooks)也可以在第一条请求之前报告 prompt_cache_likely_expired 和 Token 数量。