你在 Cline 里选了 Claude 模型,发出第一条消息,等来的不是回答,而是一行错误:'temperature' is deprecated for this model。同一个模型在别的客户端里一切正常,你的 AWS 账号也没动过。原因既不在权限,也不在模型,而在一个 Cline 会放进请求、Bedrock 在调用模型之前就拒掉的字段。
下面说清楚这个字段是从哪来的,怎么用两条命令证明它就是原因,以及 issue 还没关闭之前今天能做什么。
"temperature is deprecated for this model" 是什么意思?
意思是 Bedrock 因为推理参数拒绝了这次调用,而不是因为凭证、配额或区域。错误来自 ValidationException,在模型执行之前就返回。不会生成任何 token,也不会产生推理费用,Cline 里的任务当场停下。
最容易让人误解的是随之返回的 modelId:通常是 application inference profile 的 ARN。很多人因此以为问题出在推理配置文件上。并不是。配置文件只负责把请求转发给模型,拒绝这个字段的是模型本身。
为什么只有部分模型会出现?
因为较新的模型不再接受 temperature 作为推理参数。旧模型一直接受,现在也还接受。当你把 Cline 指向通过 Bedrock 访问的新模型时,客户端仍然像以前一样把字段发出去,然后 Bedrock 的校验把它挡下来。
Cline 仓库里三个未关闭的 issue 报的都是同一个现象:
| Issue | 模型 | 路径 | 提出时间 |
|---|---|---|---|
| #12252 | 较新的 Claude 模型 | Bedrock 搭配 application inference profile | 2026-07-13 |
| #10573 | Opus 4.7 | Bedrock | 2026-05-06 |
| #15441 | Opus 4.7、Sonnet 和 Sonnet 4.5 | Cline 内的 Anthropic 提供商 | 2026-10-30 |
三个里最有信息量的是 #15441:它说明这个错误并不只出现在 Bedrock 上。只要客户端向不再接受该字段的模型发送 temperature,就会出现。
怎么用两条命令确认?
直接用 Bedrock 调用模型,一次带字段,一次不带。如果第一次失败、第二次成功,原因就确定了。凭证和 modelId 用 Cline 里那一份。
aws bedrock-runtime converse \
--model-id arn:aws:bedrock:us-west-2:你的账号:application-inference-profile/你的ID \
--messages '[{"role":"user","content":[{"text":"say ok"}]}]' \
--inference-config '{"temperature":0.2,"maxTokens":16}'
如果出现同样的错误,去掉 temperature 再跑一次:
aws bedrock-runtime converse \
--model-id arn:aws:bedrock:us-west-2:你的账号:application-inference-profile/你的ID \
--messages '[{"role":"user","content":[{"text":"say ok"}]}]' \
--inference-config '{"maxTokens":16}'
Cline 这个字段是从哪里来的?
来自模型元数据,而且是无条件的。在 Cline 源码里,拼装调用参数的函数直接把它传下去,不检查提供商或模型是否接受:
// sdk/packages/llms/src/providers/ai-sdk.ts
export function buildAiSdkStreamConfig(request, context) {
const reasoning = resolvePortableReasoning(request, { context })
return {
...(request.maxTokens !== undefined
? { maxOutputTokens: request.maxTokens }
: {}),
temperature: request.temperature,
...(reasoning ? { reasoning } : {}),
}
}
注意 maxTokens 有条件保护,temperature 没有。这个值来自模型元数据或者你自己设置的覆盖项,Bedrock 的 SDK 再把它转成 inferenceConfig.temperature。校验拒绝的正是这个字段。
这也解释了报告里的一个细节:换个模型错误就消失了,即使你什么都没改。字段照样发出去,只是新模型接受它。
只靠配置能去掉这个字段吗?
取决于值定义在哪里,这正是网上大多数教程弄错的地方。
Cline 允许在提供商设置里按模型覆盖 temperature。如果这个值是你自己设的,清掉覆盖项就能解决:没有值,字段就不会被发送。如果值来自 Cline 自带的模型目录,清掉覆盖项没有用,目录里的元数据会顶上。
要判断自己属于哪种情况,打开 Cline 里这个模型的设置,看温度这一项有没有填值。如果没填而错误依旧,说明值来自目录,只能等 Cline 修。
issue 关闭之前能做什么?
三条路,按侵入性从低到高:
- 换成接受该字段的模型。 立刻生效,除了改一下选择不需要做别的。如果你只是想把活干完,这就是对的做法。
- 把 Cline 指向另一个接受同一模型的提供商。 如果组织允许从别的路径访问该模型,Cline 支持的提供商不止 Bedrock。先确认替代提供商是否也会发送这个字段,因为问题出在客户端,不在 Bedrock。
- 打一个本地补丁。 只需要一行,能彻底解决 Bedrock 这种情况:
// 修改前
temperature: request.temperature,
// 修改后
...(context.provider.id !== "bedrock" && request.temperature !== undefined
? { temperature: request.temperature }
: {}),
每次扩展更新后都要重新打,因为安装过程会覆盖编译后的文件。把它当临时手段,不要当最终方案。
这个问题修好了吗?
没有。三个 issue 都还开着,最早的一个从 2026 年 5 月起。最近的是 #15441,10 月 30 日提出,覆盖了最常用的几个 Claude 模型。在修复之前行为都一样:字段照发,新模型照拒。
如果你碰上这个问题,值得在 issue 里补上 modelId、Cline 版本和上面直接调用测试的结果。这类证据能把「不能用」变成「模型 Y 拒绝字段 X」,任何修复都会因此更快。
参数校验错误本来不该让工作停下来。在编辑器里留一个备份提供商是有必要的:当客户端和模型的组合拒绝某个字段时,你换个引擎继续干,而不是等下一个版本。Verboo Code 提供兼容 [OI] 协议的端点,你可以保留正在用的界面,只换掉背后回答问题的那一层。在 verboo.ai 配置一个备用提供商。



