# 衍生资产提取(从剧本 + 资产 → derive[]) 本指南只做一件事: 根据剧本内容和已有资产,为每个资产提取在剧情中出现的**不同状态/变体**(derive)。 > **核心概念**:derive 是父资产的**其他视觉状态**,用于为后续图片生成提供参考。 > 只衍生**图片模型无法仅凭提示词自行处理的视觉差异**,如服装、形态、伤势、物件状态等。 > 表情、情绪、简单动作等模型可自行控制的内容**不需要衍生**。 > - 角色资产 → 不同服装、伤势外观、形态变化等状态变体 > - 道具资产 → 不同物理状态变体(破损、发光、打开等) > - 场景资产 → 不同时间/氛围状态变体(白天、夜晚、废墟等) ## 1. 输入与输出 ### 输入 - 剧本文本(字符串),通过 `get_flowData("script")` 获取 - 已有资产列表(数组),通过 `get_flowData("assets")` 获取 每个资产结构: ```ts { assetsId: string; // 资产唯一ID name: string; // 资产名称 desc: string; // 资产描述 src: string; // 资产图片URL derive?: Array<{ // 已有衍生状态(可能为空) assetsId: string; name: string; desc: string; src: string; }>; } ``` ### 输出 对每个需要衍生状态的资产,调用 `set_flowData` 写入 derive。通过 `key` 指定 lodash 路径,只传最小更新数据。 ```ts // 为索引 0 的资产设置 derive set_flowData({ key: "assets[0].derive", value: [ { name: "状态名", desc: "状态描述" } ] }) ``` derive 元素格式: ```ts { name: string; // 状态名称(1~20字) desc: string; // 状态描述(1~100字) } ``` ## 2. 衍生状态类型 derive 代表同一资产在不同剧情场景下的**视觉状态变体**: ### 角色资产的衍生状态 | 类型 | 说明 | 示例 | |------|------|------| | 服装变体 | 角色穿着不同服饰的状态 | 战甲状态、便装状态、礼服状态 | | 伤势/身体状态 | 角色身体发生显著外观变化 | 重伤缠绷带、灵力暴走纹路蔓延、白发苍老 | | 形态变化 | 角色外形产生根本变化 | 魔化形态、兽化、幼年状态 | | 特殊装扮 | 伪装或临时装束 | 蒙面伪装、乞丐装扮 | > **不需要衍生的状态**:表情、情绪、简单动作姿态等图片模型可通过提示词直接控制的内容,无需单独建立衍生资产。 ### 道具/物件资产的衍生状态 | 类型 | 说明 | 示例 | |------|------|------| | 损坏状态 | 物件受损的外观 | 令牌破损、剑身断裂 | | 激活/发光状态 | 物件被触发后的外观 | 令牌发光、法印激活 | | 变形状态 | 物件形态发生变化 | 玉佩碎裂、卷轴展开 | ### 场景资产的衍生状态 | 类型 | 说明 | 示例 | |------|------|------| | 时间变体 | 同一场景不同时段 | 夜晚的宗门、黄昏的战场 | | 破坏状态 | 场景受到破坏后 | 废墟状态、火烧后 | | 氛围变体 | 场景氛围发生变化 | 战后的宗门大殿、雨中的山门 | ## 3. 提取原则 ### 3.1 核心理解 - derive **不是**与父资产相关的独立物件(如角色的武器、坐骑) - derive **是**父资产自身在不同剧情节点的**视觉状态变体**,用于为图片生成提供参考图 - 每个 derive 应该能被理解为"**父资产名 + 状态名**"(如"凌玄·重伤缠绷带"、"青云令·破损") - **不要衍生**图片模型可通过提示词直接控制的内容(表情、情绪、简单动作姿态等) ### 3.2 来源优先级 1. **剧本中明确描写** — 最高优先级,剧本中直接描写了资产的不同状态 2. **角色描述暗示** — 中优先级,desc中暗示存在状态变化但剧本未直接描写 3. **合理推测** — 低优先级,根据剧情发展合理推测的状态变化 ### 3.3 提取规则 - 只提取**与默认状态有明显视觉差异、且图片模型无法仅凭提示词自行控制**的衍生状态 - 已存在于资产 `derive` 数组中的状态**不要重复提取** - 每个资产的衍生状态数量建议 **1~5个**,宁缺勿滥 - `desc` 字段格式:`[与默认态的差异] · [视觉特征] · [出现场景/触发条件]` - 衍生状态命名应能直接表达"这是什么状态",而非"这是什么东西" ### 3.4 命名规范 - 名称简洁,2~6个字 - 体现**视觉外观变化**而非情绪动作,如"重伤缠绷带"而非"悲伤流泪" - 如果剧本中有明确的状态描写,直接提炼为状态名 ## 4. 示例 ### 输入剧本片段 ``` 苏晚卿冷笑:「还有你当宝贝的青云令」 「若不是我趁你养伤时,偷偷在令牌上动了手脚」 △ 凌玄气血逆流,再次一口鲜血喷出 △ 青云令表面灵纹暗淡,隐约可见细微裂痕 ``` ### 输入资产 ```json [ { "assetsId": "char-1", "name": "凌玄", "desc": "男主 · 青云宗宗主 · 重伤废修", "derive": [] }, { "assetsId": "char-2", "name": "苏晚卿", "desc": "女配 · 凌玄未婚妻 · 背叛者", "derive": [] }, { "assetsId": "item-1", "name": "青云令", "desc": "宗主信物 · 青玉材质 · 灵纹浮刻", "derive": [] } ] ``` ### 输出 分别对每个需要衍生的资产调用 `set_flowData`,通过 key 精确定位: ```ts // 凌玄(索引 0) set_flowData({ key: "assets[0].derive", value: [ { name: "重伤缠绷带", desc: "气血逆流后 · 胸口缠满绷带面色苍白 · 养伤期间外观" }, { name: "废修白发", desc: "灵力尽失 · 黑发变白面容憔悴 · 修为被废后常态" } ] }) // 苏晚卿(索引 1)— 无需衍生,跳过 // 青云令(索引 2) set_flowData({ key: "assets[2].derive", value: [ { name: "灵纹暗淡", desc: "被篡改后 · 灵纹失去光泽隐现裂痕 · 感应功能被破坏" }, { name: "令牌发光", desc: "被激活时 · 灵纹亮起青色光芒 · 正常使用状态" } ] }) ``` ``` ## 5. 工具调用顺序 1. `get_flowData("script")` — 获取剧本内容 2. `get_flowData("assets")` — 获取已有资产列表 3. 分析剧本,为每个资产识别在剧情中出现的不同视觉状态 4. 对每个有衍生状态的资产调用 `set_flowData({ key: "assets[N].derive", value: derive数组 })` 保存 5. 向用户汇报提取结果概要