diff --git a/src/plugin_system/core/plugin_manager.py b/src/plugin_system/core/plugin_manager.py index dd15ca5a3..2794e2fc5 100644 --- a/src/plugin_system/core/plugin_manager.py +++ b/src/plugin_system/core/plugin_manager.py @@ -197,6 +197,18 @@ class PluginManager: if plugin_instance.register_plugin(): self.loaded_plugins[plugin_name] = plugin_instance self._show_plugin_components(plugin_name) + + # 检查并调用 on_plugin_loaded 钩子(如果存在) + if hasattr(plugin_instance, "on_plugin_loaded") and callable( + getattr(plugin_instance, "on_plugin_loaded") + ): + logger.debug(f"为插件 '{plugin_name}' 调用 on_plugin_loaded 钩子") + try: + # 使用 asyncio.create_task 确保它不会阻塞加载流程 + asyncio.create_task(plugin_instance.on_plugin_loaded()) + except Exception as e: + logger.error(f"调用插件 '{plugin_name}' 的 on_plugin_loaded 钩子时出错: {e}") + return True, 1 else: self.failed_plugins[plugin_name] = "插件注册失败"