Skip to content

网关不认 effort beta 或中途 system 消息?Claude Code 现在会自动去掉再重试 ​

不少公司会在 Claude Code 和模型之间放一层 API 网关:统一鉴权、记账、审计,或者把请求转到某个「兼容 Anthropic API」的服务上。这层网关带来了管控能力,也带来了兼容性风险——它未必认识 Claude Code 新近使用的每一个请求字段。

问题出在哪 ​

CLI 2.1.310 修复的正是两类常见的兼容问题:

  • 请求里带了 effort-2025-11-24 这个 beta 值,一些网关或兼容服务器不认识,直接拒绝;
  • 对话进行到一半时插入的 system 消息,一些服务器只接受开头的 system 提示,遇到中途的就报错。

以前碰到这两种情况,请求会直接失败,用户看到的是莫名其妙的报错,往往要去翻网关日志才知道是哪个字段惹的祸。

现在的行为 ​

更新说明写得很清楚:Claude Code 现在会在去掉它们之后重试。 也就是说,被网关拒绝时,它会自动降级成网关能接受的请求形式,让会话继续下去,而不是卡在一个你几乎无法从客户端修复的错误上。

这和本站之前介绍过的「网关拒绝 tool search 时自动重试」是同一个思路:Claude Code 正在系统性地为「不完全兼容的中间层」兜底。

需要注意的地方 ​

  1. 降级是有代价的:去掉 effort beta 后,相关的推理强度设置可能不会传给模型;去掉中途 system 消息后,模型可能少拿到一些上下文提示。会话能跑通,但效果未必与直连完全一致。
  2. 根本解决还是升级网关:如果你维护着这层网关,最好让它透传未知的 beta 值,并支持对话中途的 system 消息,这样就不需要客户端降级。
  3. 排查时看版本:如果团队里有人报「走网关偶尔请求失败、直连没事」,先确认客户端是否已经是 2.1.310 或更新版本。

同版本相关改进 ​

2.1.310 还修了一处和「请求太长」有关的问题:遇到「Prompt is too long」后触发的压缩,在对话里有大段 base64、SVG 这类密集文本时保留得太多,导致下一次请求又超长。现在压缩会更彻底,避免连续两次失败。

小结 ​

如果你通过网关或兼容服务器使用 Claude Code,这次更新能明显减少那些「不是你的错、但要你来查」的报错。升级客户端是最省事的一步,长期来看,也别忘了让网关跟上 API 的演进。

Claude-cn.org,专注于 Claude Code 中文教程