From fd1462bf031885bf6205fe7eab385237a7b24962 Mon Sep 17 00:00:00 2001 From: matevip Date: Mon, 6 Apr 2026 12:21:17 +0800 Subject: [PATCH] feat(model): auto-activate default model when provider API key is configured --- .../llm/service/ModelProviderService.java | 25 +++++++++++++++++++ .../src/views/Settings/Models/useProviders.ts | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) 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) {