fix(coding-agent): parse :thinking suffix from custom model IDs in fallback path

Fixes #5552
This commit is contained in:
haoqixu
2026-06-10 01:59:29 +08:00
parent c5582102f5
commit aa03982169
3 changed files with 144 additions and 5 deletions

View File

@@ -340,9 +340,10 @@ export interface ResolveCliModelResult {
export function resolveCliModel(options: {
cliProvider?: string;
cliModel?: string;
cliThinking?: string;
modelRegistry: ModelRegistry;
}): ResolveCliModelResult {
const { cliProvider, cliModel, modelRegistry } = options;
const { cliProvider, cliModel, cliThinking, modelRegistry } = options;
if (!cliModel) {
return { model: undefined, warning: undefined, error: undefined };
@@ -451,12 +452,28 @@ export function resolveCliModel(options: {
}
if (provider) {
const fallbackModel = buildFallbackModel(provider, pattern, availableModels);
// Parse thinking level suffix from the pattern before building the fallback model,
// but only when --thinking is not explicitly provided.
// e.g. "zai-org/GLM-5.1-FP8:high" → modelId="zai-org/GLM-5.1-FP8", fallbackThinking="high"
let fallbackPattern = pattern;
let fallbackThinking: ThinkingLevel | undefined;
if (!cliThinking) {
const lastColon = pattern.lastIndexOf(":");
if (lastColon !== -1) {
const suffix = pattern.substring(lastColon + 1);
if (isValidThinkingLevel(suffix)) {
fallbackPattern = pattern.substring(0, lastColon);
fallbackThinking = suffix;
}
}
}
const fallbackModel = buildFallbackModel(provider, fallbackPattern, availableModels);
if (fallbackModel) {
const fallbackWarning = warning
? `${warning} Model "${pattern}" not found for provider "${provider}". Using custom model id.`
: `Model "${pattern}" not found for provider "${provider}". Using custom model id.`;
return { model: fallbackModel, thinkingLevel: undefined, warning: fallbackWarning, error: undefined };
? `${warning} Model "${fallbackPattern}" not found for provider "${provider}". Using custom model id.`
: `Model "${fallbackPattern}" not found for provider "${provider}". Using custom model id.`;
return { model: fallbackModel, thinkingLevel: fallbackThinking, warning: fallbackWarning, error: undefined };
}
}