近期 Claude Code 质量问题的事后分析
来源: Anthropic Engineering Blog | 作者: @AnthropicAI | 日期: 2026-04-23 原文链接: https://www.anthropic.com/engineering/april-23-postmortem
一句话总结
过去一个月 Claude Code 被用户感知到的质量退化,源自三个独立的产品层变更(推理力度降级、缓存 bug 持续清除思考历史、系统提示词过度压缩输出),API 和模型本身未受影响,截至 4 月 20 日全部修复。
速览
- 推理力度降级——3 月 4 日将默认 effort 从 high 改为 medium,导致 Sonnet 4.6 和 Opus 4.6 在 Claude Code 中整体智能下降,4 月 7 日回滚
- 思考历史持续丢失——3 月 26 日的缓存优化 bug 导致闲置会话后每一轮都清除推理记录,Claude 表现为健忘和重复,4 月 10 日修复
- 系统提示词过度限制——4 月 16 日加入 ≤25 词/≤100 词的长度限制,与其他变更叠加后使编码质量下降 3%,4 月 20 日撤回
- 三重叠加效应——三个问题在不同时间影响不同流量切片,综合呈现为广泛而不一致的退化,增加了排查难度
- API 未受影响——所有问题仅限于 Claude Code 产品层,API 和推理层确认无恙
- 内部检测盲区——内部员工使用的构建版本与公开版不同、两个不相关实验掩盖了 bug 复现,导致发现延迟
- Opus 4.7 能发现 Opus 4.6 发现不了的 bug——用 Code Review 回溯测试,Opus 4.7 在获得完整仓库上下文后成功定位了缓存 bug
- 后续改进措施——强制员工使用公开版、逐行消融评估系统提示词、渐进式发布、加强 Code Review 工具
核心内容
推理力度降级:用户宁要智能,不要速度
Opus 4.6 在 2 月发布时默认推理力度为 high。部分用户遭遇 UI 假死级别的超长延迟,团队因此在 3 月 4 日将默认值改为 medium。内部评估显示 medium 延迟显著降低、智能略降,同时能最大化用户配额,看似合理。
但大量用户反馈”Claude Code 变笨了”。团队做了多次 UX 迭代(启动提示、内联选择器、恢复 ultrathink)让力度设置更醒目,但多数用户并不主动调整默认值。最终在 4 月 7 日回滚,新默认值为 Opus 4.7 使用 xhigh,其他模型使用 high。
这个案例揭示了一个产品决策陷阱:从评估数据看”略降智能换大幅降延迟”是合理取舍,但用户的实际感受远比评估指标敏感。
缓存优化 bug:一行设计缺陷导致记忆持续丧失
设计意图简单清晰:会话闲置超过一小时后,清除旧的思考部分以减少恢复成本(反正缓存已失效),然后恢复正常的完整推理历史发送。使用 clear_thinking_20251015 API header 配合 keep:1 实现。
bug 的本质:清除操作不是执行一次,而是在会话后续的每一轮中反复执行。效果累积——如果用户在 Claude 执行工具调用期间发送消息,新的一轮在损坏标志下启动,连当前轮的推理都被丢弃。Claude 继续执行,但逐渐失去对自己决策动机的记忆。
这直接导致了用户报告的三个症状:健忘、重复、和奇怪的工具选择。同时由于每次都缓存未命中,用户配额消耗也异常加速。
复现困难的原因:一个仅内部使用的消息队列实验改变了行为路径;另一个思考内容展示方式的变更在大多数 CLI 会话中掩盖了此 bug。即使测试外部构建版本也未能触发。最终花了超过一周才确认根因。
值得注意的是:这个变更通过了人工审查、自动化审查、单元测试、端到端测试、自动化验证和 dogfooding 的全部环节。用 Opus 4.7 进行 Code Review 回溯时,4.7 能发现这个 bug,而 4.6 不能——这促使团队为 Code Review 增加多仓库上下文支持。
系统提示词过度压缩:25 个词的限制摧毁编码质量
Opus 4.7 天生冗长,团队为此在系统提示词中加入:“工具调用之间的文本保持在 ≤25 个词。最终回复保持在 ≤100 个词,除非任务需要更多细节。”
经过数周内部测试和评估集验证后随 Opus 4.7 在 4 月 16 日发布。但在后续更广泛的评估中,消融实验显示该行对 Opus 4.6 和 4.7 均造成 3% 的性能下降,于 4 月 20 日立即撤回。
后续改进:从流程层面防止重演
- 统一构建版本:确保更多内部员工使用与公开版完全相同的 Claude Code,消除”内部版看不到外部 bug”的盲区
- 系统提示词管控:每次变更运行逐模型、逐行消融的广泛评估;新工具使变更更易审查和审计;CLAUDE.md 中增加指导确保模型特定变更只作用于目标模型
- 渐进式发布:对任何可能影响智能的变更增加浸泡期和分批灰度发布
- Code Review 增强:支持额外仓库作为上下文,已将改进版提供给客户
- 沟通透明化:创建 @ClaudeDevs 账号深入解释产品决策,同步更新到 GitHub
名言金句
- “We never intentionally degrade our models.”(我们从未故意降低模型质量。)
- “This was the wrong tradeoff.”(这是一个错误的权衡。)——关于将默认推理力度从 high 降为 medium
- “Claude would continue executing, but increasingly without memory of why it had chosen to do what it was doing.”(Claude 会继续执行,但对自己为何选择这样做的记忆越来越模糊。)
- “The people who used the /feedback command to share their issues with us are the ones who ultimately allowed us to identify and fix these problems.”(使用 /feedback 命令分享问题的用户最终帮助我们发现并修复了这些问题。)
可行建议
- Claude Code 用户:确保升级到 v2.1.116 或更高版本以获得所有修复
- 重度用户:使用
/effort命令根据任务复杂度手动调整推理力度,而非依赖默认值 - 遇到问题时:使用
/feedback命令提交具体可复现的示例,这是最有效的反馈渠道 - 长时间闲置的会话:考虑重新开始新会话而非恢复旧会话,避免潜在的上下文问题