From 00b95ac19e458b3a36d696e095c343e3b6b9f121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Sun, 21 Jun 2026 17:10:31 +0800 Subject: [PATCH] =?UTF-8?q?D136+:=20HLDP=E7=BC=96=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=AF=8D=E5=BC=95=E6=93=8E=20=E2=80=94=20=E2=8A=A2?= =?UTF-8?q?=E9=94=9A=E7=82=B9+=E5=B1=9E=E6=80=A7=E7=BC=96=E7=A0=81+?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit buildPrompt()完全重构为HLDP编码结构: ⊢ CHAR/PROP/空间 · 锁定 ← 最高权重·AI注意力锚点 · 属性: 值 | 值 | 值 ← 精确key-value·不可稀释 → 自然语言翻译 ← 编码后的汉字·辅助确认 ⊢ 风格约束 ← 全局约束 原理: AI模型对结构化标记(⊢/·/|)的注意力权重 > 自然语言 编码先于翻译·AI先理解结构再理解内容 冰朔: '编码的结构有更高的权重。AI照编码去找翻译的汉字。' --- video-ai-system/engines/generate-shots.js | 102 ++++++++++++---------- 1 file changed, 56 insertions(+), 46 deletions(-) diff --git a/video-ai-system/engines/generate-shots.js b/video-ai-system/engines/generate-shots.js index 512e535..7c34096 100644 --- a/video-ai-system/engines/generate-shots.js +++ b/video-ai-system/engines/generate-shots.js @@ -64,76 +64,86 @@ async function main() { function buildPrompt(shot, encoding) { const locks = encoding.continuity_locks; - const parts = []; - // === D136+ 分层提示词引擎 === - // 冰朔: "用编码告诉他这是什么意思" → HLDP编号不是标签,是优先级排序 - // - // 提示词分层: - // L0 主体(人物+道具) ← AI注意力第一落点·不可稀释 - // L1 空间(克制描述) ← 只给必要信息·不抢人物焦点 - // L2 动作 ← 具体行为 - // L3 风格/约束 ← 全局修饰 + // ═══ D136+ HLDP编码提示词引擎 ═══ + // 冰朔: "编码的结构肯定有更高的权重。AI拿到编码后去组合编码, + // 然后照着编码去找你后面给他翻译的汉字。" + // + // 原理: HLDP的 ⊢ / · / | / → 这些标记符号天然构成层级结构。 + // AI模型的注意力机制对结构化输入敏感—— + // 每个 ⊢ 是一个锚点,每个 · 是一个属性分支。 + // 编码权重 > 自然语言翻译权重。 + // + // 结构: + // ⊢ CHAR · 锁定 ← 最高权重·不可变 + // ⊢ PROP · 锁定 ← 紧随其后 + // ⊢ 空间 ← 克制描述 + // → 动作(自然语言翻译) ← 编码后的汉字辅助 - let desc = ''; - - // ─── L0: 主体锁定 ─── - // 人物和道具的描述放在最前面,确保AI第一注意力在这里 - const l0Parts = []; + let prompt = ''; + // ─── 编码区: CHAR锁定 ─── if (shot.char_ref && locks?.characters?.[shot.char_ref]) { const charLock = locks.characters[shot.char_ref]; - l0Parts.push(charLock.locked_desc); + prompt += `⊢ CHAR-003 · 苏白 · 锁定: 全镜一致不可变\n`; + prompt += ` 外貌: 18岁亚洲男性 | 五官俊秀·剑眉·明亮大眼 | 自信笑容露齿\n`; + prompt += ` 服饰: 白色长衫·腰间束带·袖口挽起 | 黑色长发半束半披\n`; + prompt += ` 身形: 175cm·挺拔·肩膀开阔\n`; + prompt += ` 气质: 开朗·自信·略带痞气·穷但不自卑\n`; + prompt += charLock.locked_desc + '\n'; } + // ─── 编码区: PROP锁定 ─── if (shot.prop_ref && locks?.props?.[shot.prop_ref]) { const propLock = locks.props[shot.prop_ref]; - l0Parts.push(propLock.locked_desc); + prompt += `⊢ PROP · ${shot.prop_ref} · 锁定: 不可变\n`; + prompt += ` 方向: ${propLock.orientation} | 材质: ${propLock.material}\n`; + prompt += ` 文字: ${propLock.text}\n`; + prompt += propLock.locked_desc + '\n'; } if (shot.prop_ref_2 && locks?.props?.[shot.prop_ref_2]) { const propLock2 = locks.props[shot.prop_ref_2]; - l0Parts.push(propLock2.locked_desc); + prompt += `⊢ PROP · ${shot.prop_ref_2} · 锁定: 不可变\n`; + prompt += ` 方向: ${propLock2.orientation} | 材质: ${propLock2.material}\n`; + prompt += ` 文字: ${propLock2.text}\n`; + prompt += propLock2.locked_desc + '\n'; } - // 如果没人也没道具(纯环境镜)→不生成L0 - if (l0Parts.length > 0) { - desc += l0Parts.join('。'); - } - - // ─── L1: 空间定位 ─── - // 克制描述。不给灵霄宗鎏金大字——除非是S1-01建立镜 + // ─── 编码区: 空间 ─── if (shot.env && locks?.environments?.[shot.env]) { - const envLock = locks.environments[shot.env]; - // 有主体时用简短版·没有主体时用完整版 - if (l0Parts.length > 0) { - // 简短版: 去掉"灵霄宗鎏金大字"细节,只留位置和光线 - desc += `。背景: 修仙广场边缘角落,人群远处,金色阳光`; + const hasChar = !!(shot.char_ref && locks?.characters?.[shot.char_ref]); + if (hasChar) { + // 有主体时的克制空间描述 + prompt += `⊢ 空间 · 锁定: 不可喧宾夺主\n`; + prompt += ` 位置: 修仙广场·人群边缘角落\n`; + prompt += ` 光线: 白天·金色阳光\n`; + prompt += ` 景别: ${shot.framing}\n`; } else { - desc += envLock.locked_desc; + // 纯环境镜使用完整锁定文本 + prompt += `⊢ 空间 · 锁定: ENV-002百宗会广场\n`; + prompt += locks.environments[shot.env].locked_desc + '\n'; } } - // ─── L2: 动作 ─── + // ─── 翻译区: 动作描述 ─── if (shot.action) { - desc += `。${shot.action}`; + prompt += `→ ${shot.action}\n`; } - // 关键信息追加 - if (shot.text_elements) desc += `。画面中可见文字: ${shot.text_elements}`; - if (shot.prop_state) desc += `。${shot.prop_state}`; + // 文字标注 + if (shot.text_elements) { + prompt += `→ 画面中可见文字: ${shot.text_elements}\n`; + } - parts.push(desc); + // ─── 风格约束 ─── + prompt += `⊢ 风格约束:\n`; + prompt += ` 真人写实·电影级光影·亚洲面孔\n`; + prompt += ` 景别: ${shot.framing}`; + if (shot.emotion?.type) prompt += ` | 氛围: ${shot.emotion.type}`; + prompt += `\n`; + prompt += ` 禁止: 卡通·3D渲染·现代元素·水印·字幕`; - // ─── L3: 风格 ─── - parts.push('景别: ' + shot.framing); - - if (shot.emotion?.type) parts.push('氛围: ' + shot.emotion.type); - - // 风格锁定(不再是第一行) - parts.push('真人写实风格,电影级光影,亚洲面孔'); - parts.push('不要卡通·不要3D渲染·不要现代元素·不要水印·不要字幕'); - - return parts.join('。'); + return prompt; } main().catch(e => { console.error(e); process.exit(1); });