Skip to content
🚀 快速起步第 6 / 7 节

模型放哪里:models 目录与 extra_model_paths 详解 ​

搜「ComfyUI 模型放哪里」的你,大概正拿着一个刚下好的、几个 GB 的 .safetensors 发愁:教程只说「放进 models 目录」,可打开一看里面有几十个子文件夹,不知道该拖进哪一个。

这节课把 ComfyUI 的模型目录规则讲清楚:默认 models 目录长什么样、什么模型进什么子目录、放进去的文件怎么让它出现在节点下拉列表里,以及用官方的 extra_model_paths.yaml 把模型放到任意大盘、甚至和 WebUI 共享同一份文件。

本页是快速起步的第 4 课。装好 ComfyUI 就能跟做,不需要先懂任何工作流。

学完你能做什么 ​

  • 一句话回答「ComfyUI 模型放哪里」:<安装目录>/ComfyUI/models/ 下按类型对号入座的子目录
  • 把 checkpoint、LoRA、VAE、ControlNet、放大模型放进正确的子目录,并在对应 loader 节点的下拉列表里找到它们
  • 用 r 键刷新(或重启)让运行中放入的模型被识别
  • 写一份 extra_model_paths.yaml:让多个 ComfyUI 实例、甚至 WebUI(A1111)共享同一份模型文件,不再重复下载
  • 分清便携包、Comfy Desktop、手动安装三种方式下模型目录的位置与配置入口

你现在的困境 ​

  • 下载了个约 4GB 的模型,教程只说「放进 models」,你打开 models 一看二三十个文件夹,随手一丢,结果节点里根本找不到
  • 模型明明放进去了,Load Checkpoint 的下拉列表里就是没有它,刷新网页也没用
  • 电脑里同时装着 WebUI 和 ComfyUI,同一个模型下两遍,几十 GB 的硬盘说没就没;想挪到 D 盘又怕 ComfyUI 找不到

什么时候用这一招 ​

当你需要:

  • 给刚下载的模型文件找到正确的子目录
  • 让 ComfyUI 识别放在默认目录之外的模型(比如专门的模型盘)
  • 多个 ComfyUI 实例、或 ComfyUI + WebUI 共用一份模型文件

而且不想:

  • 每换一个软件、一个教程就重新下载一遍模型
  • 把几十 GB 的模型堆在 C 盘默认位置
  • 对着配置文件语法研究半天

🎒 开始前的准备 ​

  • 装好并能启动 ComfyUI:Windows 便携包看 安装:Windows 便携包,桌面版 / macOS / Linux 看 备用安装
  • 手头有一个模型文件:没有的话先下官方入门用的 SD1.5 权重 v1-5-pruned-emaonly-fp16.safetensors(约 4GB,下一课第一次生图也用它)
  • 硬盘留够空间:官方文档提醒,单个生成模型往往好几个 GB,下载和同步都要预算时间和空间
  • 一杯水 ☕(下载模型的时间够喝完)

⚠️ 国内下载提示

模型文件多托管在 Hugging Face、Civitai(官方文档列出的社区下载源)。官方文档提到,中国大陆用户可能需要配置代理才能稳定访问。下载慢不是你操作错了。

核心思路 ​

ComfyUI 靠「约定好的文件夹」找模型。 安装包本身很小、不含任何模型文件;ComfyUI 模型文件夹默认在 <安装目录>/ComfyUI/models/,下面按类型分子目录。ComfyUI 启动时扫描这些目录(外加 extra_model_paths.yaml 里配置的路径),把找到的文件填进对应 loader 节点(名字大多以 Load 开头)的下拉列表。

「放哪里」永远是两步:先问类型,再问目录。 checkpoint 进 checkpoints、LoRA 进 loras、VAE 进 vae……放错子目录约等于没放——checkpoint 丢进 loras 文件夹,任何 LoRA 节点都不会列出它。

目录可以不改,也可以加。 extra_model_paths.yaml 是官方给的「额外搜索路径」方案:把模型集中放在一个大盘,让多个 ComfyUI、甚至 WebUI 都指向它。三种安装方式的入口不同:

安装方式默认 models 目录加外部路径的入口
Windows 便携包ComfyUI_windows_portable\ComfyUI\models\ComfyUI 根目录的 extra_model_paths.yaml
手动安装(git clone)<克隆位置>\ComfyUI\models\(克隆的仓库文件夹)同上(仓库文件夹里)
Comfy Desktop桌面版管理,胶囊菜单 → Storage 查看Storage 界面(或其配置文件)

放对了为什么还是找不到? 除了位置,还有两个维度:文件扩展名要在支持列表里(.ckpt / .pt / .pt2 / .bin / .pth / .safetensors / .pkl / .sft);运行中放入的文件要刷新才会进列表。这三件事就是后面「踩坑提醒」的主角。

跟我做 ​

第 1 步:找到你的 models 目录——ComfyUI 模型放哪里 ​

为什么:三种安装方式的目录位置不同,先找到门,再谈放东西。

Windows 便携包用户 ​

资源管理器地址栏输入(把 ComfyUI_windows_portable 换成你的解压位置,比如 D:\ComfyUI_windows_portable\ComfyUI\models\):

text
ComfyUI_windows_portable\ComfyUI\models\

手动安装用户 ​

官方手动安装是 git clone https://github.com/Comfy-Org/ComfyUI.git,克隆下来的文件夹就叫 ComfyUI,里面的 models 就是模型目录:

text
<你的克隆位置>\ComfyUI\models\

Comfy Desktop 用户 ​

不用翻文件夹:点桌面版顶部的胶囊菜单 → 打开 Storage 标签,就能看到各个模型目录;点目录旁边的文件夹图标,直接在系统文件管理器里打开它。官方说明:桌面版的模型默认在多个实例间共享。

你应该看到:models 目录下有一排子文件夹——checkpoints、loras、vae、controlnet 等。

  • 我能打开自己的 models 目录,看到 checkpoints 等子文件夹

第 2 步:认目录——什么模型放什么文件夹 ​

为什么:模型类型和子目录必须对号入座,放错位置的模型不会出现在任何节点里。

常用类型对照表(子目录名即 ComfyUI 源码 folder_paths.py 里的注册名):

模型类型放进哪个子目录对应 loader 节点(下拉列表在哪)
Checkpoint 主模型models/checkpoints/Load Checkpoint
LoRAmodels/loras/Load LoRA
VAEmodels/vae/Load VAE
ControlNetmodels/controlnet/(models/t2i_adapter/ 也算这一类)Load ControlNet
扩散模型(DiT / UNet,新架构常用)models/diffusion_models/(旧目录名 models/unet/ 也认)Load Diffusion Model
文本编码器(CLIP / T5 / Qwen 等)models/text_encoders/(旧目录名 models/clip/ 也认)Load CLIP(FLUX 等双编码器用 DualCLIPLoader)
放大模型(ESRGAN 等)models/upscale_models/Load Upscale Model
Embeddingmodels/embeddings/—

💡 新模型常常是「三个文件分开放」

Z-Image-Turbo、Qwen-Image、Wan2.2 这类新模型不是单个 checkpoint,而是拆成扩散模型(→ diffusion_models)、文本编码器(→ text_encoders)、VAE(→ vae)三个文件分别入目录——官方教程的模型清单都按这个格式给路径。具体哪个文件进哪格,看 模型×任务总览 里对应模型的教程。

💡 子目录里可以再分类

每个类型目录支持嵌套:你可以在 models/checkpoints/ 下再建 sd15/、flux/ 等文件夹分类存放,ComfyUI 会递归扫描,下拉列表里以带子目录的路径显示文件。

你应该看到:对照上表,你手头的每个模型文件都能确定自己该进的子目录——第一个模型 v1-5-pruned-emaonly-fp16.safetensors 是 checkpoint,进 models/checkpoints/。

  • 对照上表,我知道手头的模型该进哪个子目录

第 3 步:放入模型,让它出现在节点列表里 ​

为什么:ComfyUI 只在启动时扫描目录;正在运行的 ComfyUI 不会自动发现新放进来的文件。

操作:

  1. 把模型文件放进对应子目录。第一个模型推荐官方入门的 SD1.5:v1-5-pruned-emaonly-fp16.safetensors → models/checkpoints/
  2. ComfyUI 开着的话,在画布上按 r 键刷新节点定义;列表里还没出现就重启 ComfyUI
  3. 双击画布搜索 Load Checkpoint(或从节点库拖一个出来),点开它的下拉列表

你应该看到:Load Checkpoint 的下拉列表里出现 v1-5-pruned-emaonly-fp16.safetensors。

💡 模型库侧栏:拖拽即插入

点左侧栏 Models 图标打开模型库:按文件夹树浏览、按名搜索;把模型直接拖上画布,会自动插入对应的 loader 节点并选好文件——checkpoints 拖出来是 CheckpointLoaderSimple,loras 是 LoraLoader,vae 是 VAELoader。刚放入的文件没显示时,点面板顶部的刷新按钮(快捷键同样是 r)。

放好第一个模型,你其实已经可以跳去 第一次生图 出图了;想系统地管理模型目录,继续第 4 步。

  • 我的模型出现在 loader 节点的下拉列表里

第 4 步:用 extra_model_paths.yaml 添加外部模型路径(便携包 / 手动安装) ​

为什么:模型动辄几个 GB。想把模型集中放在专门的大盘、让多个 ComfyUI 或 WebUI 共用一份文件,官方方案就是这一个 yaml 文件。

方式 A:复制官方示例文件(推荐) ​

  1. 打开 ComfyUI 根目录——便携包是 ComfyUI_windows_portable\ComfyUI\,手动安装是你克隆的仓库文件夹。里面有一个 extra_model_paths.yaml.example(便携包自带的官方说明文件也写了:把它改名成 extra_model_paths.yaml 再编辑)
  2. 复制一份,改名为 extra_model_paths.yaml,放在同一目录
  3. 用记事本或任意文本编辑器打开,按你的模型库位置写配置。假设你的模型都放在 D:\AIModels\models\ 下:
text
D:\AIModels\
  └── models\
        ├── checkpoints\
        ├── loras\
        ├── vae\
        └── controlnet\

对应的最小配置(官方文档示例):

yaml
my_custom_config:
    base_path: D:\AIModels
    loras: models/loras/
    checkpoints: models/checkpoints/
    vae: models/vae/
    controlnet: models/controlnet/

读法:顶层 my_custom_config 是配置块名字,随你取;base_path 是模型库根目录;下面的每个键是模型类型(和第 2 步表里的类型一致),值是相对 base_path 的子目录。只写你实际有的类型就行。

  1. 保存,重启 ComfyUI——官方明确说明:改完必须重启才生效。

你应该看到:启动日志里出现 Adding extra search path ... 这样的行(每加一条路径,ComfyUI 都会打一条这个日志);loader 下拉列表里多出了外部目录里的模型。

  • 启动日志出现 Adding extra search path,外部目录里的模型能被选中

方式 B:文件不存在就自己建 ​

找不到 .example 也没关系——官方文档说明:用任意文本编辑器新建 extra_model_paths.yaml,放在 ComfyUI 根目录即可。完整键名清单参考官方示例文件(源码 folder_paths.py 是键名的最终依据)。

写法进阶(官方示例文件里都出现过) ​

  • 一个类型挂多个目录:用 YAML 的 | 多行写法,一行一个:
yaml
loras: |
    models/loras/
    models/LyCORIS/
  • base_path 支持写 ~(用户主目录);写相对路径时,以 yaml 文件所在目录为基准解析
  • is_default: true:把这条路径排到列表最前,并作为默认下载目录(比如模板库的自动下载就存到它)
  • 还能挂外部自定义节点:加一个 custom_nodes: <路径>。注意它不会改变节点的默认安装位置,只是多一条搜索路径;节点的 Python 依赖仍要装在对应环境里

方式 C:与 WebUI(A1111)共享一份模型 ​

官方文档直接给了和 A1111 WebUI 共存的配置块。如果你的 WebUI 装在 D:\stable-diffusion-webui\,照官方示例这样写:

yaml
a111:
    base_path: D:\stable-diffusion-webui\
    checkpoints: models/Stable-diffusion
    configs: models/Stable-diffusion
    vae: models/VAE
    loras: |
         models/Lora
         models/LyCORIS
    upscale_models: |
                  models/ESRGAN
                  models/RealESRGAN
                  models/SwinIR
    embeddings: embeddings
    hypernetworks: models/hypernetworks
    controlnet: models/ControlNet

保存重启后,ComfyUI 直接读 WebUI 的模型目录——一份模型,两家用,谁也不用重新下载。

第 5 步:Comfy Desktop 用户——用 Storage 界面加目录 ​

为什么:桌面版有图形界面,官方建议直接在界面里加,不用手写 yaml。

操作:点顶部胶囊菜单 → Storage 标签 → 添加你的模型目录。官方桌面文档给出两种粒度:

  • 给所有实例共享:Desktop Settings → Storage → Shared Models → + Add Shared Directory
  • 只给单个实例用:Manage → Storage → Model Directories

也可以直接编辑配置文件:Windows 在 C:\Users\<用户名>\AppData\Roaming\ComfyUI\extra_models_config.yaml,macOS 在 ~/Library/Application Support/ComfyUI/extra_models_config.yaml。官方有三点提醒:

  • 改前先备份配置文件,改坏了还能恢复;不要覆盖安装时生成的路径配置
  • 新版桌面文档补充:上面这个 app data 里的文件是旧版桌面用的,当前版本优先用 Storage 界面操作
  • 也可以把 extra_model_paths.yaml 放在该实例的 ComfyUI 文件夹里(<安装目录>/ComfyUI/extra_model_paths.yaml),启动时同样会加载

你应该看到:Storage 标签里出现你添加的目录;重启后模型库侧栏能浏览到外部目录里的模型。

  • (Desktop 用户)我在 Storage 标签里加好了目录,并备份过配置文件

检查点 ✅ ​

  • 我能一次点开自己的 models 目录,说得出完整路径
  • 我知道 checkpoint / LoRA / VAE / ControlNet / 放大模型各进哪个子目录
  • 运行中放入的模型,我按 r 刷新(不行就重启)让它出现在下拉列表
  • 配了外部路径的话:extra_model_paths.yaml 在 ComfyUI 根目录,改完重启过,日志出现 Adding extra search path
  • 和 WebUI 共享的话:两边的 loader 都能列出同一份模型文件

踩坑提醒 ​

❌ 模型放进去了,下拉列表里没有 ​

按官方排错顺序过一遍:确认文件在正确的子目录(checkpoint 在 models/checkpoints/,不是 models 根目录,也不是 loras)→ 按 r 刷新节点定义 → 重启 ComfyUI → 确认看的是正确的 loader 节点。还找不到就查扩展名:支持列表是 .ckpt / .pt / .pt2 / .bin / .pth / .safetensors / .pkl / .sft。都不行的话,可能是模型本身不被当前版本识别——官方提醒保持 ComfyUI 更新、先到模板库确认有对应工作流;更多模型报错(架构不匹配、加载失败)看 模型加载失败。

❌ .gguf 文件放进去没反应 ​

ComfyUI 原生不支持 GGUF——上面的扩展名列表里没有 .gguf。要用 GGUF 量化模型,先装社区节点 city96/ComfyUI-GGUF,再用它提供的 loader。什么时候值得用 GGUF、怎么配,看 GGUF 量化模型。

❌ extra_model_paths.yaml 改了没生效 ​

三个最常见原因:

  • 位置不对:文件必须在 ComfyUI 根目录(便携包是 ComfyUI_windows_portable\ComfyUI\,不是外面那层文件夹)
  • 没重启:官方明确要重启才生效
  • 文件名不对:Windows 记事本保存时容易存成 extra_model_paths.yaml.txt——在资源管理器里打开「显示文件扩展名」确认一下

改完配置重启却起不来的,属于启动问题,看 装不上怎么办。

❌ yaml 缩进混了 Tab,配置读不出来 ​

YAML 语法要求用空格缩进,官方示例文件里全是 4 空格。用记事本编辑时别按 Tab 键;类型键名要对齐在配置块名下(像上面示例那样)。改坏了就把 .example 再复制一份重来。

进阶技巧(可选) ​

🔧 启动参数直接改模型目录:不改 yaml,也可以用启动参数。--models-directory <目录> 把模型目录整个指到别处;--base-directory <目录> 更彻底,models、custom_nodes、input、output、temp、user 一起搬。便携包用户编辑 .bat 加参数(目标目录要先建好):

bat
.\python_embeded\python.exe -s ComfyUI\main.py --models-directory D:\AIModels\models --windows-standalone-build
pause

🔧 让 ComfyUI 多读一份配置:--extra-model-paths-config <路径> 可以在 extra_model_paths.yaml 之外再加载一份或多份 yaml——比如把共享配置放在单独的同步目录里,随用随挂。

🔧 模板库的自动下载存进哪:用模板库缺模型自动下载时,Desktop 的 Download 按钮直接存入 ComfyUI/models/ 对应子目录;浏览器打开的自托管版则是触发浏览器下载,需要你手动放进目录。模板库玩法见 模板库。

🔧 删除模型:界面里没有「卸载模型」按钮——不想用了,直接到对应子目录删文件即可。

🔧 r 键的正式名字:这个刷新快捷键对应设置项 Comfy.RefreshNodeDefinitions。更多键位看 快捷键与界面速查。

本课小结 ​

✅ ComfyUI 模型放哪里:默认 <安装目录>/ComfyUI/models/,便携包就是 ComfyUI_windows_portable\ComfyUI\models\;Comfy Desktop 在胶囊菜单 → Storage 里查看和管理。

✅ 什么模型进什么文件夹:checkpoint→checkpoints、LoRA→loras、VAE→vae、ControlNet→controlnet、扩散模型→diffusion_models、文本编码器→text_encoders、放大→upscale_models;文件扩展名限 .ckpt / .pt / .pt2 / .bin / .pth / .safetensors / .pkl / .sft。

✅ 放完要刷新:运行中按 r,不行就重启,模型才会进 loader 下拉列表。

✅ ComfyUI 模型路径可以加:extra_model_paths.yaml 放 ComfyUI 根目录,base_path + 类型键名,一个类型可挂多个目录,改完必须重启;Desktop 用 Storage 界面。这就是官方的 ComfyUI 共享模型方案。

关键配置字段回顾:

字段写法说明
base_path模型库根目录(支持 ~)配置块的根,子路径相对它解析
checkpoints / loras / vae / controlnet…相对 base_path 的子目录;多个用 `` 多行
is_defaulttrue(可选)路径排最前、作默认下载目录
custom_nodes外部节点目录(可选)追加节点搜索路径,不改默认安装位置
文件位置ComfyUI 根目录(main.py 旁边)便携包在 ComfyUI_windows_portable\ComfyUI\
生效条件保存后重启 ComfyUI官方明确要求

下一课预告 ​

模型就位,下一课就出第一张图:第一次生图:默认工作流逐节点讲透。

你会学到:

  • 默认文生图工作流 6 个节点(Load Checkpoint → Empty Latent Image → CLIP Text Encode → KSampler → VAE Decode → Save Image)各自干什么
  • 正负提示词写在哪,(关键词:1.2) 权重语法怎么用
  • KSampler 的 steps / cfg / denoise 等参数怎么调
  • 按 Run(Ctrl+Enter)跑出并保存你的第一张图

不想从 SD1.5 开始、想直接上 Z-Image-Turbo、Qwen-Image、FLUX 这些新模型的工作流?去 模型×任务总览 挑一页照着做。

搞懂AI关于我们怎么写隐私说明

独立的第三方教程,与文中提到的任何产品及其公司没有隶属或合作关系;产品名称和商标归各自所有者。价格和政策以官方页面为准。