ComfyUI_CineStyle
A set of nodes in ComfyUI, developed for video workflows
Nodes (6)
ComfyUI CineStyle
ComfyUI_CineStyle 是一组为ComfyUI 视频工作流开发的,更易于使用的自定义节点。 本项目不能替代专业视频编辑软件。
安装插件
- 在CompyUI插件目录(例如“CompyUI\custom_nodes\”)中打开cmd窗口,键入
git clone https://github.com/chflame163/ComfyUI_CineStyle.git
如何找到本节点组
-
在ComfyUI画布点击右键 - Add Node, 找到 "😺dzNodes/CineStyle"。
<img src="images/node-menu.jpg" alt="CineStyle 节点菜单" width="360"> -
或者在ComfyUI画布双击, 在搜索框输入"cinestyle"。
<img src="images/node-search.jpg" alt="CineStyle 节点搜索" width="360">
更新说明
- 添加 CS VFX Beauty 节点,自动估算视频片段肤色并执行皮肤磨皮美化处理,支持独立的预览代理输入。
- 添加 CS Video Segment (SAM3.1) 节点,在锚点帧用 Semantic、粗略 Mask、Point 或 BBox 定义对象,并自动传播 mask;Selector 支持预览代理。
- 添加 CS Video Segment (SeC-4B) 节点,使用 SeC-4B 的概念理解和 LongSAM2.1 记忆传播 mask;Selector 支持预览代理。
- 添加 CS SeC-4B Model Loader 节点,用于加载和复用 SeC-4B 推理模型。
- 添加 CS Load Video 节点,用于加载视频,支持出入点设置、更改尺寸、帧率和大视频预览代理。
- 添加
CS Video Subtitle Track节点,将 SRT 作为可编辑字幕轨叠加到标准VIDEO,支持字体、渐变填充、描边、阴影和位置预览。 - 添加 CS Save Video 节点,支持可选 metadata 写入和 H.264 目标码率控制。
示例工作流及素材位于插件的 workflows 子目录。
节点说明
CS Load Video
把视频文件加载到 ComfyUI,并提供一个可交互的时间线编辑窗口。节点执行时会读取视频帧、音频和帧率,根据工作流中保存的设置截取和调整内容,然后输出给下游节点。
- 从节点直接选择和上传视频。
- 点击节点上的
Edit Timeline按钮进入时间线界面。 - 通过时间线拖动入点和出点,支持逐帧定位。
- 通过
Set In和Set Out按钮,把视频预览窗口的当前帧快速设为入点或出点。 - 使用蓝色当前帧指针,在时间线上拖动即可同步预览对应视频帧。
- 出入点设置按钮组的
Play只播放已设置的入点到出点范围。 - 视频预览窗口的白色播放键仍然播放完整视频,不受入出点限制。
- 开启保持宽高比后,修改宽度或高度会自动联动另一项。
- 输出尺寸可以自动四舍五入到指定倍数,适合视频模型常见的尺寸要求。
- 打开 Edit Timeline 时,如果当前预览分辨率超过
proxy_threshold,界面会自动生成保持宽高比、目标像素为proxy_size的预览代理,降低大视频预览的内存和解码压力;节点最终输出仍使用原视频。
节点选项说明:

- video: 选择 ComfyUI 输入目录中的视频,或使用上传控件上传视频文件。
- keep_aspect_ratio:布尔值,默认
true。开启后,宽度和高度按照源视频的原始宽高比联动计算。 - multiple:整数,默认
32。 输出尺寸的取整倍数。宽度和高度会按最近的倍数四舍五入。 - start_frame: 整数,默认
0。 起始帧,使用从0开始的帧编号。 - end_frame:整数,默认
-1|。 结束帧,-1表示使用视频最后一帧。 - width: 整数,默认
0。 输出宽度。0表示根据源视频尺寸和multiple自动计算。 - height: 整数,默认
0。 输出高度。0表示根据源视频尺寸和multiple自动计算。 - fps: 浮点数,默认
0。 输出帧率。0表示保留源视频帧率;输入其他数值时会按目标帧率重新采样帧。 - proxy_threshold:浮点数,单位 MPixels,默认
2.1,范围0.1–1000.0。当前预览或输出分辨率的总像素超过该阈值时才生成代理。 - proxy_size:浮点数,单位 MPixels,默认
0.8,范围0.1–1000.0。生成代理时的目标总像素。 - choose file to upload:点击按钮从本地加载视频。
- Edit Timeline:进入时间线界面。
其中
start_frame、end_frame、width、height和fps可通过Edit Timeline窗口设置或在节点控件中直接编辑。
Edit Timeline 时间线界面

时间线界面从上到下依次包含视频预览、原视频信息、时间读数、当前帧指针、入出点标记栏、时间线操作按钮和输出参数。
入点和出点标记
标记栏中的两个白色手柄分别表示入点和出点:
- 左侧手柄是入点。
- 右侧手柄是出点。
- 可以直接拖动手柄调整范围。
- 点击标记栏空白区域时,程序会根据点击位置距离哪个手柄更近来调整对应边界。
时间线按钮
Set In:将视频预览当前帧设为入点。如果当前帧晚于出点,会自动修正出点。- 入点指示:显示当前入点帧号,点击可跳转到入点。
|<: 跳转到上一帧。只受视频首帧限制,不受入点限制。Play: 只播放从入点到出点的内容,播放到出点后自动暂停。再次播放时,如果当前帧不在范围内,会从入点重新开始。>|: 跳转到下一帧。只受视频尾帧限制,不受出点限制。- 出点指示:显示当前出点帧号,点击可跳转到出点。
Set Out: 将视频预览当前帧设为出点。如果当前帧早于入点,会自动修正入点。
输出说明
- video:标准 ComfyUI
VIDEO类型,包含时间线选段、尺寸、帧率和音频,可直接连接官方视频节点。 - proxy_video:预览代理对象输出,与
video保持相同的入出点、帧数、帧顺序、FPS 和音频。 - IMAGE: 输出的video图像帧批次。
- frame_count: 实际输出帧数。修改 FPS 后,该数值可能与源视频选段帧数不同。
- audio: 选定时间范围内的音频。没有音频轨道时输出为空。
- video_info: 包含源视频和输出视频的 FPS、帧数、时长、宽高、入点和出点等信息,以及
proxy_threshold、proxy_size和proxy_video标志。
CS Save Video
基于 ComfyUI 官方 Save Video 节点,增加save metadata和H264 bitrate选项。
video:标准 ComfyUIVIDEO输入。filename_prefix:输出文件名前缀,支持官方的日期和节点控件格式化语法。format:输出容器格式,默认auto。codec:视频编码方式,默认h264。选择 H.264 时显示码率控件。H.264 bitrate (Mbps):H.264 目标码率,浮点数保留 1 位小数,范围1.0–160.0 Mbps,默认8.0 Mbps。范围覆盖官方建议的低分辨率到 8K 高帧率视频;常见 1080p 视频可从8.0 Mbps开始,高帧率 1080p 可提高到约12.0 Mbps。save_metadata:默认关闭。开启后保存的文件将写入工作流和源视频 metadata。
CS VFX Beauty
为视频优化的皮肤磨皮美化处理节点。节点优先使用输入的 MASK;没有连接 MASK 时,自动加载 BiSeNet 生成内部皮肤区域,仅用于估算目标肤色,不作为输出。
部署 BiSeNet 权重
权重文件 parsing_bisenet.pth放置于:
ComfyUI/models/facexlib/parsing_bisenet.pth
首次运行且本地不存在权重时,节点会自动从 FaceXLib 上游官方的 GitHub Release 下载地址 或者 Hugging Face 上的 parsing_bisenet.pth 镜像 下载权重。
也可以手动下载后放置到 ComfyUI/models/facexlib/parsing_bisenet.pth。
使用流程
- 将视频帧批次连接到
image。节点也支持接入官方或第三方Load Image节点。 - 如果上游节点提供低分辨率预览代理,可将其连接到
proxy_video;该输入只供VFX Preview显示,不参与 Beauty 实际渲染。 - 如果有现成的皮肤区域,将标准 ComfyUI
MASK连接到mask;没有mask时,首次自动估色会使用 BiSeNet 临时生成皮肤区域。 - 保持
colour=auto使用整段输入的自动肤色估计,或输入合法的#RRGGBB颜色跳过自动估色。 - 直接执行工作流得到处理结果。对于上游由其他节点运行时生成的图片或视频,先执行一次工作流,再打开
VFX Preview建立可预览缓存。 - 点击节点底部的
VFX Preview,在当前帧调整参数并实时预览;确认后点击Apply to Node将预览参数写回节点,再重新执行工作流。
节点选项说明

- image:标准 ComfyUI
IMAGE,支持[batch, height, width, channels]的单张图片或视频帧批次。 - mask:可选标准 ComfyUI
MASK。连接后自动作为皮肤处理区域,也作为自动肤色估计区域;不需要额外的 External Matte 开关。 - proxy_video:可选标准 ComfyUI
VIDEO,只用于VFX Preview的前端显示和逐帧预览。 - colour:字符串,默认
auto。auto使用自动估色;输入#RRGGBB时直接使用指定 RGB 颜色。 - weights:HSV Key 权重字符串,默认
6.0, 0.0, 3.0。在 VFX Preview 中会拆分为 Hue、Saturation、Value 三个独立输入,Apply 时重新写回该字符串。 - blur_m / Soften:皮肤 Matte 的柔化半径,默认
10.0。 - sigma / Amount:边缘保持模糊强度,默认
10.0。 - threshold / Preserve Edges:边缘保护阈值,默认
15.0。 - r_spots_blend / Dark Spots:暗斑修复混合比例,默认
0.8。 - r_h_blend / Highlights:高光修复混合比例,默认
0.5。 - strength / Restore Detail:高频细节恢复强度,默认
0.0。 - blur_h / Detail Soften:恢复细节的柔化半径,默认
0.0。 - blur_s / Blur Shine:皮肤高光柔化半径,默认
30.0。 - o_amount / Shine Amount:高光恢复量,默认
0.2。 - sat_amount / Saturation:最终肤色饱和度缩放,范围
0–300,默认100.0。 - hue_amount / Hue Shift:最终肤色色相偏移,范围
-360–360度,默认0.0。
VFX Preview 界面

- 双视口:左侧
Original显示原始帧,右侧Result显示当前参数的处理结果。Result 中央的对比条默认在最左侧,因此打开窗口时完整显示 Result;左右拖动对比条可比较 Original 和 Result。 - 缩放和平移:点击
50%、100%、200%或Fit调整显示比例,也可以在任一视口滚动鼠标滚轮缩放。缩放超过 Fit 后,在任一视口按住鼠标左键拖动,两个视口会同步平移。 - 时间线:拖动底部时间线快速定位帧,输入帧号可直接跳转,
|<和>|用于单帧步进。切换帧后只重新计算当前帧的预览结果。 - Colour:输入
auto使用自动肤色;预览首次计算出的颜色会显示在右侧色块和 Hex 数值中。点击色块可以打开标准 RGB 取色器,选择颜色后会切换为固定#RRGGBB。 - Weights:Hue、Saturation、Value 分成三个数值栏,分别控制 HSV 色键对色相、饱和度和明度的敏感度。
- 参数滑块:每个滑块下方显示简短说明和默认值,右侧复位按钮可以单独恢复初始值。调整滑块后,Result 会实时重新处理当前帧。
- Apply to Node:将当前颜色(如果修改过)、Weights 和所有参数写回节点。未修改
colour时会保留节点原有的auto或 Hex 值。
自动肤色估计
当 colour=auto 时,节点将加载 BiSeNet并计算皮肤区域的目标颜色。在colour选项输入 Hex 颜色字符串#RRGGBB将跳过自动检测肤色流程。
输出说明
IMAGE:RGB 处理结果,不包含 Alpha,可直接连接下游图像或视频节点。MASK:本节点最终使用的皮肤处理 Matte,范围为0–1,可连接到其他 ComfyUI Mask 节点。
CS SeC-4B Model Loader
加载SeC-4B 模型,为 CS Video Segment (SeC-4B) 节点和 Selector Preview 提供可复用的模型实例。节点扫描 ComfyUI/models/sams/SeC-4B 目录下的单文件权重。

节点选项说明
model_file:支持SeC-4B-bf16.safetensors和SeC-4B-fp16.safetensors,节点按文件原生精度加载。device:运行设备,auto自动选择 CUDA,cpu使用 CPU,也可选择具体的gpu0、gpu1等设备。- 选择
cpu时,BF16/FP16 权重会自动转换为float32。 use_flash_attn:高级选项,默认开启。环境没有 FlashAttention 时会回退到标准注意力。allow_mask_overlap:高级选项,默认开启,允许多个对象的 Mask 重叠。SEC_MODEL:输出的 SeC-4B 模型连接到 Video Segment 节点的model。
首次执行 Loader 或首次进行 SeC Preview 时,如果选择的权重文件不存在,节点会自动从 Hugging Face 下载对应的单文件权重到 ComfyUI/models/sams/SeC-4B。默认 BF16 文件约 7.35 GiB。自动下载需要当前环境可以访问 Hugging Face;失败时可手动下载:
将所选文件放置到:
ComfyUI/models/sams/SeC-4B
配置和 tokenizer 已随插件放在 py/sec_model_config,依赖声明位于项目根目录 requirements.txt,推理代码和 SAM2 配置位于 py/sec_inference 与 py/sec_configs。
CS Video Segment (SeC-4B)
使用 OpenIXCLab SeC-4B 模型和内置 LongSAM2.1 视频记忆编码器,在锚点帧用多个 BBox、多个正负 Point 和粗略 Mask 定义对象,并传播到整段视频。
使用流程
- 先执行 CS SeC-4B Model Loader,再把输出的
SEC_MODEL连接到节点的model。 - 将同一视频的
IMAGE或VIDEO输出连接到节点。images与video_input同时连接时,节点优先使用images;可选的proxy_video只用于 Selector 前端预览。 - 点击
Open Selector,在锚点帧中定义一个或多个对象的提示。 - 点击
Preview Current Frame检查 SeC-4B 的当前帧分割结果,确认后点击Apply to Node。 - 执行节点,得到整段视频的 mask。默认情况下,节点执行结束会卸载 SeC-4B 的推理子模型以释放显存。
对于运行后才生成的输入,先运行一次工作流建立缓存,再打开 Selector。
节点选项说明
_node.jpg)
model:CS SeC-4B Model Loader输出的SEC_MODEL,必需输入。images:可选IMAGE帧批次,连接后作为执行和 Selector 的首选视频来源。video_input:可选VIDEO输入,仅在images未连接时使用。proxy_video:可选VIDEO输入,仅用于 Selector 预览显示。anchor_frame:锚点帧在当前输入帧批次中的本地编号,从0开始,通常由 Selector 自动写入。prompt_data:Selector 序列化的多对象 Mask、BBox 和 Point 提示数据,不建议手动编辑。tracking_direction:传播方向,bidirectional双向传播,forward向后传播,backward向前传播。max_frames_to_track:每个方向最多传播的帧数,-1表示直到视频边界。mllm_memory_size:场景变化时用于提取对象概念的历史关键帧数量,默认12。offload_video_to_cpu:将视频推理状态尽可能放到 CPU,以降低显存占用,但会降低速度。auto_unload_model:默认开启。节点执行结束后卸载 SeC-4B 子模型;下次执行或 Preview 时会自动重载。Open Selector:打开交互式提示编辑器。
输出说明
mask:形状为[帧数, 高, 宽]的整段视频 mask。anchor_mask:锚点帧的合并分割 mask。video_info:包含帧数、尺寸、锚点帧、传播方向和对象数量。
CS Video Segment (SAM3.1)
使用 ComfyUI 官方 SAM3/SAM3.1 模型和推理内核,把 Selector 中定义在锚点帧的多个对象提示传播到整段视频。
SAM3.1 官方权重下载地址:Comfy-Org/sam3.1。下载后放入 ComfyUI 的 models/checkpoints
使用流程
- 使用官方
CheckpointLoaderSimple加载 SAM3/SAM3.1 模型,并连接节点的model。 - 将视频的
IMAGE或VIDEO输出连接到节点。images与video_input同时连接时,节点优先使用images;可选的proxy_video只用于 Selector 前端预览。 - 点击节点上的
Open Selector,在实际输入视频的帧上定义提示。 - 点击 Selector 的
Preview Current Frame检查当前帧分割结果,确认后点击Apply to Node。 - 执行节点,得到整段视频的 mask。
节点选项说明
_node.jpg)
model:官方 SAM3/SAM3.1 模型,必需输入。images:可选IMAGE帧批次。连接后作为执行和 Selector 的首选视频来源。video_input:可选VIDEO输入。仅在images未连接时使用。proxy_video:可选VIDEO输入,仅用于 Selector 预览显示。anchor_frame:锚点帧在当前输入帧批次中的本地编号,从0开始。通常由 Selector 自动写入。prompt_data:Selector 序列化的 Mask、BBox、Point 和对象列表,不建议手动编辑。propagation_direction:传播方向,both双向传播,forward向后传播,backward向前传播。max_objects:SAM3.1 的最大对象槽数量,默认16。Open Selector:打开交互式提示编辑器。
输出说明
mask:形状为[帧数, 高, 宽]的整段视频 mask。anchor_mask:锚点帧的分割 mask。video_info:包含帧数、尺寸、锚点帧、传播方向和对象数量。
Selector 使用说明
SAM3.1 和 SeC-4B 共用同一个 Selector 框架。两者都支持多对象;SAM3.1 由官方模型批量处理对象,SeC-4B 会逐对象建立跟踪条件后合并结果。Semantic 选项卡仅对 SAM3.1 显示,SeC-4B 使用 Draw Mask、Edit BBox 和 Edit Point。

时间控制和锚点帧
- 时间线上方的
|<和>|用于逐帧移动,滑杆和帧号输入框用于快速定位。 - 只允许一个锚点帧存在。第一次在某帧产生有效的 Mask、BBox 或 Point 后,该帧成为锚点。
- 已存在编辑数据时切换帧,会提示“当前已存在编辑数据,切换锚点帧将自动清除,是否继续?”。确认后会清除全部对象提示和 Undo/Redo 历史。
- 切换到新帧后,只有重新添加提示,该帧才会成为新的锚点。
- 已经点击
Apply to Node的工作流再次打开 Selector 时,会自动跳转到保存的锚点帧并恢复提示。 anchor_frame是当前输入帧批次的本地帧号。
Draw Mask
- 进入
Draw Mask后,鼠标光标显示当前画笔大小的半透明空心圆。 Brush/Eraser切换键在画笔和橡皮擦之间切换;画笔状态为绿色,橡皮擦状态为红色。Brush Size范围为2–100。拖动滑杆或在视频画布上滚动鼠标滚轮快速调整;按住Shift滚轮可大步调整。Clear Mask清除当前对象的粗略 Mask。- 粗略 Mask 只作为模型提示,点击 Preview 后画布会隐藏粗略笔迹,仅显示模型返回的分割结果。
Edit BBox
- 点击
Add BBox后,在视频画布上拖出一个新框;松开鼠标后自动退出添加状态。 - 鼠标移到四角时可拖拽调整宽高,移到水平或垂直边时可单独调整对应边的位置。
- 鼠标移到框内部时显示手形光标,拖拽可移动整个框。
- 在框内部点击右键,选择“删除BBox”删除当前对象的框。
- 使用公共的
Add Object创建更多对象,再为每个对象添加自己的 BBox。 Clear All BBox清除所有对象的 BBox,但不会清除 Point 或粗略 Mask。
Edit Point
- 空白处左键添加 positive point。
- 空白处右键添加 negative point。
- 已有 Point 左键按住并拖动可移动;如果没有实际移动,释放鼠标不会新增或修改 Point。
- 已有 Point 右键打开菜单,可删除 Point,或在 positive/negative 之间切换。
Clear All Point清除所有对象的 Point,但不会清除 BBox 或粗略 Mask。
对象和公共按钮
Object下拉框选择当前编辑对象。Add Object增加对象;Delete Object删除当前对象。Undo/Redo撤销或恢复最近一次提示编辑。Clear All Prompt清除所有对象的 Mask、BBox 和 Point。Preview Current Frame只运行当前锚点帧的模型分割,结果用于检查提示是否合理,不会替代最终整段视频执行。Cancel关闭窗口并放弃本次未应用的修改。Apply to Node将提示数据和锚点帧写入节点。
示例工作流
workflow JSON 和示例素材位于插件的 workflows 子目录。以下图片仅为示意。
_workflow.jpg)
_workflow.jpg)
CS Load Video
把视频文件加载到 ComfyUI,并提供一个可交互的时间线编辑窗口。节点执行时会读取视频帧、音频和帧率,根据工作流中保存的设置截取和调整内容,然后输出给下游节点。
- 从节点直接选择和上传视频。
- 点击节点上的
Edit Timeline按钮进入时间线界面。 - 通过时间线拖动入点和出点,支持逐帧定位。
- 通过
Set In和Set Out按钮,把视频预览窗口的当前帧快速设为入点或出点。 - 使用蓝色当前帧指针,在时间线上拖动即可同步预览对应视频帧。
- 出入点设置按钮组的
Play只播放已设置的入点到出点范围。 - 视频预览窗口的白色播放键仍然播放完整视频,不受入出点限制。
- 开启保持宽高比后,修改宽度或高度会自动联动另一项。
- 输出尺寸可以自动四舍五入到指定倍数,适合视频模型常见的尺寸要求。
- 入点、出点、宽度、高度和 FPS 会保存到 ComfyUI 工作流中,重新打开工作流后仍可复现相同设置。
- 输出同时包含图像帧批次、音频和结构化视频信息。
节点选项说明:

- video: 选择 ComfyUI 输入目录中的视频,或使用上传控件上传视频文件。
- keep_aspect_ratio:布尔值,默认
true。开启后,宽度和高度按照源视频的原始宽高比联动计算。 - multiple:整数,默认
32。 输出尺寸的取整倍数。宽度和高度会按最近的倍数四舍五入。 - start_frame: 整数,默认
0。 起始帧,使用从0开始的帧编号。 - end_frame:整数,默认
-1|。 结束帧,-1表示使用视频最后一帧。 - width: 整数,默认
0。 输出宽度。0表示根据源视频尺寸和multiple自动计算。 - height: 整数,默认
0。 输出高度。0表示根据源视频尺寸和multiple自动计算。 - fps: 浮点数,默认
0。 输出帧率。0表示保留源视频帧率;输入其他数值时会按目标帧率重新采样帧。 - choose file to upload:点击按钮从本地加载视频。
- Edit Timeline:进入时间线界面。
其中
start_frame、end_frame、width、height和fps可通过Edit Timeline窗口设置或在节点控件中直接编辑。
Edit Timeline 时间线界面

时间线界面从上到下依次包含视频预览、时间读数、当前帧指针、入出点标记栏、时间线操作按钮和输出参数。
入点和出点标记
标记栏中的两个白色手柄分别表示入点和出点:
- 左侧手柄是入点。
- 右侧手柄是出点。
- 可以直接拖动手柄调整范围。
- 点击标记栏空白区域时,程序会根据点击位置距离哪个手柄更近来调整对应边界。
时间线按钮
Set In:将视频预览当前帧设为入点。如果当前帧晚于出点,会自动修正出点。|<: 跳转到上一帧。只受视频首帧限制,不受入点限制。Play: 只播放从入点到出点的内容,播放到出点后自动暂停。再次播放时,如果当前帧不在范围内,会从入点重新开始。>|: 跳转到下一帧。只受视频尾帧限制,不受出点限制。Set Out: 将视频预览当前帧设为出点。如果当前帧早于入点,会自动修正入点。
输出说明
- video:标准 ComfyUI
VIDEO类型,包含时间线选段、尺寸、帧率和音频,可直接连接官方视频节点。 - IMAGE: 输出的video图像帧批次。
- frame_count: 实际输出帧数。修改 FPS 后,该数值可能与源视频选段帧数不同。
- audio: 选定时间范围内的音频。没有音频轨道时输出为空。
- video_info: 包含源视频和输出视频的 FPS、帧数、时长、宽高、入点和出点等信息。
CS Save Video
基于 ComfyUI 官方 Save Video 节点,增加save metadata和H264 bitrate选项。
video:标准 ComfyUIVIDEO输入。filename_prefix:输出文件名前缀,支持官方的日期和节点控件格式化语法。format:输出容器格式,默认auto。codec:视频编码方式,默认h264。选择 H.264 时显示码率控件。H.264 bitrate (Mbps):H.264 目标码率,浮点数保留 1 位小数,范围1.0–160.0 Mbps,默认8.0 Mbps。范围覆盖官方建议的低分辨率到 8K 高帧率视频;常见 1080p 视频可从8.0 Mbps开始,高帧率 1080p 可提高到约12.0 Mbps。save_metadata:默认关闭。开启后保存的文件将写入工作流和源视频 metadata。
声明
ComfyUI_CineStyle节点遵照MIT开源协议,有部分功能代码和模型来自其他开源项目。如果作为商业用途,请查阅原项目授权协议使用。