diff --git a/mateclaw-server/src/main/java/vip/mate/llm/service/ModelProviderService.java b/mateclaw-server/src/main/java/vip/mate/llm/service/ModelProviderService.java index e56826c0..c60aab3e 100644 --- a/mateclaw-server/src/main/java/vip/mate/llm/service/ModelProviderService.java +++ b/mateclaw-server/src/main/java/vip/mate/llm/service/ModelProviderService.java @@ -44,6 +44,7 @@ public class ModelProviderService { provider.setChatModel(ModelProtocol.resolveChatModel(request.getProtocol(), request.getChatModel())); provider.setGenerateKwargs(writeJson(request.getGenerateKwargs())); modelProviderMapper.updateById(provider); + tryAutoActivateModel(providerId, provider); eventPublisher.publishEvent(new ModelConfigChangedEvent("provider-config-updated")); return toProviderInfo(provider, modelConfigService.listModelsByProvider(providerId)); } @@ -131,6 +132,30 @@ public class ModelProviderService { return null; } + private void tryAutoActivateModel(String providerId, ModelProviderEntity provider) { + if (!isProviderConfigured(provider)) { + return; + } + List providerModels = modelConfigService.listModelsByProvider(providerId); + if (providerModels.isEmpty()) { + return; + } + boolean shouldAutoActivate = false; + try { + ModelConfigEntity currentDefault = modelConfigService.getDefaultModel(); + ModelProviderEntity defaultProvider = modelProviderMapper.selectById(currentDefault.getProvider()); + if (!isProviderConfigured(defaultProvider)) { + shouldAutoActivate = true; + } + } catch (MateClawException e) { + shouldAutoActivate = true; + } + if (shouldAutoActivate) { + ModelConfigEntity firstModel = providerModels.get(0); + modelConfigService.setDefaultModel(providerId, firstModel.getModelName()); + } + } + private ModelProviderEntity getProvider(String providerId) { ModelProviderEntity provider = modelProviderMapper.selectById(providerId); if (provider == null) { diff --git a/mateclaw-ui/src/views/Settings/Models/useProviders.ts b/mateclaw-ui/src/views/Settings/Models/useProviders.ts index cfb1ac91..9163355f 100644 --- a/mateclaw-ui/src/views/Settings/Models/useProviders.ts +++ b/mateclaw-ui/src/views/Settings/Models/useProviders.ts @@ -157,7 +157,7 @@ export function useProviders() { } } closeProviderModal() - await loadProviders() + await Promise.all([loadProviders(), loadActiveModel()]) } async function deleteProvider(provider: ProviderInfo) {