优化依赖管理配置,移除不必要的allowed_auto_install选项,更新文档以更清晰地描述自动安装功能的主开关。调整相关代码以简化逻辑,确保自动安装行为通过单一配置控制。
This commit is contained in:
@@ -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`开关控制所有自动安装行为
|
||||
|
||||
## 故障排除
|
||||
|
||||
|
||||
@@ -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
|
||||
"""安装前是否提示用户(暂未实现)"""
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user