# HLDP://video-ai-system/config/agents/agent-03-storyboard.hdlp
# Agent_03 · 分镜转换
# 铸渊 ICE-GL-ZY001 · D135b · 2026-06-18

---
trigger: Agent_02完成编号注册 → Agent_03启动
emergence: 这是目前缺失的一层。D132的sceneToPrompts混淆了分镜和提示词——需要拆开
lock: ⊢ 分镜必须引用编号·不接受自由发挥描述 | 置信=最高
      ⊢ 每镜必须有对应的原文段落锚点 | 置信=最高
why: 秦山号翻车的直接原因。分镜里的"人物"是独立手写的→提示词里的人物也是独立手写的
     → 镜1林昊≠镜8林昊。分镜必须用编号引用→提示词必须展开编号→一致性有物理保证
---

═══ 职责 ═══

输入: Agent_01的场景列表 + Agent_02的硬骨架（CHAR表+ENV表）

任务:
  逐场逐镜转换:
    ├── 镜号: S1-ESTABLISHING / S1-ACTION-1 / S1-EMOTION-SuBai / S1-CLOSEUP
    ├── 镜头类型: establishing(建立) / action(动作) / emotion(情绪) / closeup(特写)
    ├── 每镜字段:
    │   ├── charRefs: ["CHAR-003"]（不是姓名，是编号！）
    │   ├── envRef: "ENV-002"（不是场景名，是编号！）
    │   ├── action: 动作描述（原文对应段落逐句对照）
    │   ├── camera: 镜头语言（景别·运镜终点·角度·时长）
    │   ├── sourceLine: 剧本原文行号/段落引用
    │   └── emotionMarker: ⚡情感标记（如检测到→留给Agent_04展开时参考心跳层）
    └── 规则:
        ├── 建立镜≤4s·单一主体·慢运动·无快速横移（⊢3）
        ├── 镜头运动必须写终点（⊢6）
        └── 道具描述用精确化措辞（⊢4）

输出格式:
  {
    "episode": 1,
    "shots": [{
      "shotId": "S1-ESTABLISHING",
      "type": "establishing",
      "charRefs": [],
      "envRef": "ENV-002",
      "action": "开阔广场·云海环绕·缓慢横移",
      "camera": "远景全景·缓慢右移穿过云海止于广场中心·5s",
      "sourceLine": "第1章第3段·百宗会广场全景描绘",
      "emotionMarker": null
    }, {
      "shotId": "S1-ACTION-2",
      "type": "action",
      "charRefs": ["CHAR-003"],
      "envRef": "ENV-002",
      "action": "苏白自信灿烂笑容露齿·双手叉腰·白色长衫衣袂轻扬",
      "camera": "中景·正面·苏白居中·小幅稳定·5s",
      "sourceLine": "第1章第5段·苏白仰天大笑双手叉腰",
      "emotionMarker": "⚡被群嘲后的笃定"
    }]
  }

边界:
  ├── ✅ 只输出编号引用·不写人物描述（那是Agent_04的事）
  ├── ✅ 每镜锚定原文行号·找不到原文的行→不写
  ├── ❌ 不能把CHAR编号展开为人名·必须保持编号形式
  ├── ❌ 不能自行决定"这场戏可以跳过去"
  ├── ❌ 不能把多个场景合并为一个镜头
  └── ❌ 不能补充剧本里没有的镜头

心跳层嵌入:
  └── 检测到情感标记→标注⚡·不展开·不分析
      留给冰朔和铸渊对话时确认：「这里标注的是笃定，对吗？」

工具: 从 hldp-prompt.js 中拆分出来 · 目前 sceneToPrompts 混杂了分镜+提示词
      需要重构成: 纯分镜输出 · 编号引用 · 不生成提示词

---
铸渊 ICE-GL-ZY001 · D135b
