feat(coding-agent/config): added model preference matching system for intelligent model selection
- Added model preference matching system with ModelMatchPreferences and ModelPreferenceContext interfaces to enable intelligent model selection based on usage history and provider preferences. - Implemented buildPreferenceContext and pickPreferredModel functions to rank and select models based on usage order, provider history, and deprioritization settings. - Enhanced parseModelPattern function to accept optional ModelMatchPreferences parameter, enabling model resolution to consider user preferences and usage history. - Updated model matching logic to prioritize models based on historical usage patterns and provider preferences when multiple candidates match a pattern.
This commit is contained in:
@@ -134,6 +134,7 @@ function resolveModelOverride(
|
||||
settingsManager?: SettingsManager,
|
||||
): { model?: Model<Api>; thinkingLevel?: ThinkingLevel } {
|
||||
if (modelPatterns.length === 0) return {};
|
||||
const matchPreferences = { usageOrder: settingsManager?.getStorage()?.getModelUsageOrder() };
|
||||
const roles = settingsManager?.serialize().modelRoles as Record<string, string> | undefined;
|
||||
for (const pattern of modelPatterns) {
|
||||
const normalized = pattern.trim().toLowerCase();
|
||||
@@ -148,7 +149,11 @@ function resolveModelOverride(
|
||||
effectivePattern = configured;
|
||||
}
|
||||
}
|
||||
const { model, thinkingLevel } = parseModelPattern(effectivePattern, modelRegistry.getAvailable());
|
||||
const { model, thinkingLevel } = parseModelPattern(
|
||||
effectivePattern,
|
||||
modelRegistry.getAvailable(),
|
||||
matchPreferences,
|
||||
);
|
||||
if (model) {
|
||||
return { model, thinkingLevel: thinkingLevel !== "off" ? thinkingLevel : undefined };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user