模型放哪里: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\):
ComfyUI_windows_portable\ComfyUI\models\手动安装用户
官方手动安装是 git clone https://github.com/Comfy-Org/ComfyUI.git,克隆下来的文件夹就叫 ComfyUI,里面的 models 就是模型目录:
<你的克隆位置>\ComfyUI\models\Comfy Desktop 用户
不用翻文件夹:点桌面版顶部的胶囊菜单 → 打开 Storage 标签,就能看到各个模型目录;点目录旁边的文件夹图标,直接在系统文件管理器里打开它。官方说明:桌面版的模型默认在多个实例间共享。
你应该看到:models 目录下有一排子文件夹——checkpoints、loras、vae、controlnet 等。
- 我能打开自己的 models 目录,看到 checkpoints 等子文件夹
第 2 步:认目录——什么模型放什么文件夹
为什么:模型类型和子目录必须对号入座,放错位置的模型不会出现在任何节点里。
常用类型对照表(子目录名即 ComfyUI 源码 folder_paths.py 里的注册名):
| 模型类型 | 放进哪个子目录 | 对应 loader 节点(下拉列表在哪) |
|---|---|---|
| Checkpoint 主模型 | models/checkpoints/ | Load Checkpoint |
| LoRA | models/loras/ | Load LoRA |
| VAE | models/vae/ | Load VAE |
| ControlNet | models/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 |
| Embedding | models/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 不会自动发现新放进来的文件。
操作:
- 把模型文件放进对应子目录。第一个模型推荐官方入门的 SD1.5:
v1-5-pruned-emaonly-fp16.safetensors→models/checkpoints/ - ComfyUI 开着的话,在画布上按
r键刷新节点定义;列表里还没出现就重启 ComfyUI - 双击画布搜索 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:复制官方示例文件(推荐)
- 打开 ComfyUI 根目录——便携包是
ComfyUI_windows_portable\ComfyUI\,手动安装是你克隆的仓库文件夹。里面有一个extra_model_paths.yaml.example(便携包自带的官方说明文件也写了:把它改名成extra_model_paths.yaml再编辑) - 复制一份,改名为
extra_model_paths.yaml,放在同一目录 - 用记事本或任意文本编辑器打开,按你的模型库位置写配置。假设你的模型都放在
D:\AIModels\models\下:
D:\AIModels\
└── models\
├── checkpoints\
├── loras\
├── vae\
└── controlnet\对应的最小配置(官方文档示例):
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 的子目录。只写你实际有的类型就行。
- 保存,重启 ComfyUI——官方明确说明:改完必须重启才生效。
你应该看到:启动日志里出现 Adding extra search path ... 这样的行(每加一条路径,ComfyUI 都会打一条这个日志);loader 下拉列表里多出了外部目录里的模型。
- 启动日志出现 Adding extra search path,外部目录里的模型能被选中
方式 B:文件不存在就自己建
找不到 .example 也没关系——官方文档说明:用任意文本编辑器新建 extra_model_paths.yaml,放在 ComfyUI 根目录即可。完整键名清单参考官方示例文件(源码 folder_paths.py 是键名的最终依据)。
写法进阶(官方示例文件里都出现过)
- 一个类型挂多个目录:用 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\,照官方示例这样写:
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 加参数(目标目录要先建好):
.\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_default | true(可选) | 路径排最前、作默认下载目录 |
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 这些新模型的工作流?去 模型×任务总览 挑一页照着做。