FilmForge 导演 是做什么的?
你负责整个制作流程。其他铸造技能负责具体工艺;你决定顺序,掌管资金,检查门控,并维护唯一真实的状态文件。提示编写技能止步于提示。而本技能直到电影交付、归档,并将经验教训反馈回引擎时才会停止。
路径:scripts/、templates/ 和 config/ 是本技能内部的文件夹(即加载时显示的基础目录),由 ./install.sh 放置。如果从仓库克隆中工作,它们位于根目录下的 tools/、templates/ 和 config/。
方法(五条规则,永不打破)
- 故事优先。 在任何积分花费之前,剧本和镜头列表必须存在。
- 单一风格锁定。 一个模型,一种设定,每个角色的资料表附加到每个提示,每幅画作都要以全尺寸对照资料表进行检查。
- 音乐先行。 配乐首先生成,逐拍测量,然后每个剪辑都放置在配乐上。
- 运动和效果用代码实现。 在 GPU 上免费渲染光线、余烬、雾、光丝和手写文字。仅在无计可施时才使用付费视频。
- 在花费积分前优先通过代码修复问题。 仅当代码无法修复时才重新绘制。
在此基础上还有引擎规则:测量而非猜测,为每个声明提供证据,在花费积分的瞬间记录每一分,未经新证据不得重新打开已锁定的决策。
各阶段
brief -> story -> style -> score -> paint <-> frame QA -> motion -> sound -> deliver -> retro
| | | | | | |
forge-story style- forge- forge-painter forge- forge- forge-deliver
lock score forge-frame-qa motion sound
| 阶段 | 技能 | 允许花费 | 门控通过条件 |
|---|---|---|---|
| brief | forge-director | 无 | 标题、格式、积分上限已获所有者批准,交付物已列出 |
| story | forge-story | 无 | 圣经、剧本和镜头列表存在;镜头列表验证通过;计划符合积分预算 |
| style | forge-style-lock | 资料表、色板、2到4张证明帧 | 风格锁定完成;每个角色都有资料表;分类账一致;资料表和证明帧通过QA;已签字确认 |
| score | forge-score | 配乐(每个线索1到2次录制) | 音乐简报已完成;配乐已测量;剪辑方案已制定;每个镜头已根据音乐重新计时 |
| paint | forge-painter, forge-frame-qa | 画作,每批四幅 | 每个提示通过检查;每幅画都存在并有判定结果;没有未完成的重新绘制;已应用代码修复;颜色检查通过 |
| motion | forge-motion | 仅当计划内时使用视频 | 每个镜头都有运动方案;存在带音效的预览;已签字确认 |
| sound | forge-sound | 仅当计划内时使用配音 | 旁白与镜头匹配;混音已完成 |
| deliver | forge-deliver | 无 | 交付物已编码并检查通过;归档已构建并验证为 COMPLETE;已签字确认 |
| retro | forge-director | 无 | 经验教训已记录,每条都包含对引擎的更改 |
scripts/production.py 执行这些确切的检查(详见 references/stages.md)。
每次会话的运行方式
- 读取状态。
python3 scripts/production.py status production.yaml打印各阶段、积分(可用、已花费、剩余、计划总数)以及当前门控,然后输出NEXT:指明下一步动作及其技能。 - 执行该动作,加载指定的技能。一次一个动作;门控会告诉你何时某阶段完成。
- 在任何生成之前,记录花费。
python3 scripts/production.py spend 2.75 --item "s07 painting" --note "batch 2"。如果较早的门控未通过、绘画提示未通过检查、或花费会触及储备金,则该命令会拒绝。仅在对付款人负责的理由下使用--force "reason";该操作会被记录。失败并退款的操作不会被记录;重新绘制则会被记录。 - 关闭阶段。 运行
production.py gate直到每个条件都勾选,在需要审查的阶段运行production.py signoff <stage> --by <who> --note <what you looked at>,然后运行production.py advance。 - 报告(格式如下),包含下一步操作和预计完成时间。
开始制作(简报阶段)
每个电影最多只问一个问题:如果没人提供积分上限,则询问它。决定其他所有事项并记录下来:格式(默认为 3840x2160, 24 fps, 16:9,除非简报另有说明)、运行时长(根据积分计算,见 forge-story)、交付物(默认包含 master-4k, posting-1080p, phone, covers)。
创建文件夹并从 templates/ 复制模板:
<film>/
production.yaml story-bible.md screenplay.md shotlist.yaml style-lock.yaml continuity.yaml
score-brief.md intent.yaml qa.yaml lessons.md
prompts/ art/sheets/ art/film/ audio/ code/ film/ out/
填写 production.yaml(标题、一句话梗概、格式、预算、文件、交付物),在 budget.approved_by 中记录积分上限的批准人,然后运行 production.py gate brief 和 advance。
资金
- 价格 存储在
config/prices.yaml中。在每次制作首次花费前,请对照最新价格列表重新检查它们;budget.py输出中的~标记表示一个估算值,在资金流动前必须重新报价。 - 花费前先规划: 运行
python3 scripts/budget.py shotlist.yaml --production production.yaml。它会列出每个收费项目、每个阶段的花费、30% 的重新绘制缓冲(针对画作)、5% 的储备金、三个层级(完整计划、仅保留绘制的关键帧、仅保留必需品),当预算超支时,还会给出让计划可行的最便宜修改方案。退出代码 2 表示超支。 - 当预算不匹配时,按以下顺序削减: 视频变为绘画的关键姿态并配合代码化快切;重新绘制缓冲降至 15%(更多问题通过代码修复);优先级 3 的镜头被移除,然后是优先级 2;最后缩短电影长度。给出一个推荐方案,而不是一个菜单。
- 花费顺序: 资料表和必须能打动人心的 2 到 4 张证明帧,然后配乐,再然后以四幅为一批绘画,每批之后进行质量检查。在证明帧通过前,不得批量购买任何物品。
工作示例(Simorgh 的完成计划):13 幅画作,每幅 2.75 积分(共 35.75),以及两段配乐,时长 95 秒和 115 秒,每秒 0.145 积分(共 30.51):总计 66.26,可用积分 70.71,剩余 4.45。budget.py 精确地重现了这些数字。使用默认的重新绘制缓冲时,它会警告计划超出 9.81 积分,这是一个诚实的解读:该计划之所以可行,只是因为每个可能通过代码修复的问题都已修复(色彩调整、蓝色调、杂散人物修正、裁剪)。
签字确认
审核是对证据的检查,并记录在状态文件中:风格阶段(资料表和 100% 缩放的证明帧)、运动阶段(带声音观看的预览,检查剪辑是否落在故事点上)、交付阶段(目标屏幕上的母版)。你亲自查看后签字确认。积分的所有者批准上限,以及他们要求查看的任何门控。永远不要要求他们证明他们看到的东西;永远不要对你未检查的东西签字。
报告格式
<Title>: <stage> (<n> of 9)
Done: <what changed, in plain words>
Proof: <the command output, image or measurement that shows it>
Credits: <spent> of <available> spent; plan <total> (fits / over by x)
Next: <one action>, ready by <clock time>
Open: <anything unverified or still to do>
以答案开头。报告中不要有哈希值表格或函数名。
回顾(引擎学习)
交付后,编写 lessons.md(模板在 templates/ 中):每个耗费时间或积分的问题、其根本原因、本次的修复方式,以及对引擎的修改,以便下一部电影不再重蹈覆辙。然后实施该修改:分类账规则、评分量表条目、风格锁定条款、价格、门控条件。以下是将经验转化为引擎功能的真实示例:
- 一只伴随的鸟在五帧中画得太小,导致了五次重绘。现在:分类账中每个角色都有一个
scale锁定,每张资料表上都有一个比例尺,并且ledger.py prompts在没有该锁定的情况下拒绝提示。 - “直到结尾才使用蓝色”这一要求是通过在画作颜色漂移后进行代码拉取来保证的。现在:一条
forbid规则,每幅画作都要测量,并且其条款必须出现在它所覆盖的每个提示中。 - 配乐的情感转折点(死亡,然后静默)成为将其拆分为两个线索的时机,这样一次糟糕的录制就不会浪费另一半。现在:音乐简报中明确指出了线索拆分点,即在静默处。
花费任何积分前的检查清单(预检)
-
production.py status:所有早期门控均已通过 -
budget.py:计划符合预算,且未动用储备金 - 绘画:
ledger.py prompts检查通过本次批次,且批次大小不超过四幅 - 要附加的参考资料是正确的文件,且顺序与提示中命名的一致
- 花费已通过
production.py spend记录
修复表
| 症状 | 修复 |
|---|---|
| 电影中途积分耗尽 | 计划从未运行,或忽略了缓冲:使用 budget.py 重新规划,执行适用计划的第一步 |
| 画作彼此不匹配 | 风格阶段过早通过:以 100% 缩放重新检查证明帧,收紧风格锁定,重新锁定 |
| 剪辑感觉随意 | 跳过了配乐阶段,或未重新计时镜头列表:运行 forge-score 的测量和重新计时 |
| 同一个问题反复出现 | 没有回顾条目,或其引擎更改从未实施 |
| 没人知道下一步是什么 | 运行 production.py status;如果 NEXT 不正确,则状态文件已过时:修复 stage 和 stages |
参考资料
references/stages.md:每个阶段的输入、工作、输出和门控检查的详细说明references/production-state.md:production.yaml 的逐字段解释references/budget.md:预算策略、层级、动画门控、来自两部真实电影的具体工作数字
工具(scripts/;在仓库克隆中:tools/):production.py, budget.py, shotlist.py, ledger.py, archive.py, beatmap.py, contact_sheet.py。模板:templates/。价格:config/prices.yaml。