{
  "version": "screenplay_writing_strategy.v1",
  "generated_at": "2026-04-10T14:43:32.044643Z",
  "meta": {
    "candidate_run_dir": "outputs/laocan_acceptance_smoke_20260401_v1",
    "screenplay_path": "outputs/laocan_acceptance_smoke_20260401_v1/03d_screenplay.json",
    "consultant_path": "outputs/script_consultant/script_consultant_current.json",
    "screenplay_contract_version": "screenplay.v2"
  },
  "strategy_contract": [
    {
      "rule_id": "retain_subject_anchor",
      "layer": "screenplay_text",
      "severity": "fail",
      "description": "当 block 已绑定角色时，正文应显式保留至少一个角色主体锚点，避免主体在前链即被抹平。"
    },
    {
      "rule_id": "retain_action_anchor",
      "layer": "screenplay_text",
      "severity": "warn",
      "description": "正文应包含可表演的动作锚点，而不是只有抽象结果或背景说明。"
    },
    {
      "rule_id": "retain_location_anchor",
      "layer": "screenplay_text_or_stage_direction",
      "severity": "warn",
      "description": "当 block 已绑定地点时，正文或短舞台提示应保留地点锚点，支撑下游空间理解。"
    },
    {
      "rule_id": "dialogue_attribution_ready",
      "layer": "screenplay_text",
      "severity": "fail",
      "description": "当正文写入直接引语时，必须保留可识别的说话人归属，避免对白内容可读但说话者不清。"
    },
    {
      "rule_id": "avoid_abstract_summary_prose",
      "layer": "precheck",
      "severity": "warn",
      "description": "避免把正文写成编年摘要、流程梗概、模板占位句或抽象压力标签，降低后续 prompt retention 修补压力。"
    }
  ],
  "consultant_focus": {
    "used": true,
    "source_path": "outputs/script_consultant/script_consultant_current.json",
    "confidence": "high",
    "writing_direction": [
      "基于已验证的高收益repair动作反向定义剧本写作前置规范，从源头减少后续repair成本",
      "推行Dramart结构化要求与Seedance 2.0镜头生成要求双对齐的写作标准",
      "优先落地可被prompt_guard自动校验的通用写作规则，支撑批量生产",
      "建立剧本片段与后续镜头生成参数的标准化映射规则，降低中间转换损耗"
    ],
    "writing_method": [
      "每个剧本段落前置标注标准化场景属性：时间、空间、氛围、核心角色站位",
      "动作描述采用「角色+具体动作+环境交互」三段式结构，无模糊指代",
      "对话内容单独标注说话人、标准化情绪标签、伴随动作三类辅助信息",
      "每个段落结尾标注可被机器识别的镜头类型标签（全景/中景/特写等）"
    ],
    "next_actions": [
      "基于现有高收益repair动作输出通用版剧本写作规范手册",
      "开发剧本写作前置自动校验工具，对接prompt_guard实现合规性预检查",
      "完成通用写作规范的小批量测试验证，统计repair率下降幅度",
      "将验证有效的写作规范回灌至前链剧本生成的prompt模板中"
    ]
  },
  "summary": {
    "status": "pass",
    "block_count": 19,
    "pass_block_count": 15,
    "warn_block_count": 4,
    "fail_block_count": 0,
    "pass_ratio": 0.789474,
    "warn_ratio": 0.210526,
    "fail_ratio": 0.0,
    "subject_anchor_gap_count": 0,
    "action_anchor_gap_count": 1,
    "location_anchor_gap_count": 0,
    "dialogue_attribution_gap_count": 0,
    "abstract_prose_risk_count": 3,
    "consultant_used": true,
    "consultant_confidence": "high",
    "next_fix_focus": [
      "retain_action_anchor",
      "avoid_abstract_summary_prose"
    ],
    "status_reason": "anchor_contract_basically_healthy"
  },
  "checks": [
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B001",
      "status": "pass",
      "source_scene_ids": [
        "S0001"
      ],
      "character_names": [
        "老残",
        "黄瑞和"
      ],
      "location_names": [
        "登州"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（登州）\n老残成功治愈黄大户多年顽疾，获得认可和款待。\n老残先被眼前动静逼得停住，周围人的心也跟着提了起来。\n老残往前逼近半步，把最难回的话压到黄瑞和面前。\n老残的姓名、字号由来及江湖游医身份。\n黄家设宴庆祝的结局。\n为黄瑞和治疗奇病的关键事件。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B002",
      "status": "pass",
      "source_scene_ids": [
        "S0002"
      ],
      "character_names": [
        "德慧生",
        "慧生",
        "文章伯",
        "章伯",
        "三人"
      ],
      "location_names": [
        "登州"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（登州）\n三人：救与不救。\n德慧生：我只想问一句，“救与不救”到底该怎么应？\n三人相约登蓬莱阁。\n夜间饮酒等待日出的氛围。\n德慧生通过望远镜发现那艘在巨浪中挣扎、看似不妙的帆船。\n通过望远镜发现危船。\n话说到最险的那一层，旁边的人也都不由得把呼吸压低了。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B003",
      "status": "pass",
      "source_scene_ids": [
        "S0003"
      ],
      "character_names": [
        "三人",
        "德慧生",
        "慧生",
        "慧哥",
        "文章伯",
        "章伯",
        "差官",
        "那人"
      ],
      "location_names": [
        "海上",
        "渔船",
        "帆船",
        "小渔船"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（海上）\n三人：这等人恐怕不是办事的人，只是用几句文明。\n三人驾船追赶大船。\n清晰听到船上演说内容。\n落帆尾随观察的决策。\n德慧生：这等人恐怕不是办事的人，只是用几句文明的话头骗几个钱用用罢了！\n德慧生：英雄。\n这几句话一压下去，屋里的气口一下绷紧，再没人能把这件事轻轻带过。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B004",
      "status": "pass",
      "source_scene_ids": [
        "S0004"
      ],
      "character_names": [
        "三人"
      ],
      "location_names": [],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": false,
      "dialogue_needs_attribution": false,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "以传统章回体句式留下三人命运的悬念。\n命运与未知的冲突（三人 vs. 未知的危险/命运）\n从具体情节推进转向悬念收束，为后续故事开启新的可能性。\n命运和未知当场把冲突顶了起来。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B005",
      "status": "warn",
      "source_scene_ids": [
        "S0005"
      ],
      "character_names": [
        "老残",
        "管事",
        "白妞"
      ],
      "location_names": [
        "古水仙祠",
        "水仙祠",
        "大明湖",
        "小布政司街"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [
        "template_leakage",
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:template_leakage",
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（古水仙祠）\n老残往前逼近半步，把最难回的话压到管事面前。\n沉船梦醒的瞬间。\n发现白妞说书招贴。\n发现白妞说书招贴，视线从自然景观转向市井文化热点，预示故事焦点转移。\n内心冲突：惊梦余悸与面对新环境的闲适好奇之间的微妙张力。\n用富有诗意的画面和简洁的蒙太奇，高效完成场景转换，建立济南的空间感。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B006",
      "status": "pass",
      "source_scene_ids": [
        "S0006"
      ],
      "character_names": [
        "白妞",
        "王小玉",
        "茶房",
        "黑妞"
      ],
      "location_names": [
        "明湖居"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（明湖居）\n茶房盯住白妞不放，非要把茶房，得知白妞说书详情，次追问到当面。\n茶房介绍白妞技艺。\n老残次日前往明湖居。\n明湖居内座无虚席、官员百姓聚集的盛况。\n老残进入明湖居，亲眼目睹空前盛况，开始相信茶房所言非虚，好奇心转为强烈期待。\n老残对茶房所言将信将疑的态度。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B001",
      "status": "pass",
      "source_scene_ids": [
        "S0008"
      ],
      "character_names": [
        "差官",
        "那人",
        "白妞",
        "王小玉"
      ],
      "location_names": [
        "明湖居戏台",
        "戏台"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（明湖居戏台）\n白妞：霍然一声，人弦俱寂。\n十二点半的时间点。\n弹弦男人上台及外貌特征。\n差官站在人堆里，脸色一下子就绷住了。\n差官：霍然一声，人弦俱寂。\n黑妞出场演唱。\n听的人不敢再分神，只能把这一层门道一字一句记进心里。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B002",
      "status": "pass",
      "source_scene_ids": [
        "S0009"
      ],
      "character_names": [
        "白妞",
        "王小玉",
        "士子",
        "黑妞"
      ],
      "location_names": [
        "戏台",
        "趵突泉",
        "金泉书院",
        "金线泉"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（戏台）\n黑妞简短说书作为过渡。\n黑妞：黑驴段。\n黑妞站在人堆里，脸色一下子就绷住了。\n时间提示。\n士子提及金线泉的奥秘。\n表演意外收场，众人散去。\n这几句话一压下去，屋里的气口一下绷紧，再没人能把这件事轻轻带过。\n士子提及金线泉的奥秘，将老残（及观众）的注意力从娱乐（说书）引向一个待解的谜题（自然/超自然现象）"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B003",
      "status": "pass",
      "source_scene_ids": [
        "S0011"
      ],
      "character_names": [
        "高公",
        "茶房",
        "差官",
        "那人"
      ],
      "location_names": [
        "黑虎泉",
        "南门",
        "高公馆"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（黑虎泉）\n高公：喉疾与寻求救治的已经压到眼前，再迟一步，祸就要落到身上。\n镜头先掠过游览黑虎泉，把场上的动静一寸寸压到人眼前。\n高公在公馆门口面带愁容拦路求医。\n老残进入高公馆并诊脉。\n老残同意进入高公馆诊病，标志其正式介入事件，从旁观者变为参与者。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B004",
      "status": "pass",
      "source_scene_ids": [
        "S0012"
      ],
      "character_names": [
        "高公"
      ],
      "location_names": [
        "高公馆内室",
        "高公府邸",
        "北柱楼"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（高公馆内室）\n开方配药的动作。\n高公设宴答谢。\n席间议论玉佐臣补曹州府之事。\n席间官员议论玉佐臣补曹州府及其酷政，将场景从私人医疗成功转向公共政治议题，为老残后续的曹州之行和核心冲突埋下决定性伏笔。\n席间官员议论玉佐臣补曹州府及其酷政，将场景从私人医疗成功转向公共政治议题。\n表面：疾病与健康。潜在：老残代表的仁术与即将登场的玉佐臣代表的酷政之间的理念对立。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B005",
      "status": "warn",
      "source_scene_ids": [
        "S0013"
      ],
      "character_names": [
        "老残",
        "高公"
      ],
      "location_names": [
        "老残寓所",
        "抚署"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（老残寓所）\n老残把这里头的门道一层层摊开讲给高公听，连插话的空都没留。\n老残对功名态度的自我剖白。\n老残同意随高绍殷前往抚署面见宫保。\n老残淡泊的游方郎中心态与宫保代表的官方招揽意图之间的潜在冲突；个人志趣与世俗功名价值观的碰撞。\n通过一场看似平常的拜访与对话，塑造老残学识渊博却淡泊名士的形象，同时揭示宫保对其的关注与招揽意图。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B006",
      "status": "warn",
      "source_scene_ids": [
        "S0014"
      ],
      "character_names": [
        "差官"
      ],
      "location_names": [
        "抚署",
        "宫保签押房"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [
        "template_leakage"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:template_leakage"
      ],
      "screenplay_preview": "（抚署）\n差官：这句“不与河争地”我记下了，可我该从哪里入手？\n张宫保的出场与外貌。\n老残对贾让与王景治河策略的对比分析。\n老残承诺呈递说帖。\n差官：王景。\n理念冲突：张宫保推崇的贾让“不与河争地”策略。\n这一问逼到脸前，四周顿时安静下来，谁也不肯先把眼神挪开。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B007",
      "status": "pass",
      "source_scene_ids": [
        "S0015"
      ],
      "character_names": [
        "老残",
        "宫保",
        "高公"
      ],
      "location_names": [
        "抚署"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（抚署）\n宫保：等鄙人从曹州回来，再领宫保的教罢。\n宫保邀请老残入住南书房。\n老残以探亲为由婉拒。\n老残提及将去曹州并考察玉守。\n老残：等鄙人从曹州回来，再领宫保的教罢。\n宫保站在人堆里，脸色一下子就绷住了。\n听的人不敢再分神，只能把这一层门道一字一句记进心里。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B008",
      "status": "pass",
      "source_scene_ids": [
        "S0016"
      ],
      "character_names": [
        "茶房",
        "差官",
        "那人"
      ],
      "location_names": [
        "客栈"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（客栈）\n差官：打扫南书房。\n茶房：打扫南书房。\n老残的自我认知与外界对他的看法之间的错位与矛盾。\n通过对话和动作，生动展现老残从被传言包围到收到宫保实质性礼遇的转变，为后续进入宫保府邸做铺垫。\n老残回到客栈，掌柜道喜并转述抚台邀约的传闻，随后宫保差人送来酒席。"
    },
    {
      "episode_id": "EP0003",
      "block_id": "EP0003B001",
      "status": "pass",
      "source_scene_ids": [
        "S0017"
      ],
      "character_names": [
        "茶房",
        "差官",
        "那人"
      ],
      "location_names": [
        "客栈房间",
        "客店"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（客栈房间）\n差官：达宫保安排南书房入住这件事，我现在讲给你听。\n老残为差官倒茶。\n老残写领谢帖子并送客至大门。\n掌柜恭维抚台送席。\n张李二人开始奉承并劝捐，将单纯的接待转变为带有目的性的社交攻势。\n老残的个人原则与即将面临的官场人情、利益诱惑之间的潜在冲突。"
    },
    {
      "episode_id": "EP0003",
      "block_id": "EP0003B002",
      "status": "pass",
      "source_scene_ids": [
        "S0018"
      ],
      "character_names": [
        "老董",
        "玉贤",
        "玉大人",
        "大人"
      ],
      "location_names": [
        "济南",
        "雒口",
        "船上",
        "董家口"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（济南）\n玉贤：玉大人倒反做了強盜的兵器了。\n老残为避纠缠连夜离济。\n乘船数日抵达董家口。\n老残向老董打听玉贤政绩。\n老董：玉大人倒反做了強盜的兵器了。\n老董叹息并讲述玉贤办案严酷反成强盗工具。\n话说到最险的那一层，旁边的人也都不由得把呼吸压低了。"
    },
    {
      "episode_id": "EP0003",
      "block_id": "EP0003B003",
      "status": "pass",
      "source_scene_ids": [
        "S0019"
      ],
      "character_names": [
        "玉贤",
        "玉大人",
        "大人"
      ],
      "location_names": [
        "城外",
        "于家屯"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": false,
      "dialogue_needs_attribution": false,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（城外）\n玉贤（秩序/追捕方）与未知强盗（混乱/逃亡方）在夜色中的追逐对抗。\n玉贤往前逼近半步，把这桩事里最难回的话先压到了台面上。\n玉贤率马队追击。\n强盗持火把与洋枪。\n追至于家屯时，火光与枪声骤然消失，追捕线索中断，行动从主动追击转入被动搜寻。"
    },
    {
      "episode_id": "EP0003",
      "block_id": "EP0003B004",
      "status": "warn",
      "source_scene_ids": [
        "S0020"
      ],
      "character_names": [
        "玉贤",
        "玉大人",
        "大人"
      ],
      "location_names": [],
      "subject_anchor_ok": true,
      "action_anchor_ok": false,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [
        "action_anchor_weak"
      ],
      "screenplay_preview": "玉贤判断强盗藏匿于村庄并下令封锁。\n从于朝栋家搜出土枪、刀、竿子等物证。\n玉贤无视于学礼的合理解释，仅凭搜出的土枪便认定于家藏匿强盗。\n玉贤追捕强盗的执法行动 vs. 于家父子自称良民、私藏武器仅为自保的辩解。\n通过一场紧张的追捕与审问戏，生动刻画玉贤雷厉风行但可能过于武断的执法者形象。"
    },
    {
      "episode_id": "EP0003",
      "block_id": "EP0003B005",
      "status": "pass",
      "source_scene_ids": [
        "S0021"
      ],
      "character_names": [
        "玉贤",
        "玉大人",
        "大人",
        "三人"
      ],
      "location_names": [
        "撫署"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "dialogue_needs_attribution": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（撫署）\n三人：亲家救我。\n玉贤搜查于家并发现可疑衣物。\n玉贤将于家父子押回城。\n吴氏进城向父亲吴举人求助。\n吴举人求见玉贤被拒。\n吴举人东门焦急等待。\n这一问逼到脸前，四周顿时安静下来，谁也不肯先把眼神挪开。\n于朝栋说出‘亲家救我’并流泪。"
    }
  ]
}