@oh-story/dsh 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +5 -3
  2. package/lib/client.js +27 -11
  3. package/lib/client.js.map +2 -2
  4. package/lib/drama/manifest.json +141 -136
  5. package/lib/drama/skills/short-drama/SKILL.md +55 -122
  6. package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
  7. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +24 -78
  8. package/lib/drama/skills/short-drama/references/creator-documents.md +79 -0
  9. package/lib/drama/skills/short-drama/references/creator-workflow.md +51 -77
  10. package/lib/drama/skills/short-drama/references/knowhow-index.md +2 -0
  11. package/lib/drama/skills/short-drama/references/look-development.md +2 -3
  12. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
  13. package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
  14. package/lib/drama/skills/short-drama/references/reference-roles.md +29 -135
  15. package/lib/drama/skills/short-drama/references/runtime-preflight.md +13 -19
  16. package/lib/drama/skills/short-drama-assets/SKILL.md +40 -161
  17. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
  18. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
  19. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
  20. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +5 -12
  21. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
  22. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +2 -2
  23. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +10 -105
  24. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
  25. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +41 -155
  26. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
  27. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +10 -12
  28. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
  29. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
  30. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
  31. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
  32. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
  33. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
  34. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
  35. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +6 -65
  36. package/lib/drama/skills/short-drama-produce/SKILL.md +26 -10
  37. package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
  38. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
  39. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
  40. package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
  41. package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
  42. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
  43. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
  44. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -19
  45. package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
  46. package/lib/drama/skills/short-drama-storyboard/SKILL.md +49 -240
  47. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
  48. package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
  49. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
  50. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +8 -7
  51. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +24 -62
  52. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
  53. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +5 -23
  54. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
  55. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
  56. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +11 -71
  57. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +44 -219
  58. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
  59. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +3 -5
  60. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
  61. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +13 -23
  62. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
  63. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +2 -3
  64. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
  65. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +13 -72
  66. package/lib/drama/skills/short-drama-write/SKILL.md +73 -268
  67. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
  68. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
  69. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
  70. package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
  71. package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
  72. package/lib/index.js +107 -14
  73. package/lib/index.js.map +4 -4
  74. package/lib/oh-story/manifest.json +26 -26
  75. package/lib/oh-story/roles/character-designer.md +4 -4
  76. package/lib/oh-story/roles/narrative-writer.md +11 -11
  77. package/lib/oh-story/roles/story-architect.md +20 -14
  78. package/lib/oh-story/roles/story-explorer.md +8 -5
  79. package/lib/oh-story/skills/story-import/SKILL.md +5 -1
  80. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +1 -1
  81. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +1 -1
  82. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  83. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +1 -1
  84. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +1 -0
  85. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +11 -5
  86. package/lib/oh-story/skills/story-setup/SKILL.md +12 -9
  87. package/lib/types/client/file-activity.d.ts +5 -0
  88. package/lib/types/client/file-activity.d.ts.map +1 -1
  89. package/lib/types/client/index.d.ts.map +1 -1
  90. package/lib/types/index.d.ts +2 -1
  91. package/lib/types/index.d.ts.map +1 -1
  92. package/lib/types/reference-tool.d.ts +6 -0
  93. package/lib/types/reference-tool.d.ts.map +1 -0
  94. package/lib/types/role-provider.d.ts.map +1 -1
  95. package/lib/types/role-tool.d.ts +3 -1
  96. package/lib/types/role-tool.d.ts.map +1 -1
  97. package/lib/types/skill-provider.d.ts.map +1 -1
  98. package/package.json +3 -2
  99. package/lib/drama/skills/short-drama/references/lifecycle-commands.md +0 -130
@@ -1,69 +1,10 @@
1
1
  # 视频提示词阶段契约
2
2
 
3
- ## 目录
3
+ 本阶段只拥有 `剧集/<EP>/视频提示词.md` 中的 `MOTION-...` 项与按需的时间线音乐章节。它继承镜头
4
+ 起点、终点、时长、对白和冻结帧,不回写分镜或视觉设定。
4
5
 
5
- - [独立运行与项目集成](#独立运行与项目集成)
6
- - [所有权边界](#所有权边界)
7
- - [制作形态需要什么](#制作形态需要什么)
8
- - [参考媒体与补拍](#参考媒体与补拍)
9
- - [本阶段规则](#本阶段规则)
10
-
11
- 本文件是本技能的自包含契约:预检、所有权、形态输入与规则表都在这里,
12
- 不需要读取其他技能的文件。
13
-
14
- ## 独立运行与项目集成
15
-
16
- 本技能可以单独安装并运行;下面几条说明项目工具存在时怎样集成。
17
-
18
- 1. **读取直接输入**:只读取用户明确提供或当前任务实际需要的文件,不批量加载整个项目。
19
- 2. **可选项目集成**:若存在 `short-drama.json` 且 core 项目工具可用,可以运行
20
- `python3 <core>/scripts/project_tool.py status <project>`,使用返回的目录布局和语言设置;
21
- core 不可用时,直接基于已提供输入产出本阶段文件。
22
- 3. **可选发布生命周期**:项目工具可用时,用 `publish` 原子发布并用 `--input <path>`
23
- 声明直接输入;`accept`、`review` 与 `package` 继续承担确认、复核与交付。
24
- 4. **保持职责分离**:创作者确认、内容修订和复核是不同动作;reviewer 提修改要求,负责人改文件。
25
-
26
- ## 所有权边界
27
-
28
- - **本阶段拥有**:运动顺序、表演路径、摄影与声音的实现;交付容器的成员、顺序与容器时长。
29
- 成员的已接受时长是分镜的只读投影,容器时长等于它们之和。
30
- - **本阶段继承**:镜头目的、起止边界、已接受时长、形态运动预算、逐字对白。
31
- - **本阶段不越权**:不回写镜头或资产权威;结束报告只用于比较,不是第二个终点取值权威。
32
- 需要改时长、终点、对白或下一镜开场时,发修订请求给对应负责人。
33
-
34
- ## 制作形态需要什么
35
-
36
- 视觉风格不是贴在提示词前面的标签。创作者已接受的视觉方向与制作形态由项目层决定并传入,
37
- **本技能不加载形态卡,也不自行选择形态**;本节只说明本阶段需要形态回答什么、以及拿到
38
- 答案后投影成哪些字段。
39
-
40
- 形态决定属于 `craft_default`:创作者说明理由即可覆盖。形态不能创造新的
41
- `structural_invariant`,也不能改写身份、地理、持物归属与可读文字政策。审查者不得单凭
42
- 形态偏好阻断交付。
43
-
44
- 不要用“加一句风格前缀”处理形态差异。前缀只改变检索标签;形态改变的是**必须出现和
45
- 可以省略的字段**,只有后者会被执行,也只有后者能被审查。
46
-
47
- 本阶段要向形态决定问:**运动层、接触、节奏、声源与结果**在本形态下怎么写。
48
-
49
- 运动段的默认值随形态改变(默认全动作 / 默认保持姿态并声明例外 / 一镜一因果 / 把全动作
50
- 预算集中给情绪转折镜)。拿到形态运动预算后,本阶段只负责把它落成有因果顺序的动作与
51
- 可比较的终点,不重新选择形态。
52
-
53
- 本阶段新增:运动层、接触、节奏、声源与结果。
54
-
55
- ## 参考媒体与补拍
56
-
57
- - **参考图能决定什么要逐张写明**:每张参考的用途、可以照搬什么、不可以照搬什么。身份参考
58
- 不自动决定构图;构图、尺度或效果参考不自动带入图中人物、服装、文字、道具与故事状态。
59
- - **像素主张需要证据**:关于参考图上可见内容(尤其文字、水印、标牌、界面)的断言,必须
60
- 来自创作者/参考图权利人的可核对说明,或运行环境获授权后形成的输入参考观察记录,并绑定
61
- 被检查的字节。两者都没有时保持 `unverified`,负面提示词不能代替证据。
62
- - **观众揭示时机**:某一事实何时可被观众看到,由已接受的可见性决定绑定其来源、载体、
63
- 权限、触发与保护方式。构图既不能提前泄露该事实,也不能遮掉本环节必须传达的载体。
64
- - **母版、补拍与替代**:补拍默认只补充、不替代母版。普通母版不增加版本范围字段;只有
65
- 补拍/替代版才声明 `pickup | alternate`,用同一文件内稳定的记录 ID 说明母版与补充关系,并把每项原文要求对应到当前字段或说明
66
- 去向。只有下游审查结论才能批准替代,不得回写形成循环引用。
6
+ 每项正文只描述从当前冻结起点到终点的变化;多镜打包、补拍或替代关系确有需要时,也写在同一文档
7
+ 的可读章节中,不建立 motion spec、container、readiness、QA 或接受记录。
67
8
 
68
9
  ## 本阶段规则
69
10
 
@@ -79,20 +20,20 @@
79
20
  | VID-06 | structural_invariant | Locked and moving camera instructions cannot govern the same interval without an explicit transition. |
80
21
  | VID-07 | taste_option | Camera may be locked or moving; audio/lip-sync detail follows the chosen production profile. |
81
22
  | VID-08 | reviewed_invariant | Structured motion names this shot's exact subjects, actions, contacts, and results rather than reusable placeholders; when a performance path is present, it names only the actors and visible changes this shot actually carries. |
82
- | VID-09 | structural_invariant | Next-start is an existing canonical ref whose `src` resolves through the file's `sources` declaration, or an explicit provisional locator; never an invented record, source key, or hash. |
23
+ | VID-09 | structural_invariant | The next start names an existing `SHOT-...` or is explicitly unresolved; never invent a hidden source key, record or hash. |
83
24
  | VID-10 | craft_default | Resolve one accepted production profile for the current delivery scope; local variants may coexist when their range and precedence are explicit, without overriding source coverage or exact-readable obligations. |
84
25
  | VID-11 | reviewed_invariant | A selective transform names its trigger, exact target scope, end geometry/state, and preserve set so non-target people, props, text surfaces, and spatial anchors do not change with it. |
85
- | VID-12 | reviewed_invariant | A pickup/alternate names stable master/supplement motion IDs and maps each source requirement to a field or disposition; motion may request replacement, but only a downstream independent verdict can approve it. |
86
- | VID-13 | structural_invariant | A delivery container carries one or more accepted shots that are contiguous in source order, share one accepted geography/asset binding chain, and do not cross a scene boundary—a Location/View change ends the container. Its duration equals the sum of their accepted durations, and packing changes neither shot boundaries nor per-shot reviewability. |
26
+ | VID-12 | reviewed_invariant | A pickup or alternate names stable `MOTION-...` IDs and maps each source requirement to this version, the master, another pickup, or a requested storyboard revision; it never silently replaces the master. |
27
+ | VID-13 | structural_invariant | A multi-shot delivery group contains contiguous shots from one scene with one geography/asset chain. Its duration equals the sum of member shots, and grouping changes neither shot boundaries nor per-shot reviewability. |
87
28
  | VID-14 | craft_default | Music intent may be annotated per shot as a relative entry/exit/duck against neighbours, but its realization belongs to the timeline layer; no deliverable—single-shot or multi-shot container—carries a baked-in music bed unless the project accepted otherwise or the source is diegetic. Dialogue, off-screen sources, ambience, and event effects stay with the deliverable. |
88
- | VID-15 | structural_invariant | Within one episode a shot belongs to at most one container, so container durations sum without double-billing. Containers need not cover every shot, but the containers plus the shots left loose must account for the episode's shot set exactly once; an unaccounted or twice-counted shot is a defect, not a packing preference. |
29
+ | VID-15 | structural_invariant | Within one episode a shot belongs to at most one delivery group; grouped and loose shots account for the visible shot set exactly once. |
89
30
  | VID-16 | reviewed_invariant | When performance changes, multi-character motion differentiates the actors who actually carry it and keeps each chosen signal readable in the accepted framing; it does not require an arc for non-performing shots, force every craft field, or duplicate one emotion across the cast. |
90
- | VID-17 | reviewed_invariant | Every multi-reference binding carries a stable `slot_id` and explicit unique `order`, so array reordering or insertion cannot silently change a reference's role; until a project validator owns this check, the reviewer cites conflicting slots/orders rather than claiming mechanical enforcement. |
91
- | VID-18 | reviewed_invariant | Per-shot text readiness is a scope-aware review/status projection derived from current accepted refs and real blocking gaps, not a persisted motion fact. A missing input blocks only dependent claims; overall delivery-ready requires all applicable scopes. Readiness never claims generated identity, performance, lip-sync, mix, edit, or market quality. |
31
+ | VID-17 | reviewed_invariant | Multiple references use stable visible IDs and an explicit order, so reordering cannot silently change which reference controls which property. |
32
+ | VID-18 | reviewed_invariant | Readiness is reported from the current visible inputs and real blocking gaps, not persisted as a motion fact; text readiness never claims generated identity, performance, lip-sync, mix, edit or market quality. |
92
33
  | VID-19 | reviewed_invariant | When the creator profile declares required literal tokens for a delivery route, that route's delivery text preserves them byte-for-byte and outside the verbatim-dialogue fence. Paraphrase, translation, reordering, or omission is treated as a defect because a literal-matching surface has no reason to reject the rewritten text—the failure is silent rather than reported. The suite asserts no specific surface's behaviour, and whether a given result took the route is returned adherence, provable only by a bound production observation. Tokens declare a route and never substitute for the start state, action, or endpoint. Absent a declared token list the suite invents none; until the profile exposes a machine-readable list at a pinned field path, the reviewer cites the profile against the delivery text rather than claiming mechanical enforcement. |
93
34
  | VID-20 | reviewed_invariant | Packing routes change delivery granularity only, leaving shot boundaries, shot purpose, and per-shot reviewability intact. A single long-form generation carrying several accepted shots *is* a multi-shot container and is billed under VID-13 and VID-15; it introduces no separate accounting and no exemption from the contiguity, binding-chain, and scene-boundary constraints. A continuation route instead starts from a previously generated result, which is observation evidence and not an accepted artifact: the accepted shot start boundary stays the sole authority, and any claim about the observed state binds a production observation record or remains `unverified`. |
94
35
  | VID-21 | craft_default | When the project's accepted production profile has generated imagery carry the frame, actions are written as high-frequency, whole-body or single-limb movements common in everyday footage; precise interception, invisible internal states, negative actions, and three-or-more-step two-handed choreography are rewritten into equivalent common-action combinations, with the dramatic information carried by combination and timing. The rule is inactive for live action or an undeclared profile, and a rewrite may never change accepted shot boundaries, terminal states, or screenplay fact. |
95
- | VID-22 | reviewed_invariant | Delivery text carries only what will be filmed. Record and rule IDs, lifecycle status words, hashes, field paths, reference filenames, craft notes, and run-on negative lists stay in the spec fields and review records; the delivery text takes their result — a negative intent rewritten as a positive state, a reference constraint rewritten as a visible fact. A prompt that recites its own constraints reads as complete and renders as nothing. Until a project validator owns this check, the reviewer cites the delivery text against this rule rather than claiming mechanical enforcement. |
36
+ | VID-22 | reviewed_invariant | Copyable text carries only what will be filmed. IDs, workflow status, hashes, file paths and craft notes stay outside the prompt; negative intent is rewritten as a visible positive state. A prompt that only recites constraints renders as nothing. |
96
37
 
97
38
  ### `CON`
98
39
 
@@ -101,9 +42,9 @@
101
42
  | CON-01 | structural_invariant | Linked end and next start states match or have an explicit owner revision. |
102
43
  | CON-02 | reviewed_invariant | Knowledge, injury, ownership, weather, light, or physical state does not teleport/regress without story cause. |
103
44
  | CON-03 | craft_default | Track downstream-relevant deltas, not the whole 设定集 in every shot. |
104
- | CON-04 | structural_invariant | A delta records before, after, cause/source, effective range, and affected bindings. |
45
+ | CON-04 | structural_invariant | A continuity change states before, after, cause/source scene, effective range, and affected visible IDs. |
105
46
  | CON-05 | taste_option | Declared montage, ellipsis, dream, or subjective imagery may intentionally break ordinary continuity. |
106
- | CON-06 | structural_invariant | A delta's affected refs cover all existing consumers; future consumers remain locators until materialized. |
47
+ | CON-06 | structural_invariant | A continuity change names every existing downstream document it affects; future work is described, not pre-created. |
107
48
 
108
49
  规则分级由高到低:`structural_invariant`(结构缺陷,阻断)、
109
50
  `reviewed_invariant`(需证据判断)、`craft_default`(常用做法,可覆盖)、
@@ -1,284 +1,89 @@
1
1
  ---
2
2
  name: short-drama-write
3
- description: 编剧环节:创作或修订中文短剧、漫剧单集卡、因果节拍与可拍摄的 Markdown 剧本,也负责把现有中文剧本以保留原文、预览语义差异、创作者接受后发布的方式规范化。用户提出“写/改一集短剧”“把大纲写成剧本”“优化场景/对白”“去模板感地修订”“去 AI 味润色”“续写下一集”或提供现成剧本要求进入后续制作时使用;不负责资产、分镜、媒体提示词或终审。
3
+ description: 编写或修订可拍摄的中文短剧、漫剧单集 Markdown 剧本,也负责保留作者原文地规范化现成剧本。用户提出“写/改一集短剧”“把大纲写成剧本”“优化场景/对白”“去模板感”“去 AI 味润色”“续写下一集”或提供剧本要求进入后续制作时使用;不负责资产、分镜、媒体提示词或终审。
4
4
  license: MIT
5
5
  ---
6
6
 
7
7
  # 短剧写作
8
8
 
9
- 把单集意图写成可表演、可追踪且会改变故事状态的场景。`screenplay.md` 是唯一可编辑剧本源;卡片和节拍帮助推理,不是另一份正文。
9
+ 把单集意图写成可表演、可拍摄、会改变故事状态的 `剧集/<EP>/剧本.md`。
10
10
 
11
11
  ## Quick Start
12
12
 
13
- 离线验证剧本分块索引与录音表逐字投影:
14
-
15
- ```bash
16
- python3 {技能目录}/scripts/selftest.py
17
- python3 {技能目录}/scripts/screenplay_index.py <screenplay.md> --output <screenplay-index.jsonl>
18
- ```
19
-
20
- ## 估算本集时长
21
-
22
- 写完一集后,可以按**项目自己声明的速率**估算它有多长。套件不带跨项目速率,也不设容差带:
23
-
24
- ```bash
25
- python3 {技能目录}/scripts/duration_estimate.py <screenplay.md> \
26
- --index <screenplay-index.jsonl> --project <short-drama.json>
27
- ```
28
-
29
- 脚本见 [duration_estimate.py](scripts/duration_estimate.py)。**它不自己读剧本格式**:哪一段是
30
- 台词、哪一段是动作、哪一行是注释,全部按 `screenplay-index.jsonl` 的分块来,所以先建索引再估算。
31
- 一个格式两个读法就是两套答案——此前它自带的那套把 `[VO]` 计零秒、把 Markdown 注释当台词计时、
32
- 把带冒号的动作段读成对白、把一个多行动作段按行数重复计算。索引与剧本字节对不上时脚本拒绝估算;
33
- 索引里还有没归类的文本时,报告里会多出 `incomplete`,说明这个秒数没覆盖全篇。速率写在 `short-drama.json` 的
34
- `format.pacing`(`spoken_characters_per_second` 与 `seconds_per_action_paragraph`),
35
- 由创作者按本项目的戏来定——密集争辩和沉默劳作不是同一个折算比。没有声明速率时,脚本只报
36
- 台词字数与动作段数,不猜秒数。
37
-
38
- 结果是**给创作者看的数字,不是门槛**:偏离目标不阻断交付。它的价值在于让"这一集到底多长"
39
- 在剧本阶段就能回答,而不是等到分镜环节才发现装不下——那时戏已经写完了。
40
-
41
- ## 开始前
42
-
43
- 本技能可独立安装和执行。先读取用户明确提供的单集材料与本任务直接输入;若当前目录是
44
- `short-drama` 项目且项目工具可用,可以读取 `status` 并使用其发布生命周期,但缺少 core
45
- 或任何其他技能都不是写作工作的阻断条件。[阶段契约](references/stage-contract.md) 给出
46
- 本阶段边界与规则表,无需读取其他技能的文件。
47
-
48
- ## 先判断入口
49
-
50
- 1. **有已接受的分集规划**:读取本集进入状态、承诺和交接事实后写作。
51
- 2. **只有想法或口述大纲**:在本技能内制作最小单集卡与因果节拍;只有系列方向本身未定时才转 `$short-drama-develop`。
52
- 3. **已有规范剧本**:保留作者语言,做定点修订;先说明改动意图和影响。
53
- 4. **已有非规范文本,目的是进入后续制作**:保存原始字节;只提议场景标题、对白/动作分块、生产标签与索引所需的最小规范化。展示语义新增、删除、改写、未映射段落与不确定处,得到创作者接受后才能发布。不得补造故事引擎、节拍或新剧情。
54
-
55
- ## 每轮的工作单元
56
-
57
- 一轮写一个明确的场景或场景组。“把整集写完”也按场景边界拆成若干轮,每轮:
58
-
59
- 1. 只读这个单元的直接输入,写或改它的正文,跑本地结构检查;
60
- 2. 落盘这个单元,其余范围保持原样;
61
- 3. 报告已覆盖范围、剩余范围、未决决定和下一个值得做的单元;
62
- 4. 交还控制权,等创作者的下一次请求。
63
-
64
- 资产拆解、生产和审查各自是独立的工作单元,由创作者明确请求时开始。
65
-
66
- ## 每次执行
67
-
68
- ### 1. 读取当前真相
69
-
70
- 确认创作者约束、已接受的上游事实、本集进入状态和待兑现铺垫。若修订已有剧本,引用当前文件而不是凭对话记忆重写。本阶段拥有什么、继承什么见 [阶段契约](references/stage-contract.md)。
71
-
72
- ### 2. 确定单集契约的唯一 owner
73
-
74
- - **有 accepted `项目开发/episode-map.jsonl` 记录**:复制
75
- [episode-card.json](assets/episode-card.json)。它在 `sources` 里声明上游快照,用
76
- `{"src": "episode-map", "record_id": "EP001"}` 指向那条记录,其余只保存写作执行选择;
77
- 不复制、不改写 incoming/objective/turn/payoff/handoff。
78
- - **没有 development map 的 script-first 项目**:复制
79
- [episode-card-standalone.json](assets/episode-card-standalone.json),以 `write_standalone`
80
- 模式拥有最小单集契约。
81
-
82
- 同一集不得同时激活两个模式。若后续建立 development map,先做语义
83
- diff,让创作者明确选择 authority 迁移,将 standalone 契约标记 superseded,
84
- 再换成 pointer 卡。若上游契约需改,发 develop owner revision;不在 execution
85
- 字段里偷改。不要用悬念替代整集回报。
86
-
87
- 单集契约进入本阶段时必须包含哪些字段、缺失时怎么办,见
88
- [阶段契约](references/stage-contract.md) 的“单集契约与题材边界”。若只做原文规范化,
89
- 跳过本步,不推断缺失剧情。
90
- 从想法或 `write_standalone` 直接写作时,本阶段执行已接受的题材与钩子取向,不自行给项目
91
- 归类题材;没有已接受取向时按同一节的做法处理,不为贴题材标签另造公式。
92
-
93
- ### 3. 建立因果节拍
94
-
95
- 复制 [beats.jsonl](assets/beats.jsonl),让每条节拍回答:
96
-
97
- - 因为什么,谁现在要什么;
98
- - 谁或什么阻挡;
99
- - 观众能看见/听见的行动是什么;
100
- - 信息、权力、关系、情绪、物理状态或风险怎样变化;
101
- - 这个结果怎样制造下一股压力。
102
-
103
- 若节拍开启新线,明确声明;不要把“然后发生”伪装成“因此发生”。数量与长短服从本集动作,而非统一模板。
104
-
105
- 关系字段遵守同一约定:同一 `beats.jsonl` 内的前因、铺垫与兑现只写稳定
106
- `because_of_ids`/`setup_ids`/`payoff_ids`,避免自引用文件哈希;来自 episode map、
107
- 前集或其他 owner artifact 的关系写 canonical `because_of_refs`/`setup_refs`/
108
- `payoff_refs`。`*_refs` 只放引用对象。
109
-
110
- 引用这样写:文件首行的 `{"record_type": "sources", "schema_version": "1.0.0",
111
- "sources": {...}}` 记录把每个上游快照声明一次,`sources` 的每个短键映射到
112
- `{"owner": ..., "artifact": ...}`;每条引用写
113
- `{"src": "<sources 键>", "record_id": "<记录 ID>"}`,需要时再加 `field` 指向该记录内
114
- 的 JSON pointer。指向整个 artifact 时只写 `{"src": "<sources 键>"}`。同一份文件里
115
- 同一个键始终指同一个快照。`.json` 文件把同样的 `sources` 对象写在顶层。
116
-
117
- ### 4. 先定场景功能,再写正文
118
-
119
- 对每个场景先回答:为什么必须存在、谁的议程对撞、哪个可见动作承载冲突、哪里发生方向性变化、退出状态给下游留下什么。需要场景与可见行动方法时读取 [script-craft.md](references/script-craft.md)。
120
-
121
- 写对白前读取 [dialogue-craft.md](references/dialogue-craft.md),尤其检查人物策略、潜台词、信息争夺和声音差异。
122
- 当声源、环境撤出、主动留白、画外存在或相邻场 sound bridge 承担戏剧转向时,读取
123
- [scene-sound-dramaturgy.md](references/scene-sound-dramaturgy.md)。剧本只拥有故事必需的声音事实,
124
- 不替分镜设计逐镜声轨,也不用配乐替代表演。
125
-
126
- 创作者指出某个兑现的呈现方式**可能需要更换**时,读取
127
- [substitutable-realization.md](references/substitutable-realization.md),把功能、当前实现
128
- 与备选实现分开写下来。**不要因此提前磨平任何内容**:先按最想要的拍法写,备选只在真的
129
- 需要时启用。创作者没有标注时不做这一步,也不替创作者预判。
130
-
131
- 长单集需要跨多轮续写、上下文即将切换或中断恢复时,读取
132
- [scene-handoff-capsule.md](references/scene-handoff-capsule.md),只保存从当前剧本派生的
133
- 最小场景交接;一次完成或局部修订时不要额外建立第二份摘要。
134
-
135
- ### 5. 写唯一剧本源
136
-
137
- 复制 [screenplay.md](assets/screenplay.md),严格按 [screenplay-format.md](references/screenplay-format.md) 写:
138
-
139
- - `## EP001-SC001 内 · 地点 · 时间`;
140
- - 现在时、可见可表演的动作;
141
- - `角色(可表演提示):台词`;
142
- - 仅对故事必需事实使用 `[VO]`、`[OS]`、`[SFX]`、`[画面文字]`、`[转场]`、`[连续性]`。
143
-
144
- 识别创作者交来的行业通行方言(`△` 动作行、`【卡点】` 等)、做原文规范化映射,
145
- 或按创作者要求以方言交付时,读取
146
- [production-format-dialect.md](references/production-format-dialect.md)。
147
-
148
- 不要把镜头、资产全集、模型参数或提示词写进剧本。私密想法要转成行为、证据、空间后果,或明确标记的声音表达。
149
-
150
- 正文发布后,用 [screenplay_index.py](scripts/screenplay_index.py) 生成只读派生索引;工具只识别格式契约中的场景标题、动作、对白、六种生产标签和注释,并保留 UTF-8 byte offsets 与行范围:
151
-
152
- ```bash
153
- python3 <skill-dir>/scripts/screenplay_index.py 剧集/EP001/screenplay.md \
154
- --output 剧集/EP001/screenplay-index.jsonl \
155
- --source-ref 剧集/EP001/screenplay.md \
156
- --speaker 葛晴 --speaker 游森
157
- ```
158
-
159
- 由 write owner 阅读当前剧本后,把本集实际说话者逐个传给 `--speaker`;索引器只做精确
160
- 标签核对,不用冒号正则猜人物。未登记的 `前缀:内容` 写成 `ambiguous_dialogue_or_action`。
161
-
162
- **它不会作为块进入索引**,所以覆盖、时长与配音本都看不到它——必须处理掉,不能留着。
163
- 三种处理方式:补入说话者清单(它确实是台词)、改用 `[画面文字]` 等生产标签、或改写这一行
164
- 让它不再是「前缀:内容」的形状(动作段里的全角冒号可以改成破折号或拆成两句)。
165
- 留着不处理时,分镜阶段的覆盖检查会报 `SHT01_SCREENPLAY_IS_NOT_FULLY_INDEXED`,
166
- 时长估算的报告会带上 `incomplete`。
167
-
168
- 规范化预览尚未获 creator acceptance 时加 `--authority candidate`,使 meta、block 与
169
- source issue 的 refs 都保持 candidate;accepted 剧本发布后再以默认 accepted authority
170
- 重建,不得只手改状态字段。
171
-
172
- 修订后**必须把上一版一起交给索引器**,两个参数成对出现:
173
-
174
- ```bash
175
- python3 <skill-dir>/scripts/screenplay_index.py 剧集/EP001/screenplay.md \
176
- --output 剧集/EP001/screenplay-index.jsonl \
177
- --previous-index 剧集/EP001/screenplay-index.jsonl \
178
- --previous-source <改稿前的剧本字节> \
179
- --source-ref 剧集/EP001/screenplay.md --speaker 葛晴 --speaker 游森
180
- ```
181
-
182
- 这样**正文块按内容保 ID**——内容没变的块保住自己的 ID,被改写的块**换新 ID 并让旧 ID 退役**,
183
- 于是指向它的下游引用会失败而不是静默改指。同时多一层拆分/合并识别:歧义写入
184
- `mapping_review_request`,必须显式重映射。
185
- **场景标题是例外**:它按 `scene_id` 保 ID,改写标题不换 ID(同一场戏仍是同一场,内容由标题下面
186
- 的块承载)。说话者清单从上一版索引读回,与这次传的 `--speaker` 取并集,修订时只传新增的人即可。
187
-
188
- **退役是永久的,不只是对下一版**。索引 meta 里的 `block_id_high_water` 记着每个场景、每种块
189
- 用到过的最大编号,逐版往下传。没有它时,编号只从上一版索引推:某个场景里某一类块一旦全部消失,
190
- 下一版就从 01 重新发号,把一个曾经属于别的内容的编号发给新块——下游引用照样解析得开,
191
- 指的却是另一段戏。
192
-
193
- **输出路径上已经有索引、却没有告诉索引器上一版是什么时,命令会指名该文件并停下**。
194
- 这一条不是礼貌提示:不带上一版重建,ID 按位置重新发放,被改写的块会拿回前一个块退役的编号,
195
- 指向它的下游引用于是解析得开、内容却换了一个——而解析得开正是正确引用的样子,下游看不出来。
196
- 确实要从零重编 ID(下游引用还没建立,或准备整体重指)就加 `--no-previous`,
197
- 让这件事成为一个明写出来的决定。
198
-
199
- 索引器绝不改写 `screenplay.md`。
200
-
201
- 正文落定后做一次量级粗测:按项目已接受的语速/字数比把正文字数折成秒数(项目没有这个
202
- 比值就向创作者要一个量级),与本集目标时长比一次。差出两倍以上就在报告里点名,由创作者
203
- 决定改集长还是拆集;两倍以内不必提。
204
-
205
- ### 5b. 配音本
206
-
207
- 项目的对白由录音或 TTS 承担时,配音本和剧本一起交付,不是事后想起来才补的东西:没有它,
208
- 拿到剧本的人手里有台词、没有任何一句该怎么念,而这正是下单前最后缺的一块。项目确定
209
- 只做无声或字幕交付时才跳过这一步,并在报告里写明跳过的理由。
210
-
211
- 创作者要为录音准备台词表时,复制
212
- [voice-record-sheet.jsonl.md](assets/voice-record-sheet.jsonl.md)。它是**剧本的投影,
213
- 不是第二份台词权威**:首行声明所引 `screenplay-index.jsonl` 快照,其后每行用
214
- `source_ref` 绑定一个剧本块并逐字等于该块,要改词就改剧本再重新投影。
215
-
216
- 录音顺序几乎从不是剧情顺序(通常按人物集中录),配音者失去的正是上下文,所以每行要补
217
- 对谁说、接谁的话、此刻他知道什么、这一句要达成什么。写策略而不是情绪词——"愤怒"不可
218
- 执行,"质问"可执行。多音字、生僻字与专名的读法在进棚前定完并留痕;棚里中断是最贵的。
219
-
220
- 音色描述属于角色档案,由 assets owner 按 `$short-drama-assets` 的 `voice-direction.md` 写;
221
- 配音本用 `source_ref` 指向它,不在这里另写一份。两份都在,一句台词才既有词也有声音。
222
-
223
- 本写作阶段不生成音频,也不从这份文本判断成品音质;实际 TTS 的确认后生产边界见文末。
224
-
225
- 写完后用 [voice_sheet_check.py](scripts/voice_sheet_check.py) 核对它仍然是投影:
226
-
227
- ```bash
228
- python3 <skill-dir>/scripts/voice_sheet_check.py 剧集/EP001/voice-record-sheet.jsonl \
229
- --index 剧集/EP001/screenplay-index.jsonl \
230
- --screenplay 剧集/EP001/screenplay.md
13
+ 只维护一份剧本 Markdown,不另建 episode card、beats、block index、录音表、QA 或接受记录。
14
+ 一级标题使用 `# EP001 集名`,场景标题使用 `## EP001-SC001 内 · 地点 · 时间/天气`。
15
+ 对白写 `角色(可选表演提示):台词`;生产标签使用 `[VO]`、`[OS]`、`[SFX]`、`[画面文字]`、
16
+ `[连续性]`、`[转场]`。不要把含冒号的动作叙述误写成对白。
17
+
18
+ ## 入口
19
+
20
+ - 有分集规划:读取本集进入状态、目标、转折、回报和交接事实。
21
+ - 只有想法/大纲:在上下文形成最小单集契约和因果节拍,再直接写剧本。
22
+ - 已有剧本:保留作者语言,只做用户点名的定点修订。
23
+ - 非规范文本要进入制作:保留原文,只做必要的场景、动作、对白和生产标签规范化。
24
+
25
+ 开发大纲和长篇分析都是可选上游;当前材料足够时直接写。
26
+
27
+ ## 工作流
28
+
29
+ 1. 锁定本集承诺的观看体验、谁现在要什么、阻力、当集兑现和退出状态。
30
+ 2. 只识别本集实际存在的发动机:若主打艰难选择,检查两边价值;若判断转折依赖争议证据,检查证明边界;若前景化精确死线,检查动作容量;若题面限定次数、轮次、呼吸或节拍,检查每个单位是否在边界内完成所需状态。没有时不强行补齐;输入已经以它为主发动机时,要让它真正改变行动、关系或结果,不只在台词中点名。
31
+ 3. 在上下文排“因为—行动—结果—下一股压力”,不落盘节拍表;让物件、对白、沉默、空间或声音按本集题材承担必要工作,不预设某一种载体。
32
+ 4. 逐场确定不可替代的功能、可见变化与场尾状态;由争取或冲突组织的场景再明确焦点议程与阻力。承担主要戏剧功能的配角要有自己的策略,事务性或环境性角色保持简洁即可。
33
+ 5. 把动作、对白、画外音、声音事实和画面文字写入同一份剧本。
34
+ 6. 用户要求整集就写完整集,场景批次自动续跑。
35
+ 7. 交稿前静默反查:只看剧本能否接收到本集承诺、人物行动是否有因果、题材语气是否一致;再对本集确实使用的选择、证据、有限单位或精确死线做专项检查。若自检让剧本长出输入没有要求的机关,撤掉机关而不是替它找理由。
36
+ 8. 局部修订保留无关段落;明确问题直接修正,只把真实剧情分叉交给用户。
37
+
38
+ ## 写作要求
39
+
40
+ - 先服从输入已经给出的事实、`必须/禁止`、题材观看契约和退出状态;本技能的审查项与手艺默认只帮助实现这些要求,不能反过来补造题面没有的精确数字、记录、资源、程序、关系或机关。
41
+ - 每场改变信息、权力、关系、情绪、物理状态或风险;无变化的场删掉或合并。核心阻力的转向要有可追溯的事实、筹码、权限、代价或人物行动,不能只靠对手停止反应。
42
+ - 对白必须在争取、回避、试探、逼迫或重新定义关系;用可见、可听、可触的行为表现状态,不用解释替代行动,也不把已经演清的机制再说一遍。
43
+ - 观众理解当前行动所必需的赌注要进入剧本,但载体服从题材;选择、证据、有限单位、精确死线等专项规则只在输入真正以它为发动机时启用,并按需读取[剧作手艺](references/script-craft.md),普通决定、普通物件和模糊时间压力不升级成同一套机关。
44
+ - 压缩过程时只保留会改变策略、关系、风险或结果的节点。资源与外部反应必须来自输入或前文建立,且不能替人物完成最难的戏剧行动。
45
+ - 承担主要冲突的角色要保持相称的目标、判断或策略;事务性、环境性角色保持简洁,不为检查表硬加秘密、反转或人物弧。
46
+ - 已建立的代价、不可逆后果、关键持物、空间和知识状态要进入可追溯的退出状态;结尾可推进、留白、反讽、安静收束或形成余韵,不强制追加外部事件。
47
+ - `[连续性]` 只交接由前文动作已经建立、又容易在下游丢失的状态;不能用作者标签证明镜头外从未发生某事,也不复述正文已清楚呈现的结果。
48
+ - 交稿前静默做一次经济性检查:是否增加了输入没有要求的精确数字或记录链;是否用标签/对白重复动作;是否在回报后堆了多个同方向后果。没有新作用的内容删掉,knowhow 本身不删。
49
+ - 输入给出目标时长时按真实表演、动作和停顿通读压稿,先删重复验证、解释和同义收尾;不用统一字数、镜头数或节拍数填模板。
50
+ - 用户原文优先;“去 AI 味”是定点修订,不抹平作者个性。
51
+
52
+ ## 按需知识
53
+
54
+ 默认只读本 SKILL 和直接输入。出现下列明确信号时,在写正文前读取对应知识;同一输入有多个不同问题
55
+ 可以分别读取,但不遍历无关引用:
56
+
57
+ - 阶段边界与规则分级:[阶段契约](references/stage-contract.md)
58
+ - 场景标题、对白和生产标签语法:[剧本格式](references/screenplay-format.md)
59
+ - 项目特有的制作稿方言:[制作格式方言](references/production-format-dialect.md)
60
+ - 输入含核心选择、有限次数/轮次/呼吸/节拍、精确倒计时或会改变人物判断的关键物证:[剧作手艺](references/script-craft.md)
61
+ - 过去关系必须通过对白进入,或关键人物容易只剩说明功能:[对白手艺](references/dialogue-craft.md)
62
+ - 声源、留白与 sound bridge:[场景声音戏剧](references/scene-sound-dramaturgy.md)
63
+ - 同一故事义务的不同可拍实现:[可替代实现](references/substitutable-realization.md)
64
+ - 长单集跨上下文时的最小交接:[场景交接胶囊](references/scene-handoff-capsule.md),只留在上下文
65
+
66
+ ## 时长估算(按需)
67
+
68
+ 用户问时长时才把索引写入系统临时目录。先用 Python 查询跨平台临时目录,把第一条命令打印的完整
69
+ 路径原样替换进后两条命令的引号内。以下每条都是一行完整命令,不依赖 shell 变量或续行符;Windows
70
+ 没有 `python3` 命令时使用 `py -3`。`--speaker` 的示例值必须替换为本集实际说话者;只有存在项目
71
+ 配置时才添加 `--project short-drama.json`:
72
+
73
+ ```text
74
+ python3 -c "from pathlib import Path; import tempfile, uuid; print(Path(tempfile.gettempdir()) / ('short-drama-' + uuid.uuid4().hex + '.jsonl'))"
75
+ python3 "{技能目录}/scripts/screenplay_index.py" "剧集/EP001/剧本.md" --output "粘贴第一条命令输出的完整路径" --speaker "本集角色一" --speaker "本集角色二"
76
+ python3 "{技能目录}/scripts/duration_estimate.py" "剧集/EP001/剧本.md" --index "粘贴第一条命令输出的完整路径"
231
77
  ```
232
78
 
233
- 脚本按块 ID 定位、切出剧本原字节,再逐字比对台词与说话人。剧本改过而
234
- 索引没重建、或有人在表里顺手改了词,都会被单独报出来——**这两种情况下的配音本看起来
235
- 和正常的一模一样**,而它被带进录音棚的那一刻正是没人能核对的时刻。
236
-
237
- 只覆盖部分对白(按人物或按场次分表)是正常做法,未覆盖的块只报告不判错。
238
-
239
- ### 6. 修订而不是抹平
240
-
241
- 按顺序做所有者修订:
242
-
243
- 1. **因果**:选择是否造成后果,转折是否由已存在的压力产生;
244
- 2. **场景**:目标、反对、转向、退出是否清楚;
245
- 3. **可拍性**:情绪和认知是否有演员能执行的载体;
246
- 4. **对白**:每轮是否在争取、回避、试探、逼迫或重新定义关系;
247
- 5. **生产事实**:必读文字、画外音、画外对白、关键声音和连续性变化是否有边界标签;
248
- 6. **交接**:本集结束的知识、持物、伤势、关系和决定能否成为下一集准确开场。
249
-
250
- 局部修订保留不相关段落。先展示语义差异与可能失效的下游产物,创作者接受后再发布。
251
-
252
- ### 7. 报告审查交接
253
-
254
- 完成结构检查后只报告当前范围是否适合单独复核,不自动启动复核。若之后收到带证据的修订请求,
255
- 只修改本技能拥有的单集卡、节拍或剧本;完成该有界修订后再次交还控制权,复审需要新的明确请求。
256
-
257
- ## 规则分级
258
-
259
- - **`structural_invariant`**:场景/块 ID、引用、已有生产标签语法、来源哈希与明确矛盾;
260
- 校验器可阻断。
261
- - **`reviewed_invariant`**:因果是否成立、场景是否真正转向、内心是否可表演、对白是否改变局面,
262
- 以及生产关键事实是否漏标;reviewer 须引用文本证据。
263
- - **`craft_default`**:进入得晚、退出得早、以选择和后果推动、用具体动作承载情绪;可说明理由覆盖。
264
- - **`taste_option`**:沉默、旁白、方言、打断、场景静动、句式节奏;遵从创作者选择。
265
-
266
- 不要把统一的爆点安排、转折时刻、台词比例、字数、场景数或节拍数设为质量门槛。
267
-
268
- ## 产物与边界
79
+ 估算是参考,不是门禁;没有语速或动作段速率时只报告可数事实,不猜秒数。但任务已给目标时长时,
80
+ 写作者仍须用真实朗读和动作通读判断能否容纳,并直接压缩重复节拍;“不能精确估秒”不是忽略目标的理由。
269
81
 
270
- 本技能只拥有:
82
+ ## 完成
271
83
 
272
- - `剧集/<EP>/episode-card.json`(上游 pointer + write execution,或显式
273
- `write_standalone` 契约;二者不并存)
274
- - `剧集/<EP>/beats.jsonl`
275
- - `剧集/<EP>/screenplay.md`
276
- - 由剧本生成的 `screenplay-index.jsonl`
277
- - `剧集/<EP>/voice-record-sheet.jsonl`(对白由录音或 TTS 承担时)
278
- - 规范化预览与语义修订差异
84
+ 点名范围已写入、场景因果连贯、对白与行动可表演、承诺有兑现或有意延迟、结尾完成本集预定的戏剧或情绪功能,即完成。最后一拍可以推进,也可以安静收束、形成余韵或让既有动作变义;判断它是否有效,不用“是否又发生一件事”代替。
85
+ 资产、分镜、审查与生产只有用户点名时开始。
279
86
 
280
- 资产身份、分镜边界、图片/视频提示词及终审结论属于其他技能。本技能不生成媒体。
87
+ ## 安装维护
281
88
 
282
- 创作者要求实际合成已确认台词时,把当前录音表与声音绑定交给 `$short-drama-produce`。
283
- 生产技能必须先展示本次 TTS 任务的原句、角色/声音、数量、参数和输出路径,并取得针对这份
284
- 预览的明确确认;本技能不会替创作者确认,也不会把剧本接受状态当作付费生产授权。
89
+ 只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
@@ -194,6 +194,13 @@
194
194
 
195
195
  **`craft_default`**:让说明带着争取目标进入;能由动作或证据表达的部分,不再由两人完整复述。
196
196
 
197
+ 动作已经让观众看懂机制时,台词优先承担新的工作:改变关系、收窄结论、隐藏态度或迫使下一步。若一句
198
+ 话只是逐项复述观众刚看到的因果,删掉后画面仍完整,就让人物回应结果而不是给画面配答案。
199
+
200
+ 过去事件只说当前动作需要的最小片段。若一名角色能不受阻地一口气交代时间、关系与结果,先检查这些
201
+ 信息能否被对方打断、质疑、回避或拿来交换;让背景参与当下争取,而不是暂停剧情播放资料。需要完整
202
+ 宣读、证词或仪式性讲述时可以保留长段,但其现场作用要清楚。
203
+
197
204
  **`taste_option`**:仪式宣读、审讯、教学、公开声明等场景可以容纳长信息,但仍要有听者反应和权力后果。
198
205
 
199
206
  ## 6. 人物声音如何区分
@@ -1,51 +1,25 @@
1
- # 单集分批续写交接胶囊
1
+ # 单集跨上下文交接胶囊
2
2
 
3
- 长单集跨多轮写作、上下文即将切换或中断恢复时,用一张短胶囊把“接下来必须记住的变化”
4
- 交给下一轮。胶囊是从当前剧本派生的临时工作记忆,**不是第二份权威**;任何冲突都以
5
- 已接受的 `screenplay.md`、单集契约和连续性来源为准。
3
+ 长单集因为上下文限制需要分批续写时,可以在**当前会话上下文**维护一份最小交接摘要。它不落盘、
4
+ 不成为第六份创作文档,也不替代 `剧本.md`。
6
5
 
7
- ## 何时建立
6
+ ## 只记恢复下一段真正需要的内容
8
7
 
9
- - 当前轮无法安全完成整集,但已经写完一个有明确退出状态的场景或场景组;
10
- - 下一轮只需续写,不值得重新加载整份上游与全部已完成正文;
11
- - 会话压缩或恢复需要准确找到最后一个已接受块。
8
+ - 当前集号和最后完成的场景 ID;
9
+ - 上一场结束时仍会影响下一场的地点、在场人物、知识、关系、伤势、持物与风险;
10
+ - 已建立但尚未兑现的 setup/payoff;
11
+ - 下一场已确定的功能与 exit state;若它由争取或冲突组织,再记 agenda、opposition 与 turn;
12
+ - 本批仍未解决、会改变下一段写法的真实创作分叉。
12
13
 
13
- 短场景、一次完成的单集或只做局部改字时不建立。不要按固定场景数或字数强制分批。
14
-
15
- ## 最小字段
16
-
17
- ```yaml
18
- scene_handoff_capsule:
19
- authority: derived
20
- sources:
21
- screenplay: {owner: short-drama-write, artifact: 剧集/<EP>/screenplay.md}
22
- screenplay_ref: {src: screenplay}
23
- current_scene:
24
- scene_id: EPxxx-SCxxx
25
- agenda: 当前人物正在争取什么
26
- opposition: 谁/什么正在反制
27
- turn: 刚发生的方向变化
28
- exit_state: 场景结束后谁能做什么、不能做什么
29
- changed_state:
30
- story: [知识/关系/权力/风险/决定的变化]
31
- physical: [位置/持物/伤势/造型/环境的变化]
32
- setup_debt: [仍待兑现或明确放弃的 setup ID/ref]
33
- information_permissions: [谁知道/误信/怀疑什么,观众此刻能知道什么]
34
- next_scene_pressure: 下一场由哪个已发生结果发动
35
- tail_locator: {block_id: <last-accepted-block>}
36
- unresolved: [不得由续写者自行补齐的选择]
37
- ```
38
-
39
- 只记录变化和下一步依赖,不复制整段正文、角色小传、资产 设定集 或所有旧节拍。`tail_locator`
40
- 必须指向当前已接受剧本尾部;如果只完成 candidate,明确保留 candidate authority,不能写成
41
- accepted。
14
+ 只记录变化和下一步依赖,不复制整段正文、角色小传、视觉设定或全部旧节拍。任何信息都要能回到
15
+ 当前 `剧本.md` 的场景 ID 核对;胶囊与正文冲突时以正文为准。
42
16
 
43
17
  ## 恢复步骤
44
18
 
45
- 1. 先确认 `sources.screenplay` 指的还是当前剧本;剧本已经改过就丢弃胶囊,重新从当前剧本恢复。
46
- 2. 用 `tail_locator` 读最后一个块及其相邻上下文,确认语气、动作和状态确实对得上。
47
- 3. 读取下一场直接依赖的单集契约、setup/payoff 与连续性引用;不预加载无关 reference。
48
- 4. 写下一场前重新回答 agenda、opposition、turn、exit_state,不能把胶囊里的候选当既定剧情。
49
- 5. 场景发布后重建或删除胶囊:重新从当前剧本派生 `sources` 与 `tail_locator`。
19
+ 1. 重新读取当前 `剧本.md` 的最后一个已完成场景及其相邻上下文;
20
+ 2. 对照胶囊中的结束状态、未兑现义务和下一场目标,丢弃已经过期的摘要;
21
+ 3. 只读取下一场直接依赖的分集规划与连续性事实,不预加载无关 reference;
22
+ 4. 写下一场前重新回答它的必要功能与 exit state;冲突场景再回答 agenda、opposition 与 turn,不能把候选想法当既定剧情;
23
+ 5. 场景写入正文后刷新上下文胶囊;整集完成后删除它。
50
24
 
51
- 胶囊帮助恢复注意力,不替代创作者接受、稳定索引或审查。
25
+ 胶囊只帮助恢复注意力。它不代表创作者确认、审查通过或交付状态。