From 7b861437c034efea35072a1855ade0b1b0bab322 Mon Sep 17 00:00:00 2001 From: Anton Bogdanovich <27antonb@gmail.com> Date: Mon, 11 May 2026 09:19:15 -0700 Subject: [PATCH] fix(web): prefer configured providers before Gemini in auto mode --- pkg/tools/integration/web.go | 9 ++++++++- pkg/tools/integration/web_test.go | 10 +++++----- web/backend/api/tools_test.go | 6 +++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/pkg/tools/integration/web.go b/pkg/tools/integration/web.go index 2c1575ee8..5693a106c 100644 --- a/pkg/tools/integration/web.go +++ b/pkg/tools/integration/web.go @@ -1312,6 +1312,13 @@ func (opts WebSearchToolOptions) resolveProviderName(query string) (string, erro sogouReady := opts.providerReady("sogou") duckReady := opts.providerReady("duckduckgo") + + for _, name := range autoPrimaryWebSearchProviders { + if opts.providerReady(name) { + return name, nil + } + } + if sogouReady && duckReady { if prefersDuckDuckGoQuery(query) { return "duckduckgo", nil @@ -1325,7 +1332,7 @@ func (opts WebSearchToolOptions) resolveProviderName(query string) (string, erro return "duckduckgo", nil } - for _, name := range autoPrimaryWebSearchProviders { + for _, name := range autoFallbackWebSearchProviders { if opts.providerReady(name) { return name, nil } diff --git a/pkg/tools/integration/web_test.go b/pkg/tools/integration/web_test.go index a63141359..2343e2c5e 100644 --- a/pkg/tools/integration/web_test.go +++ b/pkg/tools/integration/web_test.go @@ -1853,7 +1853,7 @@ func TestWebTool_AutoProviderPrefersConfiguredProvidersBeforeSogou(t *testing.T) } } -func TestWebTool_AutoProviderPrefersFreeProvidersBeforeGemini(t *testing.T) { +func TestWebTool_AutoProviderPrefersConfiguredProvidersBeforeGemini(t *testing.T) { opts := WebSearchToolOptions{ GeminiEnabled: true, GeminiAPIKey: "google-key", @@ -1872,16 +1872,16 @@ func TestWebTool_AutoProviderPrefersFreeProvidersBeforeGemini(t *testing.T) { if err != nil { t.Fatalf("ResolveWebSearchProviderName() error: %v", err) } - if name != "duckduckgo" { - t.Fatalf("provider = %q, want duckduckgo", name) + if name != "gemini" { + t.Fatalf("provider = %q, want gemini", name) } name, err = ResolveWebSearchProviderName(opts, "今天上海天气") if err != nil { t.Fatalf("ResolveWebSearchProviderName() error: %v", err) } - if name != "sogou" { - t.Fatalf("provider = %q, want sogou", name) + if name != "gemini" { + t.Fatalf("provider = %q, want gemini", name) } } diff --git a/web/backend/api/tools_test.go b/web/backend/api/tools_test.go index 3dac764ea..520847bed 100644 --- a/web/backend/api/tools_test.go +++ b/web/backend/api/tools_test.go @@ -540,15 +540,15 @@ func TestHandleUpdateWebSearchConfig_PreservesAndReplacesMultiKeys(t *testing.T) } } -func TestResolveCurrentWebSearchProvider_PrefersFreeProvidersInAutoMode(t *testing.T) { +func TestResolveCurrentWebSearchProvider_PrefersConfiguredProvidersInAutoMode(t *testing.T) { cfg := config.DefaultConfig() cfg.Tools.Web.Provider = "auto" cfg.Tools.Web.Sogou.Enabled = true cfg.Tools.Web.Brave.Enabled = true cfg.Tools.Web.Brave.SetAPIKey("brave-test-key") - if got := resolveCurrentWebSearchProvider(cfg); got != "sogou" { - t.Fatalf("resolveCurrentWebSearchProvider() = %q, want sogou", got) + if got := resolveCurrentWebSearchProvider(cfg); got != "brave" { + t.Fatalf("resolveCurrentWebSearchProvider() = %q, want brave", got) } }