ByteNoteByteNote

字节笔记本

2026年8月28日

Claude Code v2.1.152 配 DS 模型报 API 400 怎么处理

API中转
¥120

升到 Claude Code v2.1.152 之后,如果你还在用 DeepSeek(DS)系列模型,多轮对话里突然冒出 API Error: 400,多半不是 Key 坏了,而是「思考块」回传规则变严了。下面按现象、原因和能立刻试的办法拆开说。

你会看到什么

典型报错类似:

API Error: 400 The content [].thinking in the thinking mode must be passed back to the API.

常见触发组合:

  • Claude Code v2.1.152 或更新
  • 后端是 DeepSeek-V4-Flash / DeepSeek-V4-Pro 一类 DS 模型(官方 API 或中转都行)
  • 开着 Thinking / Reasoning
  • 多轮对话,尤其还带工具调用

官方自家 Claude 模型在这套新逻辑下通常没事;踩坑的多半是 DS 或中间会改写响应的中转。

原因:思考块必须原样回传

Anthropic 在新版里收紧了扩展思考(thinking)的处理:一旦某轮开了思考模式,后续请求要把模型之前返回的 thinking 内容原样带回去,不能丢、也不能只留最终文本。

DS 等模型和 Anthropic 原生对 thinking / reasoning_content 的字段约定不完全一致。中转站有时为了省流量或「洗干净」响应,会把思考块滤掉,只转发可见回复。旧版 Claude Code 可能还能凑合用;v2.1.152 起历史管理更严,就会直接 400。

所以问题往往不在「DS 模型本身写不出字」,而在「对话历史里的思考块在转发链路里丢了」。

立刻能用的处理办法

1. 先降级到 v2.1.150(最省事)

还要继续用 DS + 思考模式的话,先退回 v2.1.150。多数反馈是降级后错误消失。用 DS 做主力时,可以暂时跳过 2.1.152 及之后的升级,等上游兼容稳定再跟。

具体安装/降级方式以你当前装法为准(官方安装脚本、包管理器或本地二进制)。降级后重启一次会话,确认版本号再测多轮工具调用。

2. 暂时关掉思考模式

如果必须留在新版本,又不急着要 reasoning,可以在当前配置里关掉 Thinking / Reasoning。关掉后不再强制回传 thinking 块,400 一般会消失。代价是模型少了一层显式推理过程,复杂任务上体感可能变弱。

3. 找中转站确认有没有丢 thinking

走中转时,让提供方确认:开启思考模式的请求,响应里的 thinking 相关字段是否被原样保留并在下一轮请求里回传。过滤、截断、只保留 text 都会踩同一条规则。能改转发策略就比你这边反复换版本稳。

4. 等 DS / 中转侧对齐

长期看,还是要靠 DeepSeek API 与中转对 Anthropic 思考块约定做兼容。你可以带着完整报错文案和「v2.1.152 + DS + thinking + 多轮」复现步骤去反馈;在对方修好之前,降级或关思考是更现实的日常方案。

排查清单(两分钟)

  1. claude --version(或你本地的等价命令)是不是 ≥ 2.1.152
  2. 当前模型是不是 DS 系列,以及是否开了 thinking
  3. 直连官方 DS API 和走中转是否都能复现(判断是客户端还是转发层)
  4. 先降到 2.1.150,或关思考,再跑同一条多轮工具任务

两边都能复现,优先降级或关思考;只有中转复现,优先让中转保留 thinking。

小结

v2.1.152 的 400 不是神秘故障,而是「思考块必须回传」这条规则撞上了 DS / 中转的兼容缝。短期:降到 v2.1.150,或关思考。中期:催中转和上游把 thinking 字段完整透传。用 Claude 官方模型、且不经过会改写响应的代理时,一般感受不到这波变化。

分享: