优化依赖管理配置,移除不必要的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
[dependency_management]
# 是否启用自动安装
# 是否启用自动安装(主开关)
auto_install = true
# 安装超时时间(秒)
@@ -85,9 +85,6 @@ pip_options = [
"--disable-pip-version-check"
]
# 是否允许自动安装(主开关)
allowed_auto_install = true
# 安装前是否提示用户
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依赖管理配置类"""
auto_install: bool = True
"""是否启用自动安装Python依赖包"""
"""是否启用自动安装Python依赖包(主开关)"""
auto_install_timeout: int = 300
"""安装超时时间(秒)"""
@@ -888,9 +888,6 @@ class DependencyManagementConfig(ConfigBase):
])
"""pip安装选项"""
allowed_auto_install: bool = True
"""是否允许自动安装(主开关),关闭后所有插件都不会自动安装依赖"""
prompt_before_install: bool = False
"""安装前是否提示用户(暂未实现)"""

View File

@@ -66,13 +66,7 @@ class DependencyConfig:
"--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
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.install_timeout = config.install_timeout
self.pip_options = config.pip_options.copy()
self.allowed_auto_install = config.allowed_auto_install
except Exception as e:
logger.warning(f"无法加载依赖配置,使用默认设置: {e}")
@@ -47,7 +46,6 @@ class DependencyManager:
self.proxy_url = proxy_url
self.install_timeout = 300
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]]:
"""检查依赖包是否满足要求
@@ -98,7 +96,7 @@ class DependencyManager:
if not packages:
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}")
return False, packages

View File

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