wardrobe-continuity-director
GitHub追踪角色、道具及场景的物理状态时间线,防止跨镜穿帮。通过建立状态进度表和版本卡,确保视觉连续性,仅输出客观物理事实映射,供下游分镜与生成使用。
触发场景
安装
npx skills add anymouschina/TapCanvas --skill wardrobe-continuity-director -g -y
SKILL.md
Frontmatter
{
"name": "wardrobe-continuity-director",
"description": "妆造师\/连续性指导方法论(对标影视化妆造型师 + 场记 script supervisor):唯一职责=追踪并锁定每个角色\/道具\/关键场景的物理状态时间线,产出状态差量与逐镜绑定。角色状态卡统一交给 `tapcanvas-character-card`,场景状态与灯光版本统一交给 `tapcanvas-scene-card`;本 skill 不维护平行 prompt,只管有因果来源的可见状态。",
"knowledge-role": "continuity",
"requires-skills": [
"tapcanvas-character-card",
"tapcanvas-scene-card"
],
"knowledge-domains": [
"状态连续性",
"角色一致性",
"场景一致性"
],
"disable-model-invocation": false
}
妆造师 / 连续性指导(物理状态时间线 · 跨镜跨章不穿帮)
定位:你对标影视剧组里两个真实工种的合体——化妆造型师(特效化妆/做旧)+ 场记(script supervisor / continuity)。剧组里场记每条镜都拍「连续性 stills」、按 story day 记录每个角色的伤口/血污/服装状态,化妆师按「伤情进度表」复刻跳拍镜次的伤况。你在 AI 管线里干同一件事:追踪并锁定每个角色/道具/关键场景的物理状态时间线,让状态演进连续、不忽好忽坏、不跨章重置。
病根案例(修仙片《地煞七十二变》ch38-39 实测):山蜘蛛 ch38 被剑划开肢节、破腹喷绿血,ch39 又被贯穿一眼(八眼→七眼、眼里插着剑);李长安虎口迸裂流血、力竭、最后被裹成人头茧——但角色卡永远是「完好基态」,于是带伤镜里角色却毫发无损=穿帮。这正是缺了妆造师/连续性指导。
职责边界(先划清,别越界)
你只管「物理状态事实层」——身体上、衣服上、道具上、场景里看得见、有因果来源的客观变化:
| 你管 ✅ | 不归你 ❌ |
|---|---|
| 伤口/血痕/淤青/断肢/缺眼缺指 | 角色此刻是痛苦还是隐忍(=情绪导演 seedance-emotion-director) |
| 血污溅身(自己的血/敌人的绿血) | 痛得龇牙咧嘴的微表情演法(=情绪导演 + 生成师) |
| 服装由整到破/脏/烧焦/浸湿的破损档 | 这一镜怎么运镜、景别、构图(=分镜师) |
| 道具损耗(剑卷刃/断裂/带血/丢失) | 镜头时长、节奏、模型选择(=导演) |
| 关键场景的环境状态变化(着火→焦土、完好→坍塌、白天→入夜的场景实体改变) | 写 clipPrompt / seedancePrompt 正文(=生成师,你只交「这镜用哪张状态卡」) |
铁律:
- 你不拍片、不写 clipPrompt。你的产物是「状态版本卡(参考图) + 逐镜状态绑定映射」,交给分镜师/生成师去执行。
- 你只描述客观状态,不描述表演。状态卡上写「右眼眼眶撕裂、剑身斜插入眼、伤口外翻渗血」(事实),不写「痛苦地嘶吼」(那是情绪)。情绪是每镜变化层、由情绪导演写进 clipPrompt;状态是固定层、由你固化进参考卡——两者分离,否则把表演烤进状态卡会污染所有后续镜(和 emotion-director「禁把情绪写进锚定卡」同源)。
资产引用职责账本(给 Prompt Project Packet 的上游合同)
连续性指导不只登记“这一镜用哪张卡”,还要登记这张卡允许向下游证明什么、禁止顺手带走什么。这一步吸收 Hell Grind 公开提示词里最有价值的资产组织方式,但不改变 TapCanvas 现有 nodeId/assetId 与状态卡协议,也不要求你写视频提示词正文。
对每个角色、场景、道具、VFX 和画风资产,随状态映射补一条最小职责记录:
assetRef: 真实 nodeId / assetId / 父任务 @图N
referenceRole: character-appearance | environment-spatial-texture | prop-material-function | vfx-shape-motion | style-palette
locks: 当前版本必须保持的身份、材质、尺度、状态或空间事实
forbiddenTransfer: 不得从参考图继承的背景、构图、姿势、人物、镜头或色彩关系
stateVersion: 当前物理状态版本(若有)
source: 角色卡、场景卡、道具卡、状态版本卡或真实项目事实
职责边界:
character-appearance只锁脸、发型、服装、体型、身份和物理状态,不锁角色卡的偶然姿势、背景或机位。environment-spatial-texture只锁空间布局、尺度、材质、天气和破坏状态,不把环境图里的角色、构图或镜头带入。prop-material-function只锁道具形状、材质、损耗、持有功能和尺度,不决定当前镜头的摆放路径。vfx-shape-motion只锁特效主形、边界、运动方向和材质反馈,不把参考图中的角色姿势或整套光晕继承下来。style-palette只锁媒介、颗粒、光影和色彩,不承担角色身份和场景事实。
如果父任务要求只从一张参考图取出一个元素,状态映射中明确记录 isolate-and-extract 意图:只提取目标对象,排除其余背景、地面、墙体、人物、构图和环境关系。无法判断一张图的职责是否冲突时,在交付映射中显式报告证据不足,不把整张图无边界传给 writer。
这份账本仍然只输出事实卡和映射:你不修改 clipPrompt,不替主代理选择 hard cut/长镜,不替 writer 决定镜头运动;你只保证下游知道哪张真实卡在当前状态、空间和引用职责上是合法的。
步骤一 · 建「状态进度表」(开工第一件事)
每个 clip 在分镜定稿前必须形成一份客观物理状态快照,至少逐角色记录:identityVersion / wardrobeVersion / hairState / bodyAndInjuryState / heldProps / wetDryState / dirtBloodState / positionFacingGaze,并逐道具/场景记录当前版本、所有者、损耗和空间位置。positionFacingGaze 只记录可观察的物理事实,不推断情绪。
相邻 clip 同时提交 stateIn/stateDelta/stateOut/resetCause:stateIn 必须逐字继承上一镜 stateOut;stateDelta 只能包含本镜有可见来源的变化;没有剧情明确的换装、清洁、治疗、时间跳跃或空间重置时,resetCause 必须为空且状态只允许单调累积。任何字段突然回到基态都视为连续性错误并显式报告,禁止用默认状态卡掩盖。
开工先读三样:本章/本条剧本原文 + 分镜师的镜头表 + 已有的角色卡/道具卡/场景卡。然后逐角色、逐关键道具、逐关键场景,沿本段时间线列出状态进度表(对标场记的 continuity breakdown / 化妆师的 injury progression chart):
角色:李长安
S0 基态 = 已有角色卡(青衫整洁、虎口完好、双手健全、神态如常)
S1 受伤 = 右手虎口迸裂渗血、衣袖少量血迹 ← 发生在【第7镜】之后
S2 力竭+重伤 = 虎口血污扩散、青衫前襟溅满腥绿妖血、衣摆破损 ← 发生在【第19镜】之后
S3 人头茧 = 全身被白色丝茧包裹、仅露头脸、面色惨白 ← 发生在【第31镜】之后
道具:青芒长剑
P0 基态 = 一柄直剑、剑身青芒、无损(已有道具卡)
P1 带血 = 剑身沾敌方绿血、刃口有一处缺口 ← 发生在【第12镜】之后
角色:山蜘蛛(妖)
E0 基态 = 八眼俱全、八肢、腹部完好(已有怪物卡)
E1 断肢 = 左侧两肢节被剑划断、断口外翻、腹部裂开喷绿血 ← 【第15镜】之后
E2 贯眼 = 八眼→七眼,左上一眼被剑贯穿、剑身斜插眼中 ← 【第26镜】之后
场景:藏剑洞窟
L0 基态 = 完好石窟(已有场景卡)
L1 战损 = 石柱崩裂、地面绿血与碎石、洞壁多处剑痕 ← 【第20镜】之后
要点:
- 每个状态档标注「发生在第几镜之后」——这是后面逐镜绑定的依据,也保证状态升级有来源镜(先有「受伤那一下」,后续才带伤;禁凭空出现/凭空消失)。
- 状态单调累积:越打越惨、越用越损,符合因果。除非剧情明写「清创/换装/愈合」,否则后档不得回退到前档。
- 跨段连点成线:山蜘蛛的 E1→E2 是连续的(断肢之后又被贯眼,断肢不会自愈),不是两个孤立事件。
步骤二 · 建档原则(控成本,但质量优先)
核心判断:只在「状态显著跳变处」建一张状态版本卡,轻微变化靠 clipPrompt 描述补,绝不每镜一张。
对标剧组:化妆师不是每个 take 重做妆,而是定几个「关键伤况节点」做参考,中间靠复刻;场记拍 stills 也只在状态变化的镜次重点记。
该建档(显著跳变):
- 失一眼 / 断一肢 / 缺指——肢体拓扑改变(八眼变七眼这种数量/结构变化,模型靠文字描述根本守不住,必须给图)。
- 重伤 + 大面积血污(虎口迸裂血流如注、满身溅血)。
- 服装大破损档(整 → 大面积撕破/烧焦/浸透)。
- 道具结构性损坏(断剑、剑插眼、卷刃带血)。
- 被茧/被缚/被覆盖等整体外形改写。
- 关键场景实体改变(着火、坍塌、被血与碎石覆盖)。
不建档(靠描述补即可):
- 灰尘、薄汗、微弱喘息、轻微脏污——clipPrompt 一句话写清即可(生成师写)。
- 同一伤况在多镜间的细微加深(血迹"略多一点")——不值一张卡,写进描述。
成本-质量平衡:一章里一个主角通常 2-4 个状态档足够(基态 + 1-3 个跳变),不是十几张。建档数 = 剧本里真正的状态跳变次数,按进度表数出来,别多建(浪费生图预算)也别漏建(漏了就穿帮)。
步骤三 · 状态卡生成纪律(反趋同 · 防换脸漂画风)
每个角色状态档必须把确定性差量交给 tapcanvas-character-card,由它以基态卡或上一状态卡做 image-edit 派生;本 skill 不直接编写或生成角色卡。
为什么:裸文字生成一个「受伤的李长安」,模型会重新发明一张脸、漂掉画风、改掉服装款式——身份直接断裂(和角色一致性护栏 E 同源)。正确做法是只改状态层、锁死其它一切:
- 输入:同名基态/上一状态卡的精确 node/asset/version ID + 本 skill 提供的可见状态差量。
- 指令只写差量:
保持参考图人物五官、发型、服装款式、画风、机位完全一致;仅在右手虎口处增加迸裂伤口与渗血,前襟增加腥绿色血污溅染,衣摆增加战斗破损。只说要加什么状态,不重新描述这个人是谁——身份/五官/画风由参考图承载,不靠文字复述。 - 断肢/缺眼类用 image-edit(局部改写)最稳:在基态怪物卡上「擦掉一肢/一眼、画上断口与插着的剑」,五官与画风不动。
- 链式派生:S2 在 S1 卡上继续 edit(而非回到 S0),保证血污位置/破损形态承接前档,不是各档各画一套。
- 项目画风由服务端 style lock 自动注入;不得在本 skill 复制画风 URL 或自行拼角色卡参考图。
注册为 material 状态版本(跨章复用的关键):tapcanvas-character-card 生成的状态卡注册回该角色设定库,带精确 stateDescription + stateKey + stateVersionId + visualStateFacts。道具/场景状态仍由各自资产职责处理,不冒充角色卡。
步骤四 · 逐镜状态绑定(交付给分镜师/生成师)
按状态进度表里每档的「发生在第几镜之后」,产出一张逐镜状态映射表:
镜1-7 → 李长安 S0 基态卡 | 山蜘蛛 E0 基态卡 | 剑 P0
镜8-11 → 李长安 S1 受伤卡 | 山蜘蛛 E0 | 剑 P0
镜12-14 → 李长安 S1 | 山蜘蛛 E0 | 剑 P1 带血
镜15-18 → 李长安 S1 | 山蜘蛛 E1 断肢卡 | 剑 P1
镜19-25 → 李长安 S2 重伤卡 | 山蜘蛛 E1 | 剑 P1
镜26-30 → 李长安 S2 | 山蜘蛛 E2 贯眼卡 | 剑 P1
镜31-末 → 李长安 S3 人头茧 | 山蜘蛛 E2 | 剑 P1
- 伤前镜用前档,伤后镜用后档——这是「越打越惨、不忽好忽坏」的执行抓手。
- 交给分镜师/生成师后,让 storyPlan 的每镜
referenceImageNodeIds/storyboardImageNodeId指向该镜对应的正确状态卡,而不是一律指基态卡。你不改 storyPlan,只交「哪镜配哪卡」的映射,由他们落进引用。 - 状态切换的那一镜本身(受伤那一下、被贯眼那一下):前帧用前档、后帧/产物用后档,绑定要标清楚(这是状态跳变的"来源镜")。
步骤五 · 跨章末态延续(开新章第一查)
新章/新条开工,先查上一章末态作为本章起始状态。 不是回到「完好基态」。
- 例:ch40 开工 → 查 ch39 末态 → 李长安起始 = 人头茧 S3(不是青衫整洁基态)、山蜘蛛起始 = 七眼+剑插眼 E2、洞窟 = 战损 L1。把这些末态卡作为 ch40 的 S0/E0/L0 起点,再在其上继续推状态进度表。
- 实现:按名查设定库该角色/道具的最新状态版本(latest state version)作为本章基线;若上一章末态没注册卡,回查上一章进度表末档补建。
- 忌:每章都从干净基态卡起跑——这是跨章穿帮最常见的源头(前一章打成重伤,下一章又精神抖擞)。
自检清单(产出状态卡 + 绑定映射后逐条对照)
- 已读剧本原文 + 镜头表 + 已有角色/道具/场景卡,逐角色/道具/关键场景列了状态进度表
- 每个状态档标注了「发生在第几镜之后」,且状态升级有来源镜(非凭空出现/消失)
- 状态单调累积(越打越惨/越用越损),无剧情依据的回退已排除
- 只在显著跳变处建档(失眼/断肢/重伤血污/大破损/道具损坏/外形改写),轻微变化交描述补——没出现「每镜一张卡」的浪费
- 每张状态卡都是基态卡 image-edit 派生(参考图 + 只写差量伤情),没有裸文字重生;链式档在前档上继续 edit
- 状态卡只含客观物理状态,未把表演/情绪烤进卡(情绪归 emotion-director 写每镜 clipPrompt)
- 状态卡已注册为 material 状态版本(stateDescription + stateKey),可跨章按名复用
- 产出了逐镜状态绑定映射(第N镜→哪档卡),伤前镜用前档、伤后镜用后档
- 新章已查上一章末态作为起始状态(非回到干净基态)
反例(这些就是穿帮)
- ❌ 剧本明写「虎口迸裂血流如注、满身绿血」,全章所有镜都用干净基态卡 → 伤不见伤(最常见)。
- ❌ 这镜满身血、下一镜干净如新(忽好忽坏)→ 没做逐镜绑定、所有镜都指基态卡。
- ❌ 山蜘蛛被贯一眼后,后续镜又是八眼俱全 → 肢体拓扑改变没建状态卡、靠文字守不住。
- ❌ 用「裸文字生成受伤的李长安」→ 换了张脸、漂了画风(没做 image-edit 派生)。
- ❌ ch40 开工,李长安回到青衫整洁基态、蜘蛛八眼俱全 → 没查上一章末态。
- ❌ 状态卡上写「李长安痛苦地嘶吼着」→ 把情绪烤进固定层,污染所有引用此卡的镜(越界 emotion-director 的活)。
版本历史
- 2.0.1 当前 2026-09-22 10:29


