From 92aae850c031db9969f3c50992d021c95ee0eb17 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Fri, 24 Oct 2025 19:08:07 +0800 Subject: [PATCH] =?UTF-8?q?refactor(plugin=5Fsystem):=20=E5=B0=86=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E6=A3=80=E6=9F=A5=E9=80=BB=E8=BE=91=E4=BB=8E=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E5=9F=BA=E7=B1=BB=E7=A7=BB=E8=87=B3=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将插件的Python包依赖和插件间依赖的检查逻辑,从各个插件实例的初始化阶段 (`PluginBase`),统一前置到插件模块加载阶段 (`PluginManager`)。 这一重构有以下好处: - **提前失败 (Fail-fast)**:在加载插件模块时立即检查依赖,如果依赖不满足,则直接跳过该插件的加载和实例化,避免了不必要的资源消耗和后续的运行时错误。 - **职责单一**: `PluginManager` 负责插件的发现、加载和依赖管理,而 `PluginBase` 更专注于插件自身的业务逻辑和生命周期,使得代码结构更清晰。 - **配置中心化**: 依赖关系现在统一在 `__plugin_meta__` 中声明,而不是分散在插件类的属性中,提高了可维护性。 - **简化插件实现**: 插件开发者不再需要在插件类中定义 `dependencies` 和 `python_dependencies` 属性,只需在 `__init__.py` 中声明元数据即可。 --- src/plugins/built_in/web_search_tool/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/built_in/web_search_tool/__init__.py b/src/plugins/built_in/web_search_tool/__init__.py index 2a9dfc1bf..458e2586b 100644 --- a/src/plugins/built_in/web_search_tool/__init__.py +++ b/src/plugins/built_in/web_search_tool/__init__.py @@ -15,7 +15,7 @@ __plugin_meta__ = PluginMetadata( "is_built_in": True, }, # Python包依赖列表 - python_dependencies = [ + python_dependencies = [ # noqa: RUF012 PythonDependency(package_name="asyncddgs", description="异步DuckDuckGo搜索库", optional=False), PythonDependency( package_name="exa_py",