跟 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 here 或 Summarize 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% 就开新会话。别等到长度上限提示条出现——质量在那之前就已经下滑了。