快速结论:这个报错通常出现在 ComfyUI 的 IPAdapter 节点执行阶段,当代码尝试调用 clip_vision.patcher 时,传入的 clip_vision 实际是 None,也就是 IPAdapter 节点没有拿到有效的 CLIP Vision 模型。优先检查节点上的 CLIP Vision 输入是否为空。
适用环境:Issue 中确认的环境为 Windows 下的 ComfyUI;涉及自定义节点为 IPAdapter-ComfyUI(路径显示为 custom_nodes/IPAdapter-ComfyUI)。Issue 讨论了升级 ComfyUI 和扩展,但未提供具体的 Python、PyTorch、CUDA 或显卡版本。
最快修复方案:更换为带 CLIP Vision 输入的 IPAdapter 节点,并为其接入 CLIP_VISION_H.SAFETENSOR 模型。这是该 Issue 中用户明确表示解决了自己同类报错的做法。
注意事项:“升级 ComfyUI 和扩展”在评论里被多次尝试但并未让所有用户恢复,因此不能视为可靠的一步修复。更换节点、补上 CLIP Vision 模型的做法属于社区经验,仍需在自己的工作流中确认节点类型与模型文件名匹配。Issue 中提到的 CLIP_VISION_H.SAFETENSOR 为大写写法,请以实际放到 ComfyUI CLIP Vision 模型目录中的文件名为准。
问题场景
用户在 ComfyUI 中运行 IPAdapter 相关节点时触发该异常。报错发生在 custom_nodes/IPAdapter-ComfyUI/ip_adapter.py 的 adapter 方法,进入 clip_vision_encode 后调用 comfy.model_management.load_model_gpu(clip_vision.patcher) 时报错。从代码路径看,问题不在图像编码本身,而是在把 clip_vision 交给模型管理加载之前就已经不是有效对象。
报错原文
ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
File "D:\a\ComfyUI\ComfyUI\execution.py", line 153, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\a\ComfyUI\ComfyUI\execution.py", line 83, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\a\ComfyUI\ComfyUI\execution.py", line 76, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\a\ComfyUI\ComfyUI\custom_nodes\IPAdapter-ComfyUI\ip_adapter.py", line 162, in adapter
cond, uncond, outputs = self.clip_vision_encode(clip_vision, image, self.plus)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\a\ComfyUI\ComfyUI\custom_nodes\IPAdapter-ComfyUI\ip_adapter.py", line 229, in clip_vision_encode
comfy.model_management.load_model_gpu(clip_vision.patcher)
^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'patcher'
原因分析
最可能的原因是 IPAdapter 节点没有接收到有效的 CLIP Vision 模型,导致 clip_vision 为 None。当代码执行到 clip_vision.patcher 时,Python 尝试访问 None 的 patcher 属性,于是抛出 AttributeError: 'NoneType' object has no attribute 'patcher'。
另一种可能原因与节点类型或扩展版本有关:用户使用的节点可能不包含 CLIP Vision 输入,或者升级 ComfyUI 与 IPAdapter 扩展后工作流中的节点映射没有同步更新。Issue 评论中有人明确将解决方式归结为“更换带 CLIP Vision 的节点,并添加 CLIP_VISION_H.SAFETENSOR”,说明早期节点连接方式或模型加载方式与后续版本不完全兼容。
环境排查
- 确认 ComfyUI 本体和
IPAdapter-ComfyUI自定义节点均已更新到当前可用版本;Issue 中“升级两者”是常见建议,但不保证修复。 - 确认 IPAdapter 节点上存在 CLIP Vision 输入,并且该输入已连接到实际的 CLIP Vision 模型节点。
- 确认 CLIP Vision 模型文件已正确放置,Issue 中提到的加载文件为
CLIP_VISION_H.SAFETENSOR。 - 确认当前工作流使用的 IPAdapter 节点类型与扩展安装后的节点类型一致,避免旧节点缓存或缺失输入口。
- Issue 未提供 Python、PyTorch、CUDA、显卡型号等具体版本信息,这些项目在本 Issue 中无法进一步核对。
解决步骤
- 先彻底重启 ComfyUI,确保自定义节点和 ComfyUI 本体更新已生效。
- 检查当前 IPAdapter 节点是否包含 CLIP Vision 输入口。如果该节点没有 CLIP Vision 输入,替换为一个带 CLIP Vision 输入的 IPAdapter 节点。
- 为新的 IPAdapter 节点接入
CLIP_VISION_H.SAFETENSOR模型,确保模型对象从加载节点传到 IPAdapter 节点。 - 如果替换节点、补齐 CLIP Vision 后仍报同样的
NoneType错误,再尝试升级 ComfyUI 与 IPAdapter 扩展,并重新加载工作流。 - 执行一次简单工作流验证,确保报错不再出现在
clip_vision_encode阶段。
验证方法
重新运行之前失败的工作流,观察控制台是否还出现 AttributeError: 'NoneType' object has no attribute 'patcher'。如果 IPAdapter 节点可以继续执行并输出条件或图像结果,且 clip_vision_encode 不再因 clip_vision 为空而中断,即可确认问题已经绕过或解决。
参考来源
cubiq/ComfyUI_IPAdapter_plus #63
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


