D136+: 分层提示词引擎 — L0主体优先·不可稀释
buildPrompt()重构提示词结构:
L0 主体: 人物+道具锁在最前面 → AI注意力第一落点
L1 空间: 克制描述 → '背景:广场边缘角落·远处人群·金色阳光'
有主体时去掉灵霄宗鎏金大字→不抢人物焦点
L2 动作: 具体行为
L3 风格: 移到末尾 → '真人写实·电影光影·亚洲面孔'
冰朔: '用编码告诉他这是什么意思'
→ CHAR-003不再被埋在后面 → AI必须先读懂人物再读环境
This commit is contained in:
parent
e9170aa28a
commit
4c3623344c
@ -66,42 +66,54 @@ function buildPrompt(shot, encoding) {
|
||||
const locks = encoding.continuity_locks;
|
||||
const parts = [];
|
||||
|
||||
// 风格基调
|
||||
parts.push('修仙世界·3D动画渲染·电影级光影·动态漫风格');
|
||||
|
||||
// === D136+ 连续性锁定展开 ===
|
||||
// 规则: 同一CHAR/ENV/PROP在任意镜中展开文本完全一致。
|
||||
// 锁定文本来自导演编码的 continuity_locks 节。
|
||||
// === D136+ 分层提示词引擎 ===
|
||||
// 冰朔: "用编码告诉他这是什么意思" → HLDP编号不是标签,是优先级排序
|
||||
//
|
||||
// 提示词分层:
|
||||
// L0 主体(人物+道具) ← AI注意力第一落点·不可稀释
|
||||
// L1 空间(克制描述) ← 只给必要信息·不抢人物焦点
|
||||
// L2 动作 ← 具体行为
|
||||
// L3 风格/约束 ← 全局修饰
|
||||
|
||||
let desc = '';
|
||||
|
||||
// 1. 环境锁定
|
||||
if (shot.env && locks?.environments?.[shot.env]) {
|
||||
const envLock = locks.environments[shot.env];
|
||||
desc += envLock.locked_desc;
|
||||
// 校验展开一致性
|
||||
if (!envLock.locked_desc.includes('人群边缘') && !envLock.locked_desc.includes('竖式')) {
|
||||
console.warn(` ⚠️ 连续性警告: ${shot.env} 缺少D136+修复关键词`);
|
||||
}
|
||||
}
|
||||
// ─── L0: 主体锁定 ───
|
||||
// 人物和道具的描述放在最前面,确保AI第一注意力在这里
|
||||
const l0Parts = [];
|
||||
|
||||
// 2. 角色锁定
|
||||
if (shot.char_ref && locks?.characters?.[shot.char_ref]) {
|
||||
const charLock = locks.characters[shot.char_ref];
|
||||
desc += `。${charLock.locked_desc}`;
|
||||
l0Parts.push(charLock.locked_desc);
|
||||
}
|
||||
|
||||
// 3. 道具锁定
|
||||
if (shot.prop_ref && locks?.props?.[shot.prop_ref]) {
|
||||
const propLock = locks.props[shot.prop_ref];
|
||||
desc += `。${propLock.locked_desc}`;
|
||||
l0Parts.push(propLock.locked_desc);
|
||||
}
|
||||
if (shot.prop_ref_2 && locks?.props?.[shot.prop_ref_2]) {
|
||||
const propLock2 = locks.props[shot.prop_ref_2];
|
||||
desc += `。${propLock2.locked_desc}`;
|
||||
l0Parts.push(propLock2.locked_desc);
|
||||
}
|
||||
|
||||
// 4. 动作描述 (锁定文本之后追加镜头特定的动作)
|
||||
// 如果没人也没道具(纯环境镜)→不生成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 += `。背景: 修仙广场边缘角落,人群远处,金色阳光`;
|
||||
} else {
|
||||
desc += envLock.locked_desc;
|
||||
}
|
||||
}
|
||||
|
||||
// ─── L2: 动作 ───
|
||||
if (shot.action) {
|
||||
desc += `。${shot.action}`;
|
||||
}
|
||||
@ -112,14 +124,14 @@ function buildPrompt(shot, encoding) {
|
||||
|
||||
parts.push(desc);
|
||||
|
||||
// 景别
|
||||
parts.push(`景别: ${shot.framing}`);
|
||||
// ─── L3: 风格 ───
|
||||
parts.push('景别: ' + shot.framing);
|
||||
|
||||
// 情绪
|
||||
if (shot.emotion?.type) parts.push(`氛围: ${shot.emotion.type}`);
|
||||
if (shot.emotion?.type) parts.push('氛围: ' + shot.emotion.type);
|
||||
|
||||
// 负面
|
||||
parts.push('不要真人面孔·不要现代元素·不要水印·不要字幕');
|
||||
// 风格锁定(不再是第一行)
|
||||
parts.push('真人写实风格,电影级光影,亚洲面孔');
|
||||
parts.push('不要卡通·不要3D渲染·不要现代元素·不要水印·不要字幕');
|
||||
|
||||
return parts.join('。');
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user