是否能实现「视频整合包 C 盘专属模型 + D 盘共享全量模型」的并用?
✅ 完全可以实现!而且路径设计也支持未来的灵活迁移。
支持:
- ✅ 本地C盘专用模型(如视频专用)
- ✅ 外部全量模型仓库(如 D 盘)
- ✅ 可随时迁移到 H 盘等其他位置,仅改一行路径
- ✅ 支持手动与自动路径双重加载
✅ 如何实现「本地专属 + 公共全量模型」并用?
关键是——你只要在 extra_model_paths.yaml
中:
- 不要移除默认路径(即C盘或包内的
models/
) - 同时配置 D 盘(或将来是 H 盘)路径
这样,ComfyUI 会优先使用你配置的路径(is_default: true
),但仍然保留包内的 models/
下的模型,可实现“补充式调用”。
🧠 示例结构说明
📁 C:\ComfyUI_windows_portable\
ComfyUI\
├── models\ ← 包内特有的视频模型
├── utils\extra_config.py ← 替换为增强版
├── extra_model_paths.yaml
📁 D:\ComfyUI_windows_portable\
ComfyUI\
├── models\ ← 你维护的「全量模型仓库」
├── utils\extra_config.py ← 同样增强
├── extra_model_paths.yaml
✅ 示例配置(C盘
包用的 extra_model_paths.yaml
)
video_pack:# video_pack 这些名字完全是自己起的,只要在 YAML 里保持唯一且格式正确就行。
base_path: C:/ComfyUI_windows_portable/ComfyUI/
# 不写 is_default,表示这些模型是补充用的
common_pack:
base_path: D:/ComfyUI_windows_portable/ComfyUI/
is_default: true # 默认优先用于加载和下载
# 其他子路径全删,靠脚本自动扫描 models/* 文件夹
💡关键理解
-
is_default: true
:代表默认加载路径,会排到最前面优先加载,也作为下载目标。 - 未设置
is_default
的路径,仍然会加载,只是权重较低,当主路径缺模型时也会调用。 -
folder_paths.add_model_folder_path(x, normalized_path, is_default)
机制就是这么实现的。
🧠 未来你迁移到 H 盘怎么办?
只需要:
- 把
D:/ComfyUI_windows_portable/ComfyUI/
下的模型文件夹整体复制到H:/YourModelHub/
- 修改
extra_model_paths.yaml
中common_pack
的路径为:base_path: H:/YourModelHub/
即可,其他配置保持不变,无需动代码!
✅ 总结
需确认每个整合包都用增强后的 extra_config.py
,并且配置好 extra_model_paths.yaml
中本地专用 + 公共仓库,就可以实现完美的组合调用 ✅
extra_config.py 增强版代码如下,替换原始文件:
import os
import yaml
import folder_paths
import logging
def load_extra_path_config(yaml_path):
with open(yaml_path, 'r', encoding='utf-8') as stream:
config = yaml.safe_load(stream)
yaml_dir = os.path.dirname(os.path.abspath(yaml_path))
for c in config:
conf = config[c]
if conf is None:
continue
base_path = None
if "base_path" in conf:
base_path = conf.pop("base_path")
base_path = os.path.expandvars(os.path.expanduser(base_path))
if not os.path.isabs(base_path):
base_path = os.path.abspath(os.path.join(yaml_dir, base_path))
is_default = False
if "is_default" in conf:
is_default = conf.pop("is_default")
# 1. 处理你手动写的路径(比如 checkpoints: models/checkpoints)
for x in conf:
for y in conf[x].split("\n"):
if len(y.strip()) == 0:
continue
full_path = y.strip()
if base_path:
full_path = os.path.join(base_path, full_path)
elif not os.path.isabs(full_path):
full_path = os.path.abspath(os.path.join(yaml_dir, full_path))
normalized_path = os.path.normpath(full_path)
logging.info(f"Adding extra search path '{x}' -> '{normalized_path}'")
folder_paths.add_model_folder_path(x, normalized_path, is_default)
# 2. 自动添加 base_path/models/* 中所有文件夹(自动识别路径)
if base_path is not None:
auto_model_root = os.path.join(base_path, "models")
if os.path.exists(auto_model_root) and os.path.isdir(auto_model_root):
folder_list = [f for f in os.listdir(auto_model_root) if os.path.isdir(os.path.join(auto_model_root, f))]
for folder_name in folder_list:
folder_path = os.path.join(auto_model_root, folder_name)
try:
logging.info(f"Auto-detecting and adding folder '{folder_name}' -> '{folder_path}'")
folder_paths.add_model_folder_path(folder_name, folder_path, is_default)
except Exception as e:
logging.warning(f"Failed to add auto-detected folder '{folder_name}': {e}")
✅ extra_model_paths.yaml
模板示例
common_ui:
base_path: D:/ComfyUI_windows_portable/ComfyUI/
is_default: true # 设为默认模型库,会优先加载,并作为默认下载目录
# 可以只写 base_path,依赖增强代码自动识别 models/* 下所有模型文件夹
✅ 配合你的增强版加载逻辑的效果:
-
video_pack
里的路径显式指定,用于加载视频专属模型 -
common_pack
支持 自动加载所有models/*
里的目录,简化维护 - 如果你以后模型搬到
H:/MyModelHub/ComfyUI/
,只改base_path
即可
✅ 使用建议
- 启动日志中看到形如:
Adding extra search path 'checkpoints' -> 'C:/ComfyUI_windows_portable/ComfyUI/models/checkpoints' Auto-detecting and adding folder 'loras' -> 'D:/ComfyUI_windows_portable/ComfyUI/models/loras'
就表示已成功生效
背后细节差异和实际工作机制:
- ✔️ 如果C盘没有,D盘有,就能加载成功。
- ✔️ D盘全量作为默认,就是“找不到再去C盘”。
- ✔️ 设置和模型下载位置有关联,因为你在哪个路径下下载的模型,决定了默认模型路径能不能“看到”它。
🚨 背后可能没注意到的区别
场景 | 不设置 is_default: true (默认优先用 C) | 设置 is_default: true (优先用 D) |
模型有重名版本(比如两盘都存在) | 默认加载的是 C 盘模型 | 默认加载的是 D 盘模型 |
UI界面切换模型时列表显示 | 可能只看到 C 盘的模型 | 会看到 D 盘模型 |
插件调用默认模型路径 | 调用的是 C 盘路径 | 调用的是 D 盘路径 |
下载新模型时默认存放位置 | C 盘的 models/xxx 里 | D 盘的 models/xxx 里 |
🧠简单说:谁是 default,谁就是主控地位,下载、加载、界面都优先它。
🧩 所以,设置和下载路径有没有关系?
有!
如果设置了 D 盘为默认路径,那么:
- 🟢 下载按钮(某些自带UI工具或节点)会把模型下载到 D 盘;
- 🟢 ComfyUI 本身搜索模型、插件内部调用也默认从 D 盘查;
- 🟢 UI 模型选择下拉框中出现的是 D 盘模型。
如果你没设置 is_default
:
- 🔴 所有这些操作都还是以 C 盘为主;
- D 盘只是“备用查找地”,不会优先;
- 如果你不小心在两个盘放了同一个模型名,有可能你调的其实是旧的那个。
🎯 推荐策略
你想要的行为 | base_path 配置 | is_default |
✅ D盘全量为主,C盘为补充 | D盘 | true |
🔄 C盘整合包为主,D盘为备胎 | D盘 | ❌(不填) |
🛠️ 模型下载管理建议
如果你未来在 UI 里点“下载模型”,建议确保你设置了正确的 is_default: true,否则模型会被下载到你不想要的路径(C盘爆掉🙃)。
common_ui:
# 设置为你的全量模型路径,作为主要模型库
base_path: D:/ComfyUI_windows_portable/ComfyUI/
is_default: true # ✅ 建议设置为 true,优先使用 D 盘模型
镜像站: