From 339ef4bc63dea8ca7264b3a4f9fc0c5489b1c6a2 Mon Sep 17 00:00:00 2001 From: Askhz <1361267452@qq.com> Date: Tue, 12 May 2026 19:31:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20costrict=20provider=20=E4=B8=8B=E5=AD=90?= =?UTF-8?q?=20agent=20=E6=A8=A1=E5=9E=8B=E5=88=AB=E5=90=8D=E7=BB=A7?= =?UTF-8?q?=E6=89=BF=E7=88=B6=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit costrict 没有 haiku/sonnet/opus 模型层级,当子 agent(如 Explore) 配置为 haiku 时,parseUserSpecifiedModel 会解析到 Claude haiku 模型 ID 而非继承主会话所选模型。修复为 costrict 下所有 family alias 强制走 inherit 逻辑,使用 getRuntimeMainLoopModel 以正确 支持 plan mode 等场景。 Co-Authored-By: CoStrict-DeepSeek-V4-Pro --- src/utils/model/agent.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/utils/model/agent.ts b/src/utils/model/agent.ts index 7bccfeba9..d0169c663 100644 --- a/src/utils/model/agent.ts +++ b/src/utils/model/agent.ts @@ -1,6 +1,6 @@ import type { PermissionMode } from '../permissions/PermissionMode.js' import { capitalize } from '../stringUtils.js' -import { MODEL_ALIASES, type ModelAlias } from './aliases.js' +import { isModelFamilyAlias, MODEL_ALIASES, type ModelAlias } from './aliases.js' import { applyBedrockRegionPrefix, getBedrockRegionPrefix } from './bedrock.js' import { getCanonicalName, @@ -68,7 +68,11 @@ export function getAgentModel( // Prioritize tool-specified model if provided if (toolSpecifiedModel) { - if (aliasMatchesParentTier(toolSpecifiedModel, parentModel)) { + if ( + aliasMatchesParentTier(toolSpecifiedModel, parentModel) || + // CoStrict has no haiku/sonnet/opus tiers — inherit parent model for all aliases + (getAPIProvider() === 'costrict' && isModelFamilyAlias(toolSpecifiedModel)) + ) { return parentModel } const model = parseUserSpecifiedModel(toolSpecifiedModel) @@ -77,6 +81,18 @@ export function getAgentModel( const agentModelWithExp = agentModel ?? getDefaultSubagentModel() + // CoStrict has no haiku/sonnet/opus model tiers — all family aliases inherit parent model + if ( + getAPIProvider() === 'costrict' && + isModelFamilyAlias(agentModelWithExp) + ) { + return getRuntimeMainLoopModel({ + permissionMode: permissionMode ?? 'default', + mainLoopModel: parentModel, + exceeds200kTokens: false, + }) + } + if (agentModelWithExp === 'inherit') { // Apply runtime model resolution for inherit to get the effective model // This ensures agents using 'inherit' get opusplan→Opus resolution in plan mode