


2026年7月31日,ComfyUI 发布 v0.29.2 版本。本次版本为不可变发布,发布标题与发布说明之外的内容不可修改。
从更新内容来看,v0.29.2 的核心方向非常明确:一方面修复前端资源加载与 SVG 预览相关问题,并进一步强化用户可控文件内容的安全防护;另一方面扩展合作伙伴节点能力,新增 Ideogram P-Image 模型支持,并加入 MiniMax H3 相关能力。同时,Bria 视频移除功能的计费信息、工作流模板版本、前端包版本以及整体版本号也同步更新。
本次更新共包含 9 次提交、13 个文件变更、6 位贡献者参与,累计新增 1016 行、删除 31 行代码。
一、版本信息与整体更新概览
本次更新后的版本号为:
ComfyUI v0.29.2
项目版本文件中的版本号已从 v0.29.0 更新至 v0.29.2,包括:
comfyui_version.py
pyproject.toml
依赖包也完成同步升级:
comfyui-frontend-package:1.47.10 更新至 1.47.11
comfyui-workflow-templates:0.11.19 更新至 0.11.20
这意味着本次升级不仅包含后端节点与安全逻辑调整,也包含前端组件包与工作流模板的同步迭代。
二、前端修复:修复 user.css 加载异常
v0.29.2 修复了 user.css 加载被破坏的问题。
在用户数据文件的处理逻辑中,系统会根据文件类型决定响应的 Content-Type 和 Content-Disposition。此前,为了避免用户上传或存储的危险内容在应用同源环境中被直接执行,系统倾向于将可能危险的内容作为附件下载,而非内联打开。
不过,user.css 是一个特殊文件。它本身需要被浏览器以内联 CSS 的形式加载,才能让用户自定义样式生效。因此,新版本明确增加了对 user.css 的特殊识别逻辑。
处理流程如下:
- 强制设置 Content-Type 为 text/css。
- 强制设置 Content-Disposition 为 inline。
- 继续按照普通用户文件进行处理。
- 对危险类型进行二进制下载保护。
- 设置 Content-Disposition 为 attachment。
核心逻辑可以概括为:
if is_user_css:
content_type = "text/css"
disposition = "inline"
else:
if folder_paths.is_dangerous_content_type(content_type):
content_type = 'application/octet-stream'
disposition = "attachment"
同时,响应头中的 Content-Disposition 不再固定写死为 attachment,而是使用根据文件类型计算出的 disposition。
"Content-Disposition": disposition
这一调整确保 user.css 可以正常被浏览器加载,同时不会削弱普通用户文件的下载保护策略。
三、安全修复:解决 SVG 预览与存储型跨站脚本防护之间的冲突
本次更新中最关键的改动之一,是对 SVG 文件预览与危险内容下载策略的重新处理。
此前,为了防止用户可控文件内容在应用域名下内联执行,系统会针对 SVG、HTML、XML 以及相关 XML 方言等潜在危险内容采取强制下载策略。这类保护主要针对存储型跨站脚本风险。
但这一策略带来了一个副作用:SVG 图片预览会受到影响。
SVG 虽然是图片格式,但它本质上也是一种 XML 文档格式,可能包含脚本或外部引用等内容。如果它以文档方式打开,确实可能成为安全风险;但如果 SVG 是通过 img 标签作为图片资源加载,浏览器会以更受限的静态图片模式处理它,脚本和外部引用不会按普通文档方式执行。
因此,v0.29.2 引入了更加精细的判断机制:只有当 SVG 被确认用于图片加载时,才允许它以内联图片形式返回;其他场景则继续强制下载。
新增的辅助函数为:
renders_safely_as_image(content_type, sec_fetch_dest)
该函数用于判断某个危险类型是否仍然可以安全地作为图片内联渲染。
它的规则包括:
对应逻辑可以概括为:
if sec_fetch_dest != 'image':
return False
return normalized_content_type == 'image/svg+xml'
这样做的结果是:
- SVG 被 img 标签加载时,可恢复正常图片预览。
- SVG 被作为文档导航打开时,仍会被强制下载。
- 非浏览器客户端或缺失请求头的场景,会默认采用更严格策略。
- HTML、XML、其他 XML 方言等危险内容不会因为该调整而失去保护。
四、安全响应头增强:防止缓存跨场景复用 SVG 响应
本次安全修复不仅处理了 SVG 是否允许内联的问题,还特别考虑了浏览器缓存和中间缓存可能造成的安全隐患。
如果同一个 SVG 地址先被浏览器作为图片加载,然后该响应被缓存,之后又被作为文档导航加载,那么原本安全的图片加载响应可能在新的使用场景下产生风险。
为避免这种跨目标复用行为,新版本对相关响应加入了以下响应头:
Vary: Sec-Fetch-Dest
Cache-Control: no-store
其中:
- Vary: Sec-Fetch-Dest 表示缓存系统需要根据 Sec-Fetch-Dest 区分不同请求场景。
- Cache-Control: no-store 表示该响应不应被缓存和复用。
这一设计确保图片加载场景与文档加载场景不会共享同一份缓存响应,从而避免安全策略被缓存行为绕过。
五、危险内容类型处理更加统一
v0.29.2 将危险内容类型处理逻辑进一步集中到统一的判断函数中,避免不同接口之间的策略逐渐偏离。
更新涉及资产下载、视图访问和用户数据访问等路径。系统通过统一的危险内容类型判断机制,处理以下风险类别:
- SVG 类型内容
- HTML 类型内容
- XML 类型内容
- 带有 XML 后缀的 MIME 类型
- 携带字符集参数的 MIME 类型
- 大小写不同的 MIME 类型
- XML 方言内容类型
新版本在处理内容类型时,会先去掉 MIME 参数,只保留主类型:
content_type = content_type.split(";", 1)[0].strip() or "application/octet-stream"
这一调整解决了一个重要问题:上传方提供的 MIME 类型可能自带 charset 等参数,而底层响应对象在某些情况下不接受带字符集参数的 content_type。此前这可能让本应正常处理的内联 SVG 因参数格式问题变成服务器错误。
现在,无论上传者提供的 MIME 类型是否附带参数,系统都会先进行规范化,再决定是否需要强制下载或允许图片预览。
六、资产下载接口的安全策略更新
在资产下载接口中,新版本对用户可控资产内容采取更严格且更精确的处理方式。
当系统判断某个内容类型属于危险内容时,会默认执行以下操作:
Content-Type 设置为 application/octet-stream
Content-Disposition 设置为 attachment
也就是说,默认不会让危险内容直接在应用域名下以内联方式打开。
但对于满足“SVG 且请求目标为图片”的条件,则允许保持 SVG 图片类型并以内联方式响应,以恢复图片预览能力。
新的逻辑同时保留了以下安全响应头:
X-Content-Type-Options: nosniff
该响应头用于阻止浏览器根据内容猜测类型,避免浏览器忽略服务器声明的内容类型而进行不安全的推断。
此外,文件名仍会移除回车和换行字符,并进行 URL 编码处理,以降低响应头注入等风险。
七、用户数据接口的文件响应逻辑优化
用户数据接口也进行了对应调整。
在用户数据文件处理过程中,系统会先根据文件路径猜测 MIME 类型。如果 MIME 类型属于危险内容,默认会将其转换为:
application/octet-stream
随后再根据是否为 user.css 决定最终的响应形式。
对于普通用户文件:
Content-Disposition: attachment
对于 user.css:
Content-Type: text/css
Content-Disposition: inline
最终响应依然保留:
X-Content-Type-Options: nosniff
这使得用户样式文件能够正常工作,同时普通用户可控文件依然默认以下载方式提供,减少直接渲染带来的风险。
八、新增 Ideogram P-Image 节点
本次版本新增 Ideogram P-Image 节点,为文本生成图片工作流扩展了新的合作伙伴模型能力。
该节点的显示名称为:
Ideogram P-Image
分类位置为:
partner/image/Ideogram
节点定位是一个快速文本生成图片模型,强调以下能力:
- 强字体与文字生成能力
- 强照片级真实感表现
- 支持 Ideogram 4.0 结构化 JSON 描述
- 支持精确文字、颜色与布局描述
- 可通过关闭提示词增强功能,让结构化描述按原样使用
节点输入包括以下参数。
prompt
文本提示词输入,支持多行。
除了普通自然语言提示词外,还支持 Ideogram 4.0 结构化 JSON 描述。结构化描述可以用于指定:
- 精确颜色
- 精确文字字符串
- 边界框布局
- 文字与画面的具体位置关系
如果用户提供的是自己的结构化 JSON 描述,应将 prompt_upsampling 设置为 OFF,以便请求内容按原样使用。
quality
质量档位支持四种选项:
VERY_LOW
LOW
MEDIUM
HIGH
默认值为:
MEDIUM
各档位的定位如下:
- VERY_LOW:适合大规模草稿生成。
- LOW:适合较低成本的草稿生成。
- MEDIUM:日常默认档位。
- HIGH:适合复杂提示词、精细细节和困难文字。
更新说明特别指出,难度较高的文字在低于 MEDIUM 的质量档位下可能表现不佳。
resolution
分辨率档位支持:
1K
2K
默认值为:
1K
实际像素尺寸会随宽高比变化。例如,在 16 比 9 的比例下:
1K:1280 × 720
2K:2560 × 1440
如果用户需要更清晰的文字效果,建议使用 HIGH 质量配合 2K 分辨率。
aspect_ratio
宽高比使用既有比例映射,默认值为:
1:1
接口侧会将该比例转换为对应格式后再发送请求。
prompt_upsampling
提示词增强模式支持:
AUTO
ON
OFF
默认值为:
AUTO
其作用是将简短提示词扩展为更详细的结构化描述,再用于生成图像。
不同选项的定位为:
- AUTO:自动决定是否进行提示词扩展。
- ON:执行提示词扩展。
- OFF:不进行提示词扩展,按用户原始提示词或结构化 JSON 内容处理。
如果用户需要严格控制提示词、精确文字或自定义 JSON 描述,应使用 OFF。
seed
随机种子范围为:
0 至 2147483647
默认值为:
42
种子支持生成后自动控制,可用于结果复现。
需要注意的是:
- 当 prompt_upsampling 为 OFF 时,相同种子和相同设置可以得到可复现结果。
- 当 prompt_upsampling 为 ON 或 AUTO 时,提示词改写本身可能每次不同。
- 若要复现开启提示词增强后的结果,可以使用输出的 final_prompt,并将 prompt_upsampling 设为 OFF,同时保持相同 seed。
九、Ideogram P-Image 节点输出与异常处理
Ideogram P-Image 节点包含两个输出。
图像输出
节点会下载并处理接口返回的图片地址,将最终图片作为图像输出返回。
final_prompt 输出
节点会输出 final_prompt,即模型实际用于生成图片的提示词。
当提示词增强被执行时,final_prompt 会是扩展后的结构化描述;当提示词增强关闭时,final_prompt 则是用户传入的原始提示词。
这一输出对于复现结果尤其重要。用户可以将 final_prompt 再次输入节点,并设置:
prompt_upsampling:OFF
seed:保持不变
从而更稳定地复现已经生成的图像。
在异常处理方面,节点会验证 prompt 不能为空。如果接口没有返回图片数据,节点会抛出“未生成图片”的错误。
如果接口返回的数据中没有有效图片地址,但存在内容安全标记为不安全的图像数据,则会提示生成请求被内容安全过滤器拦截,用户需要调整提示词后重试。
十、Ideogram P-Image 价格标识逻辑
新节点增加了基于质量与分辨率的价格标识。
价格计算依赖两个输入项:
quality
resolution
不同质量与分辨率对应的美元价格如下。
| VERY_LOW | 0.00429 美元 | 0.00858 美元 |
| LOW | 0.010725 美元 | 0.02145 美元 |
| MEDIUM | 0.0143 美元 | 0.0286 美元 |
| HIGH | 0.02145 美元 | 0.0429 美元 |
从价格逻辑可以看出,2K 分辨率的价格通常是同质量 1K 分辨率的两倍。
对于需要处理复杂构图、细节、真实感以及较难文字的任务,高质量与高分辨率组合会提供更高规格的生成选项。
十一、新增 MiniMax H3 支持
v0.29.2 同步加入 MiniMax H3 支持。
本次更新为 Hailuo 03 任务创建、任务查询、内容输入、错误信息和使用量统计补充了完整的数据结构定义,为文本、图片、视频、音频等多模态输入提供支持。
新增的内容类型包括:
text
image_url
video_url
audio_url
对应能力如下。
文本内容
文本内容包含:
type:text
text:文本内容
图片内容
图片内容包含图片地址,并支持角色字段。
type:image_url
image_url:图片地址
role:角色信息
视频内容
视频内容包含视频地址,默认角色为参考视频。
type:video_url
video_url:视频地址
role:reference_video
音频内容
音频内容包含音频地址,默认角色为参考音频。
type:audio_url
audio_url:音频地址
role:reference_audio
十二、MiniMax H3 任务创建参数
MiniMax H3 的任务创建请求包含以下字段。
model
模型名称,为必填项。
content
内容列表,为必填项,且至少需要包含一项内容。
内容列表可由以下类型组成:
- 文本内容
- 图片地址内容
- 视频地址内容
- 音频地址内容
resolution
分辨率,为必填项。
duration
视频时长,为必填项,范围限制为:
5 秒至 15 秒
ratio
画面比例,为可选项。
seed
随机种子,为可选项,范围为:
0 至 4294967295
aigc_watermark
是否添加 AIGC 水印,为可选布尔参数。
任务创建成功后,会返回任务标识:
task_id
十三、MiniMax H3 任务查询结构
MiniMax H3 的任务查询响应中包含 task 对象。
任务对象包含以下信息:
id
status
error
content
usage
其中:
error
错误信息包含:
code
message
错误码可以是数字、字符串或空值。
content
任务结果内容包含:
url
该字段用于返回最终结果地址。
usage
使用量统计包含:
total_seconds
input_seconds
output_seconds
默认值均为 0。
这一结构能够记录任务总时长、输入时长与输出时长,为异步视频生成任务提供完整的状态与使用量信息。
需要说明的是,MiniMax 节点文件在变更记录中共有 506 处修改,其中新增 504 行、删除 2 行。由于该文件差异较大,完整差异未在当前内容中展开显示,但更新明确标注为新增 MiniMax H3 支持。
十四、Bria 视频移除功能价格调整
本次版本还调整了 Bria 相关视频移除功能的价格信息。
涉及两处价格标识,原先的价格为:
每秒 0.0042 美元
更新后调整为:
每秒 0.005 美元
也就是说,Bria 视频移除相关节点的显示单价已上调至每秒 0.005 美元。
十五、工作流模板与前端依赖同步升级
为了配合本次功能与前端修复,ComfyUI 同步升级了两项依赖。
comfyui-frontend-package 更新至 1.47.11
comfyui-workflow-templates 更新至 0.11.20
前端包升级对应本次前端修复内容,工作流模板升级则意味着内置模板版本同步迭代。
对于使用自动更新、依赖锁定或容器化部署的用户,应注意同步更新 requirements.txt 中的对应依赖版本,避免主程序版本与前端包、模板包版本不匹配。
十六、server.py 变更情况
server.py 在本次更新中也发生了修改。
该文件的变更统计为:
新增 23 行
删除 13 行
由于当前提供的变更内容未展开 server.py 的具体代码差异,因此无法根据现有信息进一步说明其具体实现细节。
十七、v0.29.2 更新总结
代码地址:github.com/Comfy-Org/ComfyUI
ComfyUI v0.29.2 是一次兼顾稳定性、安全性与节点能力扩展的更新。
本次版本的主要价值可以归纳为以下几个方向:
- 修复 user.css 无法正常加载的问题。
- 修复 SVG 预览被安全下载策略影响的问题。
- 保留并增强针对 SVG、HTML、XML 等危险内容的下载保护。
- 通过 Sec-Fetch-Dest 区分 SVG 图片加载与文档加载场景。
- 通过 Vary 和 no-store 避免缓存导致安全响应跨场景复用。
- 统一处理带参数、大小写变化及 XML 方言等 MIME 类型。
- 新增 Ideogram P-Image 文生图节点。
- 支持结构化 JSON 描述、提示词增强、质量档位、分辨率档位与种子复现。
- 新增 final_prompt 输出,方便复现生成结果。
- 新增 MiniMax H3 多模态视频任务相关支持。
- 调整 Bria 视频移除功能的每秒价格。
- 更新前端包与工作流模板版本。
- 将 ComfyUI 版本号更新至 v0.29.2。
对于依赖 user.css 自定义界面的用户、本地预览 SVG 的用户、使用 Ideogram 文生图能力的用户,以及需要 MiniMax 视频生成能力的用户来说,v0.29.2 都带来了直接可见的改进。


