{
  "version": "screenplay_writing_strategy.v1",
  "generated_at": "2026-04-11T14:33:40.139952Z",
  "meta": {
    "candidate_run_dir": "/wwwb/aitools/writer/outputs/laocan_acceptance_smoke_20260401_v1",
    "screenplay_path": "/wwwb/aitools/writer/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": "warn",
    "block_count": 19,
    "pass_block_count": 9,
    "warn_block_count": 10,
    "fail_block_count": 0,
    "pass_ratio": 0.473684,
    "warn_ratio": 0.526316,
    "fail_ratio": 0.0,
    "subject_anchor_gap_count": 0,
    "action_anchor_gap_count": 0,
    "location_anchor_gap_count": 0,
    "dialogue_attribution_gap_count": 0,
    "abstract_prose_risk_count": 10,
    "consultant_used": true,
    "consultant_confidence": "high",
    "next_fix_focus": [
      "avoid_abstract_summary_prose"
    ],
    "status_reason": "warn_blocks_exceed_threshold"
  },
  "checks": [
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B001",
      "status": "warn",
      "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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（登州）\n老残的姓名、字号由来及江湖游医身份，黄家设宴庆祝的结局，为黄瑞和治疗奇病的关键事件。\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德慧生通过望远镜发现那艘在巨浪中挣扎、看似不妙的帆船。\n三人对危船状况的初步观察与讨论。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B003",
      "status": "warn",
      "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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "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": true,
      "dialogue_attribution_ok": true,
      "abstract_risk_codes": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "有人低声追问：“未知三人性命如何”\n这句问话一落，四下顿时静住，谁也不敢立刻把下文接下去。\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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（古水仙祠）\n沉船梦醒的瞬间，发现白妞说书招贴。\n沉船梦醒的瞬间。\n发现白妞说书招贴。\n老残从沉船梦中惊醒，辞别管事后前往济南，游览大明湖、铁公祠、古水仙祠等。\n发现白妞说书招贴，视线从自然景观转向市井文化热点，预示故事焦点转移。\n老残从沉船梦中惊醒，辞别管事后前往济南，游览大明湖、铁公祠、古水仙祠等…"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B006",
      "status": "warn",
      "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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（明湖居）\n白妞盯住老残不放，非要追问出茶房，得知白妞说书详情，次。\n茶房介绍白妞技艺。\n老残次日前往明湖居。\n明湖居内座无虚席、官员百姓聚集的盛况。\n老残进入明湖居，亲眼目睹空前盛况，开始相信茶房所言非虚，好奇心转为强烈期待。\n老残对茶房所言将信将疑的态度。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B001",
      "status": "warn",
      "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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（明湖居戏台）\n十二点半的时间点，弹弦男人上台及外貌特征，观众站在人堆里，脸色一下子就绷住了，黑妞出场演唱，三弦子轮指技法的精湛表现。\n白妞：霍然一声，人弦俱寂。\n观众：霍然一声，人弦俱寂。\n十二点半的时间点。\n弹弦男人上台及外貌特征。\n观众站在人堆里，脸色一下子就绷住了。\n黑妞出场演唱。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B002",
      "status": "warn",
      "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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（戏台）\n黑妞简短说书作为过渡。\n观众：黑驴段。\n观众站在人堆里，脸色一下子就绷住了。\n时间提示。\n士子提及金线泉的奥秘。\n表演意外收场，众人散去。\n士子提及金线泉的奥秘，将老残（及观众）的注意力从娱乐（说书）引向一个待解的谜题（自然/超自然现象）"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B003",
      "status": "warn",
      "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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（黑虎泉）\n高公在公馆门口面带愁容拦路求医。\n老残进入高公馆并诊脉。\n高公小妾喉疾的严重性。\n高公小妾生命垂危与寻求救治的紧迫性。\n自然地将老残从游览者过渡到医者角色，并通过高公的求医。\n老残继续游览黑虎泉，次日摇铃行医时，被高公请入府中为其小妾诊治喉疾。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B004",
      "status": "warn",
      "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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（高公馆内室）\n玉佐臣：眼前这层门道，我先给你说清。\n老残对病因的诊断与解释，开方配药，高公设宴答谢，席间议论玉佐臣补曹州府之事，老残检查病人喉咙。\n老残对病因的诊断与解释。\n开方配药。\n高公设宴答谢。\n席间议论玉佐臣补曹州府之事。\n老残查看病人喉咙，诊断为火气被寒药所逼，开出辛凉发散药方。"
    },
    {
      "episode_id": "EP0002",
      "block_id": "EP0002B005",
      "status": "pass",
      "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": [],
      "fail_reasons": [],
      "warn_reasons": [],
      "screenplay_preview": "（老残寓所）\n高绍殷乘轿拜访老残，高绍殷赞赏老残藏书，老残对功名态度的自我剖白，老残同意前往抚署但要求便衣。\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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "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差官不仅送来酒席，更传达“打扫南书房”的明确指令。"
    },
    {
      "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": "warn",
      "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": [
        "abstract_performable_prose"
      ],
      "fail_reasons": [],
      "warn_reasons": [
        "abstract:abstract_performable_prose"
      ],
      "screenplay_preview": "（城外）\n玉贤率马队追击，强盗持火把与洋枪，循火光与枪声追踪，追至于家屯附近时目标消失。\n玉贤率马队追击。\n强盗持火把与洋枪。\n循火光与枪声追踪。\n追至于家屯附近时目标消失。\n用紧凑、富有动感的视听语言，将老董的口述追捕转化为银幕上的直接动作场面。\n老董继续讲述玉大人率马队追击强盗，追至火光枪声消失的于家屯附近。"
    },
    {
      "episode_id": "EP0003",
      "block_id": "EP0003B004",
      "status": "pass",
      "source_scene_ids": [
        "S0020"
      ],
      "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玉贤无视于学礼的合理解释，仅凭搜出的土枪便认定于家藏匿强盗。"
    },
    {
      "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三人：亲家救我。"
    }
  ]
}