Claude 长对话变不稳定怎么办

聊到 50 轮 Claude 开始自相矛盾或忘掉刚才的决定——上下文挤掉了。

你跟 Claude 在一个会话里聊到第 50、60 轮,突然发现它开始”失忆”:忘记你 10 轮前定下的命名约定、把之前已经否决的方案又拿出来推荐、甚至在同一句话里前后矛盾。这不是 Claude 在偷懒,是上下文窗口的工作机制决定的——长会话注定会变不稳定,关键是知道什么时候 reset。

Claude 的上下文窗口(Sonnet 200K、Opus 200K-1M)虽然名义上很大,但模型对”末尾内容”的注意力远大于”中间内容”(lost-in-the-middle 现象)。聊得越长,早期决定越容易被忽视。

常见原因

按命中率从高到低:

1. 上下文接近窗口上限,老消息静默截断

当 input token 超过模型上限(200K 左右),UI 会自动从中间砍掉部分消息但不告诉你。砍掉的常常是”中段不那么近、不那么远”的内容——恰好是你早期的设计决定。

如何判断:Settings → Usage 看当前 input token,如果接近 180K-200K,几乎肯定有内容被截。

2. lost-in-the-middle:模型偏向首尾、忽略中间

即使上下文没满,模型对中间 30-70% 区间的回忆率显著下降。聊到 40 轮时,第 15-25 轮的决定就处在这个”遗忘带”里。

如何判断:让 Claude 复述第 N 轮的某个决定,复述模糊或缺失就是这种情况。

3. 同一问题前后给了相互矛盾的指令

第 5 轮你说”用 snake_case”,第 20 轮顺嘴说了句”camelCase 也行”,第 40 轮 Claude 就开始混用——因为它看到两个矛盾的”老板原话”。

如何判断:往回翻你自己的 prompt,找是否有自相矛盾的指令。

4. 大块 Artifact / 文件占满 attention budget

如果会话里有一个 5000 行的 Artifact,每次发问 Claude 都要把它读一遍,剩下能给”实际推理”的 attention 就少了。

如何判断:你是否在会话里保留了未关闭的大 Artifact?

5. 多个话题并行交织

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

如何判断:会话主题是否单一?还是 A 问题 + B 问题 + C 问题混着聊?

6. Extended Thinking 累积影响

Thinking 模式的”内心独白”虽然不显示,但会占 context。多轮 thinking 后窗口被 thinking 内容稀释。

如何判断:你启用了 thinking 模式且对话很长。

最短修复路径

Step 1:让 Claude 自己输出”当前决策清单”

在乱掉的会话里发:

请把我们到目前为止做过的所有决定列成清单:
- 命名约定
- 架构选择
- 已经放弃的方案
- 还未定的开放问题

输出 markdown,不要新增任何评论。

复制这份清单。如果你觉得它列错了,自己改对——这就是你的”决策摘要”。

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

新会话第一句:

我们之前讨论过 X 项目,关键决定如下:
[贴上一步的清单]

请基于这些继续,不要重新讨论已定的事项。

新会话 attention 完全 fresh,远比硬撑着在旧会话里强。

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

如果有 200 行以上的代码或文档,上传成附件,而不是用三个反引号粘进对话。附件在 Claude 内部是按需引用,比直接粘文本对 attention 更友好。

Step 4:单会话单主题

如果你在讨论 3 个 feature,开 3 个会话。把每个会话当一个 PR 或一个 issue 来管理,不要混。

Step 5:定期 /clear-style 重置

Claude Code 用户:/compact 命令让 Claude 压缩自身会话;网页端没有等价命令,但你可以手动:

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

之后我会开新会话,把这段贴进去继续。

Step 6:避免在长会话里改基础约定

如果你确实想从 snake_case 改成 camelCase,不要在第 40 轮顺嘴说——开新会话,重新规定一次。在旧会话里改,老约定还会”残影”存在 attention 里。

预防建议

  • 设定 20-30 轮的硬阈值,到了就主动总结 + 开新会话,别等乱了再补救
  • 长项目把”决定清单”维护在 Claude Project 的 Knowledge 里或外部 doc 里,每个会话开头引用
  • 单会话单主题:不要在同一个会话里讨论 A、B、C 三个独立 feature
  • 大资料用附件 / Projects Knowledge,不要直接 paste 入对话
  • 重要决定(架构、约定)用 SYSTEM PROMPT 固定,不要靠 chat 里的”老板原话”
  • Claude Code 长 session 主动用 /compact

相关阅读

标签: #Claude #排查 #排查