fix(web): prefer configured providers before Gemini in auto mode

This commit is contained in:
Anton Bogdanovich 2026-05-11 09:19:15 -07:00
parent a5fd7a41a6
commit 7b861437c0
3 changed files with 16 additions and 9 deletions

View file

@ -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
}

View file

@ -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)
}
}

View file

@ -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)
}
}