






















@@ -285,6 +285,22 @@ function injectBedrockCachePoints(
285285}
286286}
287287288+function patchOpus47MaxThinkingEffort(payload: Record<string, unknown>): void {
289+const fieldsValue = payload.additionalModelRequestFields;
290+const fields =
291+fieldsValue && typeof fieldsValue === "object" && !Array.isArray(fieldsValue)
292+ ? (fieldsValue as Record<string, unknown>)
293+ : {};
294+const outputConfigValue = fields.output_config;
295+const outputConfig =
296+outputConfigValue && typeof outputConfigValue === "object" && !Array.isArray(outputConfigValue)
297+ ? (outputConfigValue as Record<string, unknown>)
298+ : {};
299+outputConfig.effort = "max";
300+fields.output_config = outputConfig;
301+payload.additionalModelRequestFields = fields;
302+}
303+288304export function registerAmazonBedrockPlugin(api: OpenClawPluginApi): void {
289305// Keep registration-local constants inside the function so partial module
290306// initialization during test bootstrap cannot trip TDZ reads.
@@ -441,7 +457,7 @@ export function registerAmazonBedrockPlugin(api: OpenClawPluginApi): void {
441457},
442458resolveConfigApiKey: ({ env }) => resolveBedrockConfigApiKey(env),
443459 ...anthropicByModelReplayHooks,
444-wrapStreamFn: ({ modelId, config, model, streamFn }) => {
460+wrapStreamFn: ({ modelId, config, model, streamFn, thinkingLevel }) => {
445461const currentGuardrail = resolveCurrentPluginConfig(config)?.guardrail;
446462// Apply cache + guardrail wrapping.
447463const wrapped =
@@ -452,12 +468,13 @@ export function registerAmazonBedrockPlugin(api: OpenClawPluginApi): void {
452468const mayNeedCacheInjection =
453469isBedrockAppInferenceProfile(modelId) && !piAiWouldInjectCachePoints(modelId);
454470const shouldOmitTemperature = isOpus47BedrockModelRef(modelId);
471+const shouldPatchMaxThinking = shouldOmitTemperature && thinkingLevel === "max";
455472456473// For known Anthropic models (heuristic match), enable injection immediately.
457474// For opaque profile IDs, we'll resolve via GetInferenceProfile on first call.
458475const heuristicMatch = needsCachePointInjection(modelId);
459476460-if (!region && !mayNeedCacheInjection && !shouldOmitTemperature) {
477+if (!region && !mayNeedCacheInjection && !shouldOmitTemperature && !shouldPatchMaxThinking) {
461478return wrapped;
462479}
463480@@ -471,8 +488,24 @@ export function registerAmazonBedrockPlugin(api: OpenClawPluginApi): void {
471488Object.assign({}, options, region ? { region } : {}),
472489);
473490491+const originalOnPayload = merged.onPayload as
492+| ((payload: unknown, model: unknown) => unknown)
493+| undefined;
494+474495if (!mayNeedCacheInjection) {
475-return underlying(streamModel, context, merged);
496+return underlying(streamModel, context, {
497+ ...merged,
498+ ...(shouldPatchMaxThinking
499+ ? {
500+onPayload: (payload: unknown, payloadModel: unknown) => {
501+if (payload && typeof payload === "object") {
502+patchOpus47MaxThinkingEffort(payload as Record<string, unknown>);
503+}
504+return originalOnPayload?.(payload, payloadModel);
505+},
506+}
507+ : {}),
508+});
476509}
477510478511// Use the cacheRetention from options if explicitly set.
@@ -485,10 +518,6 @@ export function registerAmazonBedrockPlugin(api: OpenClawPluginApi): void {
485518// want caching enabled, so defaulting to "short" is the safer behavior.
486519const cacheRetention =
487520typeof merged.cacheRetention === "string" ? merged.cacheRetention : "short";
488-const originalOnPayload = merged.onPayload as
489-| ((payload: unknown, model: unknown) => unknown)
490-| undefined;
491-492521if (heuristicMatch) {
493522// Fast path: ARN heuristic already identified this as Claude, but the
494523// concrete target may still need profile traits for Opus 4.7 payloads.
@@ -499,6 +528,9 @@ export function registerAmazonBedrockPlugin(api: OpenClawPluginApi): void {
499528if (payload && typeof payload === "object") {
500529const payloadRecord = payload as Record<string, unknown>;
501530injectBedrockCachePoints(payloadRecord, cacheRetention);
531+if (shouldPatchMaxThinking) {
532+patchOpus47MaxThinkingEffort(payloadRecord);
533+}
502534if (mayNeedTemperatureTrait) {
503535const traits = await resolveAppProfileTraits(modelId, region);
504536if (traits.omitTemperature) {
@@ -522,6 +554,9 @@ export function registerAmazonBedrockPlugin(api: OpenClawPluginApi): void {
522554if (traits.cacheEligible) {
523555injectBedrockCachePoints(payloadRecord, cacheRetention);
524556}
557+if (shouldPatchMaxThinking) {
558+patchOpus47MaxThinkingEffort(payloadRecord);
559+}
525560if (traits.omitTemperature) {
526561omitDeprecatedOpus47PayloadTemperature(payloadRecord);
527562}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。