优化依赖管理配置,移除不必要的allowed_auto_install选项,更新文档以更清晰地描述自动安装功能的主开关。调整相关代码以简化逻辑,确保自动安装行为通过单一配置控制。

This commit is contained in:
minecraft1024a
2025-08-13 12:35:41 +08:00
parent 97351ce1ae
commit d78bf618f9
5 changed files with 7 additions and 24 deletions

View File

@@ -69,7 +69,7 @@ class MyPlugin(BasePlugin):
```toml ```toml
[dependency_management] [dependency_management]
# 是否启用自动安装 # 是否启用自动安装(主开关)
auto_install = true auto_install = true
# 安装超时时间(秒) # 安装超时时间(秒)
@@ -85,9 +85,6 @@ pip_options = [
"--disable-pip-version-check" "--disable-pip-version-check"
] ]
# 是否允许自动安装(主开关)
allowed_auto_install = true
# 安装前是否提示用户 # 安装前是否提示用户
prompt_before_install = false prompt_before_install = false
@@ -164,10 +161,10 @@ configure_dependency_settings(auto_install_timeout=600)
## 安全考虑 ## 安全考虑
- 自动安装功能默认启用,但可以通过配置禁用 - 自动安装功能默认启用,但可以通过`auto_install=false`配置禁用
- 所有安装操作都有详细的日志记录 - 所有安装操作都有详细的日志记录
- 支持设置安装超时以避免长时间挂起 - 支持设置安装超时以避免长时间挂起
- 可以通过`allowed_auto_install`全局禁用自动安装 - 通过单一的`auto_install`开关控制所有自动安装行为
## 故障排除 ## 故障排除

View File

@@ -871,7 +871,7 @@ class DependencyManagementConfig(ConfigBase):
"""插件Python依赖管理配置类""" """插件Python依赖管理配置类"""
auto_install: bool = True auto_install: bool = True
"""是否启用自动安装Python依赖包""" """是否启用自动安装Python依赖包(主开关)"""
auto_install_timeout: int = 300 auto_install_timeout: int = 300
"""安装超时时间(秒)""" """安装超时时间(秒)"""
@@ -888,9 +888,6 @@ class DependencyManagementConfig(ConfigBase):
]) ])
"""pip安装选项""" """pip安装选项"""
allowed_auto_install: bool = True
"""是否允许自动安装(主开关),关闭后所有插件都不会自动安装依赖"""
prompt_before_install: bool = False prompt_before_install: bool = False
"""安装前是否提示用户(暂未实现)""" """安装前是否提示用户(暂未实现)"""

View File

@@ -66,13 +66,7 @@ class DependencyConfig:
"--disable-pip-version-check" "--disable-pip-version-check"
] ]
@property
def allowed_auto_install(self) -> bool:
"""是否允许自动安装"""
config = self._get_config()
if config and hasattr(config, 'dependency_management'):
return config.dependency_management.allowed_auto_install
return True
@property @property
def prompt_before_install(self) -> bool: def prompt_before_install(self) -> bool:

View File

@@ -38,7 +38,6 @@ class DependencyManager:
self.proxy_url = config.proxy_url if proxy_url is None else proxy_url self.proxy_url = config.proxy_url if proxy_url is None else proxy_url
self.install_timeout = config.install_timeout self.install_timeout = config.install_timeout
self.pip_options = config.pip_options.copy() self.pip_options = config.pip_options.copy()
self.allowed_auto_install = config.allowed_auto_install
except Exception as e: except Exception as e:
logger.warning(f"无法加载依赖配置,使用默认设置: {e}") logger.warning(f"无法加载依赖配置,使用默认设置: {e}")
@@ -47,7 +46,6 @@ class DependencyManager:
self.proxy_url = proxy_url self.proxy_url = proxy_url
self.install_timeout = 300 self.install_timeout = 300
self.pip_options = ["--no-warn-script-location", "--disable-pip-version-check"] self.pip_options = ["--no-warn-script-location", "--disable-pip-version-check"]
self.allowed_auto_install = True
def check_dependencies(self, dependencies: Any, plugin_name: str = "") -> Tuple[bool, List[str], List[str]]: def check_dependencies(self, dependencies: Any, plugin_name: str = "") -> Tuple[bool, List[str], List[str]]:
"""检查依赖包是否满足要求 """检查依赖包是否满足要求
@@ -98,7 +96,7 @@ class DependencyManager:
if not packages: if not packages:
return True, [] return True, []
if not self.auto_install or not self.allowed_auto_install: if not self.auto_install:
logger.info(f"[Plugin:{plugin_name}] 自动安装已禁用,跳过安装: {packages}") logger.info(f"[Plugin:{plugin_name}] 自动安装已禁用,跳过安装: {packages}")
return False, packages return False, packages

View File

@@ -255,7 +255,7 @@ suppress_libraries = ["faiss","httpx", "urllib3", "asyncio", "websockets", "http
library_log_levels = { "aiohttp" = "WARNING"} # 设置特定库的日志级别 library_log_levels = { "aiohttp" = "WARNING"} # 设置特定库的日志级别
[dependency_management] # 插件Python依赖管理配置 [dependency_management] # 插件Python依赖管理配置
# 是否启用自动安装Python依赖包 # 是否启用自动安装Python依赖包(主开关)
auto_install = true auto_install = true
# 安装超时时间(秒) # 安装超时时间(秒)
@@ -271,9 +271,6 @@ pip_options = [
"--disable-pip-version-check" "--disable-pip-version-check"
] ]
# 是否允许自动安装(主开关),关闭后所有插件都不会自动安装依赖
allowed_auto_install = true
# 安装前是否提示用户(暂未实现) # 安装前是否提示用户(暂未实现)
prompt_before_install = false prompt_before_install = false