From 6553656c9a088e3f022580202ce6ad67d4198032 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Sun, 28 Jun 2026 11:41:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20web=5Fsearch=20=E8=B5=B0=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=20SearXNG=20=E8=80=8C=E9=9D=9E=20DuckDuckGo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/ai-core/cmd/main.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/backend/ai-core/cmd/main.go b/backend/ai-core/cmd/main.go index 77409c2..4f44efc 100644 --- a/backend/ai-core/cmd/main.go +++ b/backend/ai-core/cmd/main.go @@ -192,16 +192,17 @@ func main() { var asrProvider llm.ASRProvider if getEnvBool("ENABLE_TOOLS", true) { // 11 个共享通用插件 — 注册其工具到统一注册中心 + registerPlugins(toolRegistry) + for _, t := range pluginFile.NewFilePlugin(dataDir).Tools() { toolRegistry.Register(t) } + for _, t := range pluginHTTP.NewHTTPPlugin().Tools() { toolRegistry.Register(t) } + // 优先使用本地 SearXNG,不可用时回退 DuckDuckGo searxngURL := getEnv("SEARXNG_URL", "") if searxngURL != "" { + toolRegistry.Register(wrapTool(tools.NewWebSearchToolWithURL(searxngURL), "web_search", "Search the web via SearXNG", "search")) } else { + for _, t := range pluginWS.NewWebSearchPlugin().Tools() { toolRegistry.Register(t) } } - - registerPlugins(toolRegistry) - for _, t := range pluginFile.NewFilePlugin(dataDir).Tools() { toolRegistry.Register(t) } - for _, t := range pluginHTTP.NewHTTPPlugin().Tools() { toolRegistry.Register(t) } - for _, t := range pluginWS.NewWebSearchPlugin().Tools() { toolRegistry.Register(t) } - for _, t := range pluginWF.NewWebFetchPlugin().Tools() { toolRegistry.Register(t) } + for _, t := range pluginWF.NewWebFetchPlugin().Tools() { toolRegistry.Register(t) } // ai-core 专属工具 — 通过 sdk.Tool 适配器注册 if iotClient != nil { toolRegistry.Register(wrapTool(tools.NewIoTQueryTool(iotClient), "iot_query", "Query IoT Devices", "iot"))