资讯动态

Anthropic 官方认了!Claude Code 变蠢不是错觉,三个 bug 叠加的排查与配置修复实录

发布时间:2026/9/26 10:05:45 来源:尧图企业网站定制
1. Claude Code 变蠢这件事官方终于给了说法如果你最近几个月用 Claude Code 写代码大概率有过这种体验明明上一轮还在认真读文件、分析依赖下一轮就开始盲改改完还理直气壮地说完成了。你以为是自己的错觉或者以为模型就是会波动。但社区那份 23 万条工具调用的数据分析把这件事坐实了——thinking 深度从 2200 字符掉到 720 字符Read:Edit 比例从 6.6 降到 2.0三分之一的修改根本没读原文件。Anthropic 在 4 月 23 号发了事后分析承认这不是错觉是三个独立 bug 叠在一起。时间跨度从 3 月初到 4 月中全部在 4 月 20 号修复同时重置了所有订阅用户的额度。这篇文章不重复新闻而是从工程角度拆解这三个 bug 分别是什么、为什么叠加起来杀伤力这么大然后给你一套可复制的settings.json和config.toml配置骨架配合 TaoToken 统一 Key/API 通道做验证帮你确认自己的环境到底有没有踩到坑。适合正在用 Claude Code 做日常开发、或者准备把它接进 CI/Agent 流程的开发者。2. 三个 bug 到底怎么叠的2.1 默认推理深度被悄悄降档3 月 4 号Anthropic 把 Claude Code 的默认 reasoning effort 从 high 改成 medium。理由听起来很合理Opus 4.6 在 high 模式下偶尔思考太久UI 像卡死token 消耗也不成比例。内部测试结论是 medium 只损失一点点智能延迟低很多还能省配额。问题是大多数用户根本不会去改默认设置。你改了默认值加了 effort 选择器恢复了 ultrathink 选项但用户不切回去体验就是变笨了。直到 4 月 7 号收到更多反馈才改回来。现在 Opus 4.7 默认 xhigh其他模型默认 high。社区数据里 thinking 深度跌了 67%这个幅度远超 high 到 medium 一档能解释的范围。Anthropic 的复盘没有正面回应这个缺口这也是为什么很多人觉得官方认了但没完全认。2.2 缓存优化 bug 导致 thinking 持续丢失主犯这是三个里技术最复杂、影响最大的。Claude Code 在对话中会保留历史 thinking让模型每一轮都能看到之前的推理过程——为什么做那些编辑、为什么选那些工具。3 月 26 号做了一个缓存优化session 空闲超过 1 小时恢复时清除旧 thinking减少 cache miss 时的 token 传输。实现用了clear_thinking_20251015API header 加keep:1只保留最近一个 thinking block。设计意图没问题但代码写错了清除操作本该只执行一次实际在 session 每一轮对话都执行。一旦触发空闲阈值后续每个请求都告诉 API 只保留最近一个 thinking block丢弃所有推理历史。更糟的是如果你在 tool use 执行过程中发新消息新 turn 也带着 broken flag当前 turn 的 thinking 也被丢掉。Claude 还在继续执行但它越来越不记得自己为什么要做这些事。用户看到的健忘、重复、奇怪的工具选择全部对得上。配额消耗加快也在这里清除 thinking 意味着后续请求不再命中缓存每次 cache miss 对 96 万 token 上下文窗口来说都是巨额开销。这跟社区发现的 cache TTL 从 1 小时砍到 5 分钟直接相关。2.3 系统 prompt 限制输出长度4 月 16 号随 Opus 4.7 上线系统 prompt 里加了一行tool call 之间的文本限制 25 词以内最终响应限制 100 词以内。目的是治 Opus 4.7 的啰嗦。内部测试几周没发现问题上线后在更广的 eval 集上发现导致 Opus 4.6 和 4.7 编码质量下降 3%4 月 20 号回滚。三个问题单独看都不至于灾难但凑在一起、影响不同用户群体、在不同时间段生效效果就是整个 3 月到 4 月中旬 Claude Code 看起来在广泛且不一致地变差。一部分用户没触发空闲阈值、手动切了 high、没更新到新 prompt就没事另一部分三个全中。所以社区里我没感觉变差和明明就变差了的争论答案其实是你们说的都对只是 bug 组合不一样。3. 前置准备用 TaoToken 统一 Key/API 通道在动手改配置之前先把接入通道理顺。Claude Code 默认走 Anthropic 官方 API但如果你同时用多个模型、或者想统一管理 Key 和用量用 TaoToken 做统一通道会省很多事。它的 API 地址是https://taotoken.net/api兼容 Anthropic 的接口格式Claude Code 可以直接指过去。先去控制台建一个 Key控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite建好 Key 之后你需要设置两个环境变量。Claude Code 读的是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEYexport ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的TaoToken密钥Windows PowerShell 用$env:ANTHROPIC_BASE_URLhttps://taotoken.net/api $env:ANTHROPIC_API_KEYsk-你的TaoToken密钥想持久化就写进~/.zshrc或~/.bashrc。这一步做完Claude Code 的所有请求都会经过 TaoToken方便你后面统一看用量、切模型、排查问题。4. 可复制的配置骨架4.1 settings.json锁死 effort 和 thinking 行为Claude Code 的用户级配置在~/.claude/settings.json项目级在.claude/settings.json。下面这份骨架把 effort level、thinking 保留、缓存相关行为都显式写死避免再被默认值坑{ model: claude-opus-4-7, env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_REASONING_EFFORT: high, MAX_THINKING_TOKENS: 16000 }, permissions: { allow: [ Read, Edit, Bash(git status), Bash(git diff:*) ], deny: [ Bash(rm -rf:*), Bash(curl:* | sh) ] }, includeCoAuthoredBy: false }几个关键点ANTHROPIC_REASONING_EFFORT显式设成high不要依赖默认值。如果你用 Opus 4.7 想要更深推理可以设xhigh但延迟和 token 消耗会上去自己权衡。MAX_THINKING_TOKENS设一个明确上限避免 thinking 被无声截断。16000 是个比较稳的值长任务可以调到 32000。permissions.deny里把危险命令挡掉尤其是curl | sh这种Claude Code 在 thinking 丢失状态下更容易做出奇怪的工具选择。4.2 config.toml给 Codex CLI 或兼容工具用如果你同时用 Codex CLI 或者其他读 TOML 的工具~/.codex/config.toml可以这样写把通道和模型都固定下来model claude-opus-4-7 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key ANTHROPIC_API_KEY [profiles.deep] model claude-opus-4-7 model_reasoning_effort high [profiles.fast] model claude-sonnet-4-6 model_reasoning_effort medium这样你可以用--profile deep跑复杂重构用--profile fast跑日常小改effort 不会因为默认值变动而漂移。4.3 版本和 effort 自检脚本把这段存成check-claude.sh每次升级后跑一遍#!/usr/bin/env bash set -e echo Claude Code 版本 claude --version echo 环境变量 echo BASE_URL: ${ANTHROPIC_BASE_URL:-未设置} echo EFFORT: ${ANTHROPIC_REASONING_EFFORT:-未设置} echo settings.json 关键字段 if [ -f $HOME/.claude/settings.json ]; then grep -E model|REASONING_EFFORT|MAX_THINKING $HOME/.claude/settings.json || true else echo 未找到 ~/.claude/settings.json fi版本要大于等于2.1.116低于这个数说明你还在带 bug 的版本上跑。5. 验证请求与成功结果配置改完跑一个最小验证确认通道通、thinking 正常、缓存行为符合预期。第一步确认 API 通道可达curl -s https://taotoken.net/api/v1/messages \ -H x-api-key: $ANTHROPIC_API_KEY \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-opus-4-7, max_tokens: 256, thinking: {type: enabled, budget_tokens: 2048}, messages: [{role: user, content: 用一句话解释什么是 cache miss}] }成功的话你会看到返回 JSON 里带thinking字段和text字段。如果thinking为空或者被截断说明 effort 或 budget 没生效回去检查settings.json。第二步在 Claude Code 里跑一个多轮任务观察它是否还记得前面的推理claude 读一下 src/utils/parser.ts告诉我它依赖哪些模块 基于你刚才的分析把 parseConfig 函数改成支持嵌套对象修复后的版本第二轮会引用第一轮读到的依赖关系。如果它开始盲改、不引用前面的分析说明 thinking 保留还是有问题检查版本和MAX_THINKING_TOKENS。第三步验证模型对话通道确认 TaoToken 侧模型可用模型对话入口https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite在这里发一条带 thinking 的请求对比返回的 reasoning 长度是否符合你的 budget 设置。6. 本篇常见错排查6.1 改了 settings.json 但 effort 没生效最常见的原因是环境变量优先级高于配置文件。如果你 shell 里 export 了ANTHROPIC_REASONING_EFFORTmedium它会覆盖settings.json里的值。用env | grep ANTHROPIC查一遍把冲突的 unset 掉。6.2 长 session 还是丢 thinking先确认版本 ≥ 2.1.116。如果版本对但还是丢检查是不是有多个配置文件在打架~/.claude/settings.json、项目级.claude/settings.json、还有环境变量。项目级会覆盖用户级环境变量覆盖两者。用claude config list看最终生效值。6.3 配额消耗异常快即使 thinking bug 修了cache miss 依然会烧配额。几个降耗动作把MAX_THINKING_TOKENS从 32000 降到 16000长 session 该断就断别硬撑用--profile fast跑不重要的任务。另外在 TaoToken 控制台看用量分布如果某个模型占比异常高可能是配置里 model 字段写错了。6.4 接入后报 401 或 403先确认ANTHROPIC_API_KEY是 TaoToken 的 Key不是 Anthropic 官方的。再确认ANTHROPIC_BASE_URL结尾没有多余的斜杠正确写法是https://taotoken.net/api。如果还报错去 API Keys 页面确认 Key 没过期、额度没用完。6.5 工具调用被权限拦了permissions.deny写太狠会拦掉正常操作。比如你 deny 了Bash(git:*)那 Claude Code 连git diff都跑不了。建议 deny 只写真正危险的模式比如rm -rf、curl | sh、chmod 777其他放 allow。7. 长期编码和 Agent 场景怎么配如果你把 Claude Code 接进日常开发流或者跑长时间 Agent 任务单靠settings.json还不够需要一套稳定的通道和额度管理。TaoToken 的 Coding Plan 就是为这种场景准备的统一 Key、统一计费、多模型切换Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite接入文档在这里里面有 Claude Code、Codex CLI、Cursor 等工具的详细配置示例接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite如果你用 Claude Code 的 Anthropic 兼容模式专门的配置页在这里ClaudeCodeAnthropic 配置https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite我自己的做法是把settings.json里的 model 和 effort 写死环境变量只留ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY其他全部走配置文件。这样升级 Claude Code 或者换机器的时候行为不会漂。每次 Anthropic 发新版先跑一遍第 4.3 节的自检脚本确认版本和 effort 都对再开始干活。三个 bug 修了不代表以后不会有新的把配置显式化、把验证脚本化是唯一能让你少踩坑的办法。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑