From 34521b868d5c88e21517ef379f977fbb4a112e2b Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Sun, 5 Oct 2025 20:50:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(search):=20=E6=B7=BB=E5=8A=A0SearXNG?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=BC=95=E6=93=8E=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在Web搜索工具中集成了SearXNG作为新的搜索引擎选项。 - 在 `WebSearchConfig` 中添加了 `searxng_instances` 和 `searxng_api_keys` 配置项。 - 更新了配置文件模板以包含新的SearXNG设置。 - 修复了 `main.py` 中管理器异步初始化调用方式的错误。 --- src/config/official_configs.py | 2 ++ src/main.py | 8 ++++---- src/plugins/built_in/web_search_tool/plugin.py | 2 +- template/bot_config_template.toml | 4 +++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/config/official_configs.py b/src/config/official_configs.py index 23ddce7a4..7ca08116b 100644 --- a/src/config/official_configs.py +++ b/src/config/official_configs.py @@ -548,6 +548,8 @@ class WebSearchConfig(ValidatedConfigBase): enable_url_tool: bool = Field(default=True, description="启用URL工具") tavily_api_keys: list[str] = Field(default_factory=lambda: [], description="Tavily API密钥列表,支持轮询机制") exa_api_keys: list[str] = Field(default_factory=lambda: [], description="exa API密钥列表,支持轮询机制") + searxng_instances: list[str] = Field(default_factory=list, description="SearXNG 实例 URL 列表") + searxng_api_keys: list[str] = Field(default_factory=list, description="SearXNG 实例 API 密钥列表") enabled_engines: list[str] = Field(default_factory=lambda: ["ddg"], description="启用的搜索引擎") search_strategy: Literal["fallback", "single", "parallel"] = Field(default="single", description="搜索策略") diff --git a/src/main.py b/src/main.py index 506dfc84c..63faddfbc 100644 --- a/src/main.py +++ b/src/main.py @@ -414,13 +414,13 @@ MoFox_Bot(第三方修改版) manager_init_tasks = [] # 表情管理器 - manager_init_tasks.append(self._safe_init("表情包管理器", get_emoji_manager().initialize)) + manager_init_tasks.append(self._safe_init("表情包管理器", get_emoji_manager().initialize)()) # 情绪管理器 - manager_init_tasks.append(self._safe_init("情绪管理器", mood_manager.start)) + manager_init_tasks.append(self._safe_init("情绪管理器", mood_manager.start)()) # 聊天管理器 - manager_init_tasks.append(self._safe_init("聊天管理器", get_chat_manager()._initialize)) + manager_init_tasks.append(self._safe_init("聊天管理器", get_chat_manager()._initialize)()) # 等待所有管理器初始化完成 results = await asyncio.gather(*manager_init_tasks, return_exceptions=True) @@ -502,7 +502,7 @@ MoFox_Bot(第三方修改版) except Exception as e: logger.error(f"日程表管理器初始化失败: {e}") - async def _safe_init(self, component_name: str, init_func) -> callable: + def _safe_init(self, component_name: str, init_func) -> callable: """安全初始化组件,捕获异常""" async def wrapper(): try: diff --git a/src/plugins/built_in/web_search_tool/plugin.py b/src/plugins/built_in/web_search_tool/plugin.py index 681e829f4..33e67bcab 100644 --- a/src/plugins/built_in/web_search_tool/plugin.py +++ b/src/plugins/built_in/web_search_tool/plugin.py @@ -72,7 +72,7 @@ class WEBSEARCHPLUGIN(BasePlugin): logger.error(f"❌ 搜索引擎初始化失败: {e}", exc_info=True) # Python包依赖列表 - python_dependencies: list[PythonDependency] = [ + python_dependencies: list[PythonDependency] = [ # noqa: RUF012 PythonDependency(package_name="asyncddgs", description="异步DuckDuckGo搜索库", optional=False), PythonDependency( package_name="exa_py", diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 9e64beee6..321fa9155 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "7.2.1" +version = "7.2.2" #----以下是给开发人员阅读的,如果你只是部署了MoFox-Bot,不需要阅读---- #如果你想要修改配置文件,请递增version的值 @@ -470,6 +470,8 @@ enable_web_search_tool = true # 是否启用联网搜索tool enable_url_tool = true # 是否启用URL解析tool tavily_api_keys = ["None"]# Tavily API密钥列表,支持轮询机制 exa_api_keys = ["None"]# EXA API密钥列表,支持轮询机制 +searxng_instances = [] # SearXNG 实例 URL 列表 +searxng_api_keys = []# SearXNG 实例 API 密钥列表 # 搜索引擎配置 enabled_engines = ["ddg"] # 启用的搜索引擎列表,可选: "exa", "tavily", "ddg","bing"