Files
2026-11-13 11:46:25 +08:00

130 lines
13 KiB
Markdown

# 火宝短剧 · 本地多显卡版
基于 [chatfire-AI/huobao-drama](https://github.com/chatfire-AI/huobao-drama) 4.0.11 的本地定制代码。上游源码基线为 `b48e6b2312166e25b1ff141832d2e82e5d63c142`,原项目说明和许可证保留在 `huobao-source/`。
## 已集成功能
- 模型桥接与多显卡图片、视频调度;可按单个分镜选择显卡重新生成。
- 显示实际执行节点:GPU1 / ComfyUI 8189、GPU2 / ComfyUI 8188、GPU3 / ComfyUI 8191。
- MiniMax H3 视频及 VDN-H3 2K/4K 高清版本,保留原版供对比。
- 角色、场景、道具的图片参考图上传与编辑接口。
- 本地长任务持续查询、重启后恢复查询和原任务结果恢复。
- 任务列表可单独取消排队或生成中的本地图片、视频任务,保留已有素材和历史记录。
- 固定数据目录、一键启动、升级备份与真人实拍、仙侠风格预设。
- 跨集结尾上下文、分镜起止状态、前镜头尾帧接续与持久化依赖队列。
- 中英文视频提示词同步保存,MiniMax H3 提交前使用英文制作描述,保留中文对白与素材引用。
- 场景固定设定与场景参考图自动随每个分镜请求提交,覆盖单次、批量、换卡重做和高清制作。
- LTX-2.3 / Wan2.2 先用全部绑定的人物、场景、道具图合成完整分镜首帧,再将单张首帧交给视频模型;超过 6 个素材分轮融合,不静默丢图。
- 豆包英文补译关闭深度思考,拆分镜保存时最多同时补译 3 条,全部通过对白与素材标记校验后才保存。
## 场景一致性
视频制作的「场景固定设定」位于镜头衔接上方。同一场景 ID 的分镜(包括跨集复用)共用空间、固定陈设、时间和光源;没有单独固定设定时直接采用已有场景描述。编辑保存用于后续生成,不改写原分镜或旧视频。灯光开关、移动道具等剧情变化应记录在镜头起止状态中,换机位保持物理空间关系而非屏幕左右不变。
后端从绑定场景读取环境,单独加入每个视频/分镜图片请求,避免只写人物表演而遗漏背景。普通参考模式补带场景图并保留现有图片编号;尾帧接续和 VDN 高清沿用视频参考帧,同时保留环境文字。MiniMax H3 的环境描述翻译为英文,台词保持原文。缺失/失效的场景、超出模型参考图数量会在换卡取消旧任务之前报错;任务记录保存当时场景设定快照。
场景图应与文字设定一致。文字与参考图可减少漂移,但不保证生成画面逐像素一致;连续动作可使用已有「尾帧接续」。角色三视图、道具白底图不加入场景约束。没有场景图时页面明确提示仅有文字约束。
回归验证:`integration-work/test_scene_continuity.py` 使用独立 SQLite 和本机模拟模型服务,覆盖实际请求体、参考编号、换卡、跨集、转场、尾帧、高清、图片与数据持久化;设置 `SCENE_UI_TEST=1` 可同时验证页面保存和刷新。需先构建桌面后端及前端,并具备现有 Electron 测试运行环境。
## LTX / Wan 分镜首帧
视频制作选择 LTX-2.3、LTX-2.3-Text-Preserve 或 Wan2.2-I2V 后,点击生成会先使用顶部选定的 Qwen Image 2.1 图片配置制作完整画面。绑定的场景、人物、道具全部参与:6 个以内一次提交;更多素材以「上一轮合成图 + 最多 5 个新增素材」继续融合,保留每轮结果与素材清单。缺少参考图片会明确报错,需先补图;不再只选第一张场景图。
图片显卡跟随顶部图片配置,视频显卡跟随当前镜头设置。首帧准备完成后才提交视频;开启尾帧接续时,前镜头末帧也加入融合。右侧「分镜首帧」显示最终画面、素材清单和图片模型;输入未变时重试视频复用首帧,也可点击「重做首帧并生成视频」。修改分镜或绑定素材后重新合成,生成中修改会阻止旧首帧提交视频。
准备首帧期间可取消父视频任务,同时取消其当前图片任务;重启继续跟踪已提交图片,不重复生成。首帧失败不会提交视频。中间图与最终图进入任务历史,不覆盖人物原图、场景原图或旧视频。全参考图流程减少身份与环境漂移,生成结果仍需检查;跨多个融合轮次可能出现误差。
回归脚本:`integration-work/test_composed_first_frame.py`,设置 `COMPOSE_UI_TEST=1` 同时检查真实界面。使用隔离数据库和本机模拟服务,覆盖 15 张素材、GPU 路由、尾帧衔接、失败、取消、重启与避免重复提交,不消耗真实模型算力。
## 英文视频提示词
新拆分镜、重新生成视频提示词时同时产出中文和英文。视频提示词下方可查看、编辑或重新翻译英文;「补齐英文」仅翻译已有中文提示词,不重新拆分镜、不生成视频。中文修改后旧英文标记为待更新。
MiniMax-H3 系列(含加速版、VDN 高清)提交前自动补齐或更新英文,并翻译镜头衔接约束。对白原文、@/# 素材标记和时间段通过校验后才提交,中文台词不改为英语;语音标记采用 H3 可识别的 `says:` / `Dialogue:`。翻译失败时不提交新视频,也不取消原任务。任务记录保存实际英文请求文本并显示「英文提交」。已生成视频不自动重跑。
## 镜头衔接
视频制作中、视频提示词上方的「镜头衔接」面板提供三种模式:
- **独立镜头 / 转场**:不依赖前段,适合换场景、时间跳跃或开场。
- **状态承接**:将前镜头结束状态与本镜头起止状态加入生成约束;允许换角度,仍使用本镜头的资产参考图。
- **尾帧接续**:同场景连续动作。等待前段完成,从所选视频结束前 0.05–3 秒提取画面,再向选定 GPU 提交。当前本地 MiniMax-H3、MiniMax-H3-Hybrid 直接使用单张尾帧;LTX-2.3 和 Wan2.2-I2V 将尾帧与全部绑定素材融合后使用新首帧。不与参考音色混用。
来源默认为按集号、镜号排序的前一镜,也可选择本项目更早的镜头。不能引用未来、自身、其他项目或已删除的镜头。第一镜、转场需用独立模式。拆分镜工具会读取上一集结尾剧本及最后三个分镜;起止状态是文字设定,不代表系统已经识别或审核了成片画面。
已有分镜升级后保持原模式、原视频,不会自动重新生成。新拆分时 Agent 会填写起止状态并选择衔接方式;旧分镜可在面板中补填后保存。尾帧预览仅提取画面,不生成新视频。前镜头失败时下游保持等待;可取消等待,或先处理前镜头。等待中的任务可重启恢复,并保留原模型与显卡选择。
前镜头版本或起止设定改变后,已生成的下游视频显示核对提示,旧版保留,不自动重跑。依赖链按顺序提交,独立镜头仍可多卡并行。VDN-H3 高清制作仍使用其参考图工作流,不支持固定首帧接续。
## 视频进度与预计耗时
分镜拆分按每批最多 4 个段落校验中文、英文、时间轴和素材绑定,全部通过后一次性替换旧分镜。取消、超时、重启或校验失败均保留旧分镜;拆分期间修改剧本或原分镜,会阻止旧结果覆盖新编辑。
没有上传音色不影响拆分:生成草稿中误加的角色音色引用会改回普通人物引用;真实音色和对白原文保留。素材引用中的多余类别前缀会统一为实际资产名称。对白提到“血红文字”等内容不再误判为画面画字;实际要求画字仍会退回修正。连续三轮没有保存进展会停止并显示具体错误,诊断信息保存在本地任务状态中。
拆分任务按原文场次逐场运行,为每段原文分配来源编号,当前场次覆盖完成后才进入下一场。每场核对来源编号、按原文顺序保留的对白、最少镜头数和时长;仅出现结尾台词不能判定整集完成。预计镜头数量是节奏参考,不是固定上限;不能为了达到数量添加剧情。
长台词按原文切成小段,并给出约 4.5 汉字/秒的发声时长参考。校验具体对白时间段,不允许用几秒承载几十字台词;小幅时间分配错误会同步修正中英文时间轴,超过单镜头 15 秒容量时必须继续细分。全部场次通过校验才替换原分镜。来源编号和对白校验不等于人工审片,表演、调度及动作覆盖仍需检查。旧版本过度压缩的结果会提示重新细分,不自动改写已有镜头或视频。
视频预览下方、任务列表和高清制作页会显示排队、模型加载、采样、解码与编码阶段,以及已提交时长。采样步数来自对应 ComfyUI 任务的实时消息;积累足够的步速记录后显示当前采样阶段的剩余时间区间,后续解码、编码和保存另计。
整段视频耗时只参考同显卡、同工作流及规格的成功记录,不包含排队与下载;样本不足时不报估算。采样完成不代表成片完成,连接中断或数据过期会隐藏旧估算。进度读取不会取消、重新提交或改换显卡。
服务器的进度扩展源文件为 `integration-work/comfy_progress.py`,由 `install_comfy_progress.py` 备份后嵌入现有适配器;无需重启 ComfyUI。图片、视频及私有配置仍不进入 Git。
## 下载后自动清理 ComfyUI 视频
本地视频任务(包括高清版)成功下载后,先完整解码校验、写入磁盘并保存到项目,才发送带文件长度和 SHA-256 的清理确认。服务器再次核对实际交付的视频内容,从该任务的历史记录中定位唯一输出,仅删除对应视频文件和该条 ComfyUI 历史记录。火宝中的本地成片、海报、历史版本、人物和场景参考图保持可用。
清理失败单独重试,不把已完成的视频改成失败;重启后继续确认,任务列表显示等待清理或已清理。未收到本地下载确认、正在运行、被其他任务引用、文件校验不符或路径不明确的任务不删除;既有已完成任务不批量追溯清理。
服务端运行 `comfy_video_cleanup.py` 用户服务,只消费两个私有桥接器保存的确认记录,没有新增网络监听,不重启 ComfyUI。先记录精确文件标识再删除,异常退出后可继续完成同一条记录。`test_video_cleanup_delivery.py`、`test_video_cleanup_api.py` 和 Linux 隔离测试 `test_comfy_video_cleanup.py` 分别验证本地下载、确认接口及删除范围。
## 取消任务
打开右上角「任务」,在对应图片或视频记录上点击「取消任务」。只停止这一条任务,不影响其他镜头、其他显卡任务或已有素材。等待前镜头的任务也可以直接取消。
已提交的任务需要收到对应节点的取消确认,才会显示「已取消」;未收到回执时显示「正在等待显卡确认」,可重试取消,重启后仍会跟踪原任务。提交中尚无任务编号、已经完成或正在保存结果的任务不提供取消按钮。已取消任务单独统计,不计入失败数量。
## 目录
| 目录或文件 | 用途 |
| --- | --- |
| `huobao-source/` | 前端、后端、Electron 桌面端源码及上游文档 |
| `model-bridge/` | 模型桥接、启动、打包、升级、数据检查和测试脚本 |
| `integration-work/*.py`、`*.ps1`、`*.cjs` | 服务器适配、部署、迁移及验证脚本;部分为历史维护步骤,运行前阅读脚本 |
| `integration-work/browser-test/` | 浏览器界面验证脚本 |
| `一键启动火宝.cmd` | 当前 Windows 工作站的启动入口 |
| `升级与高清制作说明.txt` | 本地升级和高清制作说明 |
## 本地数据与配置
此仓库保存代码,**不包含项目数据库、模型密钥、生成素材、视频、安装包和备份**。现有机器上的这些文件不会因为加入 `.gitignore` 而被删除。
- `huobao-data/`:项目、模型配置、素材和生成记录,必须单独备份。
- `HuobaoDrama/`:安装后的桌面应用,不随代码上传。
- `model-bridge/client.json`、`grok-client.json`:本机连接配置和令牌,不上传。
- `integration-work/backups/`、`previous-app-*/`、`stage-4.0.11/`:升级备份及打包产物,不上传。
- 所有常见视频扩展名均已加入忽略规则;TypeScript 的 `.ts` 源码正常跟踪。
在新机器上仅克隆代码不会恢复原项目和模型配置,需要另外恢复数据备份并配置私有接口。维护脚本含当前工作站路径和内网节点约定,迁移前需按部署环境检查。
## 开发与构建
按 `huobao-source/README.md` 和各目录的 `package.json` 安装对应依赖并构建。当前本地升级流程还使用 `model-bridge/build_upgrade.py` 与 `switch_upgrade.ps1`,需要准备已验证的 4.0.11 桌面运行包;安装包与暂存包不存入 Git。
`一键启动火宝.cmd` 面向已经安装、已有数据的工作站,不是全新安装程序。升级前先保存编辑并完成数据库、素材和配置备份。
## Git 同步
```powershell
git pull --ff-only origin main
git status
git add <需要提交的代码路径>
git commit -m "说明本次修改"
git push origin main
```
拉取代码不会自动替换正在运行的桌面程序。构建和升级需单独执行。当前工作站 `huobao-source/.git` 中的上游历史保留在本地,不作为子模块提交;新克隆会直接得到完整源码。