From 08d1a89c0ea709cb5ffb6da07a5e5e86b3d4712d Mon Sep 17 00:00:00 2001 From: matevip Date: Mon, 6 Apr 2026 12:34:12 +0800 Subject: [PATCH] feat(model): auto-activate Ollama model as default on startup discovery --- .../llm/config/OllamaAutoDiscoveryRunner.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mateclaw-server/src/main/java/vip/mate/llm/config/OllamaAutoDiscoveryRunner.java b/mateclaw-server/src/main/java/vip/mate/llm/config/OllamaAutoDiscoveryRunner.java index a9421c95..8c3fa15e 100644 --- a/mateclaw-server/src/main/java/vip/mate/llm/config/OllamaAutoDiscoveryRunner.java +++ b/mateclaw-server/src/main/java/vip/mate/llm/config/OllamaAutoDiscoveryRunner.java @@ -14,6 +14,9 @@ import vip.mate.llm.model.TestResult; import vip.mate.llm.service.ModelConfigService; import vip.mate.llm.service.ModelDiscoveryService; +import vip.mate.llm.service.ModelProviderService; + +import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -36,6 +39,7 @@ public class OllamaAutoDiscoveryRunner implements ApplicationRunner { private final ModelDiscoveryService modelDiscoveryService; private final ModelConfigService modelConfigService; + private final ModelProviderService modelProviderService; @Async @Override @@ -82,8 +86,32 @@ public class OllamaAutoDiscoveryRunner implements ApplicationRunner { log.info("Ollama: auto-enabled model '{}'", modelTag); } } + // Auto-activate first Ollama model if no valid default exists + tryAutoActivateOllamaModel(); } catch (Exception e) { log.debug("Ollama auto-discovery skipped: {}", e.getMessage()); } } + + private void tryAutoActivateOllamaModel() { + List ollamaModels = modelConfigService.listModelsByProvider(OLLAMA_PROVIDER_ID); + List enabledModels = ollamaModels.stream() + .filter(m -> Boolean.TRUE.equals(m.getEnabled())) + .toList(); + if (enabledModels.isEmpty()) { + return; + } + boolean hasValidDefault; + try { + ModelConfigEntity current = modelConfigService.getDefaultModel(); + hasValidDefault = modelProviderService.isProviderAvailable(current.getProvider()); + } catch (Exception e) { + hasValidDefault = false; + } + if (!hasValidDefault) { + ModelConfigEntity first = enabledModels.get(0); + modelConfigService.setDefaultModel(OLLAMA_PROVIDER_ID, first.getModelName()); + log.info("Ollama: auto-activated default model '{}'", first.getModelName()); + } + } }