简介:这份资源是面向AI绘画与自动化流程爱好者的ComfyUI工作流合集,适合希望借助可视化拖拽界面快速搭建图像生成、风格迁移、内容创作等AI应用的用户,无论是否具备编程基础都能上手。压缩包共收录1310个文件,约113.09MB,其中540个json工作流文件是核心配置,687个ipynb笔记本提供Colab运行示例,另有png、jpg示例图、md说明文档及少量yml、py脚本,便于理解与二次开发。目前已有649人学习下载。合集涵盖从自然语言生成图像、调整图像风格到创建独特艺术作品等场景,每个工作流均预置节点,用户可自由组合定制,并借助配套文档快速掌握操作技巧。模块化设计与网络分享特性,也让艺术家、开发者与研究人员都能找到适配工具,是探索ComfyUI生态的实用起点。1. 拿到一个 ComfyUI 工作流合集压缩包,先别急着双击很多人第一次接触 ComfyUI workflows collection.zip 这类资源,第一反应是解压、拖进界面、点生成,然后对着满屏红框发呆。我见过太多人卡在这一步:节点缺失、模型路径对不上、版本不兼容,最后得出“这合集没用”的结论。其实问题不在工作流本身,而在于你把它当成了一个开箱即用的软件,而它本质上是一堆依赖特定环境、特定模型、特定节点版本的 JSON 描述文件。ComfyUI 工作流合集的价值在于让你跳过从零搭建节点图的阶段,直接复用别人调好的采样参数、ControlNet 组合、LoRA 权重和提示词结构。适合谁?适合已经跑通过至少一个基础文生图流程、能看懂节点连线逻辑、知道 checkpoint 和 VAE 放哪的人。如果你连 ComfyUI 的 models 目录结构都没摸清,这个合集只会让你更混乱。所以第一步不是解压,而是先确认你的 ComfyUI 环境能不能承载这些工作流。2. 拆开压缩包之前,先把运行环境对齐2.1 确认 ComfyUI 本体版本与前端版本工作流 JSON 里有一个字段叫version,它记录的是导出时 ComfyUI 前端的版本号。这个号和你本地安装的版本差距过大时,轻则节点位置错乱,重则直接报Node type not found。常见做法是打开 ComfyUI 根目录下的requirements.txt,看comfyui-frontend-package的版本号,然后和压缩包里随便挑一个工作流 JSON 里的version对比。如果本地是 1.3.x,工作流是 1.6.x,那大概率会缺节点。我一般会先把 ComfyUI 更新到最近一个稳定 tag,再来看工作流。更新命令很简单:# 进入 ComfyUI 根目录 cd /path/to/ComfyUI # 拉取最新代码 git pull # 更新 Python 依赖 pip install -r requirements.txt --upgrade逻辑说明:git pull拉取的是 ComfyUI 主仓库更新,pip install --upgrade确保前端包和自定义节点依赖同步升级。参数上注意,如果你用的是便携版,没有 git 环境,那就手动下载最新压缩包覆盖,但记得备份models和custom_nodes目录。这一步不做,后面所有工作流都可能白搭。2.2 用缺失节点检测脚本批量扫描压缩包里通常有几十个 JSON,一个个打开看缺什么节点效率太低。我一般会写一个短脚本,遍历所有工作流文件,提取type字段,然后和本地custom_nodes里已注册的节点名做差集。下面这个 Python 脚本可以直接用:import json import os import glob # 工作流所在目录 workflow_dir = "./comfyui_workflows" # 本地已安装节点类型集合,这里简化成从 custom_nodes 目录名推断 # 实际使用时建议从 ComfyUI 启动日志里抓取已注册节点列表 installed_nodes = set() for node_dir in os.listdir("./ComfyUI/custom_nodes"): installed_nodes.add(node_dir) missing = {} for filepath in glob.glob(os.path.join(workflow_dir, "*.json")): with open(filepath, "r", encoding="utf-8") as f: try: data = json.load(f) except json.JSONDecodeError: print(f"跳过损坏文件: {filepath}") continue # 遍历所有节点 for node_id, node in data.items(): if isinstance(node, dict) and "type" in node: node_type = node["type"] # 这里只做粗略匹配,实际节点名和目录名不一定一致 if node_type not in installed_nodes: missing.setdefault(node_type, []).append(os.path.basename(filepath)) for node_type, files in sorted(missing.items()): print(f"缺失节点: {node_type},出现在: {', '.join(files[:3])}...")逻辑说明:脚本读取每个 JSON 的节点定义,提取type字段,和custom_nodes目录名做对比。参数上注意,installed_nodes的构建方式比较粗糙,因为节点类型名和目录名不一定相同,更准确的做法是从 ComfyUI 启动日志里解析Import times那段,或者调用/object_infoAPI。但作为快速筛查,这个脚本能帮你把明显缺的节点列出来。跑完以后,你会得到一张缺失清单,接下来就是按清单装节点。2.3 模型文件的目录映射与软链接工作流里引用的模型文件名是固定的,比如sd_xl_base_1.0.safetensors、control_v11p_sd15_canny.pth。你本地不一定有同名文件,但可能有功能相同的另一个版本。常见做法是不改工作流,而是改本地文件名或建软链接。我一般会在models/checkpoints下建一个_workflow_refs目录,把常用模型软链接过去,命名和工作流里保持一致。Linux 下:# 假设本地已有模型在 /data/models/sdxl_base.safetensors # 工作流里引用的是 sd_xl_base_1.0.safetensors ln -s /data/models/sdxl_base.safetensors ./ComfyUI/models/checkpoints/sd_xl_base_1.0.safetensorsWindows 下用mklink或者直接复制改名。逻辑说明:软链接不占额外空间,且工作流加载时按文件名查找,能直接命中。参数上注意,ControlNet、LoRA、VAE 同理,分别放到models/controlnet、models/loras、models/vae。这一步做完,大部分“模型加载失败”的红框会消失。3. 按工作流类型分批导入,别一次全拖进去3.1 识别工作流的功能分类一个合集里通常混着文生图、图生图、局部重绘、ControlNet 姿态控制、IPAdapter 风格迁移、AnimateDiff 视频生成等。全拖进 ComfyUI 界面,浏览器会卡死。我一般先按文件名和 JSON 里的节点特征分类。比如包含AnimateDiffLoader节点的归为视频类,包含IPAdapterApply的归为风格迁移类,只有KSampler和CheckpointLoader的归为基础类。分类后,每次只导入同一类,跑通一个再换下一个。这样出问题时排查范围小,不会互相干扰。3.2 用 API 格式批量转成可执行队列ComfyUI 界面支持直接拖入 JSON,但如果你想批量测试哪些工作流能跑通,手动拖效率太低。常见做法是用 ComfyUI 的/promptAPI,把工作流 JSON 转成 API 格式后提交。API 格式和界面格式的区别在于,API 格式的每个节点是一个独立对象,inputs里直接写值,没有widgets_values数组。转换脚本如下:import json import requests # 读取界面格式的工作流 with open("./workflow_ui.json", "r", encoding="utf-8") as f: ui_data = json.load(f) # 转换为 API 格式:提取每个节点的 inputs api_data = {} for node_id, node in ui_data.items(): if not isinstance(node, dict) or "type" not in node: continue inputs = {} if "inputs" in node: for inp in node["inputs"]: inputs[inp["name"]] = inp.get("link", None) if "widgets_values" in node: # 这里需要根据节点类型映射 widget 名称,简化处理直接按顺序塞 # 实际使用时建议参考 ComfyUI 的 /object_info 返回的 input 顺序 pass api_data[node_id] = { "class_type": node["type"], "inputs": inputs } # 提交到本地 ComfyUI resp = requests.post("http://127.0.0.1:8188/prompt", json={"prompt": api_data}) print(resp.status_code, resp.text)逻辑说明:这段代码只是演示转换思路,实际转换需要处理widgets_values到具体输入名的映射,最稳妥的方式是调用/object_info获取每个节点的输入定义,再按顺序填充。参数上注意,/prompt接口返回 200 不代表执行成功,还要看prompt_id对应的历史记录里有没有status: success。批量测试时,建议加一个延时,避免队列堆积。3.3 跑通第一个工作流后的参数检查点第一个工作流能出图后,别急着换下一个。先检查三个地方:采样器步数、CFG 值、种子。很多合集里的工作流用的是固定种子,你跑出来和预览图不一样,不是工作流坏了,是种子不同。把KSampler节点的seed改成random,再跑一次。另外看steps和cfg,有些工作流为了追求细节把步数拉到 50 以上,CFG 设到 12,这在低显存卡上直接爆显存。我一般会把步数降到 25 到 30,CFG 降到 7 到 8,先保证能跑完,再逐步往上加。这一步的取舍是:先求通,再求好。4. 避坑:工作流合集里最常见的五类翻车4.1 节点版本不匹配导致“节点存在但输入对不上”现象:导入工作流后,节点显示正常,但连线全断,或者某个输入框变成红色。原因:你装的节点版本和工作流导出时的版本不一致,输入名称改了。比如某个 ControlNet 应用节点,旧版叫image,新版叫image_input。解决:打开custom_nodes下对应节点的__init__.py或nodes.py,搜INPUT_TYPES,看当前版本的输入名,然后手动在工作流 JSON 里替换。批量替换可以用文本编辑器,但注意别改错层级。4.2 模型哈希校验失败导致加载中断现象:控制台报SafetensorsError: header too large或model hash mismatch。原因:下载的模型文件不完整,或者工作流里指定的模型和你本地文件虽然同名但内容不同。解决:用sha256sum对比文件哈希,或者直接删掉重下。更隐蔽的情况是,工作流里引用了lora但你没装,ComfyUI 不会报错,只是静默忽略,出图效果和预览图差很远。所以跑之前先看控制台有没有lora not found的警告。4.3 显存溢出发生在“看起来很小”的节点上现象:跑图到一半卡住,控制台报CUDA out of memory,但你看节点图里没有大模型。原因:某些后处理节点,比如Image Upscale with Model,会加载一个额外的放大模型,显存占用瞬间翻倍。解决:在KSampler之后先接VAEDecode,把 latent 转成像素图,再做放大。或者把放大节点放到最后,用--lowvram启动 ComfyUI。我一般会在启动脚本里加--lowvram,牺牲一点速度换稳定。4.4 工作流里的绝对路径在你机器上不存在现象:节点报File not found,路径是D:\workflows\models\xxx。原因:导出工作流的人用了绝对路径,而 ComfyUI 的模型加载节点通常只认相对路径或文件名。解决:把节点里的路径改成纯文件名,比如sd_xl_base_1.0.safetensors,然后确保这个文件在models/checkpoints下。如果工作流里大量用了绝对路径,可以用脚本批量替换成文件名。4.5 批量导入导致前端崩溃现象:一次性拖入 20 个 JSON,浏览器标签页无响应。原因:ComfyUI 前端每个工作流都要渲染节点图,内存占用叠加。解决:一次只导入一个,跑完保存图片后再导入下一个。如果非要批量,用 API 方式提交,不走前端渲染。我一般会把合集分成几个子目录,每次只打开一个子目录里的文件。5. 把合集变成自己的工具箱:参数预设与节点复用5.1 提取高频参数组合做成预设跑通十几个工作流后,你会发现某些参数反复出现,比如steps: 30, cfg: 7.5, sampler: dpmpp_2m, scheduler: karras。与其每次手动改,不如在 ComfyUI 里建一个presets.json,或者用KSampler节点的control_after_generate功能。更彻底的做法是,把常用参数写成一个自定义节点,输入图片和提示词,自动套用预设。下面是一个极简的自定义节点示例:class MyPresetSampler: @classmethod def INPUT_TYPES(cls): return { "required": { "model": ("MODEL",), "positive": ("CONDITIONING",), "negative": ("CONDITIONING",), "latent": ("LATENT",), } } RETURN_TYPES = ("LATENT",) FUNCTION = "sample" CATEGORY = "my_tools" def sample(self, model, positive, negative, latent): # 这里不实际实现采样,只是演示预设参数注入 # 实际应调用 comfy.sample.sample 并传入固定参数 return (latent,)逻辑说明:这个节点把采样参数固定下来,你只需要连入模型、正负提示和 latent。参数上,steps、cfg、sampler_name都写死在sample方法里。这样你从合集里学到的调参经验就固化成了自己的工具,不用每次翻 JSON。5.2 用 Git 管理你的工作流修改从合集里拿到的原始 JSON 不要直接改,先复制一份到自己的目录,然后用 Git 管理。每次调整参数或替换节点,都提交一次。这样当你发现某个改动导致出图变差时,可以回滚。我一般会在工作流目录下建一个README.md,记录每个工作流的来源、依赖节点、模型清单和跑通日期。这个习惯能帮你省下大量“上次那个能跑的工作流是哪版”的后悔药。5.3 验证工作流是否真正可复现的检查清单最后,如果你要把某个工作流分享给别人,或者过几个月自己再用,先过一遍这个清单:节点是否全部来自公开仓库、模型文件名是否通用、有没有硬编码的绝对路径、种子是否随机、显存占用是否在 8G 以内。全部通过,这个工作流才算真正属于你。我自己的习惯是,每跑通一个,就把它和对应的模型清单一起打包到一个以日期命名的文件夹里,下次直接拿这个文件夹,不用再翻原始合集。希望帮到你。本文还有配套的精品资源,点击获取
简介:这份资源是面向AI绘画与自动化流程爱好者的ComfyUI工作流合集,适合希望借助可视化拖拽界面快速搭建图像生成、风格迁移、内容创作等AI应用的用户,无论是否具备编程基础都能上手。压缩包共收录1310个文件,约113.09MB,其中540个json工作流文件是核心配置,687个ipynb笔记本提供Colab运行示例,另有png、jpg示例图、md说明文档及少量yml、py脚本,便于理解与二次开发。目前已有649人学习下载。合集涵盖从自然语言生成图像、调整图像风格到创建独特艺术作品等场景,每个工作流均预置节点,用户可自由组合定制,并借助配套文档快速掌握操作技巧。模块化设计与网络分享特性,也让艺术家、开发者与研究人员都能找到适配工具,是探索ComfyUI生态的实用起点。1. 拿到一个 ComfyUI 工作流合集压缩包,先别急着双击很多人第一次接触 ComfyUI workflows collection.zip 这类资源,第一反应是解压、拖进界面、点生成,然后对着满屏红框发呆。我见过太多人卡在这一步:节点缺失、模型路径对不上、版本不兼容,最后得出“这合集没用”的结论。其实问题不在工作流本身,而在于你把它当成了一个开箱即用的软件,而它本质上是一堆依赖特定环境、特定模型、特定节点版本的 JSON 描述文件。ComfyUI 工作流合集的价值在于让你跳过从零搭建节点图的阶段,直接复用别人调好的采样参数、ControlNet 组合、LoRA 权重和提示词结构。适合谁?适合已经跑通过至少一个基础文生图流程、能看懂节点连线逻辑、知道 checkpoint 和 VAE 放哪的人。如果你连 ComfyUI 的 models 目录结构都没摸清,这个合集只会让你更混乱。所以第一步不是解压,而是先确认你的 ComfyUI 环境能不能承载这些工作流。2. 拆开压缩包之前,先把运行环境对齐2.1 确认 ComfyUI 本体版本与前端版本工作流 JSON 里有一个字段叫version,它记录的是导出时 ComfyUI 前端的版本号。这个号和你本地安装的版本差距过大时,轻则节点位置错乱,重则直接报Node type not found。常见做法是打开 ComfyUI 根目录下的requirements.txt,看comfyui-frontend-package的版本号,然后和压缩包里随便挑一个工作流 JSON 里的version对比。如果本地是 1.3.x,工作流是 1.6.x,那大概率会缺节点。我一般会先把 ComfyUI 更新到最近一个稳定 tag,再来看工作流。更新命令很简单:# 进入 ComfyUI 根目录 cd /path/to/ComfyUI # 拉取最新代码 git pull # 更新 Python 依赖 pip install -r requirements.txt --upgrade逻辑说明:git pull拉取的是 ComfyUI 主仓库更新,pip install --upgrade确保前端包和自定义节点依赖同步升级。参数上注意,如果你用的是便携版,没有 git 环境,那就手动下载最新压缩包覆盖,但记得备份models和custom_nodes目录。这一步不做,后面所有工作流都可能白搭。2.2 用缺失节点检测脚本批量扫描压缩包里通常有几十个 JSON,一个个打开看缺什么节点效率太低。我一般会写一个短脚本,遍历所有工作流文件,提取type字段,然后和本地custom_nodes里已注册的节点名做差集。下面这个 Python 脚本可以直接用:import json import os import glob # 工作流所在目录 workflow_dir = "./comfyui_workflows" # 本地已安装节点类型集合,这里简化成从 custom_nodes 目录名推断 # 实际使用时建议从 ComfyUI 启动日志里抓取已注册节点列表 installed_nodes = set() for node_dir in os.listdir("./ComfyUI/custom_nodes"): installed_nodes.add(node_dir) missing = {} for filepath in glob.glob(os.path.join(workflow_dir, "*.json")): with open(filepath, "r", encoding="utf-8") as f: try: data = json.load(f) except json.JSONDecodeError: print(f"跳过损坏文件: {filepath}") continue # 遍历所有节点 for node_id, node in data.items(): if isinstance(node, dict) and "type" in node: node_type = node["type"] # 这里只做粗略匹配,实际节点名和目录名不一定一致 if node_type not in installed_nodes: missing.setdefault(node_type, []).append(os.path.basename(filepath)) for node_type, files in sorted(missing.items()): print(f"缺失节点: {node_type},出现在: {', '.join(files[:3])}...")逻辑说明:脚本读取每个 JSON 的节点定义,提取type字段,和custom_nodes目录名做对比。参数上注意,installed_nodes的构建方式比较粗糙,因为节点类型名和目录名不一定相同,更准确的做法是从 ComfyUI 启动日志里解析Import times那段,或者调用/object_infoAPI。但作为快速筛查,这个脚本能帮你把明显缺的节点列出来。跑完以后,你会得到一张缺失清单,接下来就是按清单装节点。2.3 模型文件的目录映射与软链接工作流里引用的模型文件名是固定的,比如sd_xl_base_1.0.safetensors、control_v11p_sd15_canny.pth。你本地不一定有同名文件,但可能有功能相同的另一个版本。常见做法是不改工作流,而是改本地文件名或建软链接。我一般会在models/checkpoints下建一个_workflow_refs目录,把常用模型软链接过去,命名和工作流里保持一致。Linux 下:# 假设本地已有模型在 /data/models/sdxl_base.safetensors # 工作流里引用的是 sd_xl_base_1.0.safetensors ln -s /data/models/sdxl_base.safetensors ./ComfyUI/models/checkpoints/sd_xl_base_1.0.safetensorsWindows 下用mklink或者直接复制改名。逻辑说明:软链接不占额外空间,且工作流加载时按文件名查找,能直接命中。参数上注意,ControlNet、LoRA、VAE 同理,分别放到models/controlnet、models/loras、models/vae。这一步做完,大部分“模型加载失败”的红框会消失。3. 按工作流类型分批导入,别一次全拖进去3.1 识别工作流的功能分类一个合集里通常混着文生图、图生图、局部重绘、ControlNet 姿态控制、IPAdapter 风格迁移、AnimateDiff 视频生成等。全拖进 ComfyUI 界面,浏览器会卡死。我一般先按文件名和 JSON 里的节点特征分类。比如包含AnimateDiffLoader节点的归为视频类,包含IPAdapterApply的归为风格迁移类,只有KSampler和CheckpointLoader的归为基础类。分类后,每次只导入同一类,跑通一个再换下一个。这样出问题时排查范围小,不会互相干扰。3.2 用 API 格式批量转成可执行队列ComfyUI 界面支持直接拖入 JSON,但如果你想批量测试哪些工作流能跑通,手动拖效率太低。常见做法是用 ComfyUI 的/promptAPI,把工作流 JSON 转成 API 格式后提交。API 格式和界面格式的区别在于,API 格式的每个节点是一个独立对象,inputs里直接写值,没有widgets_values数组。转换脚本如下:import json import requests # 读取界面格式的工作流 with open("./workflow_ui.json", "r", encoding="utf-8") as f: ui_data = json.load(f) # 转换为 API 格式:提取每个节点的 inputs api_data = {} for node_id, node in ui_data.items(): if not isinstance(node, dict) or "type" not in node: continue inputs = {} if "inputs" in node: for inp in node["inputs"]: inputs[inp["name"]] = inp.get("link", None) if "widgets_values" in node: # 这里需要根据节点类型映射 widget 名称,简化处理直接按顺序塞 # 实际使用时建议参考 ComfyUI 的 /object_info 返回的 input 顺序 pass api_data[node_id] = { "class_type": node["type"], "inputs": inputs } # 提交到本地 ComfyUI resp = requests.post("http://127.0.0.1:8188/prompt", json={"prompt": api_data}) print(resp.status_code, resp.text)逻辑说明:这段代码只是演示转换思路,实际转换需要处理widgets_values到具体输入名的映射,最稳妥的方式是调用/object_info获取每个节点的输入定义,再按顺序填充。参数上注意,/prompt接口返回 200 不代表执行成功,还要看prompt_id对应的历史记录里有没有status: success。批量测试时,建议加一个延时,避免队列堆积。3.3 跑通第一个工作流后的参数检查点第一个工作流能出图后,别急着换下一个。先检查三个地方:采样器步数、CFG 值、种子。很多合集里的工作流用的是固定种子,你跑出来和预览图不一样,不是工作流坏了,是种子不同。把KSampler节点的seed改成random,再跑一次。另外看steps和cfg,有些工作流为了追求细节把步数拉到 50 以上,CFG 设到 12,这在低显存卡上直接爆显存。我一般会把步数降到 25 到 30,CFG 降到 7 到 8,先保证能跑完,再逐步往上加。这一步的取舍是:先求通,再求好。4. 避坑:工作流合集里最常见的五类翻车4.1 节点版本不匹配导致“节点存在但输入对不上”现象:导入工作流后,节点显示正常,但连线全断,或者某个输入框变成红色。原因:你装的节点版本和工作流导出时的版本不一致,输入名称改了。比如某个 ControlNet 应用节点,旧版叫image,新版叫image_input。解决:打开custom_nodes下对应节点的__init__.py或nodes.py,搜INPUT_TYPES,看当前版本的输入名,然后手动在工作流 JSON 里替换。批量替换可以用文本编辑器,但注意别改错层级。4.2 模型哈希校验失败导致加载中断现象:控制台报SafetensorsError: header too large或model hash mismatch。原因:下载的模型文件不完整,或者工作流里指定的模型和你本地文件虽然同名但内容不同。解决:用sha256sum对比文件哈希,或者直接删掉重下。更隐蔽的情况是,工作流里引用了lora但你没装,ComfyUI 不会报错,只是静默忽略,出图效果和预览图差很远。所以跑之前先看控制台有没有lora not found的警告。4.3 显存溢出发生在“看起来很小”的节点上现象:跑图到一半卡住,控制台报CUDA out of memory,但你看节点图里没有大模型。原因:某些后处理节点,比如Image Upscale with Model,会加载一个额外的放大模型,显存占用瞬间翻倍。解决:在KSampler之后先接VAEDecode,把 latent 转成像素图,再做放大。或者把放大节点放到最后,用--lowvram启动 ComfyUI。我一般会在启动脚本里加--lowvram,牺牲一点速度换稳定。4.4 工作流里的绝对路径在你机器上不存在现象:节点报File not found,路径是D:\workflows\models\xxx。原因:导出工作流的人用了绝对路径,而 ComfyUI 的模型加载节点通常只认相对路径或文件名。解决:把节点里的路径改成纯文件名,比如sd_xl_base_1.0.safetensors,然后确保这个文件在models/checkpoints下。如果工作流里大量用了绝对路径,可以用脚本批量替换成文件名。4.5 批量导入导致前端崩溃现象:一次性拖入 20 个 JSON,浏览器标签页无响应。原因:ComfyUI 前端每个工作流都要渲染节点图,内存占用叠加。解决:一次只导入一个,跑完保存图片后再导入下一个。如果非要批量,用 API 方式提交,不走前端渲染。我一般会把合集分成几个子目录,每次只打开一个子目录里的文件。5. 把合集变成自己的工具箱:参数预设与节点复用5.1 提取高频参数组合做成预设跑通十几个工作流后,你会发现某些参数反复出现,比如steps: 30, cfg: 7.5, sampler: dpmpp_2m, scheduler: karras。与其每次手动改,不如在 ComfyUI 里建一个presets.json,或者用KSampler节点的control_after_generate功能。更彻底的做法是,把常用参数写成一个自定义节点,输入图片和提示词,自动套用预设。下面是一个极简的自定义节点示例:class MyPresetSampler: @classmethod def INPUT_TYPES(cls): return { "required": { "model": ("MODEL",), "positive": ("CONDITIONING",), "negative": ("CONDITIONING",), "latent": ("LATENT",), } } RETURN_TYPES = ("LATENT",) FUNCTION = "sample" CATEGORY = "my_tools" def sample(self, model, positive, negative, latent): # 这里不实际实现采样,只是演示预设参数注入 # 实际应调用 comfy.sample.sample 并传入固定参数 return (latent,)逻辑说明:这个节点把采样参数固定下来,你只需要连入模型、正负提示和 latent。参数上,steps、cfg、sampler_name都写死在sample方法里。这样你从合集里学到的调参经验就固化成了自己的工具,不用每次翻 JSON。5.2 用 Git 管理你的工作流修改从合集里拿到的原始 JSON 不要直接改,先复制一份到自己的目录,然后用 Git 管理。每次调整参数或替换节点,都提交一次。这样当你发现某个改动导致出图变差时,可以回滚。我一般会在工作流目录下建一个README.md,记录每个工作流的来源、依赖节点、模型清单和跑通日期。这个习惯能帮你省下大量“上次那个能跑的工作流是哪版”的后悔药。5.3 验证工作流是否真正可复现的检查清单最后,如果你要把某个工作流分享给别人,或者过几个月自己再用,先过一遍这个清单:节点是否全部来自公开仓库、模型文件名是否通用、有没有硬编码的绝对路径、种子是否随机、显存占用是否在 8G 以内。全部通过,这个工作流才算真正属于你。我自己的习惯是,每跑通一个,就把它和对应的模型清单一起打包到一个以日期命名的文件夹里,下次直接拿这个文件夹,不用再翻原始合集。希望帮到你。本文还有配套的精品资源,点击获取