From 7b8660bb69b0ee13403973fb77e86e109f87d91f Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Sat, 22 Nov 2025 16:59:41 +0800 Subject: [PATCH] =?UTF-8?q?refactor(plugin=5Fsystem):=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=8D=B8=E8=BD=BD=E9=80=BB=E8=BE=91=E5=88=B0?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 `PluginManager.unload_plugin` 中的卸载逻辑移至 `component_registry`。现在 `PluginManager` 直接调用 `component_registry.unregister_plugin` 来处理所有组件和插件的注销,简化了插件管理器的职责,使卸载过程更加集中和一致。 --- src/plugin_system/core/plugin_manager.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/plugin_system/core/plugin_manager.py b/src/plugin_system/core/plugin_manager.py index 2548326a9..7b3900279 100644 --- a/src/plugin_system/core/plugin_manager.py +++ b/src/plugin_system/core/plugin_manager.py @@ -174,13 +174,11 @@ class PluginManager: if plugin_name not in self.loaded_plugins: logger.warning(f"插件 {plugin_name} 未加载") return False - plugin_instance = self.loaded_plugins[plugin_name] - plugin_info = plugin_instance.plugin_info - success = True - for component in plugin_info.components: - success &= await component_registry.remove_component(component.name, component.component_type, plugin_name) - success &= component_registry.remove_plugin_registry(plugin_name) - del self.loaded_plugins[plugin_name] + # 调用 component_registry 中统一的卸载方法 + success = await component_registry.unregister_plugin(plugin_name) + if success: + # 从已加载插件中移除 + del self.loaded_plugins[plugin_name] return success async def reload_registered_plugin(self, plugin_name: str) -> bool: