ComfyUI 实用排错手册
集中记录 InstantID、LayerDiffuse、macOS 兼容、局部重绘、IP-Adapter 与 Anything Everywhere 的排错思路。
这是一组来自 2024 年 ComfyUI 工作流的排错记录。插件、PyTorch 和节点接口更新很快,因此这里更强调定位思路;涉及固定版本或源码补丁的部分,只应作为历史线索。
InstantID:先对齐参考图与生成画布
Apply InstantID Advanced 的位置参考图会影响人脸落点。参考图与生成画布的长宽比差异过大时,人物位置容易偏移。
- 先裁切参考图,使其接近最终画布比例;
- 分开验证身份参考与位置参考;
- 出现
NoneType has no attribute shape时,先检查模型体系和节点版本是否匹配。


LayerDiffuse 与 Apple 芯片
旧版 LayerDiffuse 在 MPS 上执行高维 torch.median 时曾出现崩溃。历史 workaround 是把该次计算临时移到 CPU,再将结果放回 MPS:
if self.load_device == torch.device("mps"):
median = torch.median(result.cpu(), dim=0).values
median = median.to(device=self.load_device, dtype=self.dtype)
else:
median = torch.median(result, dim=0).values
应用补丁前,先检查 ComfyUI-layerdiffuse 是否已经处理了对应问题。源码修改应当是最后手段。
macOS 出图发灰、发黑或模糊
这类现象可能来自 PyTorch、torchvision 与 macOS/MPS 的版本组合,而不是工作流参数。建议按以下顺序排查:
- 用同一工作流切换到 CPU,确认是否仅在 MPS 出现;
- 查看 ComfyUI issue #2992 及当前版本说明;
- 新建隔离环境测试推荐依赖组合;
- 保存可工作的锁定文件,避免一次升级所有依赖。
不要把某个历史版本组合当作永久答案。环境、系统和节点版本都应一起记录。
Inpainting:边缘与模型差异
没有专用 inpainting 模型时,可以通过模型差分提取 inpainting 部分,再与目标模型合并。这种做法依赖两个底模结构兼容,合并前应先备份并做小规模对照。

修补区域边缘过硬时,可以扩大并羽化遮罩,让去噪区域覆盖接缝;必要时配合 Differential Diffusion 一类节点。

IP-Adapter:把结构与风格分开调
Mad Scientist 一类高级节点允许分别调整不同层的权重。与其记住某个固定下标,不如先建立三组对照:
- 全层均匀:观察完整参考强度;
- 只保留风格相关层:观察色彩、材质和笔触;
- 减弱结构相关层:减少构图与轮廓复制。

如果正向和负向同时使用参考图,要明确每一路是在增强什么、抑制什么。每次只调整一组权重并保存种子,才能得到可比较的结果。

用 Anything Everywhere 整理工作流
Anything Everywhere 可以按类型和规则把输出广播给多个节点,减少跨越整个画布的连线。
安装到 custom_nodes 后重启 ComfyUI:
cd <comfyui>/custom_nodes
git clone https://github.com/chrisgoringe/cg-use-everywhere
使用时按住 Shift 从输出端拖出,选择 Anything Everywhere?,再用标题或正则限制目标范围。
[!TIP] 广播让画布更干净,也会隐藏数据从哪里来。对模型、VAE、正负提示词这类全局输入很合适;对需要逐段追踪的局部控制,显式连线通常更容易维护。