ComfyUI-DLSS5-Enhancer项目评估.md

ComfyUI-DLSS5-Enhancer 项目评估报告


0. 结论速览

维度结论
项目性质ComfyUI 自定义节点包(3 个节点),用自实现的私有二进制协议 v4 驱动第三方 Windows 程序 «DLSS 5 Visual Enhancer» 的原生 D3D12 worker(ReShade carrier → RenoDX add-on → NGX feature 18),对图片批次/视频文件做神经渲染增强 + 可选 1.5x~3x 放大
代码质量中上偏好。分层清晰、防御性强(超时/取消/管道崩溃归因/zip-slip 防护/feature-18 证据校验/无网络无 eval 无 shell=True);扣分:无测试无 CI、安装器无哈希校验、GPU 白名单过严、两个节点失败策略不一致
仓库可信度作者 Blueforcer(Stephan),2017 年注册,AWTRIX 系列作者(248 followers / 67 repos),非匿名小号;仓库 2026-09-02 建,129 star / 7 fork;14 个 commit 全在当天,此后 8 天零提交、4 个 open issue 全部无维护者实质回复
安全Python 侧干净(全仓无网络调用/无 shell=True/无 eval/exec/pickle)。风险集中在安装器与外部二进制:467 MB zip 只校验字节数不校验哈希,随后把 nvngx.dll 当可执行文件运行(杀软必报)
合规偏高风险的灰区:它驱动的 nvngx_dlssnr.dll 是 2026-08 从《NBA 2K27》抢先体验版流出的 NVIDIA 官方签名但未公开发布的组件(310.8.0 / 158 MB / 148M 参数 FP8 / 仅 sm_120)。NVIDIA 至今无 DMCA、无封禁、也无任何表态——自用可以,别分发、别产品化
版本状态已过时:节点包硬钉上游 v3.0(09-01),上游 5 天走到 v7.0(09-05)。我核对 v7.0 源码:协议 magic 与结构体一字未改(客户端大概率仍能驱动),但 v6.0 起 runtime 目录由扁平改为 host/ dlss/ dlssnr/ 三级,本包要求五个文件同层 → v6/v7 的 runtime 无法直接复用,事实上被锁在 ≤ v5.0
你的环境当前不可用:仅 Windows。GPU 机是 Ubuntu 24.04 + RTX 5060 Ti、无 wine;DSH 机只有 GTX 970M(Maxwell,远低于 RTX 30 门槛)。详见第 7 节三条路线
建议小众但真实的技术,值得关注、暂不建议投产;真想要这个效果,优先在 Windows 上直接跑上游 v7.0 独立程序(功能是超集),而不是这个钉在 v3.0 且已停滞的节点包

1. 它到底是什么

1.1 一句话

把图片/视频帧喂给 NVIDIA DLSS 5 神经渲染(NGX feature 18),拿回"重建了材质响应"的帧。README 强调:不是仿风格的滤镜,而是调用原生渲染器。

1.2 技术链路(README 与代码一致)

ComfyUI 节点
   │  RGBA8 帧 + FP16 运动矢量 + 历史重置标志
   ▼
原生 D3D12 worker 进程(文件名必须是 nvngx.dll)
   │  ReShade carrier(dxgi.dll) → RenoDX DLSS 5 add-on → NGX feature 18
   ▼
  RGBA8 重建帧

1.3 三个节点

节点作用关键实现
DLSS5 Settings汇总 13 个神经渲染参数,输出 DLSS5_SETTINGSnodes/settings_node.py
DLSS5 Enhance ImagesIMAGE → IMAGE,批序=时间序,保留 alphanodes/enhance_images.py(整批输出一次性分配,吃显存/内存)
DLSS5 Enhance Video File文件 → 文件,解码/渲染/编码三线程流水线,保留时间戳/章节/元数据、可选音轨与字幕nodes/enhance_video.py + dlss5/media.py

代码实测默认值(非抄文档):1x DLAA、模型 preset M、automatic_mask=on、skin_structure=2.0、local_structure=1.5、nr_intensity=1.0。


2. 代码审查

2.1 结构

install_runtime.py   下载/注册原生运行时(许可提示 + zip-slip 防护)
selftest.py          不依赖 ComfyUI 的协议冒烟测试
dlss5/
  protocol.py        二进制线格式(v4)
  session.py         worker 生命周期、握手、逐帧流式收发
  motion.py          光流时间引导 + 场景切换重置
  settings.py        公开参数 → native 头字段
  paths.py           运行时发现与完整性校验
  diagnostics.py     GPU 检查、feature-18 证据、失败归因
  imaging.py         IMAGE 张量 ↔ RGBA8、letterbox
  media.py           ffprobe 探测、PyAV 解码、NVENC 编码、封装
nodes/               三个 ComfyUI V3 节点

约 1.4k 行 Python + 22 KB README,无额外重依赖(numpy / av / opencv)。

2.2 亮点(确实是认真写的)

  1. 崩溃可归因:把"worker 中途死亡"转成"退出码 + worker 日志尾 + ReShade 日志"的可操作报错(session.py:206-222、diagnostics.py:224-261),并单独识别 0xC0000005(feature-18 内访问违例)给出"升驱动/换 RenoDX 配对"的建议。
  2. 拒绝静默降级:两个节点跑完都检查 ReShade 日志里的 feature-18 证据串,拿不到就报错——避免"其实只做了普通放大却看起来成功"。
  3. 并发/取消处理细致:视频节点有界队列背压(384 MB 预算)、600 s 卡死检测、先 join 写线程再 abort 避免与 PyAV 争用、abort() 先杀 ffmpeg 再取锁避免死锁(media.py:417-432)。
  4. 路径防护:zip 解压过滤 ../绝对路径/盘符(install_runtime.py:99-107);输出相对目录不得逃出 ComfyUI output(enhance_video.py:61-81);prefix 拒绝分隔符与前导 -。
  5. 无网络、无混淆、无 shell=True、无 eval/exec/pickle(全仓 grep 确认),子进程一律 argv 数组。

2.3 发现的问题(按严重度)

#严重度位置问题
1高install_runtime.py:58-79467 MB 下载只校验 Content-Length,不校验 SHA-256/签名,随后解压出的文件会被执行。README 却称该 commit 为 "Secure the runtime installer"
2高install_runtime.py:189,199--url 只要求 https:// 前缀,任意 https 地址都接受 → 社工一句"用这个镜像"即可执行任意 payload
3中diagnostics.py:105-143GPU 门槛用显卡名正则 RTX\s+(\d{2}) ≥30:① 拒绝 RTX A6000/A4000/RTX PRO 等专业卡(= open issue #1);② @lru_cache(maxsize=1) 全局缓存,多卡/换卡/驱动变化不刷新;③ 协议头里没有 GPU index,多卡无法选卡(= open issue #3,作者唯一回复是"问 ChatGPT 后把 if generation < 30: raise 改成 continue")。上游 v5.0 早已改为"检测到 RTX 即继续,特性交给运行时判定"
4中enhance_images.py:81-84一次性 torch.empty(count, out_h, out_w, 4) 分配整批输出,4K 批量极易 OOM,且无预检(只在 README 提醒)
5中enhance_images.py:112 vs enhance_video.py:482-487策略不一致:worker 退出码非 0 时,图像节点丢弃整批结果,视频节点明确容忍("每帧都编码完了,脏退出只告警")。图像节点应采用同样的"成果优先"
6低media.py:193-204_encoder_available 缓存键含分辨率 → 每个新分辨率都要真跑一次 ffmpeg 试编码,缓存随分辨率增长
7低__init__.py:23-30if False: 包起来的 NODE_CLASS_MAPPINGS 死代码块,易误导
8低requirements.txt只有 numpy+av;实际还依赖 opencv(故意不写)、typing_extensions、torch → 普通 pip install -r 装不全,报错延迟到运行时
9低全仓无单元测试、无 CI;selftest.py 必须有 Windows + GPU + runtime 才能跑
10中README:79安装指引不成立:"In ComfyUI-Manager, search for 'DLSS5'"——实测 ComfyUI-Manager custom-node-list.json(3.0 MB)中 dlss 出现 0 次,官方 Comfy Registry 精确 id 返回 404(open issue #2 就是指这件事,无人回复)

2.4 文档与代码一致性抽查

抽查 README 参数表 vs dlss5/settings.py / nodes/settings_node.py:默认值、范围、perf_quality 映射(1x→5、1.5x→2、1.724x→1、2x→0、3x→3)、"nr_preset 无效果""nr_intensity 在 1.0 夹紧""skin_structure 依赖 automatic_mask"等说明全部对得上。

但有一处明显夸大(见 6.3):README 第 31–34 行称游戏里"引擎把渲染帧连同几何、贴图与光照缓冲以及运动矢量交给模型",而 NVIDIA 官方新闻稿只说输入是 "color and motion vectors",ADLR 研究页列的条件也只有 rendered frame / motion vectors / temporal state / artistic-direction values。本包对"3D 引导"的描述高于官方口径。

另外,"实测结论"(0.56x/0.70x/0.73x 细节能量比等)全部为作者自测,无第三方复现。


3. 版本与兼容性

3.1 时间线

版本日期关键变化
上游 v0.1 / v1.0 / v2.0 / 2.108-30 ~ 09-01从视频转换器起步;支持 RTX 30;修复丢帧/损坏;提速 45%
上游 3.009-01批处理、J/K/L/M 模型 preset ← 节点包钉的就是这个
上游 v4.009-02帧插值(DLSS Frame Generation)、AI/Video GPU 双选择
上游 v5.009-03放宽 GPU/运行时兼容检查(取消固定白名单)、HDR Mode、CPU/NVENC 分离
上游 v6.009-04架构优化运行时(自称 Ada/Blackwell 最高 +70%)、Live 实时渲染模式、480 fps 帧插值
上游 v7.009-05统一 universal NR runtime(不再手选架构)、RTX VSR 放大 + RTX Video HDR、1x~4x
节点包 1.1.009-0214 个 commit 后再无提交(pushed_at = 2026-09-02T14:50:04Z)

3.2 协议层:源码看仍兼容

节点包 README 说"必须 v3.0,否则协议不认"。但我拉了上游 v7.0 的 src/core/runtime.py:VIDEO_MAGIC/SETUP_MAGIC/FRAME_MAGIC/OUT_MAGIC 与 VIDEO_HEADER_FORMAT="<14I4f"、SETUP_RESPONSE_FORMAT="<12I" 与 v3.0 完全一致,字段顺序也一致 → 源码层面 v7.0 的 worker 大概率仍讲同一套 v4 协议(未实跑验证,故标为高可信推测)。

顺带一个反差:上游 v7.0 校验证据时用硬编码版本串 signed DLSSNR 310.8.0 D3D12 runtime initialized,节点包改成了版本容忍正则 signed DLSSNR [\d.]+ …——这一处节点包写得比上游好。

3.3 文件布局层:v6.0 起不兼容(比协议更致命)

tagbin/runtime 布局
3.0 / v4.0 / v5.0扁平:nvngx.dll、dxgi.dll、renodx-dlss5.addon64、nvngx_dlss.dll、nvngx_dlssnr.dll + ReShade.log
v6.0host/(worker、dxgi、addon、dlssnr)+ dlss/
v7.0host/ + dlss/ + dlssnr/

节点包 dlss5/paths.py:26-32 要求五个文件同层;而 v6+ 的 worker 以 cwd=runtime 启动并按自己的相对路径找 host/、dlssnr/(上游 src/core/paths.py)。所以:

(补充:issue #1/#3 的 GPU 拒绝发生在节点包自己的 diagnostics.py,所以"换个新 runtime"根本修不了那两条 issue——这点很容易被误判。)

3.4 与你的 GPU 的匹配度


4. 安全与合规

4.1 供应链

4.2 为什么杀软一定报

paths.py:22-24 自己写明:worker 是 exe 但必须叫 nvngx.dll。把可执行文件伪装成 NVIDIA DLL 名再运行,是 Defender/SmartScreen 的标准告警模式;README 的解法是"把 runtime 目录加白名单",即让你主动关掉一层防护。 (上游也有实例:issue #39 有用户报 rtx-video-worker.exe 被判 Gen:Variant.Jatommy.Jasper.2.2444W 并隔离;维护者解释为无签名+新编译+低流行度导致的启发式误报,并给出 VirusTotal 0/70。未发现任一仓库为恶意软件的独立证据,但"报警→加白"这个操作本身要你自己承担。)

4.3 "signed snippet" 到底是什么(已查清,非推测)

4.4 运行时代码攻击面

全仓无网络请求(install_runtime.py 除外)、无遥测、无 eval/exec/pickle、无 shell=True,子进程全为参数数组 → Python 侧可认为干净;真实攻击面是那 467 MB 二进制 + Windows 图形栈,无法从 Python 侧评估。


5. 上游项目背景(对比参考)

节点包 ComfyUI-DLSS5-Enhancer上游 DLSS 5 Visual Enhancer
定位ComfyUI 内两个处理节点Windows 便携 GUI(本地 Gradio)
Star / Fork129 / 7(2026-09-10)706 / 57
最近版本1.1.0(09-02 后无提交)v7.0(09-05,下载 8637 次)
能力图片批、视频文件;1x~3x图片/视频 + 帧插值(DLSSG,最高 480 fps) + Live 实时渲染(本地/直播/YouTube) + RTX VSR 放大 + RTX Video HDR + 文件夹批量直写 + ZIP 打包 + GPU 分选
许可MIT(仅自身代码)MIT(仅自身代码;第三方二进制另算)
平台Windows only64 位 Windows 11 + D3D12
维护状态8 天零提交、issue 不回应5 天 7 个版本,活跃

即:上游本体已是"全功能版",节点包是"把其中一条渲染链路搬进 ComfyUI"的子集,还钉在 5 天前。节点包对你的价值只有"不用出工作流";代价是功能少、版本旧、仍需要 Windows。


6. "它真的是 DLSS 5 吗?"(本次核查的关键问题)

6.1 证据链(支持"是真的")

6.2 不确定与已知质量问题

6.3 一处反向的"名不副实"

节点包 README 说游戏内引擎会提供"几何、贴图、光照缓冲",高于 NVIDIA 官方口径(官方只说 color + motion vectors;ADLR 也只列 frame/motion vectors/temporal state/artistic controls)。这一句是宣传性拔高,不影响工程实现,但说明它的文档不能全信。

定级:技术链路可信度高(有 NVIDIA 签名真实模型 + 可观测证据),"效果是否值得"存在明显争议,建议先看样片再决定。


7. 在你的环境里能不能用(实测)

机器硬件 / 系统是否满足
GPU 机 192.168.31.31RTX 5060 Ti 16 GB / 驱动 610.43.02 / Ubuntu 24.04.3 / ComfyUI ec803fc9(2026-09-02,含 comfy_api/latest,V3 API 可用)/ 无 wine❌ 平台不符(缺 Windows);ComfyUI 版本与 V3 API 本身没问题
DSH 机 192.168.31.76Intel 核显 + GTX 970M(Maxwell) / 无 wine❌ 双重不符(平台 + 显卡远低于 RTX 30 门槛)

其它实测:

三条路线

路线成本评价
A. GPU 机装 Wine + vkd3d-proton 跑 worker中成功率低但没到绝望:仓库有未合并 PR #4(ethanfel,2026-09-06,14 文件 +2018/−26),做法是绕开 ReShade,用 MinGW 交叉编译的 native/dlss5nr_bridge.cpp(+1299)直连 D3D12/NGX,caller_shim.cpp(+67)产出 nvngx.dll_comfy.dll 过 caller 校验,frame_worker.cpp(+107)沿用 v4 管道协议;并把 GPU 判定从型号正则改成 compute capability(8.6→30 / 8.9→40 / 12.0→50,顺带修好 A6000 等专业卡)。作者在 RTX 5090 + 驱动 610.57.04 + Wine 11.17 + Proton CachyOS 上验证过,但自述仍是实验性、未验证与 Windows 路径的像素对齐。PR 来源可追溯到 kos94ok/ComfyUI-DLSS5-NR-Linux ← lisitskyaa/ComfyUI-DLSS5-NR。建议:先小成本试探(打这个 PR → selftest.py),失败就止损;同时注意它 4 天无人回应、合并状态 clean 但停滞
B. GPU 机双系统 / Windows 虚拟机 + GPU 直通高能跑,但要重装或配 VFIO;单卡直通意味着 Linux 侧 ComfyUI 停摆。为一个"增强滤镜"改动整机形态不划算
C. 另找一台 Windows 跑上游 v7.0 独立程序低(只需一台 RTX 30/40/50 的 Windows)最推荐:功能是节点包的超集(帧插值 / RTX VSR / HDR / Live),不受"钉 v3.0"限制,产物拷回 ComfyUI 流水线即可
D. 什么都不做0如果你只是想减少 AI 视频的蜡感皮肤,现有 RTX VSR + FaceRefine 已覆盖一部分;DLSS5 NR 的差异(材质重建而非锐化)建议先看样片再决定

8. 给这个项目的改进建议(若你要提 issue/PR)

  1. 安装器加哈希校验:把 v3.0 资产 SHA-256 钉进仓库,并拒绝非白名单 --url(最高性价比的一处修复)。
  2. 解绑 GPU 白名单:照上游 v5.0 或 PR #4 的做法(compute capability 判定 / 检测到 RTX 即继续),并去掉 lru_cache(或把驱动+GPU 列表纳入 key)。
  3. 加 GPU 选择参数:协议头透传 GPU index(需上游配合)。
  4. 统一失败策略:图像节点也应"保留已完成帧"。
  5. 对 v6+ runtime 给出明确提示:现在只会说 "runtime is incomplete",应提示"检测到 v6/v7 新布局,请使用 ≤ v5.0 或等待适配"。
  6. 图像节点加显存预检:按 count × out_w × out_h × 4 × 4 B 估算并提前报错。
  7. 修正 README 第 79 行的 ComfyUI-Manager 安装指引(该指引不成立,也是 open issue #2);requirements.txt 补 typing_extensions,并给一条含 opencv 的"全量安装"命令。

附录 A:核实方法与证据留痕

# 仓库元数据
curl -s https://api.github.com/repos/Blueforcer/ComfyUI-DLSS5-Enhancer
  -> created 2026-09-02T06:39:46Z, stars 129, forks 7, open_issues 4, pushed 2026-09-02T14:50:04Z
curl -s https://api.github.com/repos/Merserk/dlss5-visual-enhancer
  -> created 2026-08-30T19:45:52Z, stars 706, forks 57, license MIT, pushed 2026-09-08

# 提交历史:14 个 commit 全在 2026-09-02
git log --pretty='%h %ad %s' --date=short

# 协议一致性(上游 v7.0 源码)
grep -n "VIDEO_MAGIC\|SETUP_MAGIC\|VIDEO_HEADER_FORMAT\|SETUP_RESPONSE_FORMAT" dlss5-up/src/core/runtime.py
  -> 0x34563544 / 0x34505553 / "<14I4f" / "<12I"(与 v3.0 相同)

# 目录布局变化
curl -s https://raw.githubusercontent.com/Merserk/dlss5-visual-enhancer/3.0/src/runtime.py | grep "WORKER ="
  -> WORKER = RUNTIME / "nvngx.dll"                    # 扁平
curl -s https://raw.githubusercontent.com/Merserk/dlss5-visual-enhancer/v7.0/src/core/paths.py
  -> HOST_DIR=RUNTIME/"host"; DLSS_DIR=RUNTIME/"dlss"; DLSSNR_DIR=RUNTIME/"dlssnr"

# 安全面
grep -rnE "urllib|requests|socket|shell=True|eval\(|exec\(|pickle" dlss5/ nodes/
  -> 无命中(仅安装器使用 urllib)

# 注册表收录
curl -s https://raw.githubusercontent.com/Comfy-Org/ComfyUI-Manager/main/custom-node-list.json | grep -c dlss
  -> 0
curl -s -o /dev/null -w '%{http_code}' https://api.comfy.org/nodes/ComfyUI-DLSS5-Enhancer
  -> 404

# 本机下载实测
timeout 25 curl -sL -r 0-20000000 -o chunk.bin -w '%{size_download} %{speed_download}' <release asset>
  -> 2,039,808 bytes / 约 20 s ≈ 100 KB/s(未下完,超时中断)

# 环境
GPU 机: nvidia-smi -> RTX 5060 Ti, 610.43.02, 16311 MiB;Ubuntu 24.04.3;which wine -> 无
DSH 机: lspci -> Intel 4th Gen iGPU + GM204M [GTX 960 OEM / 970M];which wine -> 无

附录 B:官方口径 / 生态 / 社区(检索结果)

B1. NVIDIA DLSS 5 官方口径

B2. feature 18 / signed snippet / 组件泄露

B3. 社区反应

B4. 收录状态

B5. 本报告采信的外部来源


本报告由 DSH 会话生成;所有命令、API 返回与网页抓取均为 2026-09-10 当日实测。事实与推测已分别标注,第 6 节与附录 B 中带"推测/未验证"字样的结论请勿单独引用。

下载此文件