☰
火宝短剧角色三视图最终提示词规范:用 Character Reference Sheet 打造全剧一致的形象锚点
2026/10/4 9:45:58 网站建设 项目流程
  • AI 应用
  • 人工智能
  • 媒体生成
  • 音视频
  • AI Agent
  • 后端
  • 前端

【免费下载链接】huobao-drama

🎬 火宝短剧 - 基于AI的一站式短剧生成平台 《一句话生成完整短剧,从剧本到成片全自动化》 Huobao Drama - An AI-Powered End-to-End Short Drama Generator "One Sentence to Complete Drama: Fully Automated from Script to Final Video"

项目地址:https://gitcode.com/gh_mirrors/hu/huobao-drama
点击查看免费下载

角色一致性是 AI 短剧生产中最棘手的问题之一——同一角色在不同分镜、不同视频片段中出现时,如果脸型、发型、服装出现漂移,观众立刻出戏。火宝短剧(Huobao Drama)的解法,是把角色形象固定在一张**角色设定参考图(character reference sheet)**上:左侧正脸特写提供脸部辨识度锚点,右侧三张等高全身视图锁定发型与服装,全剧所有角色图片与视频生成都以这张图为形象锚点。本文将以backend/workspace/skills/prompt-generator/character-prompt/SKILL.md为骨架,结合仓库源码,完整解析该规范的设计思想、输出结构、描述规则与底层调用链,并给出可直接落地执行的提示词写作方法。

角色参考图在 AI 短剧流水线中的定位

火宝短剧的资产提示词体系分为三类,各有专属技能规范:角色走三视图(character turnaround)、场景走固定视角 + 前/中/后景分层、道具走白底单品静物。三个规范分别由prompt-generator/character-prompt、prompt-generator/scene-prompt、prompt-generator/prop-prompt三个 SKILL 文件承载,并在 Agent 注册表 中通过AGENT_SKILL_MAP一并挂载到prompt_generator这个专门负责创作并保存「最终提示词」的 Agent 上:

prompt_generator: [ 'prompt-generator/character-prompt', 'prompt-generator/scene-prompt', 'prompt-generator/prop-prompt', 'prompt-generator/video-prompt', ],

其中角色规范是整个体系的锚点——extractorAgent 从剧本中提取角色的appearance(样貌)与styling(妆造)描述后,prompt_generatorAgent 按本文规范将它们扩展为一张中性、清晰、可复用的设定参考图提示词,后续所有角色图片生成与视频生成都依赖它维持形象统一。

核心原则:一致性 > 美观

规范开宗明义:“核心原则:一致性 > 美观。这张图是后续所有角色图片、视频参考的形象锚点,必须中性、清晰、可复用——不要追求单张图的艺术感。”

这意味着角色参考图追求的不是惊艳,而是可辨识、可复用:中性站姿、自然表情、柔和均匀的棚拍光,让这张图能在各种场景、各种剧情环境下反复作为参考而不产生误导。任何追求单张图艺术感的做法(戏剧性光影、夸张姿势、华丽背景)都会削弱它作为参考图的通用性,是规范明确反对的。

构图规范:左侧正脸特写 + 右侧三视图

生成的是一张角色设定参考图(character reference sheet),构图固定为:

区域内容作用
左侧正脸特写——头部与肩部的正面近景五官、发型、肤质清晰可见,作为脸部辨识度锚点
右侧正面、90 度侧面、背面三张等高全身视图同一角色三个角度的全身视图等高并排,头顶与脚底对齐,锁定体态、发型与服装

这张图的构图逻辑非常明确:脸部的辨识度由特写提供,身体的完整性由三视图提供。生图模型在同时获得“特写级五官细节 + 全身多角度着装”两个维度的约束后,才能稳定输出后续可复用的形象锚点。

输出结构:按顺序组装单段连贯描述

SKILL 规定输出必须按下列顺序组装单段连贯描述,语言跟随会话语言指令指定的目标语言,不得分点、不得混入无关词汇:

角色设定参考图,左侧为正脸特写,右侧并列展示正面、90 度侧面、背面三张等高全身视图, 特写与全身视图都是同一角色,全身入镜,中性 A 字站姿,三张全身视图等高并排、头顶脚底对齐, [年龄感 + 性别感 + 体态],[五官特征],[发型],[服装 + 配饰], 正脸特写与三个视图的脸、发型和服装完全一致, 纯白背景,柔和均匀的光线,电影质感

这段模板实际上划分为三层语义:

  1. 构图层:明确“左侧特写 + 右侧三视图”的版式、等高并排、头顶脚底对齐的几何约束;
  2. 内容层:四个占位符[年龄感 + 性别感 + 体态]、[五官特征]、[发型]、[服装 + 配饰]由 Agent 根据角色资料填充;
  3. 一致性声明层:显式写出“正脸特写与三个视图的脸、发型和服装完全一致”;
  4. 环境层:纯白背景、柔和均匀光线、电影质感。

值得注意的是,输出模板本身刻意写明了“特写与全身视图都是同一角色”“三个视图的脸、发型和服装完全一致”这类自指约束,这是为了对抗扩散模型在多视图生成中常见的“各视图之间角色漂移”问题——把一致性要求写进提示词本身,而不是依赖模型自觉。

描述顺序规则:最有辨识度的特征放前面

规范要求把最有辨识度的特征放在前面,依次落地appearance(样貌)与styling(妆造)的每个关键元素,不遗漏:

  1. 身份锚点:年龄感(如“二十出头”)、性别感、体态(高矮胖瘦、姿态习惯);
  2. 五官:脸型、眼睛、其他显著特征(疤、痣、眼镜等)——正脸特写尤其依赖这部分描写;
  3. 发型:颜色、长度、样式;
  4. 服装:款式、颜色、材质、状态(如“袖口有焊锡痕迹的皱褶工服”);
  5. 配饰:只写有辨识度的,不堆砌。

这条顺序规则的深层原因在于:提示词越靠前的信息,在生图模型中的权重越高。把身份锚点和五官放在最前,可以最大化保证脸部辨识度优先被满足;而服装、配饰放在后面,既不影响脸部一致性,又给了模型足够的自由度去表现细节。

规范还特别强调一个转化技巧:角色的性格特点要转化为外在气质与神态描写,不要直接出现性格词汇。例如“憔悴”要写成“眼神疲惫、肩膀微垮”,而非直接写“一个憔悴的人”——因为生图模型对抽象性格词的理解极不稳定,而对具体神态、体态的描写则可靠得多。这一要求与extractorAgent 的角色提取规范完全呼应(见 agents/index.ts 中的 extractor 定义:“角色的性格特点要转化为外在气质与神态融入样貌描写,不要单独输出性格字段”)。

构图与一致性细则

规范对参考图的每个细节都做了硬性约束:

  • 左侧正脸特写:正面朝向镜头、中性表情、头顶到肩膀完整入镜;
  • 右侧三张全身视图:同一角色的正面、90 度侧面、背面,等高并排、间距均匀,头顶与脚底在同一水平线上;
  • 跨视图一致性:特写与三张全身视图必须是同一张脸、同一发型、同一服装——明确写出“正脸特写与三张全身视图的脸、发型和服装完全一致”;
  • 中性站姿、自然表情:方便作为参考图复用;
  • 柔和均匀的棚拍光:不要戏剧性光影,参考图要在各种场景下都能用;
  • 语言:输出使用会话语言指令指定的目标语言,不要混入无关词汇。

禁止事项:参考图的红线清单

规范明确列出以下禁止项,任何一条都不允许出现在角色参考图提示词中:

  • 动态姿势、夸张表情、手持道具、与他人同框;
  • 裁切身体——全身视图必须 full body(头顶到脚底完整入镜),特写必须头部肩部完整入镜;
  • 文字、标签、水印、签名;
  • 重阴影、彩色背景光、背景道具。

这些禁止项全部服务于“参考图复用性”这一目标:动态姿势和夸张表情会干扰跨场景复用,文字/水印会在后续生图时污染画面,重阴影和彩色背景光则会让参考图在其他场景下难以混用。

保存与风格注入:save_character_final_prompt 源码解析

SKILL 的保存章节规定:调用save_character_final_prompt保存最终提示词,prompt 参数不含风格词,项目视觉风格由工具自动注入到最终提示词的最前方。

该工具实现在 image-prompt-tools.ts(id: 'save_character_final_prompt'),其保存逻辑正是这一约定的落地:

const stylePrompt = await getDramaStylePrompt(dramaId) const finalPrompt = stylePrompt ? `${stylePrompt}, ${prompt}` : prompt await db.update(schema.characters) .set({ finalPrompt, updatedAt: now() }) .where(eq(schema.characters.id, character_id))

关键机制有三点:

  1. 风格前置拼接:项目绑定的视觉风格(来自 style-preset.ts 的getDramaStylePrompt)被拼接到 prompt 最前方,形成风格词, 角色三视图提示词的最终串。风格词位于最前,享受最高的提示词权重——这正是 SKILL 要求“prompt 参数不含风格词”的原因:风格由系统统一注入,Agent 只管写角色本身,避免风格词重复或冲突;
  2. 落库存储:拼好的finalPrompt写入characters表的final_prompt字段(Drizzle 表定义与 MySQL DDL 中的final_prompt TEXT均可验证,见 final-prompt-structure.test.mjs),作为角色的权威形象描述持久化;
  3. 配套读取工具:同文件中的read_characters工具负责向 Agent 提供角色资料(name / role / description / appearance / styling / final_prompt),Agent 先读后写,形成完整闭环。

流水线中的调用链:从懒生成到生图优先

角色最终提示词并非创建角色时立即生成,而是在真正需要时由 final-prompt.ts 的ensureCharacterFinalPrompt懒加载生成:

export async function ensureCharacterFinalPrompt(char, episodeId, force = false, opts?) { if (char.finalPrompt && !force) return char.finalPrompt // 已有则直接复用 // 缺失时调用 prompt_generator Agent 创作并保存 await runPromptAgent(episodeId, char.dramaId, `为角色「${char.name}」(character_id=${char.id}) 生成三视图最终提示词,并调用 save_character_final_prompt 保存。`, opts) const [fresh] = await db.select().from(schema.characters).where(eq(schema.characters.id, char.id)) return fresh?.finalPrompt || '' }

调用链全景如下:

  1. extractorAgent 从剧本提取角色并填充appearance/styling;
  2. 生图前,characters.ts 路由调用ensureCharacterFinalPrompt:若角色已有final_prompt直接复用;否则以character_id为上下文唤起prompt_generatorAgent;
  3. Agent 先通过read_characters读取角色资料,按本文 SKILL 规范创作三视图提示词,再调用save_character_final_prompt保存(风格词由工具自动前置注入);
  4. 生图时const prompt = finalPrompt || characterImagePrompt(char, stylePrompt)——存储的最终提示词优先,仅在 Agent 生成失败(返回空串)时才回退到本地的机械拼接函数;
  5. 用户手动编辑角色描述字段时,路由会把final_prompt置空(updates.finalPrompt = null),下次生图时自动重新生成,保证提示词永远与最新资料同步。

技能注入机制:SKILL.md 如何到达 Agent

本文规范之所以能约束 Agent 行为,靠的是 skills.ts 的技能注入机制:

  • Agent 启动时每个 Agent 拥有独立 Workspace(skillWorkspaces),其中prompt_generator的 workspace 通过前缀匹配挂载prompt-generator/character-prompt等四个技能目录;
  • scanSkillPaths()递归扫描backend/workspace/skills/下所有含SKILL.md的目录,设置页新建的子技能无需重启即可被发现(动态 resolver);
  • loadAgentSkills把技能全文以## Skill: <path>段落格式拼接到 Agent 的 instructions 中,与基础 prompt 文件(prompt_generator.md)和语言指令块共同构成完整指令;
  • 技能目录支持多语言变体:character-prompt/下同时存在SKILL.en.md、SKILL.ja.md、SKILL.ko.md,当会话语言指令为 zh 之外的目标语言时,readLocalizedSkill优先读取SKILL.<lang>.md,缺失时回退中文基础版(见 skills.ts 中readLocalizedSkill/loadAgentSkills的实现)。

同时,prompt_generator.md(以及 agents/index.ts 中的默认指令)明确了 Agent 的工作流:调用read_characters读取资产信息 → 按对应资产的技能规范(角色三视图 / 场景固定视角 / 道具白底单品)创作最终提示词 → 调用保存工具逐个保存,并强调“必须实际调用保存工具,不要只在回复中给出提示词”。

测试验证与可维护性

仓库用结构测试锁定了这套规范的落地形态,见 final-prompt-structure.test.mjs:

  • 验证characters/scenes表存在final_prompt TEXT字段(Drizzle 定义 + MySQL DDL + backfill);
  • 验证保存工具存在save_character_final_prompt、调用getDramaStylePrompt并执行set({ finalPrompt, updatedAt: now() })落库;
  • 验证技能文件本身包含“正脸特写”“正面、90 度侧面、背面”“三个视图的脸、发型和服装完全一致”等必备要素;
  • 验证生图服务优先使用存储的最终提示词,且finalPrompt缺失时由 Agent 生成、失败时回退本地拼接。

这意味着任何人修改角色三视图规范时,都能通过测试确认其核心要素与调用链未被破坏——规范不仅是文档,更是被测试守护的产品约束。

总结:一张参考图锚定全剧形象

角色三视图最终提示词规范的价值,在于把“角色一致性”这一 AI 生成的老大难问题,拆解成了可执行的工程约束:构图固定、描述有序、风格注入统一、存储与复用闭环、测试守护。写作角色提示词时,只需记住三个要点:把辨识度最高的特征写在最前面;把性格翻译成神态与体态;把“一致性”显式写进提示词本身。配合save_character_final_prompt的风格自动前置注入与ensureCharacterFinalPrompt的懒生成机制,火宝短剧得以用一张中性、清晰、可复用的参考图,为全剧所有角色图片与视频生成锚定统一的形象基线。

  • AI 应用
  • 人工智能
  • 媒体生成
  • 音视频
  • AI Agent
  • 后端
  • 前端

【免费下载链接】huobao-drama

🎬 火宝短剧 - 基于AI的一站式短剧生成平台 《一句话生成完整短剧,从剧本到成片全自动化》 Huobao Drama - An AI-Powered End-to-End Short Drama Generator "One Sentence to Complete Drama: Fully Automated from Script to Final Video"

项目地址:https://gitcode.com/gh_mirrors/hu/huobao-drama
点击查看免费下载

相关推荐

上一篇:如何用 Scrapling 自适应抓取替代 AI 内容提取服务并对比成本
下一篇:超强搜索功能GitHub_Trending/ui/ui:全文搜索与过滤

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询