Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/code/agent/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG COMFYUI_IMAGE=cap-demo-public-registry.cn-hangzhou.cr.aliyuncs.com/aliyunfc/funart-comfyui:v1.6.5
ARG COMFYUI_IMAGE=cap-demo-public-registry.cn-hangzhou.cr.aliyuncs.com/cap-app/image-generation-comfyui-agent:v1.3.10
FROM ${COMFYUI_IMAGE} AS comfyui_source

FROM python:3.10.16-slim
Expand Down Expand Up @@ -50,7 +50,7 @@ COPY --from=comfyui_source /root/built-in/custom_nodes /root/built-in/custom_nod

# 写入内置插件版本号,供启动时版本检查使用
# 版本号需随内置插件列表的实质性变化(增删插件、升级版本)而更新
RUN echo "1.6.5" > /root/built-in/version.txt
RUN echo "1.6.7" > /root/built-in/version.txt

ENV WORK_DIR='/root'
ENV COMFYUI_DIR="${WORK_DIR}/comfyui"
Expand Down
20 changes: 11 additions & 9 deletions src/code/comfyui/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ ENV COMFYUI_DIR="/root/comfyui"

RUN git clone https://github.com/comfyanonymous/ComfyUI.git ${COMFYUI_DIR} && \
cd ${COMFYUI_DIR} && \
git checkout "v0.3.77"
git checkout "v0.19.4"

# 复制插件列表配置文件
COPY code/comfyui/custom_nodes_config/custom_nodes.json /tmp/custom_nodes.json
COPY comfyui/custom_nodes_config/custom_nodes.json /tmp/custom_nodes.json

# 批量安装自定义节点插件
# 从 custom_nodes.json 读取插件列表,循环安装启用的插件
Expand Down Expand Up @@ -80,7 +80,7 @@ RUN cd ${COMFYUI_DIR}/custom_nodes && \
fi

# 拷贝自研插件(如果有)
COPY code/comfyui/custom_nodes/ ${COMFYUI_DIR}/custom_nodes/
COPY comfyui/custom_nodes/ ${COMFYUI_DIR}/custom_nodes/

FROM python:3.10.16-slim AS dependencies

Expand Down Expand Up @@ -116,7 +116,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \
# 安装 ComfyUI 插件的依赖
# 使用 ManagementService.install_custom_nodes - 智能合并依赖,处理冲突(需要 agent 代码)
ENV AGENT_DIR="/root/agent"
COPY code/agent ${AGENT_DIR}
COPY agent ${AGENT_DIR}

# 安装 agent 的依赖(供 ManagementService 运行,使用主 Python 环境)
RUN --mount=type=cache,target=/root/.cache/pip \
Expand All @@ -132,10 +132,9 @@ RUN --mount=type=cache,target=/root/.cache/pip \

# 重新安装 ComfyUI 依赖以修复被插件修改的版本,并修正特定版本冲突
RUN --mount=type=cache,target=/root/.cache/pip \
# 重新安装 ComfyUI 依赖
/root/venv/bin/pip install -r ${COMFYUI_DIR}/requirements.txt --no-cache-dir && \
# 安装 transformers 依赖, transformers 5.0.0 与 comfyui0.3.77 不兼容
/root/venv/bin/pip install transformers==4.56.2 --no-cache-dir && \
# 与官方 requirements 一致使用 cu128 索引,避免 torch 被换成 CPU 版导致后续 wheel 失败
/root/venv/bin/pip install -r ${COMFYUI_DIR}/requirements.txt --no-cache-dir \
--extra-index-url https://download.pytorch.org/whl/cu128 && \
/root/venv/bin/pip install setproctitle dill scikit-image -i https://mirrors.bfsu.edu.cn/pypi/web/simple/ && \
# /root/venv/bin/pip install flash_attn && \
# 再次强制安装指定版本的 PyTorch,防止被插件依赖覆盖
Expand All @@ -161,7 +160,7 @@ RUN \
git curl wget jq ffmpeg gcc g++ build-essential zstd && \
rm -rf /var/lib/apt/lists/*

COPY code/agent ${AGENT_DIR}
COPY agent ${AGENT_DIR}

RUN python3 -m venv ${AGENT_DIR}/venv

Expand All @@ -187,6 +186,9 @@ COPY --from=dependencies ${VENV_DIR} ${VENV_DIR}
COPY --from=codes ${COMFYUI_DIR} ${COMFYUI_DIR}
COPY --from=agent ${AGENT_DIR} ${AGENT_DIR}

# 与 aliyunfc/funart-comfyui 约定一致:agent 镜像构建时会 COPY --from=COMFYUI_IMAGE /root/built-in/custom_nodes
RUN mkdir -p /root/built-in && cp -a "${COMFYUI_DIR}/custom_nodes" /root/built-in/custom_nodes

ENV BACKEND_TYPE="comfyui"

RUN chmod +x ${AGENT_DIR}/entrypoint.bash
Expand Down
12 changes: 6 additions & 6 deletions src/code/comfyui/Makefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 定义变量
REGION ?= cn-hangzhou
COMFYUI_IMAGE = comfyui:v1.6.5
COMFYUI_DEEPGPU_IMAGE = comfyui:deepgpu-v1.6.5-v1
COMFYUI_IMAGE = comfyui:v0.19.4
COMFYUI_DEEPGPU_IMAGE = comfyui:deepgpu-v0.19.4-v1
OSS_BUCKET ?= dipper-cache-$(REGION)
OSS_COMFYUI_BASE_DIR = base/comfyui/v0.3.77-gamma
OSS_COMFYUI_DEEPGPU_BASE_DIR = base/comfyui/v0.3.77-gamma-deepgpu
OSS_COMFYUI_BASE_DIR = base/comfyui/v0.19.4-alpha
OSS_COMFYUI_DEEPGPU_BASE_DIR = base/comfyui/v0.19.4-alpha-deepgpu

.PHONY: upgrade
upgrade: build upload-base
Expand Down Expand Up @@ -58,7 +58,7 @@ upload-base:

@echo "Creating .funart/VERSION.txt..."
@mkdir -p ./tmp/.funart
@echo "1.6.5" > ./tmp/.funart/dependency_version.txt
@echo "1.6.7" > ./tmp/.funart/dependency_version.txt

@echo "Uploading files to OSS..."
ossutil cp -r ./tmp/models oss://$(OSS_BUCKET)/$(OSS_COMFYUI_BASE_DIR)/models && \
Expand Down Expand Up @@ -98,7 +98,7 @@ upload-deepgpu-base:

@echo "Creating .funart/VERSION.txt..."
@mkdir -p ./tmp/.funart
@echo "1.6.5" > ./tmp/.funart/dependency_version.txt
@echo "1.6.7" > ./tmp/.funart/dependency_version.txt

@echo "Uploading files to OSS..."
ossutil cp -r ./tmp/custom_nodes oss://$(OSS_BUCKET)/$(OSS_COMFYUI_DEEPGPU_BASE_DIR)/custom_nodes && \
Expand Down
24 changes: 24 additions & 0 deletions src/code/comfyui/custom_nodes_config/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
| 文件 | 类型 | 用途 |
|------|------|------|
| `get_topn.py` | 脚本 | 从网络拉取最新数据,生成 Top N 插件列表 |
| `update_custom_nodes_versions.py` | 脚本 | 批量解析各插件仓库的 Git 引用,回写 `custom_nodes.json` 中的 `version` |
| `custom_nodes.json` | 配置 | 镜像内置核心插件列表(49 个) |
| `excluded_custom_nodes.json` | 配置 | 排除列表,记录不内置的插件及原因 |
| `custom_nodes_top100.json` | 数据 | 按 Stars 排序的 Top 100 插件列表 |
Expand Down Expand Up @@ -135,6 +136,29 @@ cp custom_nodes_config/custom_nodes_top_150_2026-03-05.json \

---

## update_custom_nodes_versions.py — 批量更新插件 `version`

用 **`git ls-remote`** 查远程仓库(不克隆),按规则算出新的 `version` 写回 **`custom_nodes.json`**。镜像构建里会对 `version` 做 **`git checkout`**(`latest` / 空串除外),所以跑完脚本等于批量换钉的版本。

**当前 `version` 怎么被改写:**

| 你写的 `version` | 脚本会改成 |
|------------------|------------|
| `latest` 或空 | 远程默认分支最新提交的 **SHA 前 12 位** |
| 其它(commit 前缀、tag 名、任意占位字符串等) | 远程若有 **semver 标签**,则改成 **版本号最大的 tag**;否则改成默认分支 **SHA 前 12 位** |

说明:配置里只保留 **短 commit** 或 **版本号 tag** 即可;不要写分支名 `main` / `master`,否则也会按上表第二行被解析成 **tag 或 SHA**。

依赖:**本机 `git`**、Python **`packaging`**(`pip install packaging`)。默认并行 8 个仓库;有解析失败的条目会跳过并 **退出码 1**。

```bash
cd custom_nodes_config
python3 update_custom_nodes_versions.py # 写回 custom_nodes.json
python3 update_custom_nodes_versions.py --dry-run # 只看变更,不写文件
```

---

## 相关设计文档

详细的系统插件架构设计请参考:[系统插件设计文档](../../../system-plugins-design.md)
59 changes: 25 additions & 34 deletions src/code/comfyui/custom_nodes_config/custom_nodes.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{
"metadata": {
"generated_at": "2026-03-05",
"generated_at": "2026-04-23",
"top_n": 100,
"total": 91,
"source_stats_url": "https://raw.githubusercontent.com/Comfy-Org/ComfyUI-Manager/main/github-stats.json",
"source_list_url": "https://raw.githubusercontent.com/Comfy-Org/ComfyUI-Manager/main/custom-node-list.json",
"excluded_count": 42
"excluded_count": 42,
"version_resolve_note": "versions resolved by update_custom_nodes_versions.py (prefer latest semver tag, else default-branch SHA prefix)"
},
"custom_nodes": [
{
Expand All @@ -15,7 +16,7 @@
"stars": 13812,
"enabled": true,
"description": "ComfyUI-Manager itself is also a custom node.",
"version": "3.39"
"version": "3.39.3"
},
{
"id": "comfyui-wanvideowrapper",
Expand Down Expand Up @@ -51,7 +52,7 @@
"stars": 3826,
"enabled": true,
"description": "Plug-and-play ComfyUI node sets for making ControlNet hint images.",
"version": "95a13e2"
"version": "e8b689a"
},
{
"id": "ad-evolved",
Expand All @@ -60,7 +61,7 @@
"stars": 3398,
"enabled": true,
"description": "A forked repository that actively maintains [a/AnimateDiff](https://github.com/ArtVentureX/comfyui-animatediff), created by ArtVentureX.\n\nImproved AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff.\n[w/Download one or more motion models from [a/Original Models](https://huggingface.co/guoyww/animatediff/tree/main) | [a/Finetuned Models](https://huggingface.co/manshoety/AD_Stabilized_Motion/tree/main). See README for additional model links and usage. Put the model weights under %%ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models%%. You are free to rename the models, but keeping original names will ease use when sharing your workflow.]",
"version": "90fb133"
"version": "d8d163c"
},
{
"id": "comfyui-gguf",
Expand Down Expand Up @@ -114,7 +115,7 @@
"stars": 2791,
"enabled": true,
"description": "Nunchaku ComfyUI Node. Nunchaku is the inference that supports SVDQuant. SVDQuant is a new post-training training quantization paradigm for diffusion models, which quantize both the weights and activations of FLUX.1 to 4 bits, achieving 3.5× memory and 8.7× latency reduction on a 16GB laptop 4090 GPU. See more details: https://github.com/mit-han-lab/nunchaku",
"version": "v1.0.2"
"version": "v1.2.1"
},
{
"id": "advancedliveportrait",
Expand Down Expand Up @@ -159,7 +160,7 @@
"stars": 2257,
"enabled": true,
"description": "This custom node allows you to generate pure python code from your ComfyUI workflow with the click of a button. Great for rapid experimentation or production deployment.",
"version": "v1.3.1"
"version": "v2.1.0"
},
{
"id": "supir",
Expand All @@ -168,7 +169,7 @@
"stars": 2233,
"enabled": true,
"description": "Wrapper nodes to use SUPIR upscaling process in ComfyUI",
"version": "0613a92"
"version": "fe0d660"
},
{
"id": "liveportrait-kijai",
Expand Down Expand Up @@ -222,7 +223,7 @@
"stars": 1618,
"enabled": true,
"description": "Nodes to use Florence2 VLM for image vision tasks: object detection, captioning, segmentation and ocr",
"version": "606bc5c"
"version": "d8cb44d"
},
{
"id": "comfyui-cogvideoxwrapper",
Expand All @@ -240,7 +241,7 @@
"stars": 1522,
"enabled": true,
"description": "Nodes related to video workflows",
"version": "993082e"
"version": "2984ec4"
},
{
"id": "alekpet",
Expand All @@ -249,7 +250,7 @@
"stars": 1464,
"enabled": true,
"description": "Nodes: PoseNode, PainterNode, TranslateTextNode, TranslateCLIPTextEncodeNode, DeepTranslatorTextNode, DeepTranslatorCLIPTextEncodeNode, ArgosTranslateTextNode, ArgosTranslateCLIPTextEncodeNode, PreviewTextNode, HexToHueNode, ColorsCorrectNode, IDENode.",
"version": "ba55cc2"
"version": "6310c31"
},
{
"id": "usdu",
Expand All @@ -258,7 +259,7 @@
"stars": 1452,
"enabled": true,
"description": "ComfyUI nodes for the Ultimate Stable Diffusion Upscale script by Coyote-A.",
"version": "34a3c2c"
"version": "bebd569"
},
{
"id": "eff-nodes",
Expand All @@ -267,7 +268,7 @@
"stars": 1427,
"enabled": true,
"description": "A collection of ComfyUI custom nodes to help streamline workflows and reduce total node count.[w/NOTE: This node is originally created by LucianoCirino, but the [a/original repository](https://github.com/LucianoCirino/efficiency-nodes-comfyui) is no longer maintained and has been forked by a new maintainer. To use the forked version, you should uninstall the original version and **REINSTALL** this one.]",
"version": "f0971b5"
"version": "4579b7d"
},
{
"id": "comfyui-workspace-manager",
Expand All @@ -276,7 +277,7 @@
"stars": 1417,
"enabled": true,
"description": "A ComfyUI custom node for project management to centralize the management of all your workflows in one place. Seamlessly switch between workflows, create and update them within a single workspace, like Google Docs.",
"version": "prod"
"version": "dfc9218"
},
{
"id": "comfyui-fluxtapoz",
Expand Down Expand Up @@ -368,15 +369,6 @@
"description": "Based on GroundingDino and SAM, use semantic strings to segment any element in an image. The comfyui version of sd-webui-segment-anything.",
"version": "ab63955"
},
{
"id": "teacache",
"name": "ComfyUI-TeaCache",
"repository": "https://github.com/welltop-cn/ComfyUI-TeaCache",
"stars": 1066,
"enabled": true,
"description": "Unofficial implementation of [ali-vilab/TeaCache](https://github.com/ali-vilab/TeaCache) for ComfyUI",
"version": "91dff8e"
},
{
"id": "essentials",
"name": "ComfyUI Essentials",
Expand All @@ -402,7 +394,7 @@
"stars": 1036,
"enabled": true,
"description": "Achieve seamless inpainting results without needing a specialized inpainting model.",
"version": "Release"
"version": "1.5.3"
},
{
"id": "res4lyf",
Expand All @@ -420,7 +412,7 @@
"stars": 987,
"enabled": true,
"description": "'✂️ Inpaint Crop' is a node that crops an image before sampling. The context area can be specified via the mask, expand pixels and expand factor or via a separate (optional) mask.\n'✂️ Inpaint Stitch' is a node that stitches the inpainted image back into the original image without altering unmasked areas.",
"version": "c2c2a41"
"version": "8e59ab1"
},
{
"id": "steerable-motion",
Expand All @@ -438,7 +430,7 @@
"stars": 951,
"enabled": true,
"description": "This is a workflow for my simple logic amazing upscale node for DIT model. it can be common use for Flux,Hunyuan,SD3 It can simple tile the initial image into pieces and then use image-interrogator to get each tile prompts for more accurate upscale process. The condition will be properly handled and the hallucination will be significantly eliminated.",
"version": "v1.0.2"
"version": "V1.0.3"
},
{
"id": "adv-cnet",
Expand All @@ -447,7 +439,7 @@
"stars": 949,
"enabled": true,
"description": "Nodes for scheduling ControlNet strength across timesteps and batched latents, as well as applying custom weights and attention masks.",
"version": "2bde95a"
"version": "b03791e"
},
{
"id": "ue",
Expand All @@ -456,7 +448,7 @@
"stars": 942,
"enabled": true,
"description": "A set of nodes that allow data to be 'broadcast' to some or all unconnected inputs. Greatly reduces link spaghetti.",
"version": "c01c3ce"
"version": "a3952a4"
},
{
"id": "comfyui-latentsyncwrapper",
Expand Down Expand Up @@ -573,7 +565,7 @@
"stars": 724,
"enabled": true,
"description": "TTS Audio Suite - Universal multi-engine TTS extension for ComfyUI with unified architecture supporting ChatterBox, F5-TTS, and future engines like RVC. Features modular engine adapters, character voice management, comprehensive SRT subtitle support, and advanced audio processing capabilities.",
"version": "v4.22.0"
"version": "v4.25.1"
},
{
"id": "lucy-edit-comfyui",
Expand Down Expand Up @@ -629,7 +621,6 @@
"description": "ComfyUI-QwenVL custom node: Integrates the Qwen-VL series, including Qwen2.5-VL and the latest Qwen3-VL, to enable advanced multimodal AI for text generation, image understanding, and video analysis.",
"version": "fcd1ada"
},

{
"id": "advancedRefluxControl",
"name": "Advanced Reflux control",
Expand Down Expand Up @@ -664,7 +655,7 @@
"stars": 644,
"enabled": true,
"description": "NODES: An industrial-grade zero-shot text-to-speech synthesis system with a ComfyUI interface.",
"version": "928812f"
"version": "81f6d05"
},
{
"id": "external-tooling",
Expand All @@ -682,7 +673,7 @@
"stars": 623,
"enabled": true,
"description": "The nodes detached from ComfyUI Layer Style are mainly those with complex requirements for dependency packages.",
"version": "6292ad8"
"version": "7b678b4"
},
{
"id": "comfyui-enricos-nodes",
Expand Down Expand Up @@ -799,7 +790,7 @@
"stars": 10,
"enabled": true,
"description": "常用 ComfyUI 节点集合,包含高级裁剪、图像缩放、批处理、图像拼接等实用节点,源自 ComfyUI_LayerStyle。",
"version": "cb6e904"
"version": "789eff2"
}
]
}
}
Loading