活起来的画作
使用此技能进行画作视频的视觉设计与合成。使用已安装的 comfy-film 控制器进行生成、审查、恢复和最终交付。每个代理中的控制器都是相同的——Codex (~/.codex/skills/comfy-film/SKILL.md)、DeepSeek Harness (~/.dsh/skills/comfy-film-dsh/SKILL.md) 和 Claude Code (~/.claude/skills/comfy-film-dsh/SKILL.md)——它们都驱动同一个 $Tools/comfy-film/scripts/film.py;仅周边工具不同。根据需要阅读相关参考资料;不要重新创建其控制器。对于重要的 H3 提示,请使用 h3-prompt-writing。
平台差异(Codex → DeepSeek Harness / Claude Code)
| Codex 习惯 | 替代做法 |
|---|---|
| 使用浏览器面板查看进度页面 | 以后台任务启动 progress.py --serve,并发布来自 .pipeline/progress-server.json 的已验证 URL |
| 使用菜单工具接受/更改/拒绝 | 使用 ask_user_question 并配以两个词的标签;链接和数字应放在其上方的消息中 |
| 图像在聊天中自动渲染显示 | 对于图片/文档使用角括号中的路径链接;对于每个片段使用 http://127.0.0.1:8199/watch/...(服务器:comfy-film-dsh/scripts/serve-media.py) |
| 起草委托给子代理 | 在父代理中起草;DSH 没有为这些影片提供起草委托功能 |
| 最终处理 | comfy-film-dsh/scripts/finalize_delivery.py --input ... --no-upscale |
发布、审查和剪辑规则保持不变;它们位于 comfy-film 技能中。
启动或恢复
- 将项目保存在
$Paintings/<英文名称>下。将原始艺术品、房间参考图、提示词、生成的片段、剪辑片段和最终导出文件都存储在该项目内。避免依赖剪贴板/临时文件或其他项目的输出文件夹。 - 恢复时,运行
film status --project PROJECT并读取当前的brief.md。技术状态保存在film.json中;不要仅根据文件是否存在来推断审批状态。 - 对于新画作,请在设计关键帧或生成视频前阅读 workflow.md。其中包含经过测试的配方以及「活着的咖啡馆画作」中的具体失败案例。
- 重用用户提供的格式、时长、音效和镜头选择。前一部影片的 5 秒逼近 + 10 秒动画 + 5 秒后退仅是一个示例,并非每幅画作的自动选择。
将房间运动与画作动画分离
- 设计一个房间参考图,要求装裱画作正面朝前,周围有足够的空间用于预期的镜头逼近。保留原始高分辨率艺术品作为独立源文件。
- 当用户希望艺术品在逼近过程中保持静止时,将该原始艺术品合成到画面中,并确定性动画化一个均匀的平面裁剪/缩放。不要要求 H3 发明房间到街景的移动:在测试项目中,它改变了内部透视。不要缩放房间图像中微小的内嵌画作:它会变得模糊。
- 渲染逼近过程,使其最后一帧完全位于艺术品内部。检查原始艺术品是否具有足够像素以支持最紧的裁剪。高分辨率房间画布有助于合成精度,但不会增加艺术品细节;保留原始源像素直到最终输出采样。
- 从实际已接受的逼近终点开始活起来的场景。这刻意是从静止姿态开始的新动作:使用该静止帧进行 I2VA,而不是将房间/逼近作为运动引导传递。comfy-film 中的引导默认值仍然适用于延续已活起来的动作,而非此过渡。
- 使用简短肯定的提示词,描述固定的街道/景观视角以及画中场景内的少量微小运动。不要描述进入或穿越画作。有关成功的提示模式,请参见 workflow.md。
- 对于静止艺术品后退效果,冻结已接受的活场景的选定最后一帧,将其注册到高分辨率房间/艺术品合成中,并动画化反向的平面裁剪/缩放。不要回到原始艺术品中较早的角色姿态位置。检查边缘是否存在拼接接缝;仅在适当之处使用克制的羽化。
保持镜头运动和画面运动独立可控。当用户希望改变透视时,可以使用生成式镜头移动;平面艺术品方法适用于静止艺术品概念。
活场景的衔接点是视觉跳跃最容易发生的地方
H3 不会复制其条件静止帧:它会重新渲染其前几帧,这些帧显得更平、亮度低一些(约 -2 个亮度级),并且天空被重绘。与清晰的合成逼近帧相比,即使缩放和偏移完全匹配,这也像是在剪辑处出现了亮度阶梯。在「活着的郁金香气球」中,该剪辑点承载了影片最大的单帧亮度步进(-2.04),而衔接点则测量为 0 偏移和 1.000 缩放。
测量它,不要猜测:解码一次组装好的剪辑点,并打印每帧的平均亮度;衔接点不能是影片中最大的步进。当它确实为最大步进时,用确定性溶解替换该片段开头的 12 帧,该溶解从逼近的实际最后一帧开始,并收敛到片段自身的帧(权重 k/12)。无需重新定时,无需发明新内容,并且该片段显示的第一帧恰好是镜头停止的画面。配方和数值:请参见 workflow.md。
审查与收尾
- 遵循 comfy-film 的帧、片段和最终审查关卡。已批准源的确定性拟合和端点提取继承其源审批;新的生成式房间或艺术品重绘需要其自己的审查。
- 在展示动画候选版本之前,检查其完整时间线中是否存在前景手部、打开的面板/窗户、不必要的镜头运动、布局漂移、角色伪像和细节丢失。成功的解码本身并非视觉审批。当失败时,披露它并遵循 comfy-film 的授权重试规则。
- 使用实际修剪后的端点进行衔接。H3 会四舍五入时长;仅移除满足所选计划所需的超标帧。保留已接受的源片段和版本。
- 在提供音乐的情况下,尽可能保持视频不变;保存新的最终版本。根据提供的音轨设置音乐/环境声平衡和淡入淡出,而不是盲目重用第一部影片的混音。
- 最终放大是可选的:除非特别要求,否则使用
finalize_delivery.py --no-upscale。生成 H.264 yuv420p/AAC 格式,带 faststart,并验证解码。提供可点击的本地 MP4 链接;在测试的聊天中,内联视频本身对用户不可见。 - 将选定的几何参数、源版本、提示词、已接受的片段、修剪信息、混音和最终审查状态保存在
brief.md中。仅在它改变未来决策时,在此记录新的可复用经验教训;将一次性坐标保留在项目中。
现有示例
$Paintings/Living Cafe Painting 是测试过的示例。其 brief.md 保留了决策和被拒绝的变体;clips/ 包含了已接受的片段;.pipeline/drafts/prompts/part2-v4.txt 是成功的活场景提示词。最终 v2 版本包含用户的音乐,并仍在等待明确的最终影片审批。这些事实并不审批未来的影片或授权发布。