ComfyUI与WebUI模型共享实战:符号链接与YAML配置全解析
1. 为什么你需要模型共享:告别重复下载的硬盘噩梦
如果你和我一样,既是 Stable Diffusion WebUI 的忠实用户,又沉迷于 ComfyUI 那可视化、可编程的工作流带来的强大与自由,那你一定对硬盘空间告急这件事深有体会。我刚开始玩的时候,那叫一个“豪横”,两个软件各自为政,模型库都是完整的一套。结果没几个月,我那1TB的固态硬盘就亮起了红灯,光是基础的大模型(Checkpoint)就占去了近200GB,更别提那些 LoRA、VAE、ControlNet 了。每次看到硬盘里那两个几乎一模一样的 stable-diffusion-webui/models 和 ComfyUI/models 文件夹,心里都在滴血——这不仅仅是空间的浪费,更是时间和带宽的浪费。
模型共享,说白了,就是让 ComfyUI 和 WebUI 这两个“兄弟”软件共用同一套模型文件。你只需要在硬盘上保留一份模型,通过一些“魔法”让两个软件都能找到并读取它。这带来的好处是立竿见影的:直接为你节省上百GB的硬盘空间。想象一下,你新下载了一个 7GB 的炫酷大模型,如果两边都要存,就是 14GB;而共享后,永远只占 7GB。日积月累,这个数字非常可观。
更重要的是管理上的便捷。你再也不用担心两个地方的模型版本不一致了。在 WebUI 里用某个 LoRA 调出了一个绝佳的效果,想在 ComfyUI 的工作流里复现?如果模型不共享,你可能得重新找、重新下载,费时费力还可能找错版本。共享之后,两个平台访问的是同一个文件,确保了效果的一致性。对于我这种喜欢在两个界面之间反复横跳、对比测试的玩家来说,这简直是福音。所以,无论你是硬盘空间捉襟见肘的新手,还是追求高效工作流的老鸟,模型共享都是你进阶路上必须掌握的核心技能。下面,我就把自己踩过坑、验证过的最稳方案,手把手教给你。
2. 核心原理与方案选择:符号链接 vs YAML 配置
在开始动手之前,我们得先搞清楚两种主流共享方式的“内核”是什么。理解了原理,你才能在做选择时心里有底,出了问题也知道从哪儿排查。
2.1 路径映射的魔法:它们是如何工作的?
无论是符号链接还是 YAML 配置,其核心思想都是 “路径映射”。就像在地图软件里,你可以把“我家”这个标签定位到真实的经纬度坐标上。对于 AI 绘画软件来说,它需要去某个固定的“地址”(比如 ComfyUI/models/checkpoints)找模型文件。我们的工作就是告诉它:“嘿,别去那个空房子了,真正的宝贝在另一个地方(stable-diffusion-webui/models/Stable-diffusion),你去那里拿。”
- 符号链接(Symbolic Link / Junction): 这是一种由操作系统提供的“文件系统快捷方式”。你在 ComfyUI 的模型文件夹里创建的
checkpoints目录,看起来是个文件夹,实际上是一个指向 WebUI 模型文件夹的“指针”。当 ComfyUI 尝试读取checkpoints时,操作系统会透明地将请求重定向到真正的目标路径。它对软件是完全无感的,软件以为自己就是在访问一个普通文件夹。这种方式性能损耗几乎为零,因为就是一次简单的文件系统跳转。 - YAML 配置文件: 这是 ComfyUI 软件本身提供的一种高级功能。你通过编辑一个名为
extra_model_paths.yaml的配置文件,明确地告诉 ComfyUI:“你去base_path指定的那个 WebUI 根目录下面,按照我给的子路径(checkpoints: “models/Stable-diffusion”)找模型。” ComfyUI 启动时会读取这个配置,然后按照你的指示去加载模型。这是一种应用层级的配置,更灵活,但需要软件支持。
2.2 两种方案全方位对比:一张表看懂怎么选
光讲原理可能还有点抽象,我把它俩的关键差异整理成了下面这个表格,你可以根据自己的情况对号入座:
| 特性维度 | 符号链接 (Symbolic Link) | YAML 配置文件 (extra_model_paths.yaml) |
|---|---|---|
| 实现原理 | 操作系统级文件系统“快捷方式” | 应用层配置文件路径重定向 |
| 操作难度 | 简单,几条命令即可 | 中等,需编辑配置文件,注意格式 |
| 存储节省 | 100%,零冗余存储 | 100%,零冗余存储 |
| 性能影响 | 零损耗,与直接访问无异 | 几乎为零,仅启动时多一次路径解析 |
| 适用场景 | 单硬盘用户首选,路径简单直接 | 多硬盘/多版本隔离用户,灵活性极高 |
| 跨平台 | Windows (mklink)、Mac/Linux (ln -s) 命令不同 | 配置文件通用,路径格式需适配系统 |
| 管理灵活性 | 较低,链接创建后路径固定 | 极高,可配置多个基础路径,精细化管理子目录 |
| 风险提示 | 删除源文件会导致链接失效(断链) | 配置文件格式错误(缩进、冒号)会导致读取失败 |
我个人的实战建议是:对于绝大多数单硬盘、只想简单快速实现共享的用户,优先选择符号链接。它更接近“系统原生”支持,稳定不出错,一劳永逸。而 YAML 配置方案则是为高阶场景准备的,比如你的 WebUI 装在 D 盘,ComfyUI 装在 E 盘;或者你希望将 SD 1.5 的模型和 SDXL 的模型从 WebUI 的不同子目录分别映射过来,这时候 YAML 的灵活性就发挥出来了。
3. 实战手册:符号链接方案(单硬盘终极选择)
好了,理论讲完,咱们直接上手。这里以最普遍的 Windows 系统为例,Mac 和 Linux 用户我会给出对应命令。假设你的 WebUI 安装在 D:\stable-diffusion-webui,ComfyUI 安装在 D:\ComfyUI。请务必以管理员身份打开命令提示符(CMD)或 PowerShell,这是成功的关键。
3.1 一步一步创建链接
我们的目标是让 ComfyUI 的各个模型子文件夹,都变成指向 WebUI 对应文件夹的“快捷方式”。
- 打开管理员终端:在 Windows 搜索框输入
cmd,右键点击“命令提示符”,选择“以管理员身份运行”。 - 创建主模型(Checkpoints)链接:这是占用空间最大的部分。执行以下命令:
成功后会显示mklink /J "D:\ComfyUI\models\checkpoints" "D:\stable-diffusion-webui\models\Stable-diffusion"为 D:\ComfyUI\models\checkpoints <<===>> D:\stable-diffusion-webui\models\Stable-diffusion 创建的联接。这里的/J参数表示创建“目录联接”(Junction),适用于 NTFS 文件系统。 - 创建 LoRA 模型链接:
mklink /J "D:\ComfyUI\models\loras" "D:\stable-diffusion-webui\models\Lora" - 创建 VAE 模型链接:
mklink /J "D:\ComfyUI\models\vae" "D:\stable-diffusion-webui\models\VAE" - 创建 ControlNet 模型链接(如果你的 WebUI 安装了 controlnet 扩展):
mklink /J "D:\ComfyUI\models\controlnet" "D:\stable-diffusion-webui\extensions\sd-webui-controlnet\models"
对于 MacOS 或 Linux 用户,命令更统一,在终端中使用 ln -s 命令即可,但不需要管理员权限(通常):
# 创建 checkpoints 链接
ln -s ~/stable-diffusion-webui/models/Stable-diffusion ~/ComfyUI/models/checkpoints
# 创建 loras 链接
ln -s ~/stable-diffusion-webui/models/Lora ~/ComfyUI/models/loras
# 以此类推
3.2 验证与目录结构
创建完成后,如何验证是否成功呢?
- 在文件资源管理器中查看:进入
D:\ComfyUI\models文件夹,你会看到checkpoints、loras等文件夹的图标上可能有一个小小的快捷方式箭头(Windows 11 可能默认不显示)。更可靠的方法是看属性。 - 在终端中验证:在
D:\ComfyUI\models目录下执行dir(Windows)或ls -l(Mac/Linux)。你会看到类似这样的输出:
或者... checkpoints [JUNCTION] ...
这明确表示它是一个链接(Junction/Symbolic Link)。lrwxr-xr-x 1 user staff 64B Jan 1 12:00 checkpoints -> /Users/xxx/stable-diffusion-webui/models/Stable-diffusion
现在你的目录结构在逻辑上应该是这样的:
D:/
├── stable-diffusion-webui/
│ ├── models/
│ │ ├── Stable-diffusion/ (实际存放的大模型)
│ │ ├── Lora/ (实际存放的LoRA)
│ │ └── VAE/ (实际存放的VAE)
│ └── extensions/
│ └── sd-webui-controlnet/
│ └── models/ (实际存放的ControlNet)
└── ComfyUI/
└── models/
├── checkpoints -> D:/stable-diffusion-webui/models/Stable-diffusion
├── loras -> D:/stable-diffusion-webui/models/Lora
├── vae -> D:/stable-diffusion-webui/models/VAE
└── controlnet -> D:/stable-diffusion-webui/extensions/sd-webui-controlnet/models
箭头 -> 表示符号链接指向关系。所有模型文件物理上只存在于 WebUI 的目录中,ComfyUI 通过链接“借用”。
4. 进阶指南:YAML 配置方案(多硬盘/复杂管理)
如果你遇到了更复杂的存储情况,比如软件和模型分散在不同硬盘,或者你有强烈的版本管理需求,那么 YAML 配置文件就是你的瑞士军刀。它让你能像写剧本一样,精确指挥 ComfyUI 去哪里找模型。
4.1 创建与配置 YAML 文件
首先,在 ComfyUI 的安装根目录下,找到一个名为 extra_model_paths.yaml.example 的示例文件。我们的任务就是复制并修改它。
- 复制并重命名文件:将
extra_model_paths.yaml.example复制一份,并重命名为extra_model_paths.yaml(注意:一定要去掉.example后缀)。这个文件就是 ComfyUI 会主动读取的配置文件。 - 使用文本编辑器打开:用 VS Code、Notepad++ 甚至系统自带的记事本(保存时注意编码)打开这个
extra_model_paths.yaml文件。 - 编写配置内容:文件内部原本有很多注释,你可以清空,然后填入如下配置。这里假设你的 WebUI 在
D盘,ComfyUI 在E盘,这是一个典型的多盘符场景:
配置解析与避坑指南:a111: base_path: "D:/stable-diffusion-webui" checkpoints: "models/Stable-diffusion" configs: "models/Stable-diffusion" vae: "models/VAE" loras: "models/Lora" embeddings: "embeddings" hypernetworks: "models/hypernetworks" controlnet: "extensions/sd-webui-controlnet/models"a111:这是一个配置组的名字,你可以随意起,比如叫webui也行,但后面要保持一致。base_path:这是最关键的一行,指定了 WebUI 的绝对根路径。- 下面的
checkpoints:、loras:等,都是相对于base_path的子路径。 - 路径格式:请使用 正斜杠
/,并且不要在路径末尾加斜杠。这是 YAML 和跨平台兼容性的要求。 - 缩进:YAML 依赖缩进来定义结构。请务必使用空格(建议2个或4个)进行缩进,切勿使用 Tab 键。
base_path和下面的子项属于同一层级,缩进量必须相同。 - 引号:路径字符串建议用双引号
"包裹,避免路径中有空格时出错。
4.2 高级配置:模型版本隔离
YAML 的强大之处在于可以精细映射。比如,你在 WebUI 里把 SD 1.5 模型和 SDXL 模型分别放在 models/Stable-diffusion/v1.5 和 models/Stable-diffusion/sdxl 两个子文件夹里管理,希望在 ComfyUI 中也区分开。你可以这样配置:
a111:
base_path: "D:/stable-diffusion-webui"
checkpoints:
base_path: "D:/stable-diffusion-webui"
sdxl: "models/Stable-diffusion/sdxl"
v1_5: "models/Stable-diffusion/v1.5"
loras: "models/Lora"
vae: "models/VAE"
这样配置后,在 ComfyUI 的模型加载节点中,checkpoints 目录下就会显示出 sdxl 和 v1_5 两个子分类,清晰又方便。这种灵活性是符号链接难以直接实现的。
5. 验证、排查与故障解决
配置完成后,重启 ComfyUI(如果它正在运行)。让我们来验收成果并解决可能遇到的问题。
5.1 成功验证三步曲
- 文件数量检查:打开终端,分别进入 WebUI 的模型目录和 ComfyUI 的链接目录,查看文件数量是否一致。
两者数量应该大致相同(可能差几个缓存文件)。# Windows (在各自目录下) dir | find /c /v "" # 或使用 PowerShell (Get-ChildItem).Count # Linux/Mac ls -1 | wc -l - 在 ComfyUI 中加载测试:这是最直接的验证。在 ComfyUI 中,添加一个 “Load Checkpoint” 节点,点击它,看看下拉列表里是否出现了你 WebUI 中所有的模型。尝试加载一个 WebUI 专属的模型(比如某个特定版本的 SDXL 模型),然后运行一个简单的工作流。如果能正常出图,恭喜你,共享成功了!
- 空间验证:最爽的一步。对比一下配置共享前后,ComfyUI 的
models文件夹属性。共享前,它可能占几十 GB;共享后,它应该只占几 MB 或几十 MB(因为只有链接文件本身)。而 WebUI 的models文件夹大小不变。硬盘空间实实在在地省出来了。
5.2 常见故障与解决方案
-
问题:ComfyUI 里看不到模型/列表为空。
- 检查符号链接:确认链接是否创建成功。在 ComfyUI 的
models文件夹里,看checkpoints等文件夹是否带有快捷方式图标,或者用dir命令查看类型是否为[JUNCTION]。 - 检查 YAML 配置:
- 文件命名:确认是
extra_model_paths.yaml,不是extra_model_paths.yaml.example。 - 路径正确性:检查
base_path的绝对路径是否正确,特别是盘符和文件夹名大小写(在 Windows 上通常不敏感,但最好保持一致)。 - 格式问题:这是最常见的坑!确保缩进使用的是空格,不是 Tab。检查冒号
:后面是否有空格(必须有)。检查引号是否是英文半角。 - 重启 ComfyUI:修改 YAML 后必须重启 ComfyUI 才能生效。
- 文件命名:确认是
- 检查符号链接:确认链接是否创建成功。在 ComfyUI 的
-
问题:能看见模型列表,但加载时报错(如 404 错误)。
- 权限问题(尤其是符号链接):你是否使用了管理员权限创建的符号链接?如果不是,请删除旧链接(直接删除那个“快捷方式”文件夹),然后用管理员终端重新创建。
- 源文件被移动或删除:如果 WebUI 那边的模型文件被你挪走了或者删了,链接自然会失效。检查源路径是否存在有效文件。
-
问题:只有部分模型类型(如 ControlNet)共享失败。
- 路径映射不完整:你可能只链接了
checkpoints,忘了controlnet或loras。对照第 3.1 节的步骤,检查是否所有需要的模型类型都创建了链接或配置了路径。 - WebUI 扩展路径不同:某些 WebUI 扩展的模型存放路径可能比较特殊。你需要手动去 WebUI 的
extensions文件夹下找到对应扩展的模型路径,然后在 YAML 中正确配置,或为其创建单独的符号链接。
- 路径映射不完整:你可能只链接了
我在实际使用中,符号链接方案几乎是一步到位,非常稳定。而 YAML 配置方案则在第一次配置时,因为一个 Tab 缩进和空格缩进混用的问题调试了十几分钟。所以,再次强调:编辑 YAML 时,请使用专业的文本编辑器(如 VS Code),并开启显示空白字符的功能,它能帮你一眼看清缩进是空格还是 Tab。掌握了这两种方法,你就能根据自己复杂的硬件环境和项目需求,游刃有余地管理你的 AI 模型库了。
更多推荐


所有评论(0)