{
  "version": "script_consultant.v1",
  "generated_at": "2026-04-06T10:41:52.944149Z",
  "llm": {
    "provider": "doubao",
    "model": "doubao-seed-2-0-pro-260215",
    "base_url": "https://ark.cn-beijing.volces.com/api/v3/responses"
  },
  "meta": {
    "question": "基于当前项目 Now-11 / S1-Step-1、短期目标仍是 Dramart-first、后续视频生成使用 Seedance 2.0 的前提，请结合这次真实样本测试给出剧本方向咨询。真实测试对象是 input/西游记前十回.txt，当前代码使用 Doubao-Seed-2.0-Pro 对 screenplay->prompt_guard 做真实重写。已确认的真实现象：1. EP0001 的原始 screenplay 响应发生输出截断，日志里出现模型自行补全 JSON 尾部的痕迹，导致只稳定返回了第一个 block；合并后其余 block 大量退回通用 fallback 文案，出现重复句式如‘你既然要学，就先把这里头真正要紧的关节听明白’、‘那我就把眼前这一步问到底’，且与具体场景不贴合。2. EP0002 的原始 screenplay 响应完整，block 正文明显更具可拍性、动作和对白更稳定。3. 现阶段说明问题不仅是文字质量，还有 screenplay 合同和输出粒度是否适配 Doubao-Seed-2.0-Pro / Seedance 2.0 的问题。请重点回答：A. 这类剧本结果是否已经足够被 Seedance 2.0 充分利用，若不足，核心短板是什么；B. 从写法、输出粒度、字段合同、生成策略四个层面，下一步最该优先怎么改；C. 哪些规则应继续强化，哪些做法必须避免；D. 给出通用、可测试、不可按书名硬编码的下一阶段落地建议。",
    "root_dir": "/wwwb/aitools/writer",
    "run_dir": ""
  },
  "context": {
    "question": "基于当前项目 Now-11 / S1-Step-1、短期目标仍是 Dramart-first、后续视频生成使用 Seedance 2.0 的前提，请结合这次真实样本测试给出剧本方向咨询。真实测试对象是 input/西游记前十回.txt，当前代码使用 Doubao-Seed-2.0-Pro 对 screenplay->prompt_guard 做真实重写。已确认的真实现象：1. EP0001 的原始 screenplay 响应发生输出截断，日志里出现模型自行补全 JSON 尾部的痕迹，导致只稳定返回了第一个 block；合并后其余 block 大量退回通用 fallback 文案，出现重复句式如‘你既然要学，就先把这里头真正要紧的关节听明白’、‘那我就把眼前这一步问到底’，且与具体场景不贴合。2. EP0002 的原始 screenplay 响应完整，block 正文明显更具可拍性、动作和对白更稳定。3. 现阶段说明问题不仅是文字质量，还有 screenplay 合同和输出粒度是否适配 Doubao-Seed-2.0-Pro / Seedance 2.0 的问题。请重点回答：A. 这类剧本结果是否已经足够被 Seedance 2.0 充分利用，若不足，核心短板是什么；B. 从写法、输出粒度、字段合同、生成策略四个层面，下一步最该优先怎么改；C. 哪些规则应继续强化，哪些做法必须避免；D. 给出通用、可测试、不可按书名硬编码的下一阶段落地建议。",
    "session_context": {
      "project": {
        "name": "Novel2Video",
        "current_program_mode": "dramart_first_productization",
        "current_priority_lane": "dramart_first"
      },
      "state": {
        "current_stage": "Now-11",
        "current_substage": "S1-Step-1",
        "current_stage_ref": "Now-11 / S1-Step-1",
        "current_status": "in_progress",
        "current_workflow_id": "screenplay_writing_strategy_mainline_gate_rollout",
        "primary_goal": "把已验证稳定的前链剧本写法规则接入主 screenplay 链路与验收门控，同时保留摘要化风险为 precheck-only。",
        "blocked_by": []
      },
      "next_entrypoint": {
        "id": "now11_s1_step1",
        "title": "把 subject / dialogue / location 三类稳定规则接入主链门控，并验证中文质感不回退",
        "owner_layer": "中游改编层 / 验收治理层",
        "why_now": "Now-10 已证明批量基线 fail 清零，强规则与 precheck-only 边界已经冻结；下一步应把真正稳定的规则接入主链，而不是继续停留在独立预检查层。"
      },
      "acceptance": {
        "phase_id": "Now-11",
        "substage_id": "S1-Step-1",
        "gate_status": "open",
        "objective": "把已验证稳定的 screenplay_writing_strategy 规则接入主 screenplay 链路与验收门控，同时保留摘要化风险为 precheck-only。",
        "entry_criteria": [
          "Now-10 / S1-Step-2 已完成并存在结构化 retrospective",
          "主控制文档已经同步 Now-11 / S1-Step-1",
          "批量 screenplay_writing_strategy baseline 已达到 pass/warn 区间，且 fail_count = 0"
        ],
        "exit_criteria": [
          "subject_anchor / dialogue_attribution / location_anchor 的主链接入边界已经冻结并写回代码与文档",
          "action_anchor 与 abstract_summary 风险仍保留为 precheck-only，且边界理由写回控制面",
          "主链相关回归与真实样本 smoke 通过，且中文文本质量抽查没有明显模板化回退",
          "workflow_executor 能读取新的主链接入 required_report_checks",
          "测试、文档同步、复盘结论齐全"
        ],
        "required_tests": [
          {
            "id": "control_plane_smoke",
            "command": "PYTHONPATH=src python -m pytest tests/test_control_plane_scripts.py",
            "required_for": "control_plane"
          },
          {
            "id": "now11_step1_targeted",
            "command": "PYTHONPATH=src python -m pytest tests/test_screenplay_writing_strategy.py tests/test_screenplay_episode_split.py tests/test_workflow_executor.py",
            "required_for": "substage_delivery"
          },
          {
            "id": "now11_step1_batch_baseline",
            "command": "PYTHONPATH=src python scripts/run_screenplay_writing_strategy_batch.py --runs-root outputs --include-glob '*acceptance_smoke*' --limit 8 --consultant-report outputs/script_consultant/script_consultant_current.json --out-dir outputs/screenplay_writing_strategy_batch --summary-name screenplay_writing_strategy_baseline_current",
            "required_for": "substage_delivery"
          },
          {
            "id": "now11_step1_executor_smoke",
            "command": "PYTHONPATH=src python scripts/run_workflow_executor.py --root . --out-dir outputs/workflow_executor --report-name workflow_executor_current",
            "required_for": "substage_delivery"
          }
        ],
        "required_artifacts": [
          "outputs/screenplay_writing_strategy_batch/screenplay_writing_strategy_baseline_current.json",
          "outputs/screenplay_writing_strategy_batch/screenplay_writing_strategy_baseline_current.md",
          "outputs/workflow_executor/workflow_executor_current.json"
        ],
        "required_report_checks": [
          {
            "id": "screenplay_writing_strategy_batch_status",
            "path": "outputs/screenplay_writing_strategy_batch/screenplay_writing_strategy_baseline_current.json",
            "json_path": "summary.status",
            "allowed_values": [
              "pass",
              "warn"
            ]
          },
          {
            "id": "workflow_executor_current_workflow",
            "path": "outputs/workflow_executor/workflow_executor_current.json",
            "json_path": "state.current_workflow_id",
            "allowed_values": [
              "screenplay_writing_strategy_mainline_gate_rollout"
            ]
          }
        ],
        "required_retrospective": true
      },
      "retrospective": {
        "phase_id": "Now-10",
        "substage_id": "S1-Step-2",
        "closed_at": "2026-04-06T09:16:00Z",
        "outcome": "pass",
        "summary": "前链剧本写法策略已完成跨来源批量回归与门控边界冻结；批量 baseline fail 清零，主体/对白/地点三类规则已具备进入主链的证据，而摘要化风险继续保留为 precheck-only。",
        "next_stage_id": "now11_s1_step1",
        "next_stage_title": "主链剧本门控接入"
      },
      "external_baselines": {
        "dramart": "docs/dramart_ai_onepage_20260402.md",
        "seedance": "docs/seedance_2_0.md",
        "text_model": "doubao-seed-2-0-pro-260215"
      }
    },
    "run_context": {}
  },
  "consultation": {
    "overall_assessment": "当前剧本存在输出截断、模板化通用对白、输出粒度不匹配等问题，尚未完全满足Dramart上传可用性和Seedance 2.0视频生成消费要求，核心短板为输出结构未对齐标准字段合同、单block粒度过大导致模型输出窗口溢出、生成策略未配置截断校验机制，需优先落地结构化约束、粒度管控、逐块校验三类调整，支撑主链路门控接入目标",
    "writing_direction": [
      "优先对齐标准化screenplay block字段合同，确保输出结构完整无截断",
      "单block粒度控制在单镜头/单场景片段量级，适配Seedance 2.0单镜头生成要求",
      "强化场景、主体、对白三类锚点的明确性，降低模型 fallback 生成通用内容的概率",
      "保留动作描述、摘要类内容为预校验层级，不纳入强生成约束"
    ],
    "writing_method": [
      "单episode拆分block时严格控制单block字数在80-150字区间，避免过长导致模型输出截断",
      "每个block强制按「场景锚点+主体动作+对白+结束标识」的结构化范式写作",
      "生成时开启逐块输出校验，上一块字段完整性、内容合规性校验通过再生成下一块，避免全局截断",
      "对白内容强制绑定所属主体，避免无归属通用句式生成"
    ],
    "dramart_alignment": [
      "每个block必填location、subject、dialogue三类标准字段，匹配Dramart上传结构化要求",
      "block粒度匹配Dramart单幕片段拆分规则，支持直接导入场景库",
      "对白attribution字段严格遵循Dramart字段命名规范，避免导入报错",
      "场景描述符合Dramart空间属性标注要求，支持自动打标"
    ],
    "seedance_alignment": [
      "单block对应Seedance 2.0单镜头提示词输入粒度，避免跨镜头内容混合",
      "场景描述包含明确的光线、空间、时间属性，适配视频生成环境要求",
      "主体动作描述为可可视化的具象动作，不含抽象心理活动表述",
      "对白内容与口型生成要求对齐，单条对白长度对应2-8秒播放时长的文本量"
    ],
    "keep": [
      "继续保留subject/dialogue/location三类已验证稳定的强校验规则",
      "继续保留摘要化风险为precheck-only的边界规则",
      "继续执行批量基线fail清零的验收标准",
      "继续保留真实样本冒烟测试的验证环节"
    ],
    "avoid": [
      "避免单block内容过长超过模型输出窗口导致截断",
      "避免生成无归属、通用模板化的对白句式",
      "避免单个block包含多个场景/多个镜头的混合内容",
      "避免硬编码特定IP/书名的专属写作规则"
    ],
    "risks": [
      "过度约束字段可能导致文本文学性下降的风险",
      "逐块生成可能带来整体叙事连贯性下降的风险",
      "模型输出截断未被及时捕获可能导致下游生成质量下降的风险",
      "规则落地未同步到控制面可能导致流程不一致的风险"
    ],
    "next_actions": [
      "完成screenplay block字段合同的标准化定义并写入控制面文档",
      "开发单block粒度校验、截断检测的自动预校验规则接入主链",
      "完成subject/location/dialogue三类强规则的主链接入开发",
      "执行指定的4类required tests，验证规则落地后无中文质量回退",
      "输出批量基线测试报告和阶段复盘文档，满足exit criteria要求"
    ],
    "confidence": "high"
  },
  "raw_response_text": "{\n    \"overall_assessment\": \"当前剧本存在输出截断、模板化通用对白、输出粒度不匹配等问题，尚未完全满足Dramart上传可用性和Seedance 2.0视频生成消费要求，核心短板为输出结构未对齐标准字段合同、单block粒度过大导致模型输出窗口溢出、生成策略未配置截断校验机制，需优先落地结构化约束、粒度管控、逐块校验三类调整，支撑主链路门控接入目标\",\n    \"writing_direction\": [\n        \"优先对齐标准化screenplay block字段合同，确保输出结构完整无截断\",\n        \"单block粒度控制在单镜头/单场景片段量级，适配Seedance 2.0单镜头生成要求\",\n        \"强化场景、主体、对白三类锚点的明确性，降低模型 fallback 生成通用内容的概率\",\n        \"保留动作描述、摘要类内容为预校验层级，不纳入强生成约束\"\n    ],\n    \"writing_method\": [\n        \"单episode拆分block时严格控制单block字数在80-150字区间，避免过长导致模型输出截断\",\n        \"每个block强制按「场景锚点+主体动作+对白+结束标识」的结构化范式写作\",\n        \"生成时开启逐块输出校验，上一块字段完整性、内容合规性校验通过再生成下一块，避免全局截断\",\n        \"对白内容强制绑定所属主体，避免无归属通用句式生成\"\n    ],\n    \"dramart_alignment\": [\n        \"每个block必填location、subject、dialogue三类标准字段，匹配Dramart上传结构化要求\",\n        \"block粒度匹配Dramart单幕片段拆分规则，支持直接导入场景库\",\n        \"对白attribution字段严格遵循Dramart字段命名规范，避免导入报错\",\n        \"场景描述符合Dramart空间属性标注要求，支持自动打标\"\n    ],\n    \"seedance_alignment\": [\n        \"单block对应Seedance 2.0单镜头提示词输入粒度，避免跨镜头内容混合\",\n        \"场景描述包含明确的光线、空间、时间属性，适配视频生成环境要求\",\n        \"主体动作描述为可可视化的具象动作，不含抽象心理活动表述\",\n        \"对白内容与口型生成要求对齐，单条对白长度对应2-8秒播放时长的文本量\"\n    ],\n    \"keep\": [\n        \"继续保留subject/dialogue/location三类已验证稳定的强校验规则\",\n        \"继续保留摘要化风险为precheck-only的边界规则\",\n        \"继续执行批量基线fail清零的验收标准\",\n        \"继续保留真实样本冒烟测试的验证环节\"\n    ],\n    \"avoid\": [\n        \"避免单block内容过长超过模型输出窗口导致截断\",\n        \"避免生成无归属、通用模板化的对白句式\",\n        \"避免单个block包含多个场景/多个镜头的混合内容\",\n        \"避免硬编码特定IP/书名的专属写作规则\"\n    ],\n    \"risks\": [\n        \"过度约束字段可能导致文本文学性下降的风险\",\n        \"逐块生成可能带来整体叙事连贯性下降的风险\",\n        \"模型输出截断未被及时捕获可能导致下游生成质量下降的风险\",\n        \"规则落地未同步到控制面可能导致流程不一致的风险\"\n    ],\n    \"next_actions\": [\n        \"完成screenplay block字段合同的标准化定义并写入控制面文档\",\n        \"开发单block粒度校验、截断检测的自动预校验规则接入主链\",\n        \"完成subject/location/dialogue三类强规则的主链接入开发\",\n        \"执行指定的4类required tests，验证规则落地后无中文质量回退\",\n        \"输出批量基线测试报告和阶段复盘文档，满足exit criteria要求\"\n    ],\n    \"confidence\": \"high\"\n}",
  "raw_response": {
    "created_at": 1775472078,
    "id": "resp_021775472074927336c0ccc8833e375a271994f02c20b09e6046e",
    "max_output_tokens": 4000,
    "model": "doubao-seed-2-0-pro-260215",
    "object": "response",
    "output": [
      {
        "id": "rs_02177547207886600000000000000000000ffffac177ed5a0c81e",
        "type": "reasoning",
        "summary": [
          {
            "type": "summary_text",
            "text": "\n用户现在需要输出符合要求的JSON，首先每个字段都要对应对吧？首先overall_assessment是总体评估，得说当前剧本存在输出截断、重复句式、粒度适配不足的问题，尚未满足Dramart上传和Seedance2.0消费要求，需优先对齐字段合同、输出粒度和生成约束。然后confidence是high对吧，因为有真实测试数据支撑。\n然后writing_direction是数组，要写通用的，比如1. 优先对齐标准化screenplay block字段合同，确保输出结构无截断；2. 单block粒度控制在单镜头/单场景片段量级，适配Seedance2.0单镜头生成要求；3. 强化场景、主体、对白三类锚点的明确性，降低模型 fallback 概率；4. 保留动作、摘要类内容为预校验层级，不纳入强生成约束。\n接下来writing_method，数组，比如1. 单episode拆分block时严格控制单block字数在80-150字区间，避免过长导致模型输出截断；2. 每个block强制按[场景锚点+主体动作+对白+结束标识]的结构化范式写作；3. 生成时开启逐块输出校验，上一块校验通过再生成下一块，避免全局截断；4. 对白内容强制绑定所属主体，避免无归属通用句式生成。\n然后dramart_alignment，数组，比如1. 每个block必填location、subject、dialogue三类标准字段，匹配Dramart上传结构化要求；2. block粒度匹配Dramart单幕片段拆分规则，支持直接导入场景库；3. 对白 attribution 字段严格遵循Dramart字段命名规范，避免导入报错；4. 场景描述符合Dramart空间属性标注要求，支持自动打标。\n然后seedance_alignment，数组，比如1. 单block对应Seedance2.0单镜头提示词输入粒度，避免跨镜头内容混合；2. 场景描述包含明确的光线、空间、时间属性，适配视频生成环境要求；3. 主体动作描述为可可视化的具象动作，不含抽象心理活动表述；4. 对白内容与口型生成要求对齐，单条对白时长控制在2-8秒对应文本长度。\n然后keep字段，数组，比如1. 继续保留subject/ dialogue/ location三类已验证稳定的强规则；2. 继续保留摘要化风险为precheck-only的边界规则；3. 继续执行批量基线fail清零的验收标准；4. 继续保留真实样本冒烟测试的验证环节。\n然后avoid字段，数组，比如1. 避免单block内容过长超过模型输出窗口导致截断；2. 避免生成无归属、通用模板化的对白句式；3. 避免单个block包含多个场景/多个镜头的混合内容；4. 避免硬编码特定IP（如西游记）的专属写作规则。\n然后risks字段，数组，比如1. 过度约束字段可能导致文本文学性下降的风险；2. 逐块生成可能带来整体叙事连贯性下降的风险；3. 模型输出截断未被及时捕获可能导致下游生成质量下降的风险；4. 规则落地未同步到控制面可能导致流程不一致的风险。\n然后next_actions字段，数组，比如1. 完成screenplay block字段合同的标准化定义并写入控制面文档；2. 开发单block粒度校验、截断检测的自动预校验规则接入主链；3. 完成subject/location/dialogue三类强规则的主链接入开发；4. 执行指定的4类required tests，验证规则落地后无质量回退；5. 输出批量基线测试报告和执行复盘文档。\n哦对了，confidence是high对吧？然后overall_assessment要准确，比如：当前剧本存在输出截断、模板化对白、粒度不匹配等问题，尚未完全满足Dramart上传可用性和Seedance 2.0视频生成消费要求，核心短板为输出结构未对齐标准字段合同、单block粒度过大导致模型输出溢出、生成策略未做截断校验，需优先落地结构化、粒度约束、逐块校验三类调整，支撑主链路门控接入目标。\n等下要确保所有除了overall_assessment和confidence的都是数组，每个元素都是字符串，不能有其他类型。然后不要有多余的内容，就输出JSON。现在整理成正确的格式对吧？\n对了，检查有没有硬编码的？比如不要提西游记对吧，所有规则都是通用的。对的，刚才的内容里都没有硬编码特定书名的，都是通用规则。然后符合要求的对吧？\n现在把这些整理成严格的JSON格式，注意转义引号，数组的每个元素都用双引号，逗号正确，没有 trailing comma。"
          }
        ],
        "status": "completed"
      },
      {
        "type": "message",
        "role": "assistant",
        "content": [
          {
            "type": "output_text",
            "text": "{\n    \"overall_assessment\": \"当前剧本存在输出截断、模板化通用对白、输出粒度不匹配等问题，尚未完全满足Dramart上传可用性和Seedance 2.0视频生成消费要求，核心短板为输出结构未对齐标准字段合同、单block粒度过大导致模型输出窗口溢出、生成策略未配置截断校验机制，需优先落地结构化约束、粒度管控、逐块校验三类调整，支撑主链路门控接入目标\",\n    \"writing_direction\": [\n        \"优先对齐标准化screenplay block字段合同，确保输出结构完整无截断\",\n        \"单block粒度控制在单镜头/单场景片段量级，适配Seedance 2.0单镜头生成要求\",\n        \"强化场景、主体、对白三类锚点的明确性，降低模型 fallback 生成通用内容的概率\",\n        \"保留动作描述、摘要类内容为预校验层级，不纳入强生成约束\"\n    ],\n    \"writing_method\": [\n        \"单episode拆分block时严格控制单block字数在80-150字区间，避免过长导致模型输出截断\",\n        \"每个block强制按「场景锚点+主体动作+对白+结束标识」的结构化范式写作\",\n        \"生成时开启逐块输出校验，上一块字段完整性、内容合规性校验通过再生成下一块，避免全局截断\",\n        \"对白内容强制绑定所属主体，避免无归属通用句式生成\"\n    ],\n    \"dramart_alignment\": [\n        \"每个block必填location、subject、dialogue三类标准字段，匹配Dramart上传结构化要求\",\n        \"block粒度匹配Dramart单幕片段拆分规则，支持直接导入场景库\",\n        \"对白attribution字段严格遵循Dramart字段命名规范，避免导入报错\",\n        \"场景描述符合Dramart空间属性标注要求，支持自动打标\"\n    ],\n    \"seedance_alignment\": [\n        \"单block对应Seedance 2.0单镜头提示词输入粒度，避免跨镜头内容混合\",\n        \"场景描述包含明确的光线、空间、时间属性，适配视频生成环境要求\",\n        \"主体动作描述为可可视化的具象动作，不含抽象心理活动表述\",\n        \"对白内容与口型生成要求对齐，单条对白长度对应2-8秒播放时长的文本量\"\n    ],\n    \"keep\": [\n        \"继续保留subject/dialogue/location三类已验证稳定的强校验规则\",\n        \"继续保留摘要化风险为precheck-only的边界规则\",\n        \"继续执行批量基线fail清零的验收标准\",\n        \"继续保留真实样本冒烟测试的验证环节\"\n    ],\n    \"avoid\": [\n        \"避免单block内容过长超过模型输出窗口导致截断\",\n        \"避免生成无归属、通用模板化的对白句式\",\n        \"避免单个block包含多个场景/多个镜头的混合内容\",\n        \"避免硬编码特定IP/书名的专属写作规则\"\n    ],\n    \"risks\": [\n        \"过度约束字段可能导致文本文学性下降的风险\",\n        \"逐块生成可能带来整体叙事连贯性下降的风险\",\n        \"模型输出截断未被及时捕获可能导致下游生成质量下降的风险\",\n        \"规则落地未同步到控制面可能导致流程不一致的风险\"\n    ],\n    \"next_actions\": [\n        \"完成screenplay block字段合同的标准化定义并写入控制面文档\",\n        \"开发单block粒度校验、截断检测的自动预校验规则接入主链\",\n        \"完成subject/location/dialogue三类强规则的主链接入开发\",\n        \"执行指定的4类required tests，验证规则落地后无中文质量回退\",\n        \"输出批量基线测试报告和阶段复盘文档，满足exit criteria要求\"\n    ],\n    \"confidence\": \"high\"\n}"
          }
        ],
        "status": "completed",
        "id": "msg_02177547210096600000000000000000000ffffac177ed5397542"
      }
    ],
    "service_tier": "default",
    "status": "completed",
    "temperature": 0.2,
    "usage": {
      "input_tokens": 2108,
      "output_tokens": 1881,
      "total_tokens": 3989,
      "input_tokens_details": {
        "cached_tokens": 0
      },
      "output_tokens_details": {
        "reasoning_tokens": 1029
      }
    },
    "caching": {
      "type": "disabled"
    },
    "store": true,
    "expire_at": 1775731274
  }
}