很多刚入坑ComfyUI的朋友,装好整合包或官方版之后,面对那一堆文件夹,第一反应都是懵的。models、output、custom_nodes……这些目录到底是干什么的?自己刚下载的几个GB大模型,到底该塞到哪里?更烦的是,明明照着教程放进了对应目录,前端下拉列表里却刷不出来,或者加载模型时直接给你报一个“model not found”。这篇文章我就把ComfyUI的目录结构从头到尾翻一遍,重点拆解models大文件夹里面每一个子目录该放什么模型,以及模型放进去之后为什么有时候不生效。不管你用的是官方版还是秋叶整合包,看完都能对着目录直接操作,不再瞎猜。
1. 装好ComfyUI后面对一堆文件夹:先分清谁管模型、谁管工作流、谁管临时文件
1.1 根目录下一眼看去:models是模型的“仓库”,其它目录各司其职
完整安装好ComfyUI之后,根目录下一般会有这么几个核心目录:
- models:所有AI绘图用到的权重文件几乎都放在这里,不管是大模型、LoRA、VAE还是ControlNet,全都在这个仓库里归类存放。后面我会重点讲它。
- custom_nodes:自定义节点扩展目录。你下载的各种插件、节点包,说白了就是把整个文件夹丢进这个目录里,重启ComfyUI后就能识别到。
- output:输出目录。生成的所有图片默认保存在这里,ComfyUI会按日期和运行时间自动分文件夹,方便你按批次查找。
- input:输入目录。工作流里用到的参考图、图生图的底图,或者任何需要手动指定图片路径的节点,默认都会在这个目录里找文件。
- user:用户目录。保存个人的工作流、快捷键设置、用户配置等。不同用户之间互相独立,如果是自己一个人用,一般不用管。
- web:前端页面代码目录。ComfyUI的网页界面就在这里,属于程序自身的一部分,日常使用不要动它。
- temp:临时文件目录。程序运行时的中间数据、缓存文件会放在这里,清空也不会影响核心使用,但正在运行的任务别去删。
很多人会把output目录当临时文件夹顺手清理,结果辛辛苦苦出的图全没了,这种情况我见过太多次。建议你安装完之后,第一时间在ComfyUI的设置里把output目录改到一个自己习惯的磁盘位置,至少不要放在C盘系统盘,不然时间一长几个G的图片堆在那里,C盘早晚爆掉。
1.2 秋叶整合包的中文目录:是复制还是替身?
经常有人在群里问:我明明把模型放到了models/checkpoints,可秋叶启动器里显示的却是Stable-diffusion文件夹,是不是放错了?其实秋叶整合包对ComfyUI的原始目录做了一套“镜像映射”,它把默认的模型搜索路径映射到了中文或拼音命名的文件夹上。比如models/checkpoints在实际操作中可能对应models/Stable-diffusion,models/loras可能对应models/Lora。这套映射关系是在启动器配置或extra_model_paths.yaml文件里写死的,所以只要你把模型放进映射后的目录,ComfyUI底层依然能通过models/checkpoints这个逻辑路径找到文件。
这里可以打一个比方:你租房时物管告诉你的信箱是A-101,但快递柜上标的是“1栋1单元1号”,地址指的都是同一个柜子,只是叫法不同。秋叶包之所以要这么折腾,纯粹是为了照顾国内用户的使用习惯,让大家看到熟悉的“Stable-diffusion”和“Lora”目录名,降低上手门槛。
如果你用的是官方版,那目录就是标准的英文结构,不存在这层映射。下面是两者的对应关系速览:
| 目录用途 | 官方版默认路径 | 秋叶包常见映射路径 | 说明 |
|---|---|---|---|
| 大模型主目录 | models | models | 所有模型的顶层仓库 |
| 大模型checkpoint | models/checkpoints | models/Stable-diffusion | 体积最大、最常用的模型 |
| LoRA模型 | models/loras | models/Lora | 风格微调模型 |
| VAE模型 | models/vae | models/VAE | 图片解码器 |
| 放大模型 | models/upscale_models | models/ESRGAN或Upscale | 超分模型 |
| ControlNet模型 | models/controlnet | models/ControlNet | 控制类模型 |
这里要特别提醒一句:具体映射到什么路径,取决于你用的整合包版本和设置,不同版本之间可能有差异。所以最靠谱的判断方法,不是看文件夹叫什么名字,而是看ComfyUI前端加载节点下拉列表里能不能刷出这个模型。只要前端能看到,路径就对了。
2. models目录全拆解:大模型、LoRA、VAE、ControlNet分别放哪
2.1 checkpoints子目录:稳放我们最常说的SD大模型
这是最常用也是最重要的目录。日常我们说的SD1.5、SDXL、Illustrious系模型,以及各种基于这些底模训练的大模型,全都是“能直接加载”的单文件大模型,几乎全部放在这个目录下。一个checkpoint文件通常包含三大部分:text encoder文本编码器、UNet去噪网络、VAE图片解码器,等于一张“全家福”,加载最方便,丢进目录就能用。
从文件后缀来看,.safetensors是主流推荐格式,它只存权重数据,不存在嵌入恶意代码的可能,加载速度也更快;.ckpt是早期格式,虽然也能用,但安全性上不如safetensors,能选safetensors就尽量选。文件大小方面,SD1.5模型通常2到7GB,SDXL模型通常在3.5到7GB,而FLUX系列某些单文件模型能到11GB以上,占空间非常厉害,建议提前规划好硬盘。
实操上,官方版就直接放到ComfyUI\models\checkpoints;秋叶整合包按前面的映射关系,丢到models\Stable-diffusion目录即可。如果在启动器里自定义过模型目录,那以你自定义的路径为准。
2.2 diffusion_models、unet、text_encoders和clip:新拆分模型放这里
Flux、SD3、HunyuanVideo这些新架构模型,经常会把一个大模型拆成三四个独立文件。为什么要拆?因为单文件动辄十几GB甚至几十GB,拆开之后可以按需下载、灵活组合,比如你可以换不同的文本编码器来调整提示词理解能力。这种拆分模式下,放置规则就变了:
- FLUX.1-schnell这类主模型,FP8版本一般放到models/diffusion_models;
- FLUX用到的CLIP模型,比如clip_l.safetensors和t5xxl_fp8_e4m3fn.safetensors,放到models/text_encoders或models/clip;
- 如果是独立的融合模型(UNet部分),某些框架版本会优先从models/unet读取;
- 单独的VAE文件,放到models/vae。
新手最容易犯的错误,就是把Flux主模型直接丢到checkpoints目录里,然后用普通加载检查点节点去加载,结果要么刷不出来,要么加载时报类似“Config not found”的错误。其实区分方法很简单:加载checkpoint的节点,下拉列表展示的是checkpoints目录里的文件;加载diffusion model的节点,下拉列表展示的是diffusion_models或unet目录里的文件。你用的节点类型决定了该去哪个目录找模型,这一点一定要记住。
2.3 loras、vae、controlnet、upscale_models:附属模型别放乱
- LoRA模型:放到models/loras,工作流里的LoraLoader节点才能在下拉列表里看到。文件名最好保持简短英文,不要带一堆奇怪符号,不然前端列表显示混乱,还会出现选择后加载失败的问题。后面第3部分我会细说原因。
- VAE模型:放到models/vae。但注意,如果checkpoint里已经内置了VAE,一般不需要单独放,除非你想微调解码效果,才需要额外指定一个独立VAE文件并挂载到工作流里。
- ControlNet模型:放到models/controlnet。新版ControlNeXt格式的文件也放这里。有些控制类插件会自带模型目录,但通用规则仍然是由ControlNetLoader节点去models/controlnet里读取。
- Upscale模型:放到models/upscale_models。4x-UltraSharp、ESRGAN系列这类放大模型都放这里,在upscale节点里选择。
另外还有几个容易被忽略的目录:models/clip_vision,IPAdapter和InstantID这类工作流会用到;models/style_models,用于IPAdapter的风格迁移;models/embeddings,用于负面提示词嵌入,放错的话运行时会提示“embedding file not found”。
把常用模型目录整理成一张表,方便你对照放置:
| 模型类型 | 放置目录 | 前端对应节点/加载分类 | 备注 |
|---|---|---|---|
| 大模型checkpoint | models/checkpoints 或 models/Stable-diffusion | Load Checkpoint | 最常用 |
| Flux/SD3主模型 | models/diffusion_models | Load Diffusion Model | 新架构拆分模型 |
| UNet部分 | models/unet | Load Diffusion Model | 部分版本优先读取 |
| 文本编码器 | models/text_encoders 或 models/clip | CLIPLoader | 配套主模型使用 |
| LoRA | models/loras 或 models/Lora | LoraLoader | 文件名尽量简短 |
| VAE | models/vae 或 models/VAE | VAELoader | 大多数时候checkpoint自带 |
| ControlNet | models/controlnet 或 models/ControlNet | ControlNetLoader | 兼容ControlNeXt格式 |
| 放大模型 | models/upscale_models | Upscale Model | ESRGAN等 |
| Embedding | models/embeddings | 直接写在prompt里 | 负面提示词常用 |
| CLIP Vision | models/clip_vision | CLIPVisionLoader | IPAdapter类工作流 |
| 风格模型 | models/style_models | StyleModelLoader | IPAdapter风格迁移 |
2.4 其它容易忽略的子目录:classifiers、gligen、photomaker等
有些模型目录平时用不到,但遇到特定工作流时又会突然冒出来。比如models/classifiers,主要用于透明背景抠图;models/gligen,用于特定位置的生成控制;models/photomaker,用于人像一致性生成。这些目录大多是安装对应插件后自动创建的,或者插件文档让你手动放置的,你不需要提前建好,等真要用到某个功能时再按插件说明放模型即可。
还有一个容易忽略的点:models目录本身只是一个顶层文件夹,ComfyUI扫描模型时,不仅会扫描顶层子目录,还会递归扫描子目录下的子文件夹。比如你在models/loras下面建一个sdxl文件夹,把XL用的LoRA放进去,前端下拉列表一样能显示,只是文件名前面会带上子目录路径。利用这个特性,你可以按照“底模系列”“画风系列”“角色系列”来给模型归类,文件夹管理起来会清晰很多。但如果目录层级太深,有些节点可能显示不全,所以建议最多建一层子目录,不要套娃太多层。
3. 模型放好了却刷不出来?加载路径与排查要点
3.1 ComfyUI怎么找模型:路径扫描与下拉列表的来源
ComfyUI启动时,会扫描models下各个子目录的文件,并把文件名显示成对应节点的下拉列表选项。所以“文件在不在目录里”直接决定了“节点下拉列表里有没有”。你明明放了文件却看不到,常见原因无非这么几个:
第一,放错了目录。比如把LoRA放到了vae下面,那LoraLoader节点自然刷不出来。第二,放到了映射前的目录,但实际生效的是映射后的目录,多见于秋叶整合包用户。第三,文件名有问题,比如包含中文、空格或特殊符号,导致前端列表显示异常或加载失败。第四,前端缓存没有刷新。有些版本的ComfyUI不会实时检测新文件,需要你点击下拉框里的刷新按钮,或者重启服务。
我个人的排查习惯是:先看节点类型,确认这个节点应该读哪个目录;再去对应目录看文件是否存在;然后看文件名是否符合规范;最后刷新或重启。按这个顺序查,90%的“刷不出来”问题都能解决。
3.2 用文件类型与前端的对应关系来验证:节点决定读取路径
很多人把“前端能不能刷出来”当作唯一标准,这其实很聪明,但也要注意节点本身可能有多个“加载方式”。比如在ComfyUI里,加载checkpoint的节点叫“Load Checkpoint”,加载LoRA的节点叫“LoRA Loader”,加载VAE叫“VAE Loader”。你往models/checkpoints里放的模型,只有在你拖入“Load Checkpoint”节点时才会出现在下拉列表里;如果拖的是“Load LoRA”,那自然看不到。
新手常见的迷惑操作是:把大模型放好后,拖一个LoRA加载节点,发现列表里没有大模型,就以为模型没放对地方。其实不是,是你节点的类型不对。这一点想明白了,目录结构马上就通了一半。
另外,GGUF格式的量化模型比较特殊。它不是标准的.safetensors文件,普通加载节点刷不出来,必须额外安装ComfyUI-GGUF这类自定义节点,再用专门的GGUF加载节点去读取。如果你下载的是GGUF量化版Flux或Qwen模型,一定要先装对应插件,否则就算文件放进了diffusion_models目录,前端也照样不显示。
3.3 官方版与整合包的路径差异:别把两套路径混用
我自己早期就犯过这个错:同时装了官方版和秋叶整包,把模型放到了官方版的models/checkpoints里,然后用秋叶启动器启动,怎么刷都看不到。原因就是秋叶包启动器把模型路径映射到了自己安装目录下的models/Stable-diffusion,和官方版的models/checkpoints根本不是同一个物理位置。
解决办法有两个。第一,把模型统一放到当前启动器映射的目录里。第二,利用extra_model_paths.yaml配置文件,把模型路径指到同一个外部目录,这样两套环境就能共用同一批模型,不用重复下载,给硬盘省下大量空间。配置文件本质上就是告诉ComfyUI“除了默认目录,再去这些地方找模型”。这种做法特别适合那些同时玩SD和Flux、模型文件动辄几十GB的重度用户。
注意一个细节:修改extra_model_paths.yaml之后,必须重启ComfyUI才能生效,不是保存就能立刻看到。我见过有人改完配置在界面上点了半天刷新,模型就是不出来,重启之后一切正常。
4. 常见问题与踩坑实录:模型放对了还是报错怎么办
4.1 模型目录为什么和教程里长得不一样?别被目录名吓到
很多教程的截图是官方版的英文目录结构,而你的秋叶整合包里却是一堆中文或拼音目录,于是你开始怀疑自己是不是装了个假ComfyUI。其实不用慌,这一节前面已经解释过,这是整合包做路径映射的结果。目录长什么样不重要,关键是加载节点下拉列表里有没有这个模型。如果你不放心,可以直接在models目录里搜索你刚下载的文件名,看它实际落在哪个子目录,再用前端节点验证一次,两分钟就能确认。
还要提醒一点:不要因为看了某个教程,就手动把models目录里的中文文件夹删掉,换成官方版英文命名。删除映射目录可能导致ComfyUI按默认路径去读取,结果什么都加载不出来,到时候再恢复就麻烦了。既然整合包能用,就按它的规则来,不要没事找事改底层结构。
4.2 模型加载报错:常见错误信息与定位思路
模型放对了目录,不代表问题就结束了。加载时各种报错照样会把你折磨得够呛。我把实际踩过的坑整理成一份速查表:
| 报错现象 | 可能原因 | 处理办法 |
|---|---|---|
| model file not found | 文件路径不对或映射路径失效 | 检查模型实际存放位置,重启ComfyUI |
| model could not be loaded | 下载文件不完整、文件损坏 | 重新下载,优先选择镜像源 |
| KeyError: xxx | 加载权重时缺少对应键值 | 多把拆分模型放错目录,检查主模型路径 |
| Config not found | 拆分模型缺配置文件或路径不对 | 把Flux等模型文件放到diffusion_models并补齐CLIP |
| No module named xxx | 缺少对应自定义节点 | 安装提示的插件并重启 |
| embedding file not found | embedding文件放错位置 | 检查models/embeddings目录 |
| CUDA out of memory | 显存不足 | 降低分辨率、开FP8或更换小模型 |
这里重点说一下“model could not be loaded”和“Config not found”的区别。前者通常是下载过程中断导致文件损坏,重新下载就行;后者往往是拆分模型时缺少sidecar配置文件,或者模型放错了目录,ComfyUI按照错误的方式去读取权重,自然就报错了。遇到这类问题,先看报错信息里提示的文件名是什么,再去对应目录检查这个文件是否存在、是否完整。如果文件名出现在models/checkpoints下,但你实际下载的是diffusion模型,那就要看加载节点是否匹配。
4.3 硬盘空间与文件夹管理的个人建议
模型越玩越多,硬盘迟早不够用。我建议从一开始就做好规划,别等C盘满了才动手。几种方案供参考:
第一,把整个模型目录软链接到其他盘。Windows下可以用mklink /J命令创建目录联接,让ComfyUI的models目录指向D盘或E盘的实际文件夹,C盘就不会被撑爆。这个操作对官方版和整合包都适用。
第二,定期清理output目录和temp目录。output里全是你试生成的废图,时间一长几个G都很正常,用日期筛选删除旧批次就行。temp目录是临时缓存,ComfyUI正常运行时会自动写入,清理时最好退出程序后再删。
第三,给模型文件做好分类。文件命名尽量保持简短英文,并在models目录下放一个说明.txt,记录每个模型的来源、适用底模和常用参数。不要觉得这是多此一举,模型超过10个之后,你一定会感谢当初自己写下的这些备注。
最后再分享一个个人习惯:下载那种“主模型+CLIP+VAE”三件套的Flux模型时,最好一次性把所有配套文件全部放到位,再重启ComfyUI。很多人图省事,先把主模型拖下来跑了一下,发现报错再慢慢补CLIP和VAE,结果每一个环节都在排查,反而更浪费时间。一次性放好,把报错风险降到最低,这才是真正能提高出图效率的做法。
装好ComfyUI之后,先把文件夹结构和模型放置规则摸清楚,后面无论是套用别人的工作流,还是自己搭节点,都能少走很多弯路。希望这篇目录拆解能帮你把ComfyUI安排得明明白白。