云平台自定义模型名改用精简系统提示词:CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0 可恢复
通过 Bedrock、Vertex、Foundry 或 Mantle 使用 Claude Code 的团队,很多不会直接写官方模型 ID,而是用自定义部署名或推理配置文件(inference profile)的 ARN。CLI 2.1.312 对这种情况的默认行为做了调整,值得留意。
变化内容
更新说明的意思是:在 Bedrock、Vertex、Foundry 和 Mantle 上,对于 Claude Code 识别不出的模型名,比如自定义部署名和推理配置文件 ARN,即使它们背后实际是 Sonnet 或 Haiku,也会改用较短的系统提示词;设置 CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0 可以保留完整提示词。
关键在于「识别不出」。Claude Code 是根据模型名来判断模型能力、决定用哪套系统提示词的。像 arn:aws:bedrock:...:application-inference-profile/xxxx 或 my-team-sonnet-prod 这样的名字,客户端没法确定背后是哪个模型,于是现在会保守地使用精简版。
可能带来的影响
完整系统提示词里包含大量关于工具用法、编码规范和工作流程的说明。换成精简版后,一些细节行为可能会有差异,例如:
- 对工具的使用习惯不如以前「懂规矩」;
- 输出风格、提交说明等细节和直连 API 时不完全一致。
如果你升级后觉得通过云平台用的 Claude Code「好像变笨了一点」,而你恰好用的是自定义部署名或 ARN,很可能就是这条变化。
如何恢复完整提示词
确认背后确实是 Sonnet、Opus 这类能力完整的模型后,在环境里设置:
export CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0也可以写进团队统一下发的 settings 的 env 字段(这是我们的推荐做法,以你们现有的配置管理方式为准)。
同一版本里的相关变化
2.1.312 还把「消息被标记后自动切换模型」的机制扩展到了认不出的模型名上,比如自定义部署名。如果你不希望发生这种自动切换,可以设置 CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK=1 关闭。
建议
- 能用官方模型 ID 就用官方 ID,客户端能正确识别,行为最可预期。
- 必须用 ARN 或自定义名时,评估一下是否需要
CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0,并在测试环境对比两种提示词下的表现。 - 把这两个环境变量记进云平台部署文档,避免团队成员各自排查。
小结
这条变化只影响云平台上使用非标准模型名的用户,但影响面不小。升级到 2.1.312 后,用自定义部署名的团队最好检查一遍,按需加上 CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0。