diff --git a/.gitignore b/.gitignore index 700806770..72e2062fd 100644 --- a/.gitignore +++ b/.gitignore @@ -309,5 +309,5 @@ run_maiserver.bat src/plugins/test_plugin_pic/actions/pic_action_config.toml run_pet.bat -# 忽略 /src/plugins 但保留特定目录 -plugins/* +/plugins/* +!/plugins diff --git a/src/plugin_system/core/plugin_manager.py b/src/plugin_system/core/plugin_manager.py index 2be1279bb..7defe0870 100644 --- a/src/plugin_system/core/plugin_manager.py +++ b/src/plugin_system/core/plugin_manager.py @@ -26,8 +26,25 @@ class PluginManager: self.failed_plugins: Dict[str, str] = {} self.plugin_paths: Dict[str, str] = {} # 记录插件名到目录路径的映射 + # 确保插件目录存在 + self._ensure_plugin_directories() logger.info("插件管理器初始化完成") + def _ensure_plugin_directories(self): + """确保所有插件目录存在,如果不存在则创建""" + default_directories = [ + "src/plugins/built_in", + "src/plugins/examples", + "plugins" + ] + + for directory in default_directories: + if not os.path.exists(directory): + os.makedirs(directory, exist_ok=True) + logger.info(f"创建插件目录: {directory}") + self.plugin_directories.append(directory) + logger.debug(f"已添加插件目录: {directory}") + def add_plugin_directory(self, directory: str): """添加插件目录""" if os.path.exists(directory):