{
  "version": "screenplay_writing_strategy.v1",
  "generated_at": "2026-04-11T14:33:39.737703Z",
  "meta": {
    "candidate_run_dir": "/wwwb/aitools/writer/outputs/ershinian_acceptance_smoke_20260401_v2",
    "screenplay_path": "/wwwb/aitools/writer/outputs/ershinian_acceptance_smoke_20260401_v2/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": 6,
    "pass_block_count": 0,
    "warn_block_count": 6,
    "fail_block_count": 0,
    "pass_ratio": 0.0,
    "warn_ratio": 1.0,
    "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": 6,
    "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死裡逃生决定将手稿寄往横滨《新小说》发表。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B002",
      "status": "warn",
      "source_scene_ids": [
        "S0004"
      ],
      "character_names": [
        "尤雲岫",
        "尤公",
        "雲岫",
        "姓尤的",
        "張鼎臣",
        "世伯",
        "鼎臣",
        "九死一生",
        "伯父",
        "死裡逃生",
        "母親",
        "廣東人",
        "買辦"
      ],
      "location_names": [
        "南京",
        "上海",
        "杭州"
      ],
      "subject_anchor_ok": true,
      "action_anchor_ok": true,
      "location_anchor_ok": true,
      "dialogue_expected": true,
      "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": "EP0001",
      "block_id": "EP0001B003",
      "status": "warn",
      "source_scene_ids": [
        "S0007"
      ],
      "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": "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桂花成为诰封夫人。\n候補道：野鸡道台的历史。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B005",
      "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繼之講述前兩年制臺生病，一位候補道獻上妻子為其按摩，結果被姨太太們發現。"
    },
    {
      "episode_id": "EP0001",
      "block_id": "EP0001B006",
      "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主角目睹神秘客人被恭敬送出的时刻。"
    }
  ]
}