别慌!今天早上 Claude Code 报 400 错误?你被它的“静默更新”背刺了
今早像往常一样打开终端,敲下熟悉的命令,结果蹦出来一行刺眼的红字:
API Error: 400 Failed to deserialize the JSON body into the target type:
messages[1].role: unknown variant 'system', expected 'user' or 'assistant'
at line 1 column 9360
我当时就蒙了——昨天还用得好好的,今天怎么就不行了?
第一反应:API Key 过期了?查了一下,没问题。
第二反应:是不是本地配置被改了?翻了一圈,一切正常。
第三反应:问了一下身边用 Claude Code 的朋友,结果人家没事,就我炸了……
不死心,又跑去 DeepSeek 上问,得到的回答是:"这是 Claude Code 的问题。"
好嘛,开始折腾——
- 卸载 Claude Code,重装 → ❌ 没用
- 清理所有配置,重新设置 → ❌ 还是报错
- 换 API Key,换网络 → ❌ 依然如故
真相大白:版本更新的锅
经过一番深挖,终于找到了罪魁祸首:
Claude Code 官方 CLI 在昨天悄悄推送了版本更新,新版本在消息格式上做了变动,而 DeepSeek 的 API 还没来得及适配这个新格式。
简单来说就是:Claude Code 升级了,但 DeepSeek API 没跟上。
这就好比你手机系统更新了,结果某个 App 还没适配,打开就闪退——一个道理。
那为什么你朋友能用?因为人家可能:
1. 用的不是 DeepSeek API(用的 Claude 官方 API)
2. Claude Code 还没自动更新到最新版
3. 已经手动锁定了版本
解决方案:两步走
第一步:回退 Claude Code 到上一个稳定版本
用下面这个命令,把 Claude Code 退回到更新前的版本:
npm uninstall -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code@2.1.153
执行完应该会看到版本号回退到了上一个稳定版。
关闭 Claude Code 自动更新(关键!)
不下这一手,过两天它又悄悄更新了,你还得再折腾一遍。
找到 Claude Code 的 `settings.json` 文件,添加如下配置:
{
"DISABLE_AUTOUPDATER": "1",
"DISABLE_UPDATES": "1"
}
修改完保存,搞定。去验证下是否修复:
重新打开终端,跑一下 Claude Code,应该已经恢复正常了:
如果不再报 400 错误,说明问题已经解决 🎉
写在最后
如果你也遇到了同样的问题,希望这篇文章能帮你少走弯路。觉得有用的话,点赞 + 收藏 + 关注三连走起,让更多人看到,少踩坑!
有问题欢迎评论区交流 👇
参考源:
- https://www.reddit.com/r/DeepSeek/comments/1tqiz97/deepseek_not_working_with_claude_code/
- https://github.com/anthropics/claude-code/issues/63469
- https://github.com/anthropics/claude-code/issues
- https://github.com/musistudio/claude-code-router/issues/1378
