目录

ComfyUI v0.36.0 升级到 v0.37.4:Ubuntu 源码安装备份、git tag 锁定、依赖同步与回退 SOP

不追踪 master、锁定明确 tag、同步 requirements,再用真实工作流验收的生产环境升级 SOP

目录

Ubuntu 上将 ComfyUI 从 v0.36.0 升级到 v0.37.4:备份、稳定标签、依赖、GPU 与工作流验收全流程

适用环境:Ubuntu、源码安装的 ComfyUI、独立 Python venv、NVIDIA GPU、模型外置到 /data/models、需要保留 custom nodes 与既有工作流的本地生产环境。

本文实测环境:Ubuntu 26.04、NVIDIA GeForce RTX 4070 12GB、系统内存约 63GB、Python 3.13.15、PyTorch 2.13.0+cu130、ComfyUI 从 v0.36.0 升级至 v0.37.4。

升级原则:不追踪未打版本标签的 master 开发头;先停止服务、先做完整可验证备份、锁定明确的版本 tag、同步该版本 requirements、最后用已有真实工作流验收。


一、为什么不要“直接 git pull”

源码安装的 ComfyUI 一般在本地是一个 Git 仓库。很多教程会直接写:

git pull

这条命令并不总是错误,但它有一个重要隐患:如果当前分支跟踪的是 master,它会把代码直接推进到远程 origin/master 的最新提交。

master 是持续变化的开发主线,其中可能包含:

  • 尚未经过你本地 custom nodes 验证的新接口;
  • 尚未配套发布说明的模型或节点变化;
  • 正在开发中的前端、资产目录、数据库迁移逻辑;
  • 有可能影响第三方节点、Agent 调用或工作流 JSON 的改动。

对于“刚装好、随时可以重装”的试玩环境,可以追踪 master;但对于已有以下能力的生产型环境,不建议这么做:

Z-Image-Turbo 文生图
Qwen Image Edit / Rapid 图像编辑
SeedVR2 7B INT8 ConvRot 放大
ComfyUI Manager
ComfyUI-GGUF
自定义节点
Hermes / OpenClaw 通过本机 API 调用 ComfyUI

更稳妥的策略是:

从官方远程仓库获取 tags,选择明确的 vX.Y.Z 版本标签,并创建一个本地固定分支运行它。

这样可以实现:

版本明确
可回退
可复现
不追踪持续变化的 master
升级失败时可定位问题

二、版本概念:GitHub Release、Git Tag 与 master

升级前最容易混淆的是三个概念。

概念例如含义本地生产环境是否使用
GitHub Release 页面GitHub 右侧显示 v0.37.0 Latest官方创建的发布说明页面可以作为参考,但不是唯一版本信息源
Git Tagv0.37.0、v0.37.1、v0.37.4官方仓库中固定到具体 commit 的版本点应优先使用
masterorigin/master 最新 commit持续开发主线不作为稳定生产环境升级目标

本次升级中,GitHub 页面右侧显示:

Releases
v0.37.0 Latest

而本地执行:

git fetch --tags --prune origin
git tag --sort=-version:refname | head -15

从官方远程仓库获取到了:

v0.37.4
v0.37.3
v0.37.2
v0.37.1
v0.37.0
v0.36.0

本次最终选择的是:

v0.37.4

原因是它是官方远程仓库实际存在的、比 v0.37.0 更新的明确版本 tag。它不是未打版本点的 master commit。

实用判断规则

以后只要记住:

明确存在的 vX.Y.Z tag
  → 可作为固定、可备份、可回退的升级目标

GitHub Releases 的 Latest
  → 官方发布说明页的最新条目,不一定列出每个 patch tag

origin/master 最新 commit
  → 持续开发代码;生产环境不要直接追踪

三、本次实际环境

1. 硬件与核心软件

GPU:NVIDIA GeForce RTX 4070
显存:11872 MB(12GB)
RAM:63027 MB(约 63GB)
系统:Ubuntu 26.04
Python:3.13.15
PyTorch:2.13.0+cu130
TorchVision:0.28.0+cu130
TorchAudio:2.11.0+cu130

2. ComfyUI 目录与模型布局

ComfyUI 根目录:/data/comfyui
Python venv:/data/comfyui/venv
模型根目录:/data/models
ComfyUI API:http://127.0.0.1:8188

模型路径通过:

/data/comfyui/extra_model_paths.yaml

映射到:

/data/models/checkpoints
/data/models/loras
/data/models/vae
/data/models/text_encoders
/data/models/diffusion_models
/data/models/controlnet
/data/models/upscale_models

这意味着:升级 ComfyUI 源码和 venv,不会自动删除或移动 /data/models 中的大模型资产。

如果你还没装 ComfyUI,先看 [[在 Linux 系统上安装 ComfyUI]]。

3. 升级前版本

ComfyUI:v0.36.0
当前 commit:ee71d5c4
当前本地分支:comfyui-v0.36.0

这是上一轮 0.32.0 → 0.36.0 升级的延续,完整 SOP 见 [[Ubuntu 上将 ComfyUI 从 0.32.0 升级到 0.36.0:一份可回退的实操记录]]。


四、升级前必须停止服务

升级源码、依赖、数据库或前端时,不能让 ComfyUI 继续占用文件和端口。

如果 ComfyUI 正在一个终端前台运行,切换到该终端后按:

Ctrl+C

然后确认端口已释放:

ss -lntp | grep 8188

正确状态是:

没有任何输出

这代表 127.0.0.1:8188 当前没有进程监听。

如果仍有输出,不要立刻执行 kill -9。先查看具体进程:

ps aux | grep '[m]ain.py'

先确认它是否确实是旧 ComfyUI,再决定如何正常停止。


五、升级前完整备份:时间戳快照与 commit 验证

1. 不要重用旧备份目录

一个常见错误是重复执行:

cp -r comfyui comfyui_2026-08-13_backup

如果 comfyui_2026-08-13_backup 已经存在,cp 会继续向这个旧目录内部复制,可能形成:

comfyui_2026-08-13_backup/comfyui/

重复运行后,它可能尝试覆盖旧 .git/objects 内文件,从而出现大量:

权限不够

这通常不代表当前 /data/comfyui 损坏;而是目标备份目录已存在,不适合作为新的快照目标。

2. 正确做法:每次都用精确时间戳

本次升级前执行:

cd /data

STAMP=$(date +%F_%H%M%S)
BACKUP="/data/comfyui_${STAMP}_pre_upgrade"

mkdir -p "$BACKUP"
cp -a /data/comfyui "$BACKUP/"

本次实际生成的备份目录:

/data/comfyui_2026-09-27_093004_pre_upgrade/comfyui

这里使用:

cp -a

而不是简单的 cp -r。

-a 等同于 archive 模式,会尽可能保留:

  • 权限;
  • 时间戳;
  • 符号链接;
  • 目录层级;
  • 文件属性。

3. 验证备份不可省略

备份命令没有报错,不等于备份一定可用。必须验证关键文件与目录:

echo "备份目录:$BACKUP"

test -f "$BACKUP/comfyui/main.py" && echo "main.py:OK"
test -f "$BACKUP/comfyui/extra_model_paths.yaml" && echo "模型路径配置:OK"
test -d "$BACKUP/comfyui/custom_nodes" && echo "custom_nodes:OK"
test -d "$BACKUP/comfyui/user" && echo "user 配置目录:OK"
test -d "$BACKUP/comfyui/venv" && echo "venv:OK"

本次实际得到:

main.py:OK
模型路径配置:OK
custom_nodes:OK
user 配置目录:OK
venv:OK

4. 验证源码提交一致

继续执行:

echo "当前源码 commit:"
git -C /data/comfyui rev-parse --short HEAD

echo "备份源码 commit:"
git -C "$BACKUP/comfyui" rev-parse --short HEAD

本次输出:

当前源码 commit:
ee71d5c4

备份源码 commit:
ee71d5c4

两者一致,说明备份准确保存了升级前的源码状态。


六、检查本地状态与远程版本

升级前备份流水线:停止服务、时间戳完整备份、验证关键文件与Git commit、cp -a 保留项

进入源码目录:

cd /data/comfyui

执行:

git status --short
git fetch --tags --prune origin
git status -sb
git tag --sort=-version:refname | head -15

本次关键输出:

?? .pydeps/
?? comfyui.db

以及:

v0.37.4
v0.37.3
v0.37.2
v0.37.1
v0.37.0
v0.36.0

.pydeps/ 与 comfyui.db 应如何处理

它们是未跟踪的本地内容:

.pydeps/
comfyui.db

处理原则:

保留
不要 git add
不要 git clean -fd
不要 rm -rf
不要为了 Git 状态“干净”而删除

其中:

  • .pydeps/ 通常涉及本地 Python 依赖或缓存;
  • comfyui.db 是本地 SQLite 数据库,可能承载资产目录、缓存或其他本地状态。

它们不会阻止切换到新 tag;并且已经包含在刚刚创建的完整备份中。


七、切换到 v0.37.4:固定 tag 分支

先设置变量:

TARGET="v0.37.4"
BRANCH="comfyui-$TARGET"

随后执行一个可重复运行的分支切换脚本:

if git show-ref --verify --quiet "refs/heads/$BRANCH"; then
  git switch "$BRANCH"
else
  git switch -c "$BRANCH" "$TARGET"
fi

首次执行时,输出:

切换到一个新分支 'comfyui-v0.37.4'

这表示:

基于 v0.37.4 tag
创建本地分支 comfyui-v0.37.4
并切换到该分支

再次执行时,因为本地分支已存在,会直接切换该分支,不会重复创建。

验证切换成功

git status -sb
git describe --tags --always

本次输出:

## comfyui-v0.37.4
?? .pydeps/
?? comfyui.db
v0.37.4

这就是正确状态。


八、更新 v0.37.4 对应依赖

1. 只用 ComfyUI 自己的 venv

绝不能用系统全局 pip,也不能把依赖安装到其他 Python 环境。必须使用:

/data/comfyui/venv/bin/python

执行:

/data/comfyui/venv/bin/python -m pip install -r requirements.txt

本次成功更新了:

comfy-kitchen:0.2.34 → 0.2.35
comfy-aimdo:0.5.3 → 0.5.5
comfyui-workflow-templates:0.11.62 → 0.11.69
comfyui-workflow-templates-core:0.3.350 → 0.3.360
comfyui-workflow-templates-json:0.1.85 → 0.1.95
comfyui-embedded-docs:0.5.11 → 0.5.12
comfyui-workflow-templates-media-assets-01:0.1.46 → 0.1.48
新增 comfyui-workflow-templates-media-assets-02:0.1.5

2. 同步 Manager 依赖

执行:

/data/comfyui/venv/bin/python -m pip install -r manager_requirements.txt

本次输出表明:

comfyui_manager==4.2.2 已满足

无需为了“看起来更新”而手动升级 Manager。


九、为什么本次不升级 Python、PyTorch、CUDA、TorchVision、TorchAudio

GPU 升级决策树:ComfyUI 源码升级不等于 GPU 基础栈升级,只有明确报错或新模型要求时才升级 torch 三件套

本次升级过程中,requirements 输出表明以下核心组件已经满足需求:

Python:3.13.15
PyTorch:2.13.0+cu130
TorchVision:0.28.0+cu130
TorchAudio:2.11.0+cu130

因此,本次没有主动升级:

Python
PyTorch
TorchVision
TorchAudio
系统 CUDA Toolkit
NVIDIA 驱动

这是正确的。

1. ComfyUI 源码升级,不等于 GPU 基础栈必须升级

日常升级 ComfyUI 的正确链路通常是:

切换源码版本 tag
→ pip install -r requirements.txt
→ pip install -r manager_requirements.txt
→ 启动并验证工作流

而不是:

升级 ComfyUI
→ 强制升级 Python
→ 强制升级 Torch
→ 强制升级 CUDA
→ 强制升级驱动

后者会把一次普通应用升级,变成一次高风险 GPU 推理基础栈重装。

2. “CUDA”要分成两层

NVIDIA 驱动
        ↓
PyTorch wheel 自带 CUDA runtime,例如 cu130
        ↓
ComfyUI / Kitchen / AIMDO / 模型 / 节点

当前使用的:

torch 2.13.0+cu130

已经包含它所需的 CUDA 13.0 runtime 组件。日常 ComfyUI 推理通常不依赖单独升级系统层 CUDA Toolkit。

3. 什么时候才应该升级 PyTorch / CUDA / 驱动

只有出现以下任一明确理由才考虑:

  1. ComfyUI 启动报出:

    PyTorch version too old
    CUDA version is not supported
    RuntimeError: operator ... does not exist
  2. 必须使用的新节点或模型明确要求:

    requires PyTorch >= X.Y
    requires CUDA >= X.Y
  3. 发生稳定可复现的 GPU 问题,例如:

    CUDA illegal memory access
    GPU repeated crash
    unsupported CUDA kernel
    torch.compile failure
  4. 官方 requirements 明确将 Torch 最低版本抬高,现有环境无法满足。

  5. NVIDIA 驱动版本不满足目标 PyTorch CUDA wheel 的最低要求。

即使将来需要升级,也应始终把以下三个包视为一个组合:

torch
torchvision
torchaudio

不要单独更新其中任何一个。


十、启动 v0.37.4

依赖更新完成后执行:

cd /data/comfyui

/data/comfyui/venv/bin/python main.py \
  --listen 127.0.0.1 \
  --port 8188 \
  --enable-manager

关键启动日志

本次启动成功确认:

ComfyUI version: 0.37.4
comfy-aimdo version: 0.5.5
comfy-kitchen version: 0.2.35
comfyui-frontend-package version: 1.52.7
comfyui-workflow-templates version: 0.11.69
comfyui-embedded-docs version: 0.5.12

GPU 与显存策略正常:

Total VRAM 11872 MB, total RAM 63027 MB
pytorch version: 2.13.0+cu130
Device: cuda:0 NVIDIA GeForce RTX 4070 : cudaMallocAsync
Using async weight offloading with 2 streams
Enabled pinned memory 54835
DynamicVRAM support detected and enabled

ComfyUI API 正常启动:

To see the GUI go to: http://127.0.0.1:8188

浏览器打开:

http://127.0.0.1:8188

即可进入升级后的界面。


十一、启动警告怎么判断:可忽略 vs 必须排查

启动警告分类对照:可忽略的 matrix-nio 缺失与 OpenGL_accelerate 提示,和必须排查的 CUDA 报错、OOM、节点导入失败

升级后日志并不等于“零 warning”。关键是要分辨:什么是可忽略提示,什么是必须停止排查的错误。

1. Matrix 分享功能未安装

The matrix sharing feature has been disabled because the matrix-nio dependency is not installed.

含义:ComfyUI Manager 的 Matrix 分享功能不可用。

处理:

不使用 Matrix,就不安装 matrix-nio。

不影响:

出图
模型下载
Manager
自定义节点
API
Hermes / OpenClaw

2. OpenGL accelerate 提示

No OpenGL_accelerate module loaded: Acceleration disabled

这是 PyOpenGL 可选加速提示,不等于:

CUDA 不可用
GPU 不可用
模型推理没有加速

只要日志里有:

Device: cuda:0 NVIDIA GeForce RTX 4070
DynamicVRAM support detected and enabled

CUDA 生成链就正常。不要为了消除一条日志而重装 Torch、CUDA 或 Python。

3. SenseNova 自定义节点警告

本次出现:

image_gen_indicators is part of Qwen3Model.forward's signature, but not documented
indexes is part of Qwen3Model.forward's signature, but not documented
FutureWarning: torch.cuda.amp.autocast(...) is deprecated

来源:

/data/custom_nodes/sensenova_u1_rebel

它们是第三方节点的文档与 API 弃用警告。因为日志中节点成功导入:

0.2 seconds: /data/custom_nodes/sensenova_u1_rebel

所以当前不需要修改节点源码。

4. Triton 显示 disabled

Found comfy_kitchen backend triton: available True, disabled True

这不等于 ComfyUI 失败。当前 CUDA backend 是:

available: True
disabled: False

并且包含关键能力:

int8_tensorwise
convrot_w4a4
dequantize_int8_convrot_weight

你的 INT8 ConvRot 工作流实际运行成功,因此不需要为 Triton disabled 单独折腾环境。


十二、升级后的真实工作流验收:Z-Image、Qwen 编辑、SeedVR2

工作流验收流程:Z-Image-Turbo 文生图、Qwen 图像编辑、SeedVR2 INT8 ConvRot 放大、Hermes OpenClaw API smoke test

“服务启动成功”只是最低标准。真正的验收必须执行你实际长期会用的工作流。

本次验收顺序:

Z-Image-Turbo
→ Qwen Image Edit / Rapid
→ SeedVR2 7B INT8 ConvRot
→ Hermes / OpenClaw API smoke test

1. Z-Image-Turbo:通过

日志显示:

Model storage policy: fast_disk=True
paths=['/data/models/diffusion_models/z_image_turbo_bf16.safetensors']

Model Lumina2 prepared for dynamic VRAM loading. 11738MB Staged.
Prompt executed in 20.74 seconds

结论:

Z-Image-Turbo 正常加载
模型来自 /data/models
DynamicVRAM 正常
fast_disk 策略生效
RTX 4070 12GB 正常完成推理

2. Qwen Image Edit / Rapid:通过

日志关键部分:

Using mmproj 'Qwen2.5-VL-7B-Instruct-mmproj-BF16.gguf'
for text encoder 'Qwen2.5-VL-7B-Instruct-UD-Q4_K_XL.gguf'

Requested to load QwenImageTEModel_
loaded completely

Requested to load QwenImage
loaded partially
...
100%|...| 40/40
Prompt executed in 00:10:03

结论:

GGUF 模型正常加载
mmproj 自动匹配成功
Qwen2.5-VL 文本编码器正常
CPU/GPU 卸载正常
Qwen Image 编辑任务完整完成
没有 OOM

为什么这次用了约 10 分钟

日志显示:

40/40

说明这次 Qwen 任务执行了 40 steps,而不是 Lightning 4-step 模式。

这不是升级问题,也不是 GPU 失效。若要使用快速 Lightning 工作流,应检查:

Lightning LoRA 是否已正确连接
采样步数是否设置为 4
CFG 是否按该 workflow 推荐值设置

不要为了缩短采样时间就盲目升级 Torch 或 CUDA。

相关 Qwen Image 模型的 GGUF 加载与报错排障,另见 [[ComfyUI-Qwen-Image-2.1-GGUF-qwen_image21-报错修复实操]]。

3. SeedVR2 7B INT8 ConvRot:通过

日志:

Model storage policy: fast_disk=True
paths=['/data/models/diffusion_models/seedvr2_7b_int8_convrot.safetensors']

Found quantization metadata version 1
Detected mixed precision quantization
Using mixed precision operations

Native ops: asym_w4a8_int8, int8_tensorwise, convrot_w4a4 ...

Model SeedVR2 prepared for dynamic VRAM loading. 7944MB Staged.
Prompt executed in 9.48 seconds

结论:

SeedVR2 7B INT8 ConvRot 正常
INT8 / ConvRot 原生 CUDA 算子正常
模型从 /data/models 加载
DynamicVRAM 正常
没有 OOM
一次放大任务耗时约 9.48 秒

这证明 RTX 4070 12GB 不仅可以运行 Z-Image 与 Qwen 编辑,也能稳定运行 SeedVR2 7B INT8 ConvRot。


十三、升级后的最终状态

ComfyUI:v0.37.4
本地稳定分支:comfyui-v0.37.4
Python:3.13.15
PyTorch:2.13.0+cu130
GPU:RTX 4070 12GB
模型目录:/data/models
ComfyUI API:http://127.0.0.1:8188

已通过的视觉生产工位:

Z-Image-Turbo
  → 文生图、批量候选、文章氛围图、封面素材

Qwen Image Edit / Rapid
  → 图像编辑、参考图融合、改背景、改内容、扩图、定向修改

SeedVR2 7B INT8 ConvRot
  → 2 倍放大、清晰化、发布前最终修复

接下来只需要保留 ComfyUI 运行状态,并让 Hermes 或 OpenClaw 进行一次最小 API smoke test,例如:

调用 Z-Image-Turbo 的 API workflow,生成一张 1024×1024 测试图。

若 Agent 能提交任务、等待完成并读取输出,那么完整链路即为:

Hermes / OpenClaw
→ http://127.0.0.1:8188
→ ComfyUI v0.37.4
→ 本地模型
→ 图片输出

十四、失败时如何回退

本次升级前的完整备份位置:

/data/comfyui_2026-09-27_093004_pre_upgrade/comfyui

升级前版本:

v0.36.0
git commit:ee71d5c4

上一轮 0.32.0 → 0.36.0 升级中的回退方法同样适用:[[Ubuntu 上将 ComfyUI 从 0.32.0 升级到 0.36.0:一份可回退的实操记录]]。

方案 A:仅回退源码版本

如果升级后只是源码、节点兼容或前端问题,优先切回旧分支:

cd /data/comfyui
git switch comfyui-v0.36.0

然后重新安装该版本要求的依赖:

/data/comfyui/venv/bin/python -m pip install -r requirements.txt
/data/comfyui/venv/bin/python -m pip install -r manager_requirements.txt

方案 B:恢复完整目录快照

如果 venv、节点、数据库或目录状态都出现明显异常:

# 先停止 ComfyUI,Ctrl+C

cd /data
mv comfyui comfyui_failed_v0.37.4
cp -a comfyui_2026-09-27_093004_pre_upgrade/comfyui /data/comfyui

然后启动:

/data/comfyui/venv/bin/python /data/comfyui/main.py \
  --listen 127.0.0.1 \
  --port 8188 \
  --enable-manager

原则:

先改名保留故障目录
再恢复备份
不要直接覆盖当前目录
不要立刻删除故障目录

这样仍可保留排查线索。


十五、以后每次升级的固定 SOP

下面这套流程可以直接保存为你的长期升级标准。

# 0. 到 ComfyUI 运行终端按 Ctrl+C,停止服务

# 1. 确认 API 端口释放
ss -lntp | grep 8188

# 2. 创建全新时间戳完整备份
cd /data
STAMP=$(date +%F_%H%M%S)
BACKUP="/data/comfyui_${STAMP}_pre_upgrade"
mkdir -p "$BACKUP"
cp -a /data/comfyui "$BACKUP/"

# 3. 验证关键备份内容
test -f "$BACKUP/comfyui/main.py" && echo "main.py:OK"
test -f "$BACKUP/comfyui/extra_model_paths.yaml" && echo "模型路径配置:OK"
test -d "$BACKUP/comfyui/custom_nodes" && echo "custom_nodes:OK"
test -d "$BACKUP/comfyui/user" && echo "user:OK"
test -d "$BACKUP/comfyui/venv" && echo "venv:OK"

# 4. 获取官方远程标签
cd /data/comfyui
git fetch --tags --prune origin
git tag --sort=-version:refname | head -15

# 5. 将目标稳定 tag 写入变量,例如 v0.37.4
TARGET="vX.Y.Z"
BRANCH="comfyui-$TARGET"

# 6. 创建或切换固定本地分支
if git show-ref --verify --quiet "refs/heads/$BRANCH"; then
  git switch "$BRANCH"
else
  git switch -c "$BRANCH" "$TARGET"
fi

# 7. 确认当前版本
git status -sb
git describe --tags --always

# 8. 同步该版本 requirements
/data/comfyui/venv/bin/python -m pip install -r requirements.txt
/data/comfyui/venv/bin/python -m pip install -r manager_requirements.txt

# 9. 启动
/data/comfyui/venv/bin/python main.py \
  --listen 127.0.0.1 \
  --port 8188 \
  --enable-manager

# 10. 验收
# Z-Image-Turbo → Qwen Image Edit → SeedVR2 → Agent API

十六、最终经验总结

这次升级的核心纪律:

  1. 每次先停服务。
  2. 每次创建一个新的时间戳备份目录,不复用旧名称。
  3. 备份后必须验证关键文件与 Git commit。
  4. 不要盲目追踪 master。
  5. 优先使用官方仓库中明确存在的版本 tag。
  6. 只让 requirements.txt 决定 ComfyUI 依赖更新。
  7. 不要因为升级 ComfyUI 就顺手升级 Python、Torch、CUDA、驱动。
  8. 验收必须跑真实工作流,而不是只看网页能否打开。
  9. 保留旧备份、旧数据库备份和失败目录,直到新版本稳定运行一段时间。

一句话概括这次流程:

先可回退,再升级;先固定 tag,再更新依赖;先验证真实工作流,再把它重新交给 Agent 自动化调用。

附录:2026-09-27 实操原始记录(压缩版)

说明:以下为当天操作的原始留痕,按步骤分节。与各章重复的命令说明请见正文对应章节,此处只保留完整命令序列与关键输出,作为自查与复现的证据层。

# ─── 第 1 步:确认端口释放(见正文第四章)───
oklife@oklife-ub:~$ ss -lntp | grep 8188
(无输出,端口已释放)

# ─── 第 2 步:时间戳完整备份 + 验证(见正文第五章)───
oklife@oklife-ub:~$ cd /data

STAMP=$(date +%F_%H%M%S)
BACKUP="/data/comfyui_${STAMP}_pre_upgrade"

mkdir -p "$BACKUP"
cp -a /data/comfyui "$BACKUP/"

echo "备份目录:$BACKUP"
test -f "$BACKUP/comfyui/main.py" && echo "main.py:OK"
test -f "$BACKUP/comfyui/extra_model_paths.yaml" && echo "模型路径配置:OK"
test -d "$BACKUP/comfyui/custom_nodes" && echo "custom_nodes:OK"
test -d "$BACKUP/comfyui/user" && echo "user 配置目录:OK"
test -d "$BACKUP/comfyui/venv" && echo "venv:OK"
备份目录:/data/comfyui_2026-09-27_093004_pre_upgrade
main.py:OK
模型路径配置:OK
custom_nodes:OK
user 配置目录:OK
venv:OK

git -C /data/comfyui rev-parse --short HEAD     # 当前源码 commit:ee71d5c4
git -C "$BACKUP/comfyui" rev-parse --short HEAD  # 备份源码 commit:ee71d5c4

# ─── 第 3 步:fetch 标签并检查本地状态(见正文第六章)───
oklife@oklife-ub:/data/comfyui$ git status --short
?? .pydeps/
?? comfyui.db

oklife@oklife-ub:/data/comfyui$ git fetch --tags --prune origin
 * [新标签]  v0.37.0 -> v0.37.0
 * [新标签]  v0.37.1 -> v0.37.1
 * [新标签]  v0.37.2 -> v0.37.2
 * [新标签]  v0.37.3 -> v0.37.3
 * [新标签]  v0.37.4 -> v0.37.4

oklife@oklife-ub:/data/comfyui$ git tag --sort=-version:refname | head -8
v0.37.4
v0.37.3
v0.37.2
v0.37.1
v0.37.0
v0.36.0
v0.35.2
v0.35.1

# ─── 第 4 步:切换固定 tag 分支(见正文第七章)───
TARGET="v0.37.4"
BRANCH="comfyui-$TARGET"

if git show-ref --verify --quiet "refs/heads/$BRANCH"; then
  git switch "$BRANCH"
else
  git switch -c "$BRANCH" "$TARGET"
fi
切换到一个新分支 'comfyui-v0.37.4'

oklife@oklife-ub:/data/comfyui$ git status -sb
## comfyui-v0.37.4
?? .pydeps/
?? comfyui.db
oklife@oklife-ub:/data/comfyui$ git describe --tags --always
v0.37.4

# ─── 第 5 步:同步 requirements(见正文第八章)───
oklife@oklife-ub:/data/comfyui$ /data/comfyui/venv/bin/python -m pip install -r requirements.txt
Successfully installed comfy-aimdo-0.5.5 comfy-kitchen-0.2.35 comfyui-embedded-docs-0.5.12 \
  comfyui-workflow-templates-0.11.69 comfyui-workflow-templates-core-0.3.360 \
  comfyui-workflow-templates-json-0.1.95 \
  comfyui-workflow-templates-media-assets-01-0.1.48 \
  comfyui-workflow-templates-media-assets-02-0.1.5
(已满足包保持原版本:torch 2.13.0+cu130、torchvision、torchaudio、numpy、transformers 等,未变动)

oklife@oklife-ub:/data/comfyui$ /data/comfyui/venv/bin/python -m pip install -r manager_requirements.txt
Requirement already satisfied: comfyui_manager==4.2.2 in ./venv/lib/python3.13/site-packages (from -r manager_requirements.txt (line 1)) (4.2.2)

# ─── 第 6 步:启动服务(见正文第十章)───
oklife@oklife-ub:/data/comfyui$ cd /data/comfyui
/data/comfyui/venv/bin/python main.py \
  --listen 127.0.0.1 \
  --port 8188 \
  --enable-manager

[INFO] ** ComfyUI startup time: 2026-09-27 09:51:40.594
[INFO] Total VRAM 11872 MB, total RAM 63027 MB
[INFO] pytorch version: 2.13.0+cu130
[INFO] Device: cuda:0 NVIDIA GeForce RTX 4070 : cudaMallocAsync
[INFO] Using async weight offloading with 2 streams
[INFO] DynamicVRAM support detected and enabled
[INFO] ComfyUI version: 0.37.4
[INFO] comfy-aimdo version: 0.5.5
[INFO] comfy-kitchen version: 0.2.35
[INFO] comfyui-frontend-package version: 1.52.7
[INFO] comfyui-workflow-templates version: 0.11.69
[INFO] comfyui-embedded-docs version: 0.5.12
[INFO] To see the GUI go to: http://127.0.0.1:8188
(完整启动日志与启动警告解读见正文第十、十一章)

# ─── 第 7 步:三条真实工作流验收(见正文第十二章)───
# Z-Image-Turbo 文生图
[INFO] Model storage policy: fast_disk=True paths=['/data/models/diffusion_models/z_image_turbo_bf16.safetensors']
[INFO] Model Lumina2 prepared for dynamic VRAM loading. 11738MB Staged.
[INFO] Prompt executed in 20.74 seconds

# Qwen Image Edit / Rapid(GGUF)
[INFO] Using mmproj 'Qwen2.5-VL-7B-Instruct-mmproj-BF16.gguf' for text encoder 'Qwen2.5-VL-7B-Instruct-UD-Q4_K_XL.gguf'
[INFO] Prompt executed in 00:10:03

# SeedVR2 7B INT8 ConvRot 放大
[INFO] Model storage policy: fast_disk=True paths=['/data/models/diffusion_models/seedvr2_7b_int8_convrot.safetensors']
[INFO] Model SeedVR2 prepared for dynamic VRAM loading. 7944MB Staged.
[INFO] Prompt executed in 9.48 seconds