From 839522e1d483417ad3f6635770b1b0bfd7b32d3f Mon Sep 17 00:00:00 2001 From: AskaEth Date: Fri, 26 Jun 2026 12:51:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20web=5Fsearch=20nil=20pointer=E5=B4=A9?= =?UTF-8?q?=E6=BA=83=20=E2=80=94=20=E9=9B=B6=E5=80=BCstruct=E2=86=92?= =?UTF-8?q?=E6=9E=84=E9=80=A0=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WebSearchPlugin/HTTPPlugin/WebFetchPlugin/FilePlugin 全部改用构造函数创建,避免内部http.Client为nil - 根因: executeAsyncAndStore异步执行时零值struct导致panic - ai-core频繁崩溃的直接原因 Co-Authored-By: Claude --- backend/ai-core/cmd/main.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/ai-core/cmd/main.go b/backend/ai-core/cmd/main.go index 0085202..dee3295 100644 --- a/backend/ai-core/cmd/main.go +++ b/backend/ai-core/cmd/main.go @@ -196,10 +196,10 @@ func main() { } registerPlugins(toolRegistry) - for _, t := range (&pluginFile.FilePlugin{}).Tools() { toolRegistry.Register(t) } - for _, t := range (&pluginHTTP.HTTPPlugin{}).Tools() { toolRegistry.Register(t) } - for _, t := range (&pluginWS.WebSearchPlugin{}).Tools() { toolRegistry.Register(t) } - for _, t := range (&pluginWF.WebFetchPlugin{}).Tools() { toolRegistry.Register(t) } + 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) } // ai-core 专属工具 — 通过 sdk.Tool 适配器注册 if iotClient != nil { toolRegistry.Register(wrapTool(tools.NewIoTQueryTool(iotClient), "iot_query", "Query IoT Devices", "iot"))