今早像往常一样打开终端,敲下熟悉的命令,结果蹦出来一行刺眼的红字:


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
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐