连做几集短剧之后,角色长相、服装、语气开始漂移,通常不是生成模型突然变差,而是角色信息只写在每一集的提示词里:第一集写了发色和银链,第二集忘了写,第三集换了个说法,画面自然对不上。更稳的做法是在开拍前把主要角色拆成设定卡、把跨集复用的场景和道具放进项目级记忆,单集提示词只描述本集剧情、动作和临时变化。排查顺序可以先看项目记忆里有没有角色卡,再看单集是否重复定义了角色。
多集短剧的角色一致性,建议在第一集开拍前就把外观锚点、说话习惯写入项目级记忆,服装写成可被单集覆盖的默认值;单集提示词只保留本集动作、场景和一次性道具。若第二集起角色长相漂移,先核对项目记忆是否被单集重写,再检查提示词是否重复描述角色。一次性路人与临时道具不入全局,确认跨集复用后再升级。
把主要角色拆成设定卡再入库
角色信息散落在各集提示词里,最直接的后果是每写一集就要重抄一遍外观描述,抄漏一个发色或配饰,画面就会换人。设定卡的目的不是写得更长,而是把不变的部分固定下来,让单集提示词只写「这集变了什么」。每张卡建议覆盖三类字段:
- 外观锚点:年龄感、脸型、发型与发色、眼睛特征、体型、标志性配饰,跨集不变,建议全量进入项目级记忆。
- 服装状态:默认套装、换装触发条件、锁定单品。默认套装作为兜底进项目级记忆,但标记为可被单集覆盖;锁定单品不允许单集改。
- 说话习惯:人称、句子长度、口头禅、语速、避免使用的表达,同样进项目级记忆,单集不重复声明。
一个可以直接改键名使用的卡片骨架:
id: lin_wan
display_name: 林晚
appearance_anchors:
age_range: '25-28'
face: '鹅蛋脸,左眉尾有浅疤'
hair: '黑色齐肩直发,常右侧别耳'
eyes: '丹凤眼,深棕瞳色'
build: '偏瘦,身高约168'
signature: '左手腕细银链'
wardrobe:
default: '深灰风衣 + 白衬衫 + 黑直筒裤'
override_scope: episode
locked_items:
- '左手腕细银链'
speech:
person: '第一人称'
sentence_len: '短句为主'
catchphrase:
- '行,那就这样'
avoid:
- '网络流行语'
- '大段形容词'
入库范围按这张卡切:appearance_anchors 与 speech 整段写入项目级记忆,wardrobe.default 和 locked_items 也进,前者作用域标成 episode,意思是单集可以换衣服、不能换掉锁定单品。字段名按你项目里实际使用的键替换即可,关键是同一份外观描述不要同时存在于角色卡和单集提示词里。
在同一项目里区分全局资产与单集素材
全局记忆一旦被单集道具和临时配角填满,后面每开一场都要在一堆无关条目里找真正要用的角色。分层判断可以先问三个问题:这个资产是否跨集复用、是否随剧情持续变化、是否允许被单集临时覆盖。偏长期的放全局,偏一次性的放单集。
- 正例一:主角的银链信物,从第一集到最后一集都在,进全局资产。
- 正例二:主角的默认风衣,作为全局
wardrobe.default,换装集在单集里覆盖。 - 反例一:某一集酒吧里的调酒师,只出现一次,放单集
local_assets。 - 反例二:某一集女主手里的红伞,除非后续反复出现,否则先留在单集,确认复用后再升级到全局。
落到目录上,可以用项目记忆和单集素材两个层级隔离,单集素材默认不写回项目记忆:
project/
memory/
characters/
lin_wan.yaml
assets/
scene_home.yaml
prop_silver_chain.yaml
style.yaml
episodes/
ep01/
local_assets.yaml
prompt.md
ep02/
local_assets.yaml
prompt.md
episodes/*/local_assets.yaml 里可以放临时角色和一次性道具;只有判断它在后面几集还会出现,再移到 memory/assets。这一步建议人工决策,不要让单集自动写回全局层。
开新场次前核对记忆是否被覆盖
角色漂移经常不是记忆没建,而是单集把记忆覆盖掉了。开新场次前按顺序核对:
- 打开项目记忆里的角色卡,确认关键字段还是你要的版本,没有被上一集改动。
- 检查本集
local_assets.yaml,是否定义了与角色卡同名的键,例如hair、signature。 - 检查本集提示词里是否又写了一遍外观描述。出现发色、瞳色、配饰这类外观锚点词,通常说明在重复定义。
- 确认本集服装是走角色卡默认值,还是在单集里显式声明的换装。
页面上能观察到的反馈可以对照这张表:
| 观察点 | 正常表现 | 异常时先改哪里 |
|---|---|---|
| 角色卡详情 | 显示继承项目级字段 | 所有集都漂移,改项目记忆角色卡 |
| 本集素材层 | 只有本集新增道具 | 只有这一集漂移,改单集素材或提示词 |
| 提示词正文 | 不出现外观锚点词 | 交错漂移,删掉提示词里的重复外观描述 |
改哪一层的原则很简单:问题出现在所有集,改项目记忆;只出现在某一集,改单集。角色卡正确时不要顺手改全局,那样会把本来正常的集也带偏。
用一场对照戏验证一致性是否生效
不需要先做完整一集来验证。写两段很短的镜头,同一个角色、同一套服装、不同场景,角色描述全部依赖项目记忆,只改场景和动作。
ep01 / sceneA
场景: 客厅,白天
角色: 林晚(沿用项目记忆角色卡 lin_wan)
动作: 放下包,低头看手机
台词: 行,那就这样。
ep01 / sceneB
场景: 街边,夜晚
角色: 林晚(沿用项目记忆角色卡 lin_wan)
动作: 站在路灯下等车
台词: 行,那就这样。
两场台词故意相同,方便单独比对语气;场景不同,方便比对光照变化下外观是否还稳。对照检查点:
- 外观:脸型、发色与发型、眼睛特征、左手腕银链,两场是否一致。
- 服装:风衣主色、衬衫与裤子结构、配饰位置,两场是否一致。
- 语气:是否保持短句、第一人称、同一句口头禅,没有引入角色卡
avoid里列出的表达。
外观对不上,回到角色卡收紧外观锚点;语气对不上,补 speech 字段;只有夜景那一场不对时,优先怀疑单集提示词额外写了光照或服装描述,而不是项目记忆坏了。
哪些内容不该塞进全局记忆
全局记忆不是越多越好,它应该在每一场生成时都大概率被用到,否则维护会越来越难,每场要读的上下文也变长。以下三类建议只留在单集:
- 一次性配角:路人、只出现一集的同事或司机。判断依据是后续集数不会复用同一张脸和同一套说话方式。
- 一次性道具:某一集出现的信封、临时手机、外卖袋。判断依据是它在剧情里被消耗掉,之后不再出现。
- 本集特殊场景与状态:暴雨、临时病房、回忆闪回、本集才有的情绪状态。判断依据是它属于单集氛围,写进全局会污染其他场次的环境描述。
可以先放单集跑一集,确认某个配角或道具在后续剧情里确实要反复出现,再升级到项目记忆。升级时把名字、外观锚点和复用范围补齐,并删除单集素材里的重复定义,避免两层同时存在。