Comfyui
使用 ComfyUI 生成圖像、視頻和音頻 — 安裝、啟動、管理節點/模型、通過參數注入運行工作流。使用官方的 comfy-cli 進行生命週期管理,並使用直接的 REST/WebSocket API 進行執行。
技能元數據
| 來源 | 捆綁(默認安裝) |
| 路徑 | skills/creative/comfyui |
| 版本 | 5.1.0 |
| 作者 | ['kshitijk4poor', 'alt-glitch', 'purzbeats'] |
| 許可證 | MIT |
| 平臺 | macos, linux, windows |
| 標籤 | comfyui, image-generation, stable-diffusion, flux, sd3, wan-video, hunyuan-video, creative, generative-ai, video-generation |
| 相關技能 | stable-diffusion-image-generation, image_gen |
參考:完整 SKILL.md
以下是 Hermes 在觸發此技能時加載的完整技能定義。這是技能激活時代理看到的指令。
ComfyUI
通過 ComfyUI 生成圖像、視頻、音頻和 3D 內容,使用官方 comfy-cli 進行設置/生命週期管理,並使用直接的 REST/WebSocket API 進行工作流執行。
此技能包含的內容
參考文檔 (references/):
official-cli.md— 每個comfy ...命令及其標誌rest-api.md— REST + WebSocket 端點(本地 + 雲),負載模式workflow-format.md— API 格式 JSON,常見節點類型,參數映射template-integrity.md— 將comfyui-workflow-templates從編輯器格式轉換為 API 格式:Reroute 旁路,帶點號的動態輸入鍵(values.a,resize_type.width),雲特性(302 重定向,免費層 1 個併發作業,1080p VRAM 上限),兼容 Discord 的 ffmpeg 拼接。由 @purzbeats 編寫。當你從官方模板開始時,請加載此文檔。
腳本 (scripts/):
| 腳本 | 用途 |
|---|---|
_common.py | 共享 HTTP、雲路由、節點目錄(不要直接運行) |
hardware_check.py | 探測 GPU/VRAM/磁盤 → 推薦本地 vs Comfy Cloud |
comfyui_setup.sh | 硬件檢查 + comfy-cli + ComfyUI 安裝 + 啟動 + 驗證 |
extract_schema.py | 讀取工作流 → 列出可控制參數 + 模型依賴項 |
check_deps.py | 針對運行中的服務器檢查工作流 → 列出缺失的節點/模型 |
auto_fix_deps.py | 運行 check_deps 然後執行 comfy node install / comfy model download |
run_workflow.py | 注入參數,提交,監控,下載輸出(HTTP 或 WS) |
run_batch.py | 通過掃描多次提交工作流,並行度取決於你的層級 |
ws_monitor.py | 用於執行作業的實時 WebSocket 查看器(實時進度) |
health_check.py | 驗證清單運行器 — comfy-cli + 服務器 + 模型 + 冒煙測試 |
fetch_logs.py | 拉取給定 prompt_id 的回溯/狀態消息 |
示例工作流 (workflows/): SD 1.5, SDXL, Flux Dev, SDXL img2img, SDXL inpaint, ESRGAN upscale, AnimateDiff video, Wan T2V。參見 workflows/README.md。
何時使用
- 用戶要求使用 Stable Diffusion、SDXL、Flux、SD3 等生成圖像
- 用戶想要運行特定的 ComfyUI 工作流文件
- 用戶想要鏈式生成步驟(txt2img → upscale → 面部修復)
- 用戶需要 ControlNet、inpainting、img2img 或其他高級管道
- 用戶要求管理 ComfyUI 隊列、檢查模型或安裝自定義節點
- 用戶希望通過 AnimateDiff、Hunyuan、Wan、AudioCraft 等生成視頻/音頻/3D 內容
架構:兩層結構
┌─────────────────────────────────────────────────────┐
│ Layer 1: comfy-cli (official lifecycle tool) │
│ Setup, server lifecycle, custom nodes, models │
│ → comfy install / launch / stop / node / model │
└─────────────────────────┬───────────────────────────┘
│
┌─────────────────────────▼───────────────────────────┐
│ Layer 2: REST/WebSocket API + skill scripts │
│ Workflow execution, param injection, monitoring │
│ POST /api/prompt, GET /api/view, WS /ws │
│ → run_workflow.py, run_batch.py, ws_monitor.py │
└─────────────────────────────────────────────────────┘
為什麼分為兩層? 官方 CLI 非常適合安裝和服務器管理,但對工作流執行的支持很少。REST/WS API 填補了這一空白 — 腳本處理 CLI 不做的參數注入、執行監控和輸出下載。
快速開始
檢測環境
# What's available?
command -v comfy >/dev/null 2>&1 && echo "comfy-cli: installed"
curl -s http://127.0.0.1:8188/system_stats 2>/dev/null && echo "server: running"
# Can this machine run ComfyUI locally? (GPU/VRAM/disk check)
python3 scripts/hardware_check.py
如果未安裝任何內容,請參閱下面的 設置與入門 — 但始終先運行硬件檢查。
一行健康檢查
python3 scripts/health_check.py
# → JSON: comfy_cli on PATH? server reachable? at least one checkpoint? smoke-test passes?
核心工作流
步驟 1:獲取 API 格式的工作流 JSON
工作流必須採用 API 格式(每個節點都有 class_type)。它們來自:
- ComfyUI Web UI → Workflow → Export (API)(新版 UI)或 傳統的 "Save (API Format)" 按鈕(舊版 UI)
- 此技能的
workflows/目錄( ready-to-run 示例) - 社區下載(civitai, Reddit, Discord)— 通常是編輯器格式, 必須加載到 ComfyUI 中然後重新導出
編輯器格式(頂層 nodes 和 links 數組)不可直接執行。腳本會檢測到此情況並提示你重新導出。
步驟 2:查看可控制的內容
python3 scripts/extract_schema.py workflow_api.json --summary-only
# → {"parameter_count": 12, "has_negative_prompt": true, "has_seed": true, ...}
python3 scripts/extract_schema.py workflow_api.json
# → full schema with parameters, model deps, embedding refs
步驟 3:帶參數運行
# Local (defaults to http://127.0.0.1:8188)
python3 scripts/run_workflow.py \
--workflow workflow_api.json \
--args '{"prompt": "a beautiful sunset over mountains", "seed": -1, "steps": 30}' \
--output-dir ./outputs
# Cloud (export API key once; uses correct /api routing automatically)
export COMFY_CLOUD_API_KEY="comfyui-..."
python3 scripts/run_workflow.py \
--workflow workflow_api.json \
--args '{"prompt": "..."}' \
--host https://cloud.comfy.org \
--output-dir ./outputs
# Real-time progress via WebSocket (requires `pip install websocket-client`)
python3 scripts/run_workflow.py \
--workflow flux_dev.json \
--args '{"prompt": "..."}' \
--ws
# img2img / inpaint: pass --input-image to upload + reference automatically
python3 scripts/run_workflow.py \
--workflow sdxl_img2img.json \
--input-image image=./photo.png \
--args '{"prompt": "make it watercolor", "denoise": 0.6}'
# Batch / sweep: 8 random seeds, parallel up to cloud tier limit
python3 scripts/run_batch.py \
--workflow sdxl.json \
--args '{"prompt": "abstract"}' \
--count 8 --randomize-seed --parallel 3 \
--output-dir ./outputs/batch
seed 設為 -1(或使用 --randomize-seed 省略它)會在每次運行時生成一個新的隨機種子。
步驟 4:展示結果
腳本向 stdout 發出 JSON,描述每個輸出文件:
{
"status": "success",
"prompt_id": "abc-123",
"outputs": [
{"file": "./outputs/sdxl_00001_.png", "node_id": "9",
"type": "image", "filename": "sdxl_00001_.png"}
]
}
決策樹
| 用戶說 | 工具 | 命令 |
|---|---|---|
| 生命週期(使用 comfy-cli) | ||
| "install ComfyUI" | comfy-cli | bash scripts/comfyui_setup.sh |
| "start ComfyUI" | comfy-cli | comfy launch --background |
| "stop ComfyUI" | comfy-cli | comfy stop |
| "install X node" | comfy-cli | comfy node install <name> |
| "download X model" | comfy-cli | comfy model download --url <url> --relative-path models/checkpoints |
| "list installed models" | comfy-cli | comfy model list |
| "list installed nodes" | comfy-cli | comfy node show installed |
| 執行(使用腳本) | ||
| "is everything ready?" | script | health_check.py(可選附帶 --workflow X --smoke-test) |
| "what can I change in this workflow?" | script | extract_schema.py W.json |
| "check if W's deps are met" | script | check_deps.py W.json |
| "fix missing deps" | script | auto_fix_deps.py W.json |
| "generate an image" | script | run_workflow.py --workflow W --args '{...}' |
| "use this image" (img2img) | script | run_workflow.py --input-image image=./x.png ... |
| "8 variations with random seeds" | script | run_batch.py --count 8 --randomize-seed ... |
| "show me live progress" | script | ws_monitor.py --prompt-id <id> |
| "fetch the error from job X" | script | fetch_logs.py <prompt_id> |
| 直接 REST | ||
| "what's in the queue?" | REST | curl http://HOST:8188/queue(本地)或 --host https://cloud.comfy.org |
| "cancel that" | REST | curl -X POST http://HOST:8188/interrupt |
| "free GPU memory" | REST | curl -X POST http://HOST:8188/free |
設置與入門
當用戶要求設置 ComfyUI 時,首先要做的是詢問他們想要 Comfy Cloud(託管、零安裝、API 密鑰)還是本地(在他們的機器上安裝 ComfyUI)。在得到回答之前,不要開始運行安裝命令或硬件檢查。
官方文檔: https://docs.comfy.org/installation CLI 文檔: https://docs.comfy.org/comfy-cli/getting-started Cloud 文檔: https://docs.comfy.org/get_started/cloud Cloud API: https://docs.comfy.org/development/cloud/overview
步驟 0:詢問本地 vs Cloud(始終優先)
建議話術:
"您希望在本地機器上運行 ComfyUI,還是使用 Comfy Cloud?
- Comfy Cloud — 託管在 RTX 6000 Pro GPU 上,預裝所有常用模型, 零設置。需要 API 密鑰(需要付費訂閱才能實際運行工作流;免費層僅限只讀)。如果您沒有性能足夠的 GPU,這是最佳選擇。
- 本地 — 免費,但您的機器必須滿足硬件要求:
- 具有 ≥6 GB 顯存的 NVIDIA GPU(SDXL 需 ≥8 GB,Flux/視頻需 ≥12 GB),或
- 支持 ROCm 的 AMD GPU(Linux),或
- Apple Silicon Mac(M1+)具有 ≥16 GB 統一內存(推薦 ≥32 GB)。
- Intel Mac 和沒有 GPU 的機器將無法工作 — 請改用 Cloud。
您希望選擇哪種方式?"
路由:
- Cloud → 跳至 路徑 A。
- 本地 → 首先運行硬件檢查,然後根據結果從路徑 B–E 中選擇一個。
- 不確定 → 運行硬件檢查並讓結果決定。
步驟 1:驗證硬件(僅當用戶選擇本地時)
python3 scripts/hardware_check.py --json
# Optional: also probe `torch` for actual CUDA/MPS:
python3 scripts/hardware_check.py --json --check-pytorch
| 結果 | 含義 | 操作 |
|---|---|---|
ok | ≥8 GB 顯存(獨立顯卡)或 ≥32 GB 統一內存(Apple Silicon) | 本地安裝 — 使用報告中的 comfy_cli_flag |
marginal | SD1.5 可行;SDXL 緊張;Flux/視頻不太可能 | 輕量工作流可本地運行,否則選擇 路徑 A(Cloud) |
cloud | 無可用 GPU,<6 GB 顯存,<16 GB Apple 統一內存,Intel Mac,Rosetta Python | 除非用戶明確強制本地安裝,否則切換到 Cloud |
該腳本還會顯示 wsl: true(帶有 NVIDIA 透傳的 WSL2)和
rosetta: true(Apple Silicon 上的 x86_64 Python — 必須重新安裝為 ARM64)。
如果結果是 cloud 但用戶想要本地安裝,請不要靜默繼續。
原樣顯示 notes 數組,並詢問他們是否希望 (a) 切換到 Cloud 或 (b) 強制本地安裝(在現代模型上會出現內存溢出或速度慢到無法使用)。
選擇安裝路徑
首先使用硬件檢查。下表是當用戶已經告知你其硬件情況時的後備方案:
| 情況 | 推薦路徑 |
|---|---|
硬件檢查結果為 verdict: cloud | 路徑 A:Comfy Cloud |
| 無 GPU / 希望在不承諾的情況下嘗試 | 路徑 A:Comfy Cloud |
| Windows + NVIDIA + 非技術用戶 | 路徑 B:ComfyUI Desktop |
| Windows + NVIDIA + 技術用戶 | 路徑 C:Portable 或 路徑 D:comfy-cli |
| Linux + 任何 GPU | 路徑 D:comfy-cli(最簡單) |
| macOS + Apple Silicon | 路徑 B:Desktop 或 路徑 D:comfy-cli |
| 無頭模式 / 服務器 / CI / 代理 | 路徑 D:comfy-cli |
對於完全自動化的路徑(硬件檢查 → 安裝 → 啟動 → 驗證):
bash scripts/comfyui_setup.sh
# Or with overrides:
bash scripts/comfyui_setup.sh --m-series --port=8190 --workspace=/data/comfy
它在內部運行 hardware_check.py,當判定結果為 cloud 時拒絕在本地安裝(除非使用 --force-cloud-override),選擇正確的 comfy-cli 標誌,並優先使用 pipx/uvx 而非全局 pip,以避免汙染系統 Python。
路徑 A:Comfy Cloud(無本地安裝)
適用於沒有合適 GPU 或希望零設置的用戶。託管於 RTX 6000 Pro 上。
文檔: https://docs.comfy.org/get_started/cloud
- 在 https://comfy.org/cloud 註冊
- 在 https://platform.comfy.org/login 生成 API 密鑰
- 設置密鑰:
export COMFY_CLOUD_API_KEY="comfyui-xxxxxxxxxxxx" - 運行工作流:
python3 scripts/run_workflow.py \
--workflow workflows/flux_dev_txt2img.json \
--args '{"prompt": "..."}' \
--host https://cloud.comfy.org \
--output-dir ./outputs
定價: https://www.comfy.org/cloud/pricing
併發任務數: 免費/標準版 1 個,創作者版 3 個,專業版 5 個。免費套餐無法通過 API 運行工作流 — 僅可瀏覽模型。使用 /api/prompt、/api/upload/*、/api/view 等接口需要付費訂閱。
路徑 B:ComfyUI Desktop(Windows / macOS)
面向非技術用戶的一鍵安裝程序。目前處於 Beta 階段。
文檔: https://docs.comfy.org/installation/desktop
- Windows (NVIDIA): https://download.comfy.org/windows/nsis/x64
- macOS (Apple Silicon): https://comfy.org
Desktop 版本不支持 Linux — 請使用路徑 D。
路徑 C:ComfyUI Portable(僅限 Windows)
文檔: https://docs.comfy.org/installation/comfyui_portable_windows
從 https://github.com/comfyanonymous/ComfyUI/releases 下載,解壓,運行 run_nvidia_gpu.bat。通過 update/update_comfyui_stable.bat 進行更新。
路徑 D:comfy-cli(全平臺 — 推薦用於 Agent)
官方 CLI 是無頭/自動化設置的最佳路徑。
文檔: https://docs.comfy.org/comfy-cli/getting-started
安裝 comfy-cli
# Recommended:
pipx install comfy-cli
# Or use uvx without installing:
uvx --from comfy-cli comfy --help
# Or (if pipx/uvx unavailable):
pip install --user comfy-cli
以非交互方式禁用分析:
comfy --skip-prompt tracking disable
安裝 ComfyUI
comfy --skip-prompt install --nvidia # NVIDIA (CUDA)
comfy --skip-prompt install --amd # AMD (ROCm, Linux)
comfy --skip-prompt install --m-series # Apple Silicon (MPS)
comfy --skip-prompt install --cpu # CPU only (slow)
comfy --skip-prompt install --nvidia --fast-deps # uv-based dep resolution
默認位置:~/comfy/ComfyUI(Linux),~/Documents/comfy/ComfyUI(macOS/Win)。使用 comfy --workspace /custom/path install 覆蓋默認位置。
啟動 / 驗證
comfy launch --background # background daemon on :8188
comfy launch -- --listen 0.0.0.0 --port 8190 # LAN-accessible custom port
curl -s http://127.0.0.1:8188/system_stats # health check
路徑 E:手動安裝(高級 / 不支持的硬件)
適用於 Ascend NPU、Cambricon MLU、Intel Arc 或其他不受支持的硬件。
文檔: https://docs.comfy.org/installation/manual_install
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txt
python main.py
安裝後:下載模型
# SDXL (general purpose, ~6.5 GB)
comfy model download \
--url "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors" \
--relative-path models/checkpoints
# SD 1.5 (lighter, ~4 GB, good for 6 GB cards)
comfy model download \
--url "https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors" \
--relative-path models/checkpoints
# Flux Dev fp8 (smaller variant, ~12 GB)
comfy model download \
--url "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors" \
--relative-path models/checkpoints
# CivitAI (set token first):
comfy model download \
--url "https://civitai.com/api/download/models/128713" \
--relative-path models/checkpoints \
--set-civitai-api-token "YOUR_TOKEN"
列出已安裝的模型:comfy model list。
安裝後:安裝自定義節點
comfy node install comfyui-impact-pack # popular utility pack
comfy node install comfyui-animatediff-evolved # video generation
comfy node install comfyui-controlnet-aux # ControlNet preprocessors
comfy node install comfyui-essentials # common helpers
comfy node update all
comfy node install-deps --workflow=workflow.json # install everything a workflow needs
安裝後:驗證
python3 scripts/health_check.py
# → comfy_cli on PATH? server reachable? checkpoints? smoke test?
python3 scripts/check_deps.py my_workflow.json
# → are this workflow's nodes/models/embeddings installed?
python3 scripts/run_workflow.py \
--workflow workflows/sd15_txt2img.json \
--args '{"prompt": "test", "steps": 4}' \
--output-dir ./test-outputs
圖片上傳(img2img / 圖像修復)
最簡單的方法是在 run_workflow.py 中使用 --input-image:
python3 scripts/run_workflow.py \
--workflow workflows/sdxl_img2img.json \
--input-image image=./photo.png \
--args '{"prompt": "make it cyberpunk", "denoise": 0.6}'
該標誌會上傳 photo.png,然後將其服務器端文件名注入到名為 image 的模式參數中。對於圖像修復(inpainting),需同時傳遞兩者:
python3 scripts/run_workflow.py \
--workflow workflows/sdxl_inpaint.json \
--input-image image=./photo.png \
--input-image mask_image=./mask.png \
--args '{"prompt": "fill with flowers"}'
通過 REST 手動上傳:
curl -X POST "http://127.0.0.1:8188/upload/image" \
-F "image=@photo.png" -F "type=input" -F "overwrite=true"
# Returns: {"name": "photo.png", "subfolder": "", "type": "input"}
# Cloud equivalent:
curl -X POST "https://cloud.comfy.org/api/upload/image" \
-H "X-API-Key: $COMFY_CLOUD_API_KEY" \
-F "image=@photo.png" -F "type=input" -F "overwrite=true"
Cloud 特定說明
- 基礎 URL:
https://cloud.comfy.org - 認證:
X-API-Key請求頭(或 WebSocket 使用?token=KEY) - API 密鑰: 設置一次
$COMFY_CLOUD_API_KEY,腳本會自動獲取 - 輸出下載:
/api/view返回指向簽名 URL 的 302 重定向;腳本會跟隨重定向,並在從存儲後端獲取前剝離X-API-Key(防止將 API 密鑰洩露給 S3/CloudFront)。 - 與本地 ComfyUI 的端點差異:
/api/object_info、/api/queue、/api/userdata— 免費套餐返回 403;僅限付費用戶。- Cloud 上的
/history重命名為/history_v2(腳本會自動路由)。 - Cloud 上的
/models/<folder>重命名為/experiment/models/<folder>(腳本會自動路由)。 - WebSocket 中的
clientId目前被忽略 — 用戶的所有連接接收相同的廣播。請在客戶端按prompt_id過濾。 - 上傳時接受
subfolder但會被忽略 — Cloud 使用扁平命名空間。
- 併發任務數: 免費/標準版:1 個,創作者版:3 個,專業版:5 個。多餘任務自動排隊。使用
run_batch.py --parallel N以飽和您的套餐額度。
隊列與系統管理
# Local
curl -s http://127.0.0.1:8188/queue | python3 -m json.tool
curl -X POST http://127.0.0.1:8188/queue -d '{"clear": true}' # cancel pending
curl -X POST http://127.0.0.1:8188/interrupt # cancel running
curl -X POST http://127.0.0.1:8188/free \
-H "Content-Type: application/json" \
-d '{"unload_models": true, "free_memory": true}'
# Cloud — same paths under /api/, plus:
python3 scripts/fetch_logs.py --tail-queue --host https://cloud.comfy.org
常見陷阱
-
需要 API 格式 — 每個腳本和
/api/prompt端點都期望 API 格式的工作流 JSON。腳本會檢測編輯器格式(頂層的nodes和links數組),並提示您通過“Workflow → Export (API)”(新版 UI)或“Save (API Format)”(舊版 UI)重新導出。 -
服務器必須正在運行 — 所有執行都需要活躍的服務器。
comfy launch --background可啟動一個服務器。通過curl http://127.0.0.1:8188/system_stats進行驗證。 -
模型名稱必須精確 — 區分大小寫,包含文件擴展名。
check_deps.py進行模糊匹配(帶/不帶擴展名和文件夾前綴),但工作流本身必須使用規範名稱。使用comfy model list查看已安裝的內容。 -
缺少自定義節點 — “class_type not found” 意味著未安裝所需的節點。
check_deps.py報告會指出需要安裝哪個包;auto_fix_deps.py會為您運行安裝。 -
工作目錄 —
comfy-cli會自動檢測 ComfyUI 工作區。 如果命令因“未找到工作區”而失敗,請使用comfy --workspace /path/to/ComfyUI <command>或comfy set-default /path/to/ComfyUI。 -
雲免費層 API 限制 —
/api/prompt、/api/view、/api/upload/*、/api/object_info在免費賬戶上均返回 403。health_check.py和check_deps.py會優雅地處理此情況並顯示清晰的消息。 -
視頻/音頻工作流的超時 — 當輸出節點為
VHS_VideoCombine、SaveVideo等時會自動檢測;默認超時從 300 秒增加到 900 秒。可以使用--timeout 1800顯式覆蓋。 -
輸出文件名中的路徑遍歷 — 服務器提供的文件名會通過
safe_path_join處理,以拒絕任何逃逸出--output-dir的路徑。 請保持此保護開啟 — 帶有自定義保存節點的工作流可能會生成任意路徑。 -
工作流 JSON 是任意代碼 — 自定義節點運行 Python,因此提交未知工作流的信任級別與執行
eval相同。 在運行來自不可信來源的工作流之前,請先進行檢查。 -
自動隨機化種子 — 在
--args中傳遞seed: -1(或使用--randomize-seed並省略種子),以便每次運行獲得一個新的種子。 實際種子會記錄到 stderr。 -
tracking提示 — 首次運行comfy時可能會提示是否啟用分析功能。 使用comfy --skip-prompt tracking disable以非交互方式跳過。comfyui_setup.sh會為你執行此操作。
驗證清單
使用 python3 scripts/health_check.py 一次性運行整個列表。手動檢查:
-
hardware_check.py的結果為ok,或者用戶明確選擇了 Comfy Cloud -
comfy --version正常工作(或uvx --from comfy-cli comfy --help) -
curl http://HOST:PORT/system_stats返回 JSON -
comfy model list顯示至少一個檢查點(本地)或/api/experiment/models/checkpoints返回模型(雲端) - 工作流 JSON 採用 API 格式
-
check_deps.py報告is_ready: true(或在雲免費層上僅報告node_check_skipped) - 使用小型工作流進行測試運行並完成;輸出文件位於
--output-dir中