ComfyUI-Manager 批量卸载节点:10 分钟上手的节点安全清理指南
【免费下载链接】ComfyUI-ManagerComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom nodes of ComfyUI. Furthermore, this extension provides a hub feature and convenience functions to access a wide range of information within ComfyUI.项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager
装了上百个自定义节点之后,custom_nodes目录越堆越厚:启动越来越慢,节点之间动不动互相冲突,删一个节点又怕把整个 Python 环境搞坏。ComfyUI-Manager 的批量卸载节点功能,就是为这种场景准备的——它不只删文件夹,还会按"已知节点 / 未知节点"分别处理,删不掉的文件自动留到下次启动时清理。
下面按五个步骤走一遍:清点、备份、批量卸载、环境修复、结果验证。每一步都给出命令和"出错了怎么办"。
第一步:清点清单,确认要卸载哪些节点
做什么:卸载前先拿到当前节点名单,避免凭记忆操作。
# 详细列表:含启用/禁用状态、作者,方便判断哪些可以下 python cm-cli.py show installed # 只要节点名:批量卸载时直接复制这里的名字 python cm-cli.py simple-show installed注意两点:节点名就是对应的 git 仓库名,大小写要一致;列表里的状态列(ENABLED / DISABLED)能帮你区分"正在用的"和"早就不碰了"的。
异常处理:如果simple-show里根本没看到某个名字,说明它要么没装、要么名字拼错了——别急着卸载,先用show installed全量核对一遍。
第二步:动手前留退路,一行命令备份快照
做什么:批量操作之前,把当前节点组合存成快照文件,出问题可以整体还原。
# 记录当前节点清单,存为备份文件 python cm-cli.py save-snapshot --output pre-uninstall-backup.json异常处理:万一误删了重要节点,执行python cm-cli.py restore-snapshot pre-uninstall-backup.json即可按快照恢复。这是整篇文章里最值钱的一行命令,建议养成"先存快照、再动刀"的习惯。
🧹 第三步:执行批量卸载,单个多个都能下
做什么:uninstall后面直接跟多个节点名,一条命令逐个处理:
# 一次性卸载多个节点,逐个输出处理结果 python cm-cli.py uninstall ComfyUI-Conflict-Node-1 ComfyUI-Conflict-Node-2 ComfyUI-Example-Node每个节点执行完会打印[UNINSTALLED]、[SKIPPED]或ERROR,含义后面第五步细说。
卸载时系统按三种策略分级处理,力度逐档加大:
| 策略等级 | 操作范围 | 典型场景 | 风险 |
|---|---|---|---|
| 安全清理 | 仅节点文件 | 日常维护,保留共享依赖 | 低 |
| 深度清理 | 节点 + 专属依赖 | 彻底移除废弃节点 | 中 |
| 强制清理 | 节点 + 所有相关文件 | 解决严重冲突 | 高 |
真正干活的入口是 glob/manager_core.py 里的unified_uninstall,核心分支逻辑不长,值得看一眼:
def unified_uninstall(self, node_id: str, is_unknown: bool): result = ManagedResult('uninstall') # 防止误删 Manager 自身 if 'comfyui-manager' in node_id.lower(): return result.fail(f"ignored: uninstalling '{node_id}'") if is_unknown: # 未知节点:直接从 active/inactive 列表删除对应目录 ... # 已知节点:依次从 active、nightly inactive、CNR inactive 三处删除 ...几个用文字就能说清的设计:
- 已知 vs 未知节点:CNR(社区节点注册表)收录过的走"已知"路径,按 active、nightly inactive、CNR inactive 三个清单逐一定位删除;没收录的"未知节点"只按目录路径删。
- 自保机制:名字里带
comfyui-manager的请求会被直接拒绝,防止手滑把自己卸了。 - 删不掉就延后删:底层用的
try_rmtree在删除失败时不会报错卡死,而是把路径写进启动脚本,下次 ComfyUI 启动时再删一次——文件被占用的情况就是这么兜住的。
第四步:卸载后修复 Python 环境,别留依赖残羹
做什么:节点删掉了,但它的 Python 包可能还留在环境里。不同节点装过同一库的不同版本,就会形成版本锁定,轻则启动报错,重则其他节点跟着坏——这就是典型的 ComfyUI 节点依赖冲突。
# 重新核对所有节点的依赖声明,补齐并修复被破坏的包 python cm-cli.py restore-dependencies它内部会遍历当前所有未禁用的节点目录执行安装脚本,最后用PIPFixer.fix_broken()做一次整体修补。批量卸载完之后跑一遍,基本可以放心。
异常处理:跑完仍报ImportError,通常是共享依赖被降级了,优先pip show <包名>看版本,再决定重装还是恢复快照。
第五步:验证结果,看懂三种输出
做什么:再查一次清单,确认目标节点已消失:
# 复核:被卸载的节点不应再出现在列表中 python cm-cli.py show installed[cm-cli.py](https://link.gitcode.com/i/c673b096ddbd50cfd332bb670fa73ffd)里uninstall_node的判定逻辑也很直白:
def uninstall_node(node_spec_str: str, is_all: bool = False, cnt_msg: str = ''): spec = node_spec_str.split('@') if len(spec) == 2 and spec[1] == 'unknown': node_name, is_unknown = spec[0], True else: node_name, is_unknown = spec[0], False res = unified_manager.unified_uninstall(node_name, is_unknown) # 按已知节点没找到时,自动按"未知节点"再试一次 if len(spec) == 1 and res.action == 'skip' and not is_unknown: res = unified_manager.unified_uninstall(node_name, True)也就是说:先当已知节点找,找不到就自动降级按未知节点再删一遍。你不用关心节点来路,命令自己会试两条路。
📋 常见问题速查表
| 现象 | 大概率原因 | 处理方式 |
|---|---|---|
输出[SKIPPED] => Not installed | 名字拼错,或已装在其他路径 | 用show installed核对准确名字 |
| 卸载成功,但启动仍报 import 错误 | 残留依赖版本冲突 | 跑restore-dependencies |
| 某节点报删除失败 | 文件正被占用 | 无需处理,已登记为启动时延迟删除,重启 ComfyUI 后生效 |
| 误删了还在用的节点 | 手滑 | restore-snapshot 备份文件整体还原 |
| 想先观察不想真删 | —— | 用python cm-cli.py disable 节点名禁用,比删除温和 |
最后两条建议
- 批量卸载前永远先
save-snapshot。一行命令的备份成本,换来的是出问题时一条命令的整体回滚,这是节点安全清理里性价比最高的操作。 - 不确定要不要删的节点,先
disable跑几天,确认工作流不受影响再uninstall,比删了再恢复省心得多。
关键源码与文档:
- 核心卸载逻辑:glob/manager_core.py
- 命令行接口:cm-cli.py
- 图形界面实现:js/custom-nodes-manager.js
- CLI 官方文档:docs/en/cm-cli.md
【免费下载链接】ComfyUI-ManagerComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom nodes of ComfyUI. Furthermore, this extension provides a hub feature and convenience functions to access a wide range of information within ComfyUI.项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考