用途与实际影响
这项功能怎样使用
为什么需要它
只靠“文件存在”复用会静默混入旧内容;完全不复用又把网络、识别和长渲染成本全部重来。最小身份文件记录输入配置与 SHA-256,既不保存正文和密钥,也能把真正相同与只是同名分开。
举个实际例子
我可以说:“明天接着做:没变的旁白继续用,第二场换图后重渲;清理今天的临时分片,但保留时间轴和场景。”系统会只删能重建的内容,并留下继续制作所需的材料。
最后我会得到什么
没变的旁白、时间轴和画面片段可以继续用;变化的部分会标明重做。清理前先看清单,脚本、场景源和最终成品留下。
正常时
旧文件的来源和内容仍与当前工程一致,才复用或接着做。
发现问题时
来源说明缺失或内容变动时,指出哪一层过期;旁白先等本人确认,渲染只重做可再生片段。
入口不可用或证据不足时
必要素材丢失、旧错误片段无法处理或新结果未完整写出时停止,不把半成品登记为可复用。
从哪里开始
当视频工程中断或内容变动时,直接重跑对应 run.ps1 阶段;交付确认后先用 cleanup --dry-run 看清单再清理。
需要准备什么
- 要继续的工程与中断或修改位置
- 是否明确重做声音或清理可再生文件
从开始到拿到结果
- 1
先比当前与旧成果
工具看脚本、声音、素材和旧文件是否仍对应同一作品。
- 2
只重做变化部分
声音不匹配先请人确认再重做,画面只补缺失或受影响的片段。
- 3
留下还能接着做的材料
新结果完整后才更新记录;清理先预览,只删能再生成的文件,脚本和成片保留。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
陈旧复用根因已修复并发布关键规则与设计选择
身份文件位于被忽略的项目工作区,不是第二个数据库或后台服务。
SHA-256 证明字节和配置对应,不证明内容事实、音色或审美正确。
旧配音 v1 身份和绑定有效的旧 Whisper 词轴继续读取;缺身份、损坏或漂移不自动背书。需要重算只重建受影响层,不因模型路线升级强制重配音。
本模块用到的名词
- identity(产物身份)
- 回答“这份输出由哪组输入和配置产生”,不是用户身份或权限系统。
- SHA-256(字节摘要)
- 检测文件是否发生字节变化;同摘要不能证明内容语义正确或真实。
- atomic write(原子写入)
- 先写同目录临时文件再替换,避免崩溃留下半份 JSON 被误当有效记录。
专业定义
可继续不等于盲目沿用;先证明旧文件仍属于当前输入。
解决什么
在保留断点续作价值的同时,消除脚本、音频和画面更新后仍使用同名旧产物的假成功。
当前怎样实现
- artifact_identity.py 只提供 SHA-256、容错读取、同目录原子 JSON 写入和输出哈希回验,没有数据库、服务或 watcher。
- audio_NN.identity.json 绑定有效脚本文本、Fish 端点/模型/声线/格式、尾静音和 MP3 输出。
- timing_NN.identity.json 绑定音频、已确认文案、实际词轴来源与输出;Fish 原生时间和 ChineseASR 适配明确区分,旧有效 Whisper 身份仅用于兼容读取,不再启动自带模型。
- durations.json.identity.json 绑定数字顺序的音频名称与哈希以及时长表输出;workflow 在读取时再次核对。
- 渲染身份覆盖场景、素材、背景、时长、画布、转场、效果、编码和分片边界,逐片回验输出 SHA;来源变化按实际影响淘汰分片,成功分片保留到显式清理。
- 旧 build_v2.py 与定制封面已从活动树移除,Git 保留历史;统一 run.ps1 / pipeline.workflow 的前置验证不再由旧计数短路绕过。
执行流程
- 1
阶段开始时计算当前输入身份。
- 2
读取伴随记录并回验输出字节。
- 3
完全匹配则复用。
- 4
TTS/timing 不匹配时保留旧文件并要求明确 force。
- 5
只重做输入或字节验证失败的相关渲染分片;陈旧受管文件无法处理时停止。
- 6
新产物成功且非空后才原子写身份。
- 7
交付确认后按默认 cleanup 清理临时物。
边界
- 身份文件不包含 Fish 密钥或完整脚本文本,只保存摘要和公开配置字段。
- 不为复用新增后台进程、共享缓存或跨项目服务。
- cleanup 仅处理已知可再生物,可先 dry-run;原件、未知文件和最终成品保留,旧定制 reset/archive 不再是当前活动入口。
失败与恢复
- 旧输出存在但身份缺失或损坏
- TTS/timing 拒绝复用并提示明确 force;不自动签认历史。
- 输出字节被改写
- 哈希不匹配,当前伴随记录失效。
- 陈旧渲染分片被占用无法删除
- 停止并列出文件,不先写新身份导致后续误复用。
真实入口
E:\Projects\Archives\video-scaffold\pipeline\artifact_identity.py共享最小身份函数
E:\Projects\Archives\video-scaffold\pipeline\workflow.py后续阶段的时长身份门
E:\Projects\Archives\video-scaffold\pipeline\render.py场景/素材/背景/配置续作身份
E:\Projects\Archives\video-scaffold\pipeline\cleanup.py可再生临时物清理
如何验证
- 2026-09-03 历史 33 项回归覆盖当时的 TTS、词轴、时长及渲染身份;当前源码列有语音联动和增量复用测试,本轮未重新执行源全套。
- 2026-09-03 历史新初始化项目 33/33,不代表当前所有升级路径已重新实测。
- 2026-09-03 的独立实现审查曾补出 file:/// 素材缺口并复核;该历史结论不替代当前完整视频或所有恢复路径的实际验收。
与其他模块的关系
这是贯穿旁白、时间轴与渲染的恢复边界;它不新增产品阶段,只保证各阶段的复用不会改变当前视频内容。
