@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,153 +1,86 @@
1
1
  ---
2
2
  name: short-drama
3
- description: 基于文件系统初始化、继续和交付短剧或漫剧项目,并提供面向创作者的本地 Dashboard;也负责项目级制作形态、视觉方向和 Look Development 路由。用户提出“创建/继续短剧项目”“看进度/下一步”“做 Look Development”“打开 dashboard/短剧创作台”“导出制作资料”,或任务跨多个环节而需要判断负责技能时使用;明确的写作、资产、提示词、分镜或审查请求由对应子 skill 直接处理。
3
+ description: 基于文件系统初始化和继续短剧或漫剧项目,提供 creator-first 五文档路由、本地 Dashboard、制作形态与 Look Development 决策。用户提出“创建/继续短剧项目”“看进度/下一步”“做 Look Development”“打开 dashboard/短剧创作台”“导出制作资料”,或任务跨多个创作阶段时使用;明确的写作、资产、提示词、分镜或审查请求由对应子 skill 直接处理。
4
4
  license: MIT
5
5
  ---
6
6
 
7
7
  # 短剧创作路由
8
8
 
9
- 本技能负责找到项目、显示当前状态并把工作交给正确的创作技能,不代写各阶段内容。
9
+ 本技能负责项目初始化、跨阶段路由、制作形态与 Dashboard。各阶段正文由对应 owner 完成。
10
10
 
11
11
  ## Quick Start
12
12
 
13
- 先离线确认本技能被单独复制后仍能初始化、读取和保护项目路径:
13
+ 所有项目统一使用 [creator-first 工作流](references/creator-workflow.md):每集按需维护
14
+ `剧本.md`、`视觉设定.md`、`分镜.md`、`图片提示词.md`、`视频提示词.md`,不建立并行的结构化创作真相。
15
+ 具体写法见 [五份创作文档](references/creator-documents.md)。
14
16
 
15
- ```bash
16
- python3 {技能目录}/scripts/selftest.py
17
- python3 {技能目录}/scripts/project_tool.py init ./my-drama --title "示例短剧"
18
- ```
19
-
20
- 创作者可读内容使用 `short-drama.json#/language`;交给图片或视频生成器的提示词正文使用
21
- `#/format/prompt_language`。两者互不推断,详见
22
- [contract-and-ownership.md](references/contract-and-ownership.md#output-language-contract)。
23
-
24
- ## 每次请求的起点
25
-
26
- 1. 使用用户给出的路径,或从当前目录向上寻找最近的 `short-drama.json`。
27
- 2. 运行 `status`,只读完成当前任务所需的直接输入,不批量加载整个项目。
28
- 3. 按用户眼下要完成的工作路由;未安装的阶段技能只影响对应路由,不阻断其他工作。
29
- 4. 明确的单阶段任务直接交给独立安装的对应技能,按创作者要的那一步做。
30
-
31
- 统一预检见 [runtime-preflight.md](references/runtime-preflight.md),创作入口见
32
- [creator-workflow.md](references/creator-workflow.md),所有权见
33
- [contract-and-ownership.md](references/contract-and-ownership.md)。
34
-
35
- ## 意图路由
17
+ ## 路由
36
18
 
37
- | 创作者意图 | 路由 |
19
+ | 用户要做什么 | owner / 行为 |
38
20
  |---|---|
39
- | 开发点子、系列承诺、改编和分集地图 | `$short-drama-develop` |
40
- | 导入已有多集完整剧本/散稿并生成或补分集地图 | `$short-drama-develop` 按文件实际结构建立索引,每次只读当前集并续跑 |
41
- | 判断长篇是否值得改、建立原文索引 | `$short-drama-novel-analyze` |
42
- | 写或改单集契约、节拍、剧本 | `$short-drama-write` |
43
- | 拆人物、造型、地点、道具和状态 | `$short-drama-assets` |
44
- | 写人物、地点、道具和 Look Development 图片提示词 | `$short-drama-image-prompts` |
45
- | 做覆盖设计、镜头和冻结关键帧 | `$short-drama-storyboard` |
46
- | 写动作、表演、运镜、声音视频提示词 | `$short-drama-video-prompts` |
47
- | 写主题曲/配乐意图或校验时间线音乐规格 | `$short-drama-video-prompts`,歌词必须由创作者提供并接受 |
48
- | 按已确认规格实际生成图片、视频、TTS 或时间线音乐 | `$short-drama-produce` 先展示本次 job,得到明确确认后才执行 |
49
- | 定制作形态、视觉方向或 Look Development 路径 | `$short-drama` |
50
- | 校验、审稿或发修订请求 | `$short-drama-review` |
51
- | 打开创作台、看内容和进度 | `$short-drama dashboard` |
21
+ | 开发点子、系列承诺、改编和分集地图 | `$short-drama-develop`,仅在用户需要时 |
22
+ | 已有多集完整剧本/散稿识别分集 | `$short-drama-develop` 按实际边界建立临时索引 |
23
+ | 分析长篇原著 | `$short-drama-novel-analyze`,仅在用户需要时 |
24
+ | 写或改单集剧本 | `$short-drama-write` → `剧本.md` |
25
+ | 拆人物、造型、地点、道具 | `$short-drama-assets` → `视觉设定.md` |
26
+ | 写资产图片提示词 | `$short-drama-image-prompts` → `图片提示词.md` |
27
+ | 做镜头和冻结关键帧 | `$short-drama-storyboard` → `分镜.md` |
28
+ | 写视频/时间线音乐提示词 | `$short-drama-video-prompts` → `视频提示词.md` |
29
+ | 实际生成媒体 | `$short-drama-produce`,先预览,再显式确认,最后运行 |
30
+ | 审稿或校验 | `$short-drama-review`,仅在用户点名时 |
31
+ | 初始化、Dashboard、归档点名文档 | 本技能 |
52
32
 
53
- 用户的明确意图优先。Look Development 是可选分支;资产图片提示词和分镜在资产确认后可以
54
- 并行,不互相等待。需要把已接受的视觉方向变成可比较的代表帧时,读
55
- [look-development.md](references/look-development.md)。
33
+ `项目开发/` 中的长材料分析与分集索引是可选分析工作区,不参与单集布局判定;写任何一集仍只维护
34
+ 该集的五份 creator-first Markdown。
56
35
 
57
- **产物可以直接入场**。 上游的可选环节缺失不构成阻塞:现成剧本可直接进入资产;已接受资产
58
- 可直接进入资产图片提示词;已接受剧本加资产可直接进入分镜;已接受镜头与关键帧可直接进入
59
- 视频提示词。只补建对应技能拥有的、确实缺少的必要产物,绝不倒补虚构的创作简报或系列大纲。
36
+ 现成剧本可直接拆资产;已有视觉事实可直接写图片提示词或分镜;已有分镜可直接写视频提示词。
37
+ 不要为补齐名义流水线伪造上游。
60
38
 
61
- **请求含糊时不要追问技术细节**。 遇到"帮我把这集做完"这类请求,先展示当前的创作者可读
62
- 状态,再给出不超过三个有意义的动作,优先能解开当前交付阻塞的那个;不要拿 schema、事务或
63
- 存储格式去问创作者。
39
+ ## 执行请求
64
40
 
65
- ## 有界续跑
41
+ 1. 找到用户给出的项目或资料,只读当前任务的直接输入。
42
+ 2. 把用户点名的完整范围交给相应 owner;批次只控制上下文,自动续跑。
43
+ 3. 只有真实创作分叉才询问;不要拿 schema、目录、事务或检查器询问创作者。
44
+ 4. 范围完成后一次回报完成内容、关键决定、真实未决项和可选下一步。
45
+ 5. 不自动开始用户没点名的审查、归档或生产。
66
46
 
67
- 全链预览或“继续”每轮只授权一个 owner 的一个有界工作单元。写作、资产、图片提示词、分镜和
68
- 视频提示词按各自「每轮的工作单元」分批工作;完成当前批次后报告已覆盖范围、剩余范围与
69
- 下一步,并把控制权交还创作者。下一阶段、审查和生产各自需要明确的后续请求;生产还要先展示
70
- 准确 job 并取得确认。
47
+ ## 初始化与 Dashboard
71
48
 
72
- 审查尽量交给没有参与该版本创作的 reviewer,以减少自证偏差;运行环境不支持隔离上下文时,
73
- 如实标注为自检即可。CLI 只记录 verdict、reviewer 标签和备注,不收集或伪造上下文证明。
74
- Reviewer 给出证据和修改请求,内容仍由原 owner 修改。
49
+ 需要项目配置时运行:
75
50
 
76
- ## 初始化
77
-
78
- 没有项目且用户要初始化时:
51
+ ```bash
52
+ python3 {技能目录}/scripts/project_tool.py init ./my-drama --title "示例短剧"
53
+ ```
79
54
 
80
- 1. 确定标题、项目语言、提示词语言、画幅和路径;集数或时长未知就留空。
81
- 2. 运行 `init` 建立最小目录和空状态,不覆盖现有文件。
82
- 3. 将制作形态与视觉方向保持为 `unset`,告诉创作者下一个最有用的选择。
83
- 4. 创作者定下形态、方向、播放面或集长目标后,把这条决定发布并接受为一条创作者决策记录,
84
- 再用 `set-authority` 写回 `short-drama.json`,让下游读到已 `accepted` 的值。
55
+ `init` 只建立配置和空目录;第一次创作时再把文档写入 `剧集/<EP>/`,不预建空文件。
56
+ 项目定位与安全写入见 [运行预检](references/runtime-preflight.md)。用户明确要求 Dashboard 时运行:
85
57
 
86
- 初始化不自动生成故事、剧本或资产设定。
58
+ ```bash
59
+ python3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --port 0 --open
60
+ ```
87
61
 
88
- ## 本地 Dashboard
62
+ Dashboard 展示和编辑创作文件,不负责工作流编排或媒体生产。
89
63
 
90
- Dashboard 是项目内容的轻量展示与有限文本编辑层,核心能力仍在各 skill 中。当用户调用
91
- `$short-drama dashboard` 时:
64
+ ## 项目级创作决定
92
65
 
93
- 1. 项目存在时读取 `status`;浏览普通目录时直接使用该目录。
94
- 2. 项目内启动时用项目根作为 workspace;否则使用用户给出的容器目录或当前目录。
95
- 3. 从本技能安装目录运行:
66
+ 制作形态、视觉方向、播放面和集长目标确实约束多个阶段时,展示选择及影响后由用户决定。
67
+ Look Development 是可选分支,不是进入图片提示词或分镜的固定门槛。
96
68
 
97
- ```text
98
- python3 <short-drama-skill-dir>/scripts/dashboard_server.py --workspace <workspace> --port 0 --open
99
- ```
69
+ 按问题只读取一份相关知识:
100
70
 
101
- 4. 回报脚本打印的完整回环地址与停止方式,并保持进程运行。
71
+ - 规则分级与 owner 路由:[规则与路由索引](references/knowhow-index.md)
72
+ - 输出语言、稳定 ID、所有权与安全边界:[契约与所有权](references/contract-and-ownership.md)
73
+ - 实拍、二维、三维、水墨、Q 版、国漫的形态差异:[制作形态](references/production-form-profiles.md)
74
+ - 需要比较代表帧时:[Look Development](references/look-development.md)
75
+ - 参考图能控制什么:[参考角色](references/reference-roles.md)
76
+ - 遮挡、延迟揭示和观众知情时机:[观众揭示](references/audience-reveal.md)
77
+ - 母版、补拍和替代版的职责:[补拍与替代](references/pickup-and-alternate.md)
102
78
 
103
- Dashboard 只读取 workspace 内的文件;密钥、生产 adapter 与工作流编排都在它之外。它按项目
104
- 和剧集展示正文、结构化卡片以及已有图片/音频/视频;保存只表示保存文件,不代表创作者确认。
105
- 每次启动使用独立本机会话,项目 API 只接受该会话。参数与安全边界见
106
- [lifecycle-commands.md](references/lifecycle-commands.md#dashboard-启动)。
79
+ ## 生产与交付边界
107
80
 
108
- ## 项目命令
81
+ 外部生产永远保留 `preview -> explicit confirm -> run`。归档只复制用户点名的当前文档和成品,排除
82
+ 私有输入、凭据、绝对路径与隐藏运行状态;不为归档补造审批、哈希或第二套内容。
109
83
 
110
- 从本技能安装目录调用 `scripts/project_tool.py`:
84
+ ## 安装维护
111
85
 
112
- | 命令 | 用途 |
113
- |---|---|
114
- | `init` | 初始化最小项目 |
115
- | `status` | 显示项目与产物状态 |
116
- | `publish` | 原子发布一项产物并记录它的直接输入 |
117
- | `accept` | 记录创作者接受或拒绝当前版本 |
118
- | `review` | 记录当前版本的复核结论 |
119
- | `set-authority` | 把已接受的创作者决策写回制作形态、视觉方向、播放面或集长目标 |
120
- | `package` | 打包当前已确认且复核通过的文本/JSON |
121
- | `verify` | 用交付校验和检查打包结果是否被改动 |
122
-
123
- 完整示例见 [lifecycle-commands.md](references/lifecycle-commands.md)。单文件发布用临时文件与
124
- 原子替换完成。
125
-
126
- ## 状态与修订
127
-
128
- 对创作者只使用六种状态:
129
-
130
- - `draft`:尚未发布;
131
- - `needs_confirmation`:等待创作者决定;
132
- - `accepted`:创作者已接受;
133
- - `revise`:创作者或 reviewer 要求修改;
134
- - `approved`:当前版本已确认且复核通过;
135
- - `update_needed`:输出或某个直接输入已经变化,需要重新发布。
136
-
137
- 状态在读取时核对当前文件,不把过期传播写回整个项目。修订时只说明负责技能、语义变化、
138
- 直接受影响的产物和下一步;重新发布会清除该产物旧的接受与复核结果,不触碰无关产物。
139
- 除非诊断需要,不向创作者显示内部 hash 或原始状态文件。
140
-
141
- ## 交付
142
-
143
- 先由 `$short-drama-review` 复核,再用 `package` 打包。包内只收录明确选择的、当前状态为
144
- `approved` 的文本和 JSON,并记录有意省略项;二进制媒体、非公开输入、机器状态、绝对路径、
145
- 凭据和未批准草稿不进入文本交付包。`verify` 检查清单、校验和及未登记新增文件。
146
-
147
- ## 边界
148
-
149
- - 图片、视频和 TTS 生产只由 `$short-drama-produce` 在展示准确 job 并取得本次明确确认后执行;
150
- 其他技能不直接调用生成服务。
151
- - 运行时不检索外部或非公开生产来源。
152
- - 不把别处案例提升为项目定律。
153
- - 语义冲突不静默修复;不明外部改动由创作者选择保留或重做。
86
+ 只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
@@ -1,74 +1,21 @@
1
1
  # 观众此刻可以知道什么
2
2
 
3
- 背影、腿部入画、门缝、画外声、浅景深和遮挡不只是画面风格。它们同时决定观众**何时**
4
- 知道一个人是谁、看见那张字条、或者发现门后有人。
3
+ 背影、门缝、画外声、浅景深和遮挡会决定观众何时知道一个人是谁、看见证据或发现门后有人。
4
+ 需要同时防两种错:该给的信息被漂亮构图挡住;不该给的信息被镜头提前泄露。
5
5
 
6
- 这件事容易被当成构图偏好处理,于是出两种错,而且两种都不会被"这镜好看吗"抓到:
6
+ ## 一条事实一条判断
7
7
 
8
- - 本镜本来要交代证据,却被一个漂亮的遮挡挡住了——**该给的没给**;
9
- - 剧本只允许观众先看到鞋和停步位置,结果正脸提前露出来——**不该给的给了**。
8
+ 对每个有揭示时机的事实,在对应 `SHOT-...` 下写清:
10
9
 
11
- 所以每个镜头要按**事实**分开记录可见性,而不是给整镜写一句"稍后揭示"。
10
+ - **事实来源**:来自哪个场景 ID、对白、动作或画面文字;
11
+ - **本镜权限**:现在展示,还是暂时扣住;
12
+ - **可见/可听载体**:观众具体能看到或听到什么;
13
+ - **释放时机**:若暂时扣住,在哪个可见事件后释放;
14
+ - **保护方法**:靠遮挡、景深、画外声、光线或构图怎样实现;
15
+ - **戏剧理由**:为什么这个时机改变理解或压力。
12
16
 
13
- ## 一条记录只管一个事实
17
+ 同一镜头里“来者认识主角”和“来者是谁”是两件事:可以让旧称呼先从画外传来,同时让来者的脸
18
+ 留在暗处。揉成一句“稍后揭示”,下游就无法分别处理声音和身份。
14
19
 
15
- 这些记录写在镜头的 `audience_visibility[]` 里(字段属于 storyboard 的 shot 记录)。
16
-
17
- 同一个镜头里,"这人是谁"和"他手里有什么"是两件独立的事,可以有完全不同的揭示条件。
18
- 揉成一句,下游就只能一起放或一起收——所以 `audience_visibility` **按事实分条**,
19
- 不是每镜一条。
20
-
21
- 每条记录写清五项:
22
-
23
- | 字段 | 回答什么 |
24
- |---|---|
25
- | `fact` | 这条管的是哪一个具体事实 |
26
- | `source_ref` | 这个揭示义务来自剧本的哪一段 |
27
- | `permission` | 现在就给(`show_now`)还是先扣住(`withhold_now`) |
28
- | `carrier` | 观众此刻能看见或听见的是什么 |
29
- | `reveal_trigger` / `protection_method` / `rationale` | 什么时候放、靠什么扣住、为什么 |
30
-
31
- ### 合成示例
32
-
33
- 一个镜头里,观众要听见有人叫出主角的旧称呼(说明来者认识他),但**不能**看到来者的脸。
34
-
35
- `audience_visibility` 所在的 `shots.jsonl` 在第一行声明本文件引用到的上游快照:
36
-
37
- ```json
38
- {"record_type":"sources","schema_version":"1.0.0","sources":{"screenplay":{"owner":"short-drama-write","artifact":"剧集/EP001/screenplay.md"}}}
39
- ```
40
-
41
- 数组里每条只写快照键和记录 ID:
42
-
43
- ```json
44
- [
45
- {
46
- "fact": "来者认识主角的旧身份",
47
- "source_ref": {"src": "screenplay", "record_id": "BLK-EP001-SC003-A02"},
48
- "permission": "show_now",
49
- "carrier": "画外一声旧称呼,主角闻声停手",
50
- "reveal_trigger": "对方开口",
51
- "rationale": "本镜必须让观众意识到主角被认出来了"
52
- },
53
- {
54
- "fact": "来者是谁",
55
- "source_ref": {"src": "screenplay", "record_id": "BLK-EP001-SC003-A05"},
56
- "permission": "withhold_now",
57
- "carrier": "只有门框边的一只手和影子",
58
- "protection_method": "来者留在景深之外,不进正面光",
59
- "reveal_trigger": "下一场推门进屋时",
60
- "rationale": "身份揭示是场末的转折,提前露脸会让那一下失效"
61
- }
62
- ]
63
- ```
64
-
65
- 两条各有各的条件:**声音放,脸扣住**。写成一条就做不到这件事。
66
-
67
- ## 不是"神秘感越多越好"
68
-
69
- 扣住信息本身没有价值,它只在为后面某个具体时刻服务时才有价值。所以
70
- `withhold_now` 必须写出 `reveal_trigger`——说不出什么时候放,就说明这不是设计,
71
- 只是没想清楚。
72
-
73
- 审查时同时核对两侧:原文此刻**允许**透露什么,以及本镜**必须**传达什么。
74
- 只评价构图是否漂亮的审查,抓不到这类缺陷。
20
+ 扣住信息本身没有价值;说不出何时释放,就说明还没完成设计。审查时同时核对原文此刻允许透露什么,
21
+ 以及本镜必须让观众明白什么。
@@ -1,94 +1,40 @@
1
- # Contract And Ownership
1
+ # 契约与所有权
2
2
 
3
- ## Contents
4
-
5
- 1. Project flow
6
- 2. Runtime path ownership
7
- 3. Output language contract
8
- 4. Stable identities and references
9
- 5. Rule classes
10
- 6. Trust and file safety
11
-
12
- ## Project flow
3
+ ## 工作流不是瀑布
13
4
 
14
5
  ```text
15
- development? -> screenplay -> assets -> image prompts
16
- \-> storyboard -> video prompts
17
- \-> confirmed production -> review -> delivery
6
+ 开发? -> 剧本 -> 视觉设定 -> 图片提示词
7
+ \-> 分镜 -> 视频提示词
8
+ \-> 明确确认后的媒体生产
18
9
  ```
19
10
 
20
- This is a routing map, not a mandatory waterfall. Direct entry is valid, and Look Development is optional.
21
- Each artifact records only the project files it directly read. There is no recursive stale-propagation graph.
22
-
23
- ## Runtime path ownership
24
-
25
- `project_tool.py` does not contain a registry mapping business paths to skill names. The first published artifact
26
- claims its output paths in project state, and another artifact cannot silently overwrite those paths. Input,
27
- delivery and machine-state roots remain protected regardless of owner name.
11
+ 可以从任一已有材料直接进入;Look Development 和审查都按需发生。每个 owner 只修改自己的 Markdown,
12
+ 引用上游可见事实,但不静默改写它们。
28
13
 
29
- Each skill's own stage contract describes its semantic responsibility. An artifact may project another artifact's
30
- facts but may not silently redefine them. A reviewer requests changes; the responsible skill edits its source.
14
+ ## 输出语言
31
15
 
32
- ## Output language contract
33
-
34
- | Field | Governs | Default |
16
+ | 内容 | 有项目配置时 | 独立任务默认 |
35
17
  |---|---|---|
36
- | `short-drama.json#/language` | creator-facing artifacts, findings, status and Dashboard | `zh-CN` |
37
- | `short-drama.json#/format/prompt_language` | copyable image/video prompt bodies | `en` |
38
-
39
- Creator-facing prose follows `language`. Prompt bodies follow `prompt_language`. Depicted speech and on-screen text
40
- come from accepted story/asset facts, not from either description-language setting.
41
-
42
- ## Stable identities and references
43
-
44
- Use stable IDs such as `EP001`, `SC001`, `BLK-...`, `CHAR-...`, `LOOK-...`, `LOC-...`, `PROP-...`,
45
- `SHOT-...`, `KEY-...` and `MOTION-...`. Display names may change without changing identity.
46
-
47
- For cross-artifact references, a file declares each upstream snapshot once, and every reference names that
48
- declaration plus the record it points at.
49
-
50
- A `.jsonl` file declares them on its first line:
51
-
52
- ```json
53
- {"record_type":"sources","schema_version":"1.0.0","sources":{"screenplay-index":{"owner":"short-drama-write","artifact":"剧集/EP001/screenplay-index.jsonl"}}}
54
- ```
55
-
56
- A `.json` file uses a top-level `"sources"` object with the same entries. A reference is then:
57
-
58
- ```json
59
- {"src": "screenplay-index", "record_id": "BLK-EP001-SC001-A01", "field": "/text"}
60
- ```
18
+ | 创作者可读说明与审查 | `short-drama.json#/language` | 用户当前语言 |
19
+ | 图片、关键帧、视频的可复制正文 | `short-drama.json#/format/prompt_language` | `en` |
61
20
 
62
- `sources` keys are short, lowercase and derived from the artifact filename; each is unique and stable inside its
63
- file, and one artifact is declared under one key. `owner` and the project-relative `artifact` identify authority.
64
- `record_id` and `field` are optional selectors, and a reference pointing at a whole artifact keeps `src` alone.
65
- `authority` (`accepted` or `candidate`) belongs to the individual reference, because one snapshot can be read at
66
- different authority levels by different references. Do not copy whole authoritative values into consumers, and do
67
- not create self-references. A `sources` entry names the artifact the file was written against by `owner` and
68
- `artifact` only — no digest. Bytes are compared by the tool, in lifecycle state and delivery checksums, and that is not
69
- user-supplied lifecycle evidence and does not drive transitive invalidation.
21
+ 两种语言互相独立;画面中的对白和可读文字来自剧本/视觉事实,不由描述语言推断。
70
22
 
71
- ## Rule classes
23
+ ## 稳定身份与引用
72
24
 
73
- - `structural_invariant`: locally provable; a script may block.
74
- - `reviewed_invariant`: semantic obligation; a reviewer may request revision.
75
- - `craft_default`: usually useful, but creator intent may override it.
76
- - `taste_option`: present alternatives; never block by itself.
25
+ 使用创作者可见的稳定 ID:`EP001-SC001`、`IMG-...`、`SHOT-...`、`MOTION-...`。显示名可以改变,
26
+ 身份不因此改变。跨文档引用直接写这些 ID;不写哈希、内部路径、隐藏状态或第二套 record ID。
77
27
 
78
- Word counts, shot counts, emotional curves and patterns seen elsewhere are not structural invariants unless the
79
- creator explicitly chose them as format constraints.
28
+ ## 规则分级
80
29
 
81
- ## Trust and file safety
30
+ - `structural_invariant`:本地可证明的引用、ID、算术或显式矛盾;
31
+ - `reviewed_invariant`:需要结合语义证据判断的义务;
32
+ - `craft_default`:通常有效,但创作者可以说明理由覆盖;
33
+ - `taste_option`:表达选择,不能单独阻断。
82
34
 
83
- Deterministic suite scripts do not make outbound connections. Confirmed production may launch a project-external,
84
- locally configured adapter without a shell; that adapter owns any provider SDK/API access and reads credentials from
85
- its environment or system store. Released skills do not retrieve external or private production sources at runtime.
86
- Do not ship private identifiers, plot passages, prompt sentences, URLs, user data or credentials.
35
+ 字数、镜头数、情绪曲线和案例配方不是通用结构门槛。
87
36
 
88
- Creator input under `输入/` is immutable to publication commands. Machine state lives under `.short-drama/` and
89
- delivery under `交付/`; neither is an owner publication target. Text/JSON publication validates all sources before
90
- writing and replaces each target atomically under one project lock. A crash cannot expose a partially written file;
91
- rerun the command to continue. Unknown external edits are never silently overwritten.
37
+ ## 信任与文件安全
92
38
 
93
- Legacy v0.3 state remains readable. The next state-changing command rewrites only the compact artifact record; old
94
- transaction and propagation fields are not carried forward.
39
+ 普通创作不联网。实际媒体生产只允许项目外 adapter 读取环境凭据,并始终经过
40
+ `preview -> explicit confirm -> run`。不要把私有输入、凭据、绝对路径或非公开观察写入可交付文档。
@@ -0,0 +1,79 @@
1
+ # 五份创作文档
2
+
3
+ 这是一份建议格式,不是 schema。优先让人一眼读懂;只有跨文档引用和投产定位需要稳定 ID。
4
+
5
+ ## `剧本.md`
6
+
7
+ - 一级标题必须以集号开头,例如 `# EP001 集名`。
8
+ - 每场用 `## EP001-SC001 内 · 地点 · 时间/天气`(空间性质也可写 `外` 或 `内外`)。
9
+ - 对白使用 `角色(可选表演提示):台词`;画外音、画外对白、声音、可见文字、连续性和转场分别使用 `[VO]`、`[OS]`、`[SFX]`、`[画面文字]`、`[连续性]`、`[转场]`,不要把含冒号的动作叙述误写成对白。
10
+ - 不为每段台词生成 block ID,不另写节拍表、索引或录音表;用户明确需要时再做。
11
+
12
+ ## `视觉设定.md`
13
+
14
+ 按人物、造型、地点和道具分节。每项只写后续生成真正需要保持的识别锚点、当前状态与变化原因,
15
+ 不要抄剧情摘要,也不要把瞬时姿势或镜头角度升级成新资产。
16
+
17
+ ```markdown
18
+ ## 人物 · 江辰
19
+ - 识别锚点:窄长眼、左眉尾旧疤、肩背略绷。
20
+ - 本集造型:深灰旧西装,右袖口有雨水深痕。
21
+ - 状态变化:EP001-SC003 后右手掌沾血。
22
+ ```
23
+
24
+ ## `分镜.md`
25
+
26
+ 每镜一个二级标题。镜头 ID 在本集内唯一并保持稳定;修订镜头内容时不要无故换 ID。
27
+
28
+ ```markdown
29
+ ## SHOT-EP001-001 · 门外停步
30
+ - 来源:EP001-SC001
31
+ - 时长:4s
32
+ - 目的:先让观众看见他不敢进门,再揭示门内争吵。
33
+ - 景别/机位:中近景,门框外侧,轻微低机位。
34
+ - 起点:江辰右手悬在门把上方。
35
+ - 终点:手收回,门内传来玻璃落地声。
36
+ - 参考:IMG-JIANGCHEN-SHEET;IMG-OLD-DOOR;IMG-CORRIDOR-NIGHT。
37
+
38
+ ### 冻结关键帧提示词
39
+ > 按项目提示词语言编写的冻结瞬间正文……
40
+ ```
41
+
42
+ 只写有镜头职责的镜头。关键帧提示词必须与该镜“起点”一致;终点才出现的文字、动作或状态不得
43
+ 提前进入静帧,也不要把整段动作塞进静帧。
44
+
45
+ ## `图片提示词.md`
46
+
47
+ 每项一个可投产的角色板、场景板、道具板或状态图。标题使用 `IMG-...` ID;正文放在
48
+ `### 可复制提示词` 的引用块里,前面只保留用途和参考约束。
49
+
50
+ ```markdown
51
+ ## IMG-JIANGCHEN-SHEET · 江辰角色板
52
+ - 用途:锁定身份、体态和本集造型。
53
+ - 参考:无;若有参考图,只说明它控制什么。
54
+
55
+ ### 可复制提示词
56
+ > 按项目提示词语言编写的正文……
57
+ ```
58
+
59
+ ## `视频提示词.md`
60
+
61
+ 与分镜一一对应时沿用镜头号并使用 `MOTION-...` ID。正文只描述从已确认起点到终点的变化,
62
+ 不重复静帧已经锁定的外观。
63
+
64
+ ```markdown
65
+ ## MOTION-EP001-001 · 门外停步
66
+ - 分镜:SHOT-EP001-001
67
+ - 时长:4s
68
+ - 起始帧:SHOT-EP001-001 的冻结关键帧
69
+ - 终点:右手收回;门内玻璃落地;人物视线转向门缝。
70
+
71
+ ### 可复制提示词
72
+ > 从右手悬停的已确认起始帧开始……
73
+ ```
74
+
75
+ ## 共通规则
76
+
77
+ - 提示词正文必须可直接复制,不放占位符、流程备注或 QA 结论。
78
+ - 引用使用文档里看得见的场景/镜头/提示词 ID;不写文件哈希和内部路径。
79
+ - 用户没要求的字段不为“完整”而补造。
@@ -1,82 +1,56 @@
1
- # Creator Workflow
1
+ # Creator-first 工作流
2
2
 
3
- ## Creator authority
3
+ ## 唯一落盘
4
4
 
5
- `short-drama.json#/creator_authority` stores accepted creator constraints, visual direction and production
6
- profile choices. A skill may draft choices, but only the creator or an explicitly authorized delegate can accept
7
- them. If nobody has decided, keep the artifact pending; do not infer acceptance from silence or from a request to
8
- preview the whole pipeline.
5
+ 每集按需维护五份创作者可读 Markdown:
9
6
 
10
- Use project-relative paths and stable record IDs when one artifact points to another. Human-facing records do not
11
- need lifecycle digests. Deterministic source indexes may still carry byte spans because their job
12
- is exact source extraction, not workflow state.
7
+ | 阶段 | owner | 文件 |
8
+ |---|---|---|
9
+ | 剧本 | `short-drama-write` | `剧集/<EP>/剧本.md` |
10
+ | 视觉资产 | `short-drama-assets` | `剧集/<EP>/视觉设定.md` |
11
+ | 分镜与冻结关键帧 | `short-drama-storyboard` | `剧集/<EP>/分镜.md` |
12
+ | 图片提示词 | `short-drama-image-prompts` | `剧集/<EP>/图片提示词.md` |
13
+ | 视频提示词 | `short-drama-video-prompts` | `剧集/<EP>/视频提示词.md` |
13
14
 
14
- ## Entry points
15
+ 没有内容时不预建空文件。一个请求只创建它实际需要的文档;从剧本、视觉设定、分镜或提示词任一
16
+ 阶段直接进入都合法,不为补齐名义流水线伪造上游。
15
17
 
16
- | Creator asks for | Owner | Minimum input |
17
- |---|---|---|
18
- | Develop an idea or episode map | `short-drama-develop` | brief or conversation |
19
- | Analyze a long source | `short-drama-novel-analyze` | preserved source file |
20
- | Write or revise an episode | `short-drama-write` | idea, episode card, outline or script |
21
- | Extract assets | `short-drama-assets` | current script |
22
- | Create image prompt specs | `short-drama-image-prompts` | current asset facts |
23
- | Design shots/keyframes | `short-drama-storyboard` | current script and asset facts |
24
- | Create video prompt specs | `short-drama-video-prompts` | current shots/keyframes |
25
- | Produce images, video or TTS | `short-drama-produce` | current bounded job plus explicit confirmation after preview |
26
- | Review | `short-drama-review` | bounded artifact set |
27
- | Initialize, continue, show or deliver | `short-drama` | project path or target path |
28
-
29
- Direct entry is valid. Do not fabricate upstream files merely to make a nominal pipeline complete.
30
-
31
- ## Branches
32
-
33
- ```text
34
- direction / story development (when needed)
35
- |
36
- screenplay
37
- |
38
- assets
39
- / \
40
- image prompts storyboard -> video prompts
41
- \ /
42
- confirmed production
43
- |
44
- review -> delivery
45
- ```
46
-
47
- Look Development is optional. Image prompts and storyboard are sibling branches after asset facts exist.
48
-
49
- ## Preview, confirmation and revision
50
-
51
- A request for an end-to-end preview authorizes drafting, not acceptance. Its runtime contract is **one bounded work unit per turn**:
52
-
53
- 1. choose one owner stage; for a high-fanout stage, choose one explicit contiguous batch;
54
- 2. read only that unit's direct inputs, draft or revise it, and run its local structural checks;
55
- 3. persist a candidate without inventing creator acceptance;
56
- 4. report the included scope, remaining scope and next useful action, then **return control to the creator**.
57
-
58
- The turn ends at step 4. A creator message such as “continue” authorizes the next bounded unit. The next owner
59
- stage, review and production each begin on their own explicit request; review also runs when an explicitly
60
- requested delivery needs a verdict. Undecided work stays in `needs_confirmation`, and delivery waits until the
61
- creator accepts the relevant outputs.
62
-
63
- For a revision:
64
-
65
- 1. identify the artifact and owner;
66
- 2. read only its direct current inputs;
67
- 3. show the semantic change and what should remain unchanged;
68
- 4. let the owner publish the revision;
69
- 5. request creator acceptance when canonical meaning changed;
70
- 6. report whether a separate bounded review is still needed; do not start it automatically.
71
-
72
- Changing an upstream file does not recursively rewrite project state. A consumer that directly recorded that file
73
- shows `update_needed`; republish the consumer when the creator actually wants it refreshed.
74
-
75
- Rendered prompt Markdown is a view of its structured spec. If someone edits the rendered view, either regenerate
76
- it, adopt the change into the spec, or reconcile both explicitly.
77
-
78
- ## Delivery boundary
79
-
80
- Deliver only explicitly selected, current, approved text and JSON in the text package. Produced media remains in
81
- its project production directory and may be exported by a separate creator-approved media handoff. Exclude private
82
- sources, credentials, absolute paths and machine state. `verify` checks checksums; it does not judge creative quality.
18
+ 单集创作主链不落盘 JSON/JSONL、索引、指纹、覆盖表、QA 报告、审核表、交接胶囊或恢复状态。
19
+ 需要 ID 时写进 Markdown 标题;结构检查和批次状态留在本轮上下文,不成为第六份创作文档。建议
20
+ 写法见 [五份创作文档](creator-documents.md)。
21
+
22
+ 长篇原著拆解或多集材料识别可以在 `项目开发/` 使用机器索引;它们是用户点名时才建立的可选分析
23
+ 工作区,不是单集创作真相。其存在不会改变 `剧集/<EP>/` 的五文档布局,也不能要求单集 owner
24
+ 补造并行结构化产物。
25
+
26
+ 创作者说明跟随项目语言。图片、关键帧和视频的可复制正文跟随 `prompt_language`;没有
27
+ `short-drama.json` 时默认使用 `en`,同一任务保持一致。两种语言互相独立,不能用一个推断另一个。
28
+
29
+ ## 请求范围
30
+
31
+ 用户点名的范围就是本轮范围。“写完这一集”完成整集;“从剧本做到视频提示词”依次完成所点名
32
+ 阶段。场次、资产组和镜头组只是内部上下文批次,通过后自动继续,不逐批交还控制权,也不为每个
33
+ 中间文件另开接受、审查或 QA 回合。
34
+
35
+ 只在三处停下:
36
+
37
+ 1. 点名范围已经完成;
38
+ 2. 缺失事实形成会显著改变剧情或视觉方向的真实创作分叉;
39
+ 3. 下一步会调用外部生产,必须先展示精确 job 并取得显式确认。
40
+
41
+ 结构检查服务于发现错误,不是创作门禁。能在当前文档直接修正的问题直接修正;审查、归档和媒体
42
+ 生产只有用户点名时开始。安装 selftest、全量 QA 和 demo 验证属于技能维护,不属于普通创作请求。
43
+
44
+ ## 创作质量
45
+
46
+ 简化文件数量不等于降低内容标准。各 owner 按具体问题读取自己的 craft references,检查剧情因果、
47
+ 人物声音、资产身份、空间连续性、镜头职责、可生成性和提示词边界。规则与路由总表见
48
+ [knowhow-index.md](knowhow-index.md)。最终回报只说明已完成范围、关键创作决定、真实未决问题和可选
49
+ 下一步,不汇报内部流水线噪音。
50
+
51
+ ## 生产边界
52
+
53
+ 图片、视频、TTS 和音乐生产仍遵守 `preview -> explicit confirm -> run`。生产工具可以在隐藏运行目录
54
+ 保存 job、确认和审计记录;这些是付费/外部副作用的必要边界,不要求模型把创作内容再抄成长期
55
+ JSON/JSONL。job 必须把拥有当前提示词的 Markdown 写入 `source`,输出写到
56
+ `剧集/<EP>/制作成果/`;任何提示词、参数、输入或输出路径变化都需要重新预览和确认。