Claude 长对话变不稳定怎么办:如何 reset

聊到 50 多轮 Claude 开始自相矛盾、忘掉已定的决策。本文讲清原因、教你判断属于哪一类,并给出最快的重置方法。

跟 Claude 在一个会话里聊到第 50、60 轮,你会发现它开始”失忆”:忘了你 10 轮前定下的命名约定、把之前已经否决的方案又拿出来推荐、甚至在同一句回答里前后矛盾。这不是 Claude 在偷懒,而是上下文窗口被填满后的固有表现——解决办法几乎永远是 reset,而不是在同一个会话里硬撑。

最快的修复(先做这个):在乱掉的会话里,让 Claude 把目前为止做过的所有决定列成清单,复制这份清单,开一个新会话,把清单作为第一句话贴进去。让全新的 attention 处理一份干净的摘要,永远比在一个被污染的 60 轮长会话里死磕要强。下面的内容帮你判断到底是哪一类原因,这样这次 reset 才能真正生效。

先破除一个误区:现在的窗口其实非常大。截至 2026 年 6 月,Claude Sonnet 4.6 和 Opus 4.7 都拥有 1M token 的上下文窗口(2026 年 3 月正式开放,从原来的 200K 提升而来)。问题不在容量。问题是模型对长对话中段的注意力远低于首尾——也就是 “lost in the middle” 现象——而且一旦窗口大约填到 60-70%,模型对早期指令的遵守度就开始下降,远在触到硬上限之前。

你属于哪一类?

按这张表从上往下排查,越靠上越常见。

你看到的症状可能的原因最快的判断方法
出现 “Hit the maximum length for this conversation” 提示;回答像是无视了早期设定窗口接近填满,最旧/中段消息被摘要或截断看输入框附近是否有长度上限提示条
最近几条和最开头几条都记得清楚,唯独中间某个决定弄错了lost-in-the-middle让它复述第 N 轮的某个具体决定
把你提过的两套约定混着用你在不同时间给了相互矛盾的指令往回翻自己的 prompt,找有没有自相矛盾
推理”变浅”,大量上下文被占用大块 Artifact 或粘贴的文件吃掉了预算会话里是否有 1000 行以上的 Artifact 或粘贴?
把几件不相关的事的细节串味一个会话里并行讨论多个话题会话是单一主题,还是 A + B + C 混着?
多轮 thinking 之后缓慢漂移Extended Thinking 累积占用开了 thinking 模式且对话很长?

各类原因详解

1. 窗口接近填满——老消息被摘要或截断

当会话接近 1M token 上限时,claude.ai 网页端不再只是硬性中断。在付费套餐下,只要启用了 code execution(代码执行),Claude 现在会自动把较早的消息摘要化以便继续对话,而且完整历史会被保留,仍可被引用。这很有用,但摘要是有损的:早期精确的设计决策会被压缩成一句话——而那恰恰是你早期选择所在的地方。

在一些边缘情况下(比如第一条消息本身就超大),你仍可能撞到硬墙,提示为:Claude hit the maximum length for this conversation.

如何判断:留意输入框附近的长度上限提示条,或”较早消息已被摘要”之类的提示。在 Claude Code 里,运行 /context 可以精确看到窗口的占用程度。

2. lost in the middle——模型偏向首尾

即使窗口离填满还很远,模型对长对话中段的回忆率也会下降。聊到第 40 轮时,第 15-25 轮的决定正好落在”遗忘带”里。相关研究和 Anthropic 自己的指南都指出,质量会随上下文填充而下降,通常在超过 60-70% 占用后变得明显。

如何判断:让 Claude 复述某个已知的较早轮次里的具体决定。复述模糊、不全或出错,就证实是这一类。

3. 你在不同时间给了相互矛盾的指令

第 5 轮你说”用 snake_case”,第 20 轮顺嘴又说”camelCase 也行”,到第 40 轮 Claude 就开始混用——因为它看到两句权重相当的”你说过”。

如何判断:往回滚动,重读你自己的 prompt。任何你软化或推翻某条规则的地方,都是嫌疑点。

4. 大块 Artifact 或粘贴文件吃掉了预算

一个 5000 行的 Artifact,或一段超大的粘贴文件,每一轮都会被重新读一遍,把本该用于推理的 attention 都占走了。

如何判断:看会话里是否有未关闭的大 Artifact,或一大段代码粘贴。

5. 多个话题并行交织

一个会话里同时设计三个 feature,每个都有自己的决定,Claude 会把它们的细节互相串味。

如何判断:会话是单一主题,还是 A + B + C 拧在一起?

6. Extended Thinking 累积

Extended Thinking 的推理过程对你不可见,但仍占用 context。多轮 thinking 稀释窗口的速度,比可见文本看起来要快。

如何判断:开了 Thinking / Extended Thinking,且对话很长。

最短修复路径

Step 1:让 Claude 列出目前的全部决策

在乱掉的会话里发:

List every decision we have made so far:
- naming conventions
- architectural choices
- approaches we rejected and why
- open questions still undecided

Output a Markdown list. No new commentary.

复制这份清单,手动把列错的地方改对。这就是你的”决策摘要”,而且它比 Claude 还能从中段勉强回忆出的内容更可靠。

Step 2:开新会话,第一句就贴摘要

We were working on project X. Key decisions so far:
[贴上一步的清单]

Continue from here. Do not re-debate settled items.

让全新的 attention 处理一份干净的摘要,胜过在被污染的会话里硬撑。Anthropic 自己的建议是:在高强度工作里大约每 15-20 条消息就开一个新会话,并把摘要带过去。

Step 3:大资料用文件附件,不要直接粘

200 行以上的代码或文档,请上传为附件(或放进 Project Knowledge),而不是用三个反引号粘进对话。附件类内容是按需引用,而非每一轮都完整重读,对 attention 更友好。

Step 4:单会话单主题

三个 feature 就开三个会话。把每个会话当成一个 PR 或一个 issue 来管,而不是一条意识流日志。光这一个习惯就能避免绝大多数跨话题串味。

Step 5:按计划重置,别等它崩了再补救

Claude Code 里你有真正的工具:

  • /clear —— 在不相关任务之间彻底清空上下文(不消耗 token)。
  • /compact —— 摘要并压缩会话;可加焦点,如 /compact Focus on the API changes
  • Esc Esc/rewind —— 选一个检查点,选择 Summarize from hereSummarize up to here,把会话的一部分压缩、其余保留原文。
  • /context —— 查看窗口占用程度,让你在质量下降之前就动手,而不是之后。

网页端没有 /compact 命令,但你可以手动复刻:

请用 500 字总结我们目前的进展:
1. 任务背景
2. 已完成的工作
3. 当前正在做的事
4. 下一步计划

我会把这段贴进一个全新会话继续。

Step 6:不要在长会话里改基础约定

如果你确实想从 snake_case 改成 camelCase,别在第 40 轮顺嘴说。开一个新会话,干净地重新规定一次。在旧会话里改,老规则的”残影”还留在 context 里,模型会两边都半遵守。

如何确认已经修好

reset 之后,在继续正式工作前,先发一条针对性测试:

请各用一句话重述:我们的命名约定、我们的架构选择、以及我们否决过的一个方案。

如果三条都回答得准确且具体,说明新会话的上下文是干净的,可以继续了。如果还有哪条模糊,说明你的摘要不完整——把缺的那个决定补进去,重新贴一遍。

预防建议

  • 设一个 20-30 轮的硬阈值:到了就主动总结 + 开新会话,别等乱了再补救。
  • 长项目把”决策清单”维护在 Project Knowledge 或外部 doc 里,每个会话开头都贴一遍。
  • 永远单会话单主题。
  • 大资料用附件或 Project Knowledge,绝不直接粘原文。
  • 把长期决定(架构、约定)固定在项目的自定义指令里,而不是放在会漂移的 chat 正文里。
  • Claude Code 长 session 用 /context 观察占用,并在质量下滑前 /compact(或在任务之间 /clear)。

常见问题

1M token 窗口是不是意味着长对话不会再崩了? 不是。更大的窗口推迟了硬上限,但解决不了 lost-in-the-middle。模型对早期指令的遵守度仍会随窗口填充而下降,通常在超过 60-70% 占用后变得明显,所以截至 2026 年 6 月,定期 reset 依然重要。

“Claude hit the maximum length for this conversation” 是什么意思? 你把这个会话的上下文窗口填满了。开一个新会话即可获得全新窗口。先让旧会话生成一份摘要,复制下来,作为新会话的第一句话贴进去,这样就不会丢失上下文。

Claude 摘要对话时,我的历史会丢吗? 不会。在启用了 code execution 的付费套餐下,Claude 会把较早消息摘要化以继续对话,但完整历史会被保留、仍可引用。风险在于精度而非数据丢失——细粒度的早期决定会被压缩,所以重新贴一份你手动核对过的决策清单会很有帮助。

claude.ai 网页端能用 /compact 吗? 不能。/compact/clear/context/rewind 都是 Claude Code 的命令。网页端要手动做:让它总结,再把总结贴进一个新会话。

多久该开一个新会话? 对于高强度、决策密集的工作,大约每 15-20 条消息一次,或一旦对话超过窗口的 60-70% 就开新会话。别等到长度上限提示条出现——质量在那之前就已经下滑了。

相关阅读

标签: #Claude #排查 #排查