Python 内核☍
sd_webui_all_in_one/ 是项目的 Python 内核,负责 WebUI / 训练工具的安装、启动、更新、模型管理、镜像配置、PyTorch 版本选择、下载、内网穿透和环境检查。CLI、Notebook 和 Installer 生成的管理脚本都会依赖这部分能力。
入口与命令☍
Python 包入口定义在 pyproject.toml:
cli_manager/cli.py 创建根命令,并注册各产品子命令:
register_sd_webuiregister_comfyuiregister_fooocusregister_invokeairegister_qwen_tts_webuiregister_sd_trainerregister_sd_scriptsregister_manager
新增 CLI 能力时,应优先放在对应产品的 cli_manager/*_cli.py 中,再由注册函数挂到根命令。
模块职责☍
| 模块 | 职责 |
|---|---|
base_manager/ |
各产品的安装、更新、启动、分支切换、模型和扩展管理基础能力。 |
cli_manager/ |
CLI 参数解析、子命令注册和对 base_manager/ 的命令行封装。 |
notebook_manager/ |
面向 Colab / Kaggle 的 Manager 类,封装 Notebook 中常用安装、运行、挂载和下载流程。 |
downloader/ |
统一下载入口,支持 requests、urllib、Aria2、多线程和压缩包下载解压。 |
pytorch_manager/ |
GPU 检测、PyTorch 类型推断、版本列表、镜像选择和版本查询。 |
model_downloader/ |
模型列表、模型搜索、模型下载和保存路径分类。 |
tunnel/ |
Cloudflare、Gradio、Ngrok、remote.moe、localhost.run、pinggy.io、Zrok 等内网穿透实现。 |
env_check/ |
WebUI 运行环境检查和常见依赖问题修复。 |
package_analyzer/ |
Python 包版本、wheel 文件、requirements 和依赖约束解析。 |
file_operations/ |
文件复制、移动、删除、软链接、压缩包解压和打包。 |
mirror_manager.py / env_manager.py |
PyPI、GitHub、HuggingFace、uv / pip 环境变量和镜像配置。 |
产品能力扩展方式☍
产品能力通常分三层维护:
base_manager/<product>_base.py:放安装、更新、启动、模型和扩展管理等核心逻辑。cli_manager/<product>_cli.py:把核心逻辑包装为 CLI 子命令。notebook_manager/<product>_manager.py:把核心逻辑包装为 Notebook 友好的类方法。
如果新增产品或新增产品能力,需要同时检查用户文档中的 命令行工具、Jupyter Notebook 和 安装器使用 是否要同步。
维护约定☍
- 路径处理优先使用
pathlib.Path,只有传给外部命令或环境变量时再转成字符串。 - 日志使用
sd_webui_all_in_one.logger.get_logger(),不要随意混用临时 logger。 - 外部命令执行优先走
sd_webui_all_in_one.cmd.run_cmd(),方便统一日志、错误和命令预处理。 - 文件下载优先走
downloader.download_file()或download_archive_and_unpack(),避免每个模块自己实现下载。 - 镜像配置优先使用
mirror_manager、env_manager、pytorch_manager中的公共函数。 - 能独立测试的解析、版本比较、依赖判断和路径处理逻辑,应优先补到
tests/。