ComfyUI 模型模型太多怎么办

是否能实现「视频整合包 C 盘专属模型 + D 盘共享全量模型」的并用?

✅ 完全可以实现!而且路径设计也支持未来的灵活迁移。

支持:

  • ✅ 本地C盘专用模型(如视频专用)
  • ✅ 外部全量模型仓库(如 D 盘)
  • ✅ 可随时迁移到 H 盘等其他位置,仅改一行路径
  • ✅ 支持手动与自动路径双重加载

✅ 如何实现「本地专属 + 公共全量模型」并用?

关键是——你只要在 extra_model_paths.yaml

  1. 不要移除默认路径(即C盘或包内的 models/
  2. 同时配置 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 盘怎么办?

只需要:

  1. D:/ComfyUI_windows_portable/ComfyUI/ 下的模型文件夹整体复制到 H:/YourModelHub/
  2. 修改 extra_model_paths.yamlcommon_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 盘模型

镜像站:

📄Arrow icon of a page linkComfyUI 整合包太多?我用过了才知道那个好