scriptnow-cli 0.4.4__tar.gz → 0.4.19__tar.gz

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 (67) hide show
  1. {scriptnow_cli-0.4.4/scriptnow_cli.egg-info → scriptnow_cli-0.4.19}/PKG-INFO +1 -1
  2. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/README.md +37 -19
  3. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/README.md +40 -22
  4. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/__init__.py +1 -1
  5. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/scriptnow_cli.py +1581 -455
  6. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/skills/SKILL.md +13 -5
  7. scriptnow_cli-0.4.19/cli_anything/scriptnow/skills/references/operations.md +88 -0
  8. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/skills/references/planning.md +40 -15
  9. scriptnow_cli-0.4.19/cli_anything/scriptnow/skills/references/recreation.md +13 -0
  10. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/skills/references/review.md +18 -2
  11. scriptnow_cli-0.4.19/cli_anything/scriptnow/skills/references/writing.md +37 -0
  12. scriptnow_cli-0.4.19/cli_anything/scriptnow/utils/json_input.py +140 -0
  13. scriptnow_cli-0.4.19/cli_anything/scriptnow/utils/request_identity.py +186 -0
  14. scriptnow_cli-0.4.19/cli_anything/scriptnow/utils/review.py +53 -0
  15. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19/scriptnow_cli.egg-info}/PKG-INFO +1 -1
  16. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/scriptnow_cli.egg-info/SOURCES.txt +13 -0
  17. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_append_commands.py +16 -0
  18. scriptnow_cli-0.4.19/tests/test_blueprint_request_identity.py +346 -0
  19. scriptnow_cli-0.4.19/tests/test_chapter_request_identity.py +222 -0
  20. scriptnow_cli-0.4.19/tests/test_execution_attempt_commands.py +297 -0
  21. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_guide_chain.py +37 -27
  22. scriptnow_cli-0.4.19/tests/test_interpret_propose.py +193 -0
  23. scriptnow_cli-0.4.19/tests/test_json_input_paths.py +340 -0
  24. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_outline_commands.py +186 -13
  25. scriptnow_cli-0.4.19/tests/test_planning_status_direction.py +36 -0
  26. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_review_commands.py +128 -1
  27. scriptnow_cli-0.4.19/tests/test_scene_request_identity.py +201 -0
  28. scriptnow_cli-0.4.19/tests/test_translate_local_commands.py +92 -0
  29. scriptnow_cli-0.4.19/tests/test_unbound_aliases.py +235 -0
  30. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/operations.md +0 -54
  31. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/writing.md +0 -29
  32. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/LICENSE +0 -0
  33. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/README.pypi.md +0 -0
  34. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/__init__.py +0 -0
  35. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/__main__.py +0 -0
  36. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/skills/agents/openai.yaml +0 -0
  37. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/skills/references/methods.md +0 -0
  38. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/skills/references/setup.md +0 -0
  39. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/skills/references/storyboard.md +0 -0
  40. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/ui.py +0 -0
  41. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/utils/__init__.py +0 -0
  42. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/utils/browser_login.py +0 -0
  43. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/utils/device_login.py +0 -0
  44. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/utils/diag.py +0 -0
  45. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/utils/hosted.py +0 -0
  46. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/utils/session.py +0 -0
  47. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/cli_anything/scriptnow/utils/upgrade.py +0 -0
  48. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/pyproject.toml +0 -0
  49. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/scriptnow_cli.egg-info/dependency_links.txt +0 -0
  50. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/scriptnow_cli.egg-info/entry_points.txt +0 -0
  51. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/scriptnow_cli.egg-info/requires.txt +0 -0
  52. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/scriptnow_cli.egg-info/top_level.txt +0 -0
  53. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/setup.cfg +0 -0
  54. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/setup.py +0 -0
  55. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_batch_commands.py +0 -0
  56. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_browser_login.py +0 -0
  57. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_device_login.py +0 -0
  58. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_document_revision_state.py +0 -0
  59. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_host_refresh.py +0 -0
  60. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_hosted_instance.py +0 -0
  61. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_json_errors.py +0 -0
  62. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_run_commands.py +0 -0
  63. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_session.py +0 -0
  64. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_session_isolation.py +0 -0
  65. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_skill_bundle.py +0 -0
  66. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_storyboard_commands.py +0 -0
  67. {scriptnow_cli-0.4.4 → scriptnow_cli-0.4.19}/tests/test_upgrade.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scriptnow-cli
3
- Version: 0.4.4
3
+ Version: 0.4.19
4
4
  Summary: ScriptNow 创作 CLI —— 从灵感到成书交付的一站式命令行(CLI-Anything 模式)
5
5
  Author: ScriptNow
6
6
  License: MIT
@@ -36,13 +36,17 @@
36
36
  - **双域阶段语义**:叙事阶段不决定小说卷边界;剧本 `volume_two` 表示每集场数,阶段比例据此按每集场数解释。
37
37
  - **新增卷章 = 纯追加(服务端硬门禁)**:`storymap append-volume` / `storymap append-chapters` / `storymap append-phase` 只尾部新增,已有卷章
38
38
  id/序号/标题/字数完全不动;纯追加形状(含任意位置纯新增)的全量提案被服务端拒绝并指引追加通道;**全置换(retained=0)的普通全量提案同样被拒绝**——恢复旧结构唯一合法通道是 `novel/script storymap-restore`(服务端按归档镜像校验放行),全新结构仅限首次创建(空结构)或 storymap-rebuild-* 隔离链;被替换的旧结构自动归档,平台「结构历史」可查看导出。
39
- - **集纲 / 章纲先于正文**:StoryMap 不能只提供 episode/scene 或 volume/chapter 容器。剧本每个
40
- `episode` 需填写平铺字段 `logline`、`active_goal`、`conflict`、`turn`、`state_changes`、`anchor_ids`,并给
41
- `title`(**改后的集名**)与 `source_titles`(原著章名原名,仅用于追溯);可用
42
- `script episode-outline <pid> <episode_id> @outline.json` 补单集;
43
- 小说每个 `chapter` 需填写嵌入的 `outline`(`summary`/`logline`、`active_goal`、`conflict`、`turn`、
44
- `state_changes`,锚点可来自 outline 或 beat);先运行
45
- `script/novel planning-quality`,全量通过并经作者采纳后才可写正文。历史章节(已有正文)可读可写,不受章纲字段缺失影响;新章节必须带完整章纲(提交前可用 `chapter outline-check` 自查、`chapter outline-example` 看结构示范)。
39
+ - **集纲 / 章纲先于正文,但体例两形任一即可**:StoryMap 不能只提供 episode/scene 或
40
+ volume/chapter 容器。剧本每个 `episode` 交付**任一种可读形态**:① 一段整段叙事
41
+ (`summary`;`logline` 与之等价);或 ② 三栏细化(`active_goal` + `conflict` + `turn` 齐备 ——
42
+ 缺一栏都不算一种形态)。`state_changes` **不是准入条件**(「没标注」≠「没有变化」,
43
+ 分析里以 `turns: null` / `turns_unannotated` 显式报出)。`anchor_ids` 仍**必填**,
44
+ 但它是**机器索引**而不是写作栏目,可由集级字段或本集任一节拍承载。
45
+ 另外仍须给 `title`(**改后的集名**)与 `source_titles`(原著章名原名,仅用于追溯);
46
+ 可用 `script episode-outline <pid> <episode_id> @outline.json` 补单集;
47
+ 小说每个 `chapter` 需填写嵌入的 `outline`(同一套两形判据:`summary`/`logline` 或三栏齐备,
48
+ 锚点可来自 outline 或 beat);先运行
49
+ `script/novel planning-quality`,全量通过并经作者采纳后才可写正文。历史章节(已有正文)可读可写,不受章纲字段缺失影响;新章节必须带可读章纲(提交前可用 `chapter outline-check` 自查、`chapter outline-example` 看结构示范)。
46
50
  - **集名必须改写(服务端硬门禁)**:提取阶段要求原著章名逐字照抄是对的,但**集名不能照抄**——网文标题
47
51
  多为引流词(如『第27章 你可懂了?』),照抄等于让观众从集名读不出本集发生了什么。集名要写进本集当下的
48
52
  冲突对象、主角动作或局面反转;只把章号摘掉、引流词原样保留同样被 `episode_title_rewrite` 判为照抄(revise)。
@@ -51,7 +55,7 @@
51
55
  与 `storymap-rebuild-propose` 会跑覆盖矩阵,**无任何一集承载即整体拒绝并列名**;确实要删的节点,在该蓝图
52
56
  锚点 payload 写 `intentionally_dropped: true` 与 `drop_reason: "理由"` 后重新采纳蓝图——不允许不声不响地丢掉一个关键节点。
53
57
  - **金句是可选锚点类别**:`kind: "quote"`(别名 quotes / signature_line / signature_lines / golden_line /
54
- key_line,原句放 `payload.description`)不是每部戏都盘得出来,所以**不要求六类齐全**;但一旦采纳入蓝图就受
58
+ key_line,原句放 `payload.description`)不是每部戏都盘得出来。**所有锚点类别都随故事需要选取,不要求凑齐六类**;但一旦采纳入蓝图就受
55
59
  覆盖矩阵约束——金句必须被**分配**到某一集,而不是碰运气看写手记不记得。名场面是场景、金句是可以单独传播的
56
60
  那一句话,两件事都要点名,不要互相代替。
57
61
  - **量化仪表盘(只读派生视图)**:`scriptnow script analytics <作品号> [--top N] [--json]` → 每集节拍密度
@@ -266,7 +270,7 @@ scriptnow review candidate-preview novel <pid> story_core_candidate <candidate_i
266
270
  scriptnow novel adopt-core <pid> <candidate_id> --review-token <采纳审阅凭证>
267
271
  scriptnow novel propose <pid> blueprint @blueprint.json --review-token <提交审阅凭证>
268
272
  scriptnow novel outline <pid> --text "一句梗概" --review-token <提交审阅凭证>
269
- scriptnow novel outline-adopt <pid> <candidate_id> --review-token <采纳审阅凭证>
273
+ scriptnow novel outline-adopt <pid> --candidate-id <candidate_id> --review-token <采纳审阅凭证>
270
274
  scriptnow novel rough-outline-example <pid> # 取结构建议
271
275
  scriptnow novel rough-outline-check <pid> @rough_outline.json # 自查
272
276
  scriptnow novel rough-outline <pid> @rough_outline.json --review-token <提交审阅凭证>
@@ -315,7 +319,7 @@ scriptnow review candidate-preview script <pid> story_core_candidate <candidate_
315
319
  scriptnow script adopt-core <pid> <candidate_id> --review-token <采纳审阅凭证>
316
320
  scriptnow script propose <pid> blueprint @blueprint.json --review-token <提交审阅凭证>
317
321
  scriptnow script outline <pid> --text "一句梗概" --review-token <提交审阅凭证>
318
- scriptnow script outline-adopt <pid> <candidate_id> --review-token <采纳审阅凭证>
322
+ scriptnow script outline-adopt <pid> --candidate-id <candidate_id> --review-token <采纳审阅凭证>
319
323
  scriptnow script rough-outline-example <pid> # 取结构建议
320
324
  scriptnow script rough-outline-start <pid> # 长篇开隔离链
321
325
  scriptnow script rough-outline-progress <pid> # 回读阶段进度
@@ -351,15 +355,17 @@ scriptnow script adopt-scene <pid> scene-1-1 <rev> --human --review-token <定
351
355
  | chapter | 小说章节:**outline(单章补纲)/ outline-batch(批量补纲)/ outline-check(章纲自查)/ outline-example(章纲结构示范)/ bible-example(人物圣经范例)** / list / show / generate / **batch(自动批次创作:2–3 章一批、串行、须作者审查)** / quality(--standard 内容/备案/千部)/ adopt / propose(本地回传) |
352
356
  | scene | 剧本场次(chapter 的剧本侧对称):list / show / generate / adopt(alias of script adopt-scene)/ propose(本地回传)/ batch(批量串行)/ quality / diff |
353
357
  | storymap | 跨域共享结构命令(novel+script 通用):state / generate / **append-volume(新增卷,纯追加)** / **append-chapters(新增章,纯追加)** / **append-phase(按叙事阶段提交下一未完成阶段,Novel 按全书章区间)** / **phases(按叙事结构推导的阶段计划预览)** / adopt(**高危,需 --confirm**) / **structures(内置 + 结构库已存模板)** / **structure-save(命名结构存库,--description/--medium 元数据)** / **structure-delete**;归档导出/恢复候选走分域命令 `novel storymap-restore` / `script storymap-restore`;隔离重建走各域 storymap-rebuild-* 链 |
354
- | novel | 小说创作链:story-cores / blueprint / adopt-core / adopt-blueprint / outline / outline-adopt / outline-status / graph(叙事图谱对账)/ planning-quality / planning-status / ready-check / propose(本地 JSON 导入)/ orchestrate / **rough-outline 平铺链:rough-outline / adopt / check / example** / **storymap-rebuild 隔离重建链:start / rebuild / rebuild-phase / rebuild-phase-preview / rebuild-check / rebuild-propose** / **storymap-archives / storymap-archive(旧结构归档读取)/ storymap-restore(归档导出恢复候选)**;重建须先采纳小说粗纲,阶段按全书章区间且不强制一阶段一卷 |
355
- | script | 剧本创作链:story-cores / blueprint / adopt-blueprint / adopt-core / outline / outline-adopt / outline-status / **rough-outline 分阶段链:-start / -phase / -progress / -propose / -phase-preview / -check** / episode-outline / **episode-outline-check / episode-outline-example** / **bible-example** / state / storymap / **storymap-phases / storymap-append-phase** / adopt-storymap(高危)/ planning-quality / **ready-check** / propose(本地 JSON 导入)/ adopt-scene / scene / scene-list / scene-show / scene-propose(--help-format/--example;--auto-adopt 已停用)/ scene-batch / scene-quality / scene-diff / quality-report / **storymap-rebuild 隔离重建链:start / rebuild / rebuild-phase / rebuild-phase-preview / rebuild-check / rebuild-propose** / **storymap-archives / storymap-archive(旧结构归档读取)/ storymap-restore(归档导出恢复候选)** / **analytics(分集量化仪表盘:节拍密度/冲突分量/角色戏份分布/关键节点覆盖矩阵,确定性算出,只读)** |
358
+ | novel | 小说创作链:story-cores / blueprint / adopt-core / adopt-blueprint / bible-candidates / bible-candidate-preview / bible-candidate-adopt / outline / outline-candidates / outline-adopt-preview / outline-adopt / outline-status / graph(叙事图谱对账)/ planning-quality / planning-status / ready-check / propose(本地 JSON 导入)/ orchestrate / **rough-outline 平铺链:rough-outline / adopt / check / example** / **storymap-rebuild 隔离重建链:start / rebuild / rebuild-phase / rebuild-phase-preview / rebuild-check / rebuild-propose** / **storymap-archives / storymap-archive(旧结构归档读取)/ storymap-restore(归档导出恢复候选)**;重建须先采纳小说粗纲,阶段按全书章区间且不强制一阶段一卷 |
359
+ | script | 剧本创作链:story-cores / blueprint / adopt-blueprint / adopt-core / outline / outline-candidates / outline-adopt-preview / outline-adopt / outline-status / **rough-outline 分阶段链:-start / -phase / -progress / -propose / -phase-preview / -check** / episode-outline / **episode-outline-check / episode-outline-example** / **bible-example / bible-candidates / bible-candidate-preview / bible-candidate-adopt** / state / storymap / **storymap-phases / storymap-append-phase** / adopt-storymap(高危)/ planning-quality / **ready-check** / propose(本地 JSON 导入)/ adopt-scene / scene / scene-list / scene-show / scene-propose(--help-format/--example;--auto-adopt 已停用)/ scene-batch / scene-quality / scene-diff / quality-report / **storymap-rebuild 隔离重建链:start / rebuild / rebuild-phase / rebuild-phase-preview / rebuild-check / rebuild-propose** / **storymap-archives / storymap-archive(旧结构归档读取)/ storymap-restore(归档导出恢复候选)** / **analytics(分集量化仪表盘:节拍密度/冲突分量/角色戏份分布/关键节点覆盖矩阵,确定性算出,只读)** |
356
360
  | storyboard | 分镜回填链:state / source-preflight / source-import / source-range / source-revoke / propose / **candidate-preview / adopt(内容绑定审阅凭证)** / assets / asset-add / continuity / **scene-board upload|generate|list|inspect|delete** / readiness / export;规划板是显式单场操作,不写 shot.frame_refs |
357
- | translate | 故事归化:create / analyze-source / target-contract / strategies / mappings |
361
+ | translate | 故事归化:create / state / contract / propose / adopt / review-unit / revise-unit / manuscript / export;旧 analyze-source 改为本地回填指引 |
362
+
363
+ 故事归化的原著文件及抽取全文留在 Agent 本地。Agent 阅读授权范围、记录来源指纹和定位锚点,围绕叙事功能与目标文化中的制度、关系和动机形成重构方案;只有实际迁移或重构文化载体时才提交映射,触及保护项时才等待作者裁决。用 `translate state`、`translate contract` 读取当前基线并保存契约回执,`run claim` 领取归化资源写资格,`translate propose <作品号> <kind> @file.json --contract @contract.json --execution-token <凭据> --request-key <请求号>` 回填候选。同请求重试复用同一契约文件。逐章回填前用带同一执行凭据的 `translate state --unit-key <工作包键> --read-kind facts|methods` 分别取得平台事实和所选方法全文;提交时带方法摘要,平台核实两次读取收据。读取不等于已应用,原著本地阅读仍只可自证。章节用 `review-unit` 审读,可用 `revise-unit` 另存人工候选,作者通过 review confirm/claim 和 `translate adopt` 独立采纳;`manuscript` 与 `export -o 稿.docx` 显示当前或历史基线。旧 `/analyze-source` 已停用,其他平台生成仅为显式后台后备。
358
364
  | cover | 封面:package(平台生成包装包)/ package-propose(Agent 自主提交包装文案)/ package-show / models / specs / generate(默认 1 张 1024×1600)/ list / delete |
359
365
  | export | 导出交付:options / create / **preview(交付范围审阅,返回一键审阅地址)** / download / zip;剧本 working DOCX 含每场制作信息 |
360
366
  | skill | Skill 工坊:**setup(按推荐预设与作者点选共建,服务端编译并挂载;剧本域含 Method DNA)** / craft(六问深度共创、预检、确认、挂载回读)/ list / create / **detail(个人 Skill 摘要)** / update / versions / archive / mount / **unmount(仅解除本项目挂载,需 --confirm)** / mounts / upload;**method-current / method-compile / method-compare / method-bind / method-resolve**(服务端 Method DNA 核心密码版本与 scope 解析);**growth**(方法论进化);**canary**(版本灰度) |
361
367
  | admin | 管理员专用(仅 is_admin,非管理员 403):status / tenant-status / skills / skill-show / skill-update / supply / provider-connect / model-add / image-model-add |
362
- | run | 运行排查:status / events |
368
+ | run | 执行权:claim / renew / revoke / stop-status;运行排查:status / events |
363
369
  | feedback | 发送严格无内容的 v2 质量事件;本地诊断默认关闭,须先 `doctor --enable-diagnostics MINUTES` 限时开启,`--send` 前再次交互确认;不采集参数、详情、备注、路径、ID 或正文 |
364
370
  | version / self-upgrade / config | 版本查看(--check 强制联网检查)/ 自动升级(先检查、用户确认后执行;启动时会后台低频提示新版)/ `config on|off` 开启或关闭「有新版本时自动升级」(默认关闭;开启后后台自动升级并在升级前后通知,不阻塞命令) |
365
371
 
@@ -490,6 +496,12 @@ SKILL.md 位于 [`cli_anything/scriptnow/skills/SKILL.md`](cli_anything/scriptno
490
496
  也**禁止**读取或打印 CLI 会话文件 —— 会话归宿主管,「未登录」时先让宿主重新下发,
491
497
  仍不行才把 `scriptnow login --device` 指给用户。
492
498
  - **审阅凭证精确绑定**:凭证绑定用户实际阅读的可读 JSON;解析器默认值不得被当作内容变化。
499
+ - **候选提交响应丢失时原样重试**:dsh 正文及双域 story_cores、blueprint、synopsis、
500
+ rough_outline、storymap、逐人人物小传、单集/单章纲使用同一执行凭据、请求身份与内容重发;回执绑定 attempt、项目、资源、作者和
501
+ 内容摘要。撤销后的旧 attempt 只能取回自己已保存的回执,新 attempt 不能冒领。
502
+ 梗概与人物小传保留不可变候选号,采纳时必须指明该号并经过独立人审链。旧 `--review-token`
503
+ 兼容路径仍按原作用域;旧路径显式 `--request-key` 仅剧本 blueprint 接受。
504
+ 结构追加与重建、正式采纳与导出尚不能按此回执规则推断可恢复。
493
505
  - **编排前置:Skill 是逐章/逐场创作前的必然门禁(MANDATORY,且须健壮性完善)**:
494
506
  创作意图明确且项目落地后,默认用 `skill setup <pid>` 与作者按推荐预设点选共建
495
507
  (服务端编译挂载,剧本域含 Method DNA);需要深度定制时先与用户规划专属方法论
@@ -500,11 +512,17 @@ SKILL.md 位于 [`cli_anything/scriptnow/skills/SKILL.md`](cli_anything/scriptno
500
512
  premise/tone/world_setting/genre/structure/卷章数/字数等;不要依赖 `--inspire`,也不要建裸项目。
501
513
  - **规划回填优先**:story_cores / blueprint / storymap 默认由 Agent 本地生成后 `propose` 回填为候选;
502
514
  平台端 generate 仅作后备,不要把平台生成当作首选路径。
503
- - **正文创作双模式(用户明确选择,平台侧不阻塞)**:作者委托 Agent 协助创作只覆盖引导、读取、编排、展示和在明确范围内生成/propose,不会自动扩大为采纳、结构覆盖、删除或发布。默认由平台内真实 AgentScope 主笔完成——`chapter/scene generate`
504
- 生成候选 → `review preview` 审读 → `adopt`;仅当用户**明确选择本地创作**时,Agent 才在本地写好
505
- 正文后经 `chapter propose` / `script scene-propose` 回填候选 → `review preview` 审读 →
506
- `adopt --human`。未明确选择时一律按平台主笔执行;本规则只约束正文(章节/场次)创作,
507
- 「规划回填优先」(story_cores / blueprint / storymap 规划三件套)保持不变、不受影响。
515
+ - **dsh 默认主笔**:规划与正文由 dsh 读取平台已采纳事实及方法后完成。逐章/逐场先用
516
+ `run claim` 取得绑定作品、单元和本次执行的写资格,`skill selected --unit-id
517
+ --json` 读取选中方法全文与引用;再以 `chapter/scene propose --execution-token
518
+ --material-digest` 回填候选。平台核对当前方法摘要;`review revision-preview` 展示实际保存的版本。
519
+ 作者明确决定后才可 `review confirm`、`review claim`、`adopt --human`。
520
+ 写资格不能用于采纳;被撤销的旧尝试不能写新候选。平台 `generate` 仅作显式后备。
521
+ dsh shell 会把 `DSH_SESSION_ID` 随 `run claim` 绑定到 attempt;`run revoke` 先撤销写资格,
522
+ 只有 `engine_stopped=true` 才表示引擎确已停止。未确认时用 `run stop-status` 只读复查。
523
+ StoryMap 新增用带执行凭据和稳定请求键的 append 命令;完整替换须先开启隔离重建,
524
+ 再由 dsh 用 `novel/script propose <pid> storymap @file --rebuild-direct --execution-token <凭据>`
525
+ 一次保存候选。阶段式重建仅为超长作品的可选路径,正式采纳仍需作者确认。
508
526
  - **自动批次创作(agent+CLI 侧串行编排)**:`chapter batch <pid> --chapters a,b,c`
509
527
  (剧本侧 `scene batch <pid> --scenes a,b,c`)在一批里串行跑 2–3 个正文单元。四道门前置,缺一即拒:
510
528
  ① **新手期已过** —— 该作品第一章(剧本:第一场)已有已采纳正文;
@@ -26,7 +26,7 @@
26
26
  - **会话自动续期**:一次 login 后 access 过期自动 refresh 续期(30 天),Agent 长会话无需反复登录。
27
27
  **宿主托管实例里续期由宿主代做**:实例的会话文件只放短期 access,`sf_refresh` 留在宿主进程内存里
28
28
  (沙箱限制写、不限制读,长期凭据放进实例就等于 agent 读得到),CLI 带每实例密钥回宿主换新。
29
- - **Agent 操作契约**:`scriptnow agent-guide`(--json)输出连接平台唯一准则——平台是事实源、规划回填优先(cores/blueprint/storymap 默认本地生成后 propose 回填)、正文默认由平台内 AgentScope 主笔、固定创作顺序(故事核心与蓝图→梗概→粗纲→StoryMap 与集纲/章纲一体→正文)、集纲/章纲质量门禁、生成后台轮询(含持久化 stage/progress 与分批 checkpoint)、StoryMap 修订需用户明确授权。
29
+ - **Agent 操作契约**:`scriptnow agent-guide --json` 输出连接平台准则——平台是事实源,dsh 默认完成规划与正文并通过 propose 回填候选,作者负责采纳;平台生成仅为后备。契约还列明顺序、质量门禁、执行写资格和 StoryMap 修订授权。
30
30
  - **双域阶段语义**:叙事阶段不决定小说卷边界;剧本 `volume_two` 表示每集场数,阶段比例据此按每集场数解释。
31
31
  - **新增卷章 = 纯追加(服务端硬门禁)**:`storymap append-volume` / `append-chapters` / `append-phase` 只尾部新增,已有卷章完全不动;纯追加形状(含任意位置纯新增)的全量提案会被服务端拒绝并指引追加通道;**全置换(retained=0、不保留任何现有单元)的普通全量提案同样被服务端拒绝**——恢复旧结构唯一合法通道是 `novel/script storymap-restore`(服务端按归档镜像校验放行),全新结构仅限首次创建(空结构)或 storymap-rebuild-* 隔离链;旧结构自动归档,`novel/script storymap-restore` 可导出恢复候选。
32
32
  - **审读是 Agent 自身能力**:平台不提供固定 rubric,Agent 读正文、自行判断、用 `--feedback` 驱动修正。
@@ -119,7 +119,7 @@ scriptnow review candidate-preview novel <pid> story_core_candidate <candidate_i
119
119
  scriptnow novel adopt-core <pid> <candidate_id> --review-token <采纳审阅凭证>
120
120
  scriptnow novel propose <pid> blueprint @blueprint.json --review-token <提交审阅凭证>
121
121
  scriptnow novel outline <pid> --text "一句梗概" --review-token <提交审阅凭证>
122
- scriptnow novel outline-adopt <pid> <candidate_id> --review-token <采纳审阅凭证>
122
+ scriptnow novel outline-adopt <pid> --candidate-id <candidate_id> --review-token <采纳审阅凭证>
123
123
  scriptnow novel rough-outline-example <pid> # 取结构建议
124
124
  scriptnow novel rough-outline-check <pid> @rough_outline.json # 自查
125
125
  scriptnow novel rough-outline <pid> @rough_outline.json --review-token <提交审阅凭证>
@@ -145,7 +145,7 @@ scriptnow review candidate-preview script <pid> story_core_candidate <candidate_
145
145
  scriptnow script adopt-core <pid> <candidate_id> --review-token <采纳审阅凭证>
146
146
  scriptnow script propose <pid> blueprint @blueprint.json --review-token <提交审阅凭证>
147
147
  scriptnow script outline <pid> --text "一句梗概" --review-token <提交审阅凭证>
148
- scriptnow script outline-adopt <pid> <candidate_id> --review-token <采纳审阅凭证>
148
+ scriptnow script outline-adopt <pid> --candidate-id <candidate_id> --review-token <采纳审阅凭证>
149
149
  scriptnow script rough-outline-example <pid> # 取结构建议
150
150
  scriptnow script rough-outline-start <pid> # 长篇开隔离链
151
151
  scriptnow script rough-outline-progress <pid> # 回读阶段进度
@@ -179,15 +179,17 @@ scriptnow script adopt-scene <pid> scene-1-1 <rev> --human --review-token <定
179
179
  | chapter | 小说章节:**outline(单章补纲)/ outline-batch(批量补纲)/ outline-check(章纲自查)/ outline-example(章纲结构示范)/ bible-example(人物圣经范例)** / list / show / generate / **batch(自动批次创作:2–3 章一批、串行、须作者审查)** / quality(--standard 内容/备案/千部)/ adopt / propose(本地回传) |
180
180
  | scene | 剧本场次(chapter 的剧本侧对称):list / show / generate / adopt(alias of script adopt-scene)/ propose(本地回传)/ batch(批量串行)/ quality / diff |
181
181
  | storymap | 跨域共享结构命令(novel+script 通用):state / generate / **append-volume(新增卷,纯追加)** / **append-chapters(新增章,纯追加)** / **append-phase(按叙事阶段提交下一未完成阶段,Novel 按全书章区间)** / **phases(按叙事结构推导的阶段计划预览)** / adopt(**高危,需 --confirm**) / **structures(内置 + 结构库已存模板)** / **structure-save(命名结构存库,--description/--medium 元数据)** / **structure-delete**;归档导出/恢复候选走分域命令 `novel storymap-restore` / `script storymap-restore`;隔离重建走各域 storymap-rebuild-* 链 |
182
- | novel | 小说创作链:story-cores / blueprint / adopt-core / adopt-blueprint / outline / outline-adopt / outline-status / graph(叙事图谱对账)/ planning-quality / planning-status / ready-check / propose(本地 JSON 导入)/ orchestrate / **rough-outline 平铺链:rough-outline / adopt / check / example** / **storymap-rebuild 隔离重建链:start / rebuild / rebuild-phase / rebuild-phase-preview / rebuild-check / rebuild-propose** / **storymap-archives / storymap-archive(旧结构归档读取)/ storymap-restore(归档导出恢复候选)**;重建须先采纳小说粗纲,阶段按全书章区间且不强制一阶段一卷 |
183
- | script | 剧本创作链:story-cores / blueprint / adopt-blueprint / adopt-core / outline / outline-adopt / outline-status / **rough-outline 分阶段链:-start / -phase / -progress / -propose / -phase-preview / -check** / episode-outline / **episode-outline-check / episode-outline-example** / **bible-example** / state / storymap / **storymap-phases / storymap-append-phase** / adopt-storymap(高危)/ planning-quality / **ready-check** / propose(本地 JSON 导入)/ adopt-scene / scene / scene-list / scene-show / scene-propose(--help-format/--example;--auto-adopt 已停用)/ scene-batch / scene-quality / scene-diff / quality-report / **storymap-rebuild 隔离重建链:start / rebuild / rebuild-phase / rebuild-phase-preview / rebuild-check / rebuild-propose** / **storymap-archives / storymap-archive(旧结构归档读取)/ storymap-restore(归档导出恢复候选)** / **analytics(分集量化仪表盘:节拍密度/冲突分量/角色戏份分布/关键节点覆盖矩阵,确定性算出、只读)** |
182
+ | novel | 小说创作链:story-cores / blueprint / adopt-core / adopt-blueprint / bible-candidates / bible-candidate-preview / bible-candidate-adopt / outline / outline-candidates / outline-adopt-preview / outline-adopt / outline-status / graph(叙事图谱对账)/ planning-quality / planning-status / ready-check / propose(本地 JSON 导入)/ orchestrate / **rough-outline 平铺链:rough-outline / adopt / check / example** / **storymap-rebuild 隔离重建链:start / rebuild / rebuild-phase / rebuild-phase-preview / rebuild-check / rebuild-propose** / **storymap-archives / storymap-archive(旧结构归档读取)/ storymap-restore(归档导出恢复候选)**;重建须先采纳小说粗纲,阶段按全书章区间且不强制一阶段一卷 |
183
+ | script | 剧本创作链:story-cores / blueprint / adopt-blueprint / adopt-core / outline / outline-candidates / outline-adopt-preview / outline-adopt / outline-status / **rough-outline 分阶段链:-start / -phase / -progress / -propose / -phase-preview / -check** / episode-outline / **episode-outline-check / episode-outline-example** / **bible-example / bible-candidates / bible-candidate-preview / bible-candidate-adopt** / state / storymap / **storymap-phases / storymap-append-phase** / adopt-storymap(高危)/ planning-quality / **ready-check** / propose(本地 JSON 导入)/ adopt-scene / scene / scene-list / scene-show / scene-propose(--help-format/--example;--auto-adopt 已停用)/ scene-batch / scene-quality / scene-diff / quality-report / **storymap-rebuild 隔离重建链:start / rebuild / rebuild-phase / rebuild-phase-preview / rebuild-check / rebuild-propose** / **storymap-archives / storymap-archive(旧结构归档读取)/ storymap-restore(归档导出恢复候选)** / **analytics(分集量化仪表盘:节拍密度/冲突分量/角色戏份分布/关键节点覆盖矩阵,确定性算出、只读)** |
184
184
  | storyboard | 分镜回填链:state / source-preflight / source-import / source-range / source-revoke / propose / **candidate-preview / adopt(内容绑定审阅凭证)** / assets / asset-add / continuity / **scene-board upload|generate|list|inspect|delete** / readiness / export;规划板是显式单场操作,不写 shot.frame_refs |
185
- | translate | 故事归化:create / analyze-source / target-contract / strategies / mappings |
185
+ | translate | 故事归化:create / state / contract / propose / adopt / review-unit / revise-unit / manuscript / export;旧源分析入口已停用 |
186
+
187
+ 归化项目默认由 Agent 本地阅读原著,原文不上传平台。先 `translate state/contract` 读取并保存已采纳基线,再 `run claim` 取得限域写资格;按叙事功能重构目标文化中的制度、关系和动机,用 `translate propose --contract @contract.json` 保存候选。实际迁移或重构文化载体才需要映射,触及保护项才需要作者冲突裁决。章节前以相同执行凭据 `translate state --unit-key <键> --read-kind facts|methods` 分别读取平台事实和服务端选中方法,并随候选提交 material_digest;收据只证明调用与返回,不证明方法应用。候选回读后由作者用 review confirm/claim 与 `translate adopt` 采纳;`review-unit`、`revise-unit`、`manuscript` 和 `export` 完成章节审读、人工修订与按基线交付。旧平台原文分析停用,其他平台生成只作显式后台后备。
186
188
  | cover | 封面:package(平台生成包装包)/ package-propose(Agent 自主提交包装文案)/ package-show / models / specs / generate(默认 1 张 1024×1600)/ list / delete |
187
189
  | export | 导出交付:options / create / **preview(交付范围审阅,返回一键审阅地址)** / download / zip;剧本 working DOCX 含每场制作信息 |
188
190
  | skill | Skill 工坊:**setup(按推荐预设与作者点选共建,服务端编译并挂载;剧本域含 Method DNA)** / craft(六问深度共创、预检、确认、挂载回读)/ list / create / **detail(个人 Skill 摘要)** / update / versions / archive / mount / **unmount(仅本项目,需 --confirm)** / mounts / upload;**method-current / method-compile / method-compare / method-bind / method-resolve**(服务端 Method DNA 核心密码版本与 scope 解析);**growth**(方法论进化);**canary**(版本灰度) |
189
191
  | admin | 管理员专用(仅 is_admin,非管理员 403):status / tenant-status / skills / skill-show / skill-update / supply / provider-connect / model-add / image-model-add |
190
- | run | 运行排查:status / events |
192
+ | run | 执行权:claim / renew / revoke / stop-status;运行排查:status / events |
191
193
  | feedback | 严格无内容 v2 质量事件;默认关闭,先用 `doctor --enable-diagnostics MINUTES` 限时开启,发送前再次确认;不含参数、详情、备注、路径、ID 或正文 |
192
194
  | version / self-upgrade / config | 版本查看与强制检查(--check)/ 自动升级(确认后执行)/ `config on|off` 开启或关闭「有新版本时后台自动升级 + 通知」(默认关闭) |
193
195
 
@@ -282,6 +284,11 @@ Agent 负责执行,作者/编辑负责观察和决定。方向、故事核心
282
284
  不得只在后台推进 JSON。
283
285
 
284
286
  ```bash
287
+ # 正文:两条专用命令,作用域由 CLI 自动绑定(**不要手填 resource_kind/resource_id**)
288
+ scriptnow review body-preview novel <pid> <章号> @正文.json # 提交审阅包:chapter + 章 ID
289
+ scriptnow review revision-preview novel <pid> <版本号> # 采纳审阅包:chapter_revision + 版本号
290
+ # 规划候选(cores/blueprint/storymap)用候选预览;其它自定义作用域才用通用 preview
291
+ scriptnow review candidate-preview novel <pid> <resource-kind> <candidate_id>
285
292
  scriptnow review preview <pid> <resource-kind> <resource-id> @candidate.json
286
293
  # 用户在对话或平台页明确决定后,由 Agent 原样登记:
287
294
  scriptnow review confirm <packet-id> --decision retain --evidence "采用这一版,继续下一阶段。"
@@ -291,7 +298,12 @@ scriptnow review claim <packet-id> --json
291
298
  scriptnow review status <packet-id> --json
292
299
  ```
293
300
 
294
- `review preview` 会在终端展示完整内容并登记 digest;`review status` 让 Agent 直接读取用户反馈;
301
+ 两个审阅包**不可互换**:提交包装的是「要 propose 的正文」(`chapter`/`scene` + 单元 ID),
302
+ 采纳包装的是「平台已存的那一版」(`chapter_revision`/`scene_revision` + 版本号)。
303
+ 拿错包去提交或采纳会被拒(409),并且要重新走一遍审阅。
304
+
305
+ `review body-preview` / `review revision-preview` / `review preview` 都会在终端展示完整内容
306
+ 并登记 digest;`review status` 让 Agent 直接读取用户反馈;
295
307
  `--json` 只服务于 Agent 编排,不能替代可读预览。
296
308
 
297
309
  ## Agent 使用提示
@@ -306,17 +318,27 @@ scriptnow review status <packet-id> --json
306
318
  也可用 interpret local 蒸馏或 skill create。`book` 也会在缺 Skill 时提示。
307
319
  - **必须主动填充完整 direction**:用 `project direction <pid> --apply @direction.json` 回填
308
320
  premise/tone/world_setting/genre/structure/卷章数/字数等;不要依赖 `--inspire`,也不要建裸项目。
309
- - **正文创作双模式(用户明确选择,平台侧不阻塞)**:默认由平台主笔完成——`chapter/scene generate`
310
- 生成候选 → `review preview` 审读 → `adopt`;仅当用户**明确选择本地创作**时,Agent 才在本地写好
311
- 正文后经 `chapter propose` / `script scene-propose` 回填候选 → `review preview` 审读 →
312
- `adopt --human`。未明确选择时一律按平台主笔执行;本规则只约束正文(章节/场次)创作,
313
- 「规划回填优先」(story_cores / blueprint / storymap 规划三件套)保持不变、不受影响。
321
+ - **dsh 默认主笔**:规划与正文由 dsh 读取平台事实和方法后完成;逐章/逐场先用
322
+ `run claim` 领取写资格,`skill selected --unit-id --json` 读取本轮选中方法全文,
323
+ 再以 `chapter/scene propose --execution-token --material-digest` 保存候选。
324
+ `review revision-preview` 展示已保存版本;作者明确决定后走 `review confirm`、
325
+ `review claim`、`adopt --human`。平台 `generate` 仅作显式后备。
326
+ dsh shell 的 `DSH_SESSION_ID` 会随 `run claim` 绑定到本次 attempt;`run revoke`
327
+ 先撤销写资格,只有 `engine_stopped=true` 才表示已停止,未确认可用 `run stop-status` 复查。
328
+ StoryMap 追加持执行凭据与稳定请求键回填;真重构先开启隔离重建,再由 dsh 用
329
+ `novel/script propose <pid> storymap @file --rebuild-direct --execution-token <凭据>`
330
+ 一次保存候选。分阶段链仅为超长作品选用,正式采纳仍需作者确认。
314
331
  - 优先 `--json`;生成命令默认后台,`--wait` 阻塞等待。平台拒绝操作时,CLI 优先透出
315
332
  经脱敏的原始领域 detail;失败统一返回 `{ok:false,error:{type,status,detail}}`,不输出 traceback。
316
333
  运行失败按 `run status` 的 `error/detail` 修正,再用 `run events <run_id> --json` 读取事件;无事件固定为
317
334
  `events=[]`。Agent 按可行动提示修正,不把中文通用兜底当作修复指令。
318
335
  - 版本管理:创作基准 = 最新「已采纳 + 人工修订(未采纳也算)」,未采纳的 Agent 候选不进入基准。
319
336
  - 审读是 Agent 自身能力:读正文 → 判断 → `--feedback` 驱动修正。
337
+ - **候选提交响应丢失时原样重试**:dsh 正文及双域 story_cores、blueprint、synopsis、
338
+ rough_outline、storymap、逐人人物小传、单集/单章纲使用同一执行凭据、请求身份与内容重发;回执绑定 attempt、项目、资源、作者和
339
+ 内容摘要。旧 attempt 可取回自己的已提交回执,新 attempt 不可冒领。梗概保留不可变
340
+ 候选号,指明版本并经独立审阅后采纳。人物小传同样逐人保存候选再采纳。
341
+ 旧审阅凭据兼容路径作用域不变;结构追加与重建、正式采纳与导出不可按新回执规则推断可恢复。
320
342
 
321
343
  ## 安全说明
322
344
 
@@ -345,15 +367,11 @@ scriptnow review status <packet-id> --json
345
367
 
346
368
  ## Agent 创作角色与流程纪律(必读)
347
369
 
348
- - **角色分工(默认:平台=主笔)**:Agent = 项目经理 + 质量审查;平台(scene/chapter 生成)
349
- 默认完成正文——准备好 direction/feedback,驱动生成、审查、要求重生成、采纳达标版本。
350
- 仅当用户**明确选择本地创作**时,Agent 才在本地写好正文并经 `chapter propose` /
351
- `script scene-propose` 回填——除此之外绝不自己写正文(不在本地堆样本/配置草稿)。
352
- - **阶段 1(立即)**:收到需求后立刻 `project create` → 立刻用 propose 回填结构
353
- (cores/blueprint/storymap,前 5-10 集/卷)——不要攒本地文件。
354
- - **阶段 2(逐场循环)**:每场/每章 = 准备详细 feedback → 生成 → 审查
355
- (scene-show --plain 读原文 + scene-quality 快检)→ 不达标立即带 feedback 重生成 → 达标才采纳。
356
- - **质量门槛**:9-10 优秀 · 8-9 良好 · **<8 分立即重生成**,绝不采纳不达标内容。
370
+ - **角色分工**:dsh 与作者连续讨论、构思、规划、写正文和审读;平台保存事实、校验候选、
371
+ 管理执行写资格与人工采纳。作者意图不清或构想未成形时,dsh 主动做引导型盘问,
372
+ 保留可用的发散,不让作者先填一套结构表。
373
+ - **阶段推进**:先形成作者认可的创作方向,再逐层提交真实需要的规划和正文候选;
374
+ 不写死集数、分数或对话轮数。逐章/逐场读回已保存候选,按具体人物行动、因果和表达目标审读。
357
375
  - **进度控制**:每集/卷完成后汇报质量统计,询问用户是否继续。
358
376
 
359
377
  ## 统一创作 Skill 方案
@@ -1,3 +1,3 @@
1
1
  """scriptnow-cli — agent-native CLI for the ScriptNow creative platform."""
2
2
 
3
- __version__ = "0.4.4"
3
+ __version__ = "0.4.19"