scriptnow-cli 0.3.96__tar.gz → 0.4.14__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.
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/PKG-INFO +1 -1
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/README.md +127 -20
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/README.md +57 -25
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/__init__.py +1 -1
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/scriptnow_cli.py +2127 -476
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/skills/SKILL.md +23 -5
- scriptnow_cli-0.4.14/cli_anything/scriptnow/skills/references/operations.md +88 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/skills/references/planning.md +62 -14
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/skills/references/review.md +18 -2
- scriptnow_cli-0.4.14/cli_anything/scriptnow/skills/references/writing.md +37 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/utils/browser_login.py +8 -8
- scriptnow_cli-0.4.14/cli_anything/scriptnow/utils/device_login.py +180 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/utils/diag.py +11 -0
- scriptnow_cli-0.4.14/cli_anything/scriptnow/utils/hosted.py +102 -0
- scriptnow_cli-0.4.14/cli_anything/scriptnow/utils/json_input.py +140 -0
- scriptnow_cli-0.4.14/cli_anything/scriptnow/utils/request_identity.py +186 -0
- scriptnow_cli-0.4.14/cli_anything/scriptnow/utils/review.py +53 -0
- scriptnow_cli-0.4.14/cli_anything/scriptnow/utils/session.py +1067 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/scriptnow_cli.egg-info/PKG-INFO +1 -1
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/scriptnow_cli.egg-info/SOURCES.txt +18 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_append_commands.py +32 -4
- scriptnow_cli-0.4.14/tests/test_batch_commands.py +171 -0
- scriptnow_cli-0.4.14/tests/test_blueprint_request_identity.py +346 -0
- scriptnow_cli-0.4.14/tests/test_chapter_request_identity.py +222 -0
- scriptnow_cli-0.4.14/tests/test_device_login.py +178 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_document_revision_state.py +5 -0
- scriptnow_cli-0.4.14/tests/test_execution_attempt_commands.py +297 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_guide_chain.py +38 -25
- scriptnow_cli-0.4.14/tests/test_host_refresh.py +192 -0
- scriptnow_cli-0.4.14/tests/test_hosted_instance.py +295 -0
- scriptnow_cli-0.4.14/tests/test_interpret_propose.py +193 -0
- scriptnow_cli-0.4.14/tests/test_json_input_paths.py +340 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_outline_commands.py +186 -13
- scriptnow_cli-0.4.14/tests/test_planning_status_direction.py +36 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_review_commands.py +128 -1
- scriptnow_cli-0.4.14/tests/test_scene_request_identity.py +201 -0
- scriptnow_cli-0.4.14/tests/test_session.py +799 -0
- scriptnow_cli-0.4.14/tests/test_session_isolation.py +29 -0
- scriptnow_cli-0.4.14/tests/test_unbound_aliases.py +235 -0
- scriptnow_cli-0.3.96/cli_anything/scriptnow/skills/references/operations.md +0 -54
- scriptnow_cli-0.3.96/cli_anything/scriptnow/skills/references/writing.md +0 -16
- scriptnow_cli-0.3.96/cli_anything/scriptnow/utils/session.py +0 -526
- scriptnow_cli-0.3.96/tests/test_session.py +0 -298
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/LICENSE +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/README.pypi.md +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/__init__.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/__main__.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/skills/agents/openai.yaml +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/skills/references/methods.md +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/skills/references/setup.md +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/skills/references/storyboard.md +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/ui.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/utils/__init__.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/cli_anything/scriptnow/utils/upgrade.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/pyproject.toml +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/scriptnow_cli.egg-info/dependency_links.txt +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/scriptnow_cli.egg-info/entry_points.txt +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/scriptnow_cli.egg-info/requires.txt +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/scriptnow_cli.egg-info/top_level.txt +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/setup.cfg +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/setup.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_browser_login.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_json_errors.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_run_commands.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_skill_bundle.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_storyboard_commands.py +0 -0
- {scriptnow_cli-0.3.96 → scriptnow_cli-0.4.14}/tests/test_upgrade.py +0 -0
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
但规划结构与创作循环按域细化,Agent 按域编排。
|
|
21
21
|
- **样本不传平台**:一书一 Skill 用 `interpret local` 在 Agent 本地解读作品、产出方法论后回传,
|
|
22
22
|
平台只接收最终 Skill,不接触作品原文;改编稿用 `chapter propose` / `script scene-propose` 本地回传。
|
|
23
|
+
改编项目的**来源画像**同样回填优先:`interpret propose` 把画像 + 锚点自证交平台校验,
|
|
24
|
+
平台只做校验与采纳(不调模型、不阻塞);`interpret go/read` 的平台通读只是辅助路径。
|
|
23
25
|
- **Skill 能力与版本进化**:`skill growth` 从创作实绩提炼方法论、评估后发布新版本;
|
|
24
26
|
`skill canary` 对新版本做灰度决策(retain / limit / need_evidence / rollback)。
|
|
25
27
|
- **管理员支线**:`admin` 命令组仅 `is_admin` 可用(非管理员 403);token 消费、额度与财务命令
|
|
@@ -34,12 +36,34 @@
|
|
|
34
36
|
- **双域阶段语义**:叙事阶段不决定小说卷边界;剧本 `volume_two` 表示每集场数,阶段比例据此按每集场数解释。
|
|
35
37
|
- **新增卷章 = 纯追加(服务端硬门禁)**:`storymap append-volume` / `storymap append-chapters` / `storymap append-phase` 只尾部新增,已有卷章
|
|
36
38
|
id/序号/标题/字数完全不动;纯追加形状(含任意位置纯新增)的全量提案被服务端拒绝并指引追加通道;**全置换(retained=0)的普通全量提案同样被拒绝**——恢复旧结构唯一合法通道是 `novel/script storymap-restore`(服务端按归档镜像校验放行),全新结构仅限首次创建(空结构)或 storymap-rebuild-* 隔离链;被替换的旧结构自动归档,平台「结构历史」可查看导出。
|
|
37
|
-
- **集纲 /
|
|
38
|
-
`episode`
|
|
39
|
-
`
|
|
40
|
-
|
|
41
|
-
`
|
|
42
|
-
|
|
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` 看结构示范)。
|
|
50
|
+
- **集名必须改写(服务端硬门禁)**:提取阶段要求原著章名逐字照抄是对的,但**集名不能照抄**——网文标题
|
|
51
|
+
多为引流词(如『第27章 你可懂了?』),照抄等于让观众从集名读不出本集发生了什么。集名要写进本集当下的
|
|
52
|
+
冲突对象、主角动作或局面反转;只把章号摘掉、引流词原样保留同样被 `episode_title_rewrite` 判为照抄(revise)。
|
|
53
|
+
- **关键节点必须各有归属(覆盖矩阵门禁)**:蓝图每个 `event` 锚点(含历史别名 `plot`)与每个 `quote`(金句)
|
|
54
|
+
锚点,都必须被某一集承载(写入该集 `anchor_ids`,或该集某条节拍的 `anchor_ids`)。`script storymap propose`
|
|
55
|
+
与 `storymap-rebuild-propose` 会跑覆盖矩阵,**无任何一集承载即整体拒绝并列名**;确实要删的节点,在该蓝图
|
|
56
|
+
锚点 payload 写 `intentionally_dropped: true` 与 `drop_reason: "理由"` 后重新采纳蓝图——不允许不声不响地丢掉一个关键节点。
|
|
57
|
+
- **金句是可选锚点类别**:`kind: "quote"`(别名 quotes / signature_line / signature_lines / golden_line /
|
|
58
|
+
key_line,原句放 `payload.description`)不是每部戏都盘得出来。**所有锚点类别都随故事需要选取,不要求凑齐六类**;但一旦采纳入蓝图就受
|
|
59
|
+
覆盖矩阵约束——金句必须被**分配**到某一集,而不是碰运气看写手记不记得。名场面是场景、金句是可以单独传播的
|
|
60
|
+
那一句话,两件事都要点名,不要互相代替。
|
|
61
|
+
- **量化仪表盘(只读派生视图)**:`scriptnow script analytics <作品号> [--top N] [--json]` → 每集节拍密度
|
|
62
|
+
(拍/分钟)、冲突分量(不可逆转向/有障碍的对峙/做出选择/付出代价)、角色戏份分布(场数/分钟/占比)与关键节点
|
|
63
|
+
覆盖矩阵。**不引入任何模型打分**,全部由已采纳 StoryMap 确定性算出,同一份集纲永远得到同一组数字,可以直接
|
|
64
|
+
拿去对账。剧本每个 scene 另填 `characters`(本场出场角色的蓝图 key):只填 `character_action.active_character_key`
|
|
65
|
+
只回答「这一场由谁推动」,答不了「谁在这一场出现、占多少戏」;留空的场次单列为「未标注出场人物」,
|
|
66
|
+
**不按 0 戏份计入任何角色**。谈节奏、谈戏份、谈覆盖率一律读它,不要自己估算分钟数或占比。
|
|
43
67
|
|
|
44
68
|
## 安装
|
|
45
69
|
|
|
@@ -58,8 +82,8 @@
|
|
|
58
82
|
# 安装生产源公布的最新版本
|
|
59
83
|
version=$(curl -fsS https://sn.igeewa.com/downloads/scriptnow-cli/version.txt)
|
|
60
84
|
python3 -m pip install "https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow_cli-${version}-py3-none-any.whl"
|
|
61
|
-
#
|
|
62
|
-
curl -sL -o /tmp/scriptnow-cli.zip https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow-cli-
|
|
85
|
+
# 与 wheel 同版本的生产源码包(zip)
|
|
86
|
+
curl -sL -o /tmp/scriptnow-cli.zip "https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow-cli-v${version}.zip"
|
|
63
87
|
```
|
|
64
88
|
|
|
65
89
|
**GitHub 兜底(生产源不可达时)**:
|
|
@@ -137,6 +161,7 @@ GitHub 镜像仓库与 release tag 仅作生产源之外的备用下载。`lates
|
|
|
137
161
|
|
|
138
162
|
```bash
|
|
139
163
|
scriptnow login --host https://sn.igeewa.com # 打开系统浏览器登录授权
|
|
164
|
+
scriptnow login --device --host https://sn.igeewa.com # 设备码:在自己已登录的浏览器里确认
|
|
140
165
|
```
|
|
141
166
|
|
|
142
167
|
会话保存到 `~/.config/scriptnow-cli/session.json`(仅 Cookie,不含密码,权限 0600)。
|
|
@@ -144,10 +169,61 @@ CLI 在 macOS/Linux/Windows 上会用跨进程锁协调共享会话的自动续
|
|
|
144
169
|
轮换互相覆盖;同一项目的创作写操作仍必须串行,以免产生候选或版本冲突。
|
|
145
170
|
登录仅通过系统浏览器完成,不再接受密码参数、标准输入或密码环境变量。
|
|
146
171
|
|
|
172
|
+
**两种授权方式的分工**:
|
|
173
|
+
|
|
174
|
+
| 方式 | 怎么走 | 什么时候用 |
|
|
175
|
+
|---|---|---|
|
|
176
|
+
| `scriptnow login` | CLI 在本机 `127.0.0.1` 起一个临时回调,浏览器授权后把 code 交回 CLI(PKCE) | 你自己电脑上的普通终端 |
|
|
177
|
+
| `scriptnow login --device` | CLI 给出**确认码**与链接;你在**自己已登录的浏览器**里确认;CLI 轮询取会话(RFC 8628) | 托管实例、远程主机、没有图形界面的环境 |
|
|
178
|
+
|
|
179
|
+
设备流是**托管实例里唯一能走通**的方式:普通登录等的是实例自己的 `127.0.0.1` 回调,
|
|
180
|
+
而你自己的浏览器到不了那个地址。两种方式的产物完全相同(同一份 `session.json`),
|
|
181
|
+
且都**不接收密码**、不让凭据经过命令行。
|
|
182
|
+
|
|
147
183
|
**会话自动续期**:access token 约 60 分钟过期,CLI 会**自动**用 refresh token 续期并写回本地文件
|
|
148
184
|
(refresh 有效 30 天)——一次登录后 30 天内无需再登录,Agent 长会话也不会中途失效。
|
|
149
185
|
仅当 refresh 也过期(30 天未用)或改密/管理员重置密码/主动登出后,才需要重新 `scriptnow login`。
|
|
150
186
|
|
|
187
|
+
**托管实例里续期由宿主代做**(与"谁持有 refresh"是同一件事):实例里的会话文件**只放
|
|
188
|
+
短期 access**,`sf_refresh` 留在**宿主进程的内存**里 —— 因为沙箱限制的是写、不是读,
|
|
189
|
+
把长期凭据放进实例的文件系统就意味着 agent 的 `shell` 能读到它(2026-09-17 事故正是
|
|
190
|
+
agent 读出了三件套)。access 过期时 CLI 带**每实例密钥**回宿主换一条新的,凭据一步都不
|
|
191
|
+
进实例。代价是宿主重启后需要你**打开一次助手页面**让它重新换发;
|
|
192
|
+
`scriptnow doctor` 在那种情况下会提示这一点。
|
|
193
|
+
|
|
194
|
+
### 宿主托管的实例里通常不需要 login
|
|
195
|
+
|
|
196
|
+
由宿主 Agent 托管的实例(如 ScriptNow × deepseek-harness 整合形态)会给 CLI 下发
|
|
197
|
+
`SCRIPTNOW_HOSTED=1`。此时**登录会话通常已由宿主在服务端换发**并写进
|
|
198
|
+
`SCRIPTNOW_CLI_CONFIG` 指向的文件,你什么都不用做:
|
|
199
|
+
|
|
200
|
+
- `scriptnow login` 会被**直接拒绝**并说明原因 —— 它要在本实例的 `127.0.0.1` 上等一个
|
|
201
|
+
浏览器回调,而你自己的浏览器到不了那个地址,流程只会超时;
|
|
202
|
+
- 确实需要重新授权时,用 **`scriptnow login --device`**:CLI 给出确认码与链接,
|
|
203
|
+
你在自己已登录的浏览器里确认即可,凭据不经过命令行;
|
|
204
|
+
- `scriptnow doctor` 报「未登录」时,正确处理是**稍后重试**、或请宿主重新下发会话,
|
|
205
|
+
再不行才走 `--device`;**不要向任何人(包括 Agent)索取或粘贴 Cookie / 密码**,
|
|
206
|
+
Agent 也不应自行调用换发端点或读取会话文件;
|
|
207
|
+
- 该标记只看环境变量本身,**不从 `SCRIPTNOW_CLI_CONFIG` 推断**:挪动会话文件是下面
|
|
208
|
+
写明的自助修法,那类用户仍然拥有自己的登录。
|
|
209
|
+
|
|
210
|
+
确实要在本机自行登录时,先 `unset SCRIPTNOW_HOSTED` 再运行。
|
|
211
|
+
|
|
212
|
+
`SCRIPTNOW_HOSTED=1` 只回答「会话归谁」。平台 API 挂在哪儿由另一个变量回答:
|
|
213
|
+
独立部署是 `/api`(默认,无需设置),整合形态是 `/sn-api` —— 宿主会一并下发
|
|
214
|
+
`SCRIPTNOW_API_PREFIX`。若 CLI 报「平台 API 不在 `<api_root>`」,说明它把请求打到了
|
|
215
|
+
agent 运行时自己的命名空间(那里被登录闸门守着,回的 401 与会话过期长得一样),
|
|
216
|
+
把 `SCRIPTNOW_API_PREFIX` 指向平台 API 的真实挂载点即可。值格式非法时 CLI 会点名该
|
|
217
|
+
变量报错,不会静默回落 `/api`。
|
|
218
|
+
|
|
219
|
+
**网页挂在哪儿**由第三个变量回答:`SCRIPTNOW_WEB_PREFIX`。独立部署默认空串(Creator 占站点根),
|
|
220
|
+
整合形态是 `/platform` —— 宿主会一并下发。CLI 打印的每一个**给用户点开的链接**
|
|
221
|
+
(`scriptnow login` 的 `/cli/authorize`、`scriptnow login --device` 的 `/device`)
|
|
222
|
+
都经过它拼接。2026-09-17 的线上缺陷正出在这里:链接是手拼的 `base + "/cli/authorize"`,
|
|
223
|
+
而整合形态下站点根已经给了 agent 外壳,于是授权页被准确地送进了**另一个应用**——在最需要
|
|
224
|
+
它的那个部署里永远打不开。现在所有链接都走一个函数(`session.web_url`),值非法时点名该
|
|
225
|
+
变量报错。
|
|
226
|
+
|
|
151
227
|
### 配置与会话定位(Agent 必读)
|
|
152
228
|
|
|
153
229
|
| 内容 | 位置 |
|
|
@@ -176,6 +252,9 @@ CLI 在 macOS/Linux/Windows 上会用跨进程锁协调共享会话的自动续
|
|
|
176
252
|
scriptnow skill mounts <pid> # 项目已挂载哪些 Skill?
|
|
177
253
|
# 无 → 默认共建:skill setup <pid> --json → 与作者点选推荐预设 → --answers @answers.json --confirm --json
|
|
178
254
|
# 一书一 Skill 蒸馏(样本不传平台):interpret local 手稿.docx --spec → 本地解读 → --submit @skill.json --project-id <pid>
|
|
255
|
+
# 改编项目来源画像(回填优先,平台不调模型):interpret propose <pid> --spec → 本地读原著 →
|
|
256
|
+
# interpret propose <pid> --profile @profile.json → interpret decide <pid> <profile-id> --approve
|
|
257
|
+
# (平台通读是辅助路径且同步阻塞:interpret go / create + read)
|
|
179
258
|
# 或 个人 Skill:skill create --domain novel|script ... → skill mount <pid> <skill_id> <version_id>
|
|
180
259
|
# 错误挂载:用户明确授权后 skill unmount <pid> <skill_id> --confirm --json(只解除本项目,自动回读确认)
|
|
181
260
|
```
|
|
@@ -191,7 +270,7 @@ scriptnow review candidate-preview novel <pid> story_core_candidate <candidate_i
|
|
|
191
270
|
scriptnow novel adopt-core <pid> <candidate_id> --review-token <采纳审阅凭证>
|
|
192
271
|
scriptnow novel propose <pid> blueprint @blueprint.json --review-token <提交审阅凭证>
|
|
193
272
|
scriptnow novel outline <pid> --text "一句梗概" --review-token <提交审阅凭证>
|
|
194
|
-
scriptnow novel outline-adopt <pid> <candidate_id> --review-token <采纳审阅凭证>
|
|
273
|
+
scriptnow novel outline-adopt <pid> --candidate-id <candidate_id> --review-token <采纳审阅凭证>
|
|
195
274
|
scriptnow novel rough-outline-example <pid> # 取结构建议
|
|
196
275
|
scriptnow novel rough-outline-check <pid> @rough_outline.json # 自查
|
|
197
276
|
scriptnow novel rough-outline <pid> @rough_outline.json --review-token <提交审阅凭证>
|
|
@@ -240,7 +319,7 @@ scriptnow review candidate-preview script <pid> story_core_candidate <candidate_
|
|
|
240
319
|
scriptnow script adopt-core <pid> <candidate_id> --review-token <采纳审阅凭证>
|
|
241
320
|
scriptnow script propose <pid> blueprint @blueprint.json --review-token <提交审阅凭证>
|
|
242
321
|
scriptnow script outline <pid> --text "一句梗概" --review-token <提交审阅凭证>
|
|
243
|
-
scriptnow script outline-adopt <pid> <candidate_id> --review-token <采纳审阅凭证>
|
|
322
|
+
scriptnow script outline-adopt <pid> --candidate-id <candidate_id> --review-token <采纳审阅凭证>
|
|
244
323
|
scriptnow script rough-outline-example <pid> # 取结构建议
|
|
245
324
|
scriptnow script rough-outline-start <pid> # 长篇开隔离链
|
|
246
325
|
scriptnow script rough-outline-progress <pid> # 回读阶段进度
|
|
@@ -248,6 +327,8 @@ scriptnow script rough-outline-propose <pid> --review-token <提交审阅凭证>
|
|
|
248
327
|
scriptnow script propose <pid> storymap @storymap.json --review-token <提交审阅凭证>
|
|
249
328
|
# 每个 chapter/episode 都要有对应章纲/集纲字段;先质量门禁再采纳
|
|
250
329
|
scriptnow script planning-quality <pid> storymap @storymap.json
|
|
330
|
+
# 交付前自检:节拍密度 / 冲突分量 / 戏份分布 / 关键节点覆盖矩阵(确定性算出,只读)
|
|
331
|
+
scriptnow script analytics <pid>
|
|
251
332
|
# 创作循环(生成默认后台)
|
|
252
333
|
scriptnow script scene-list <pid>
|
|
253
334
|
scriptnow script scene-show <pid> scene-1-1 --plain
|
|
@@ -269,20 +350,20 @@ scriptnow script adopt-scene <pid> scene-1-1 <rev> --human --review-token <定
|
|
|
269
350
|
| authorize | **【已弃用】**签发一次性「人工决策授权令牌」(对话内文字授权通道,复用登录会话不要求重新登录):`--chapter/--scene` 限定目标,`--digest` 绑定用户已读内容;token 供 `chapter adopt --human --token` / `scene adopt --human --token` 完成人工定稿。新流程统一走 `review confirm → claim → --review-token`,不再引导 authorize |
|
|
270
351
|
| review | 人类审阅回路:`propose-preview` 为 outline/cores/blueprint/storymap 自动绑定平台审阅作用域,`preview` 为高级通用预览,`candidate-preview` 展示平台候选;用户明确决定后,Agent 以 `confirm` 原样登记,再 `status` / `claim`;不得推断或伪造决定 |
|
|
271
352
|
| project | 项目管理:创建 / 列表 / **files(项目文件)** / 上传素材 / **use(设为默认项目)** / 删除 / 方向(--apply 客户端梳理回填 / --inspire 平台灵感) |
|
|
272
|
-
| interpret | 一书一 Skill
|
|
353
|
+
| interpret | 一书一 Skill / 来源画像:**propose(回填来源画像候选,推荐:平台只校验与采纳、不调模型、不阻塞)** / go(平台通读,辅助且同步阻塞)/ local(Agent 本地解读,样本不传平台)/ create / read / status / decide |
|
|
273
354
|
| book | 全书托管创作规划(Agent 编排原语,含 Skill 支撑侦测) |
|
|
274
|
-
| chapter | 小说章节:**outline(单章补纲)/ outline-batch(批量补纲)/ outline-check(章纲自查)/ outline-example(章纲结构示范)/ bible-example(人物圣经范例)** / list / show / generate / quality(--standard 内容/备案/千部)/ adopt / propose(本地回传) |
|
|
355
|
+
| chapter | 小说章节:**outline(单章补纲)/ outline-batch(批量补纲)/ outline-check(章纲自查)/ outline-example(章纲结构示范)/ bible-example(人物圣经范例)** / list / show / generate / **batch(自动批次创作:2–3 章一批、串行、须作者审查)** / quality(--standard 内容/备案/千部)/ adopt / propose(本地回传) |
|
|
275
356
|
| scene | 剧本场次(chapter 的剧本侧对称):list / show / generate / adopt(alias of script adopt-scene)/ propose(本地回传)/ batch(批量串行)/ quality / diff |
|
|
276
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-* 链 |
|
|
277
|
-
| 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(归档导出恢复候选)**;重建须先采纳小说粗纲,阶段按全书章区间且不强制一阶段一卷 |
|
|
278
|
-
| 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(归档导出恢复候选)** |
|
|
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(分集量化仪表盘:节拍密度/冲突分量/角色戏份分布/关键节点覆盖矩阵,确定性算出,只读)** |
|
|
279
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 |
|
|
280
361
|
| translate | 故事归化:create / analyze-source / target-contract / strategies / mappings |
|
|
281
362
|
| cover | 封面:package(平台生成包装包)/ package-propose(Agent 自主提交包装文案)/ package-show / models / specs / generate(默认 1 张 1024×1600)/ list / delete |
|
|
282
363
|
| export | 导出交付:options / create / **preview(交付范围审阅,返回一键审阅地址)** / download / zip;剧本 working DOCX 含每场制作信息 |
|
|
283
364
|
| 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**(版本灰度) |
|
|
284
365
|
| admin | 管理员专用(仅 is_admin,非管理员 403):status / tenant-status / skills / skill-show / skill-update / supply / provider-connect / model-add / image-model-add |
|
|
285
|
-
| run |
|
|
366
|
+
| run | 执行权:claim / renew / revoke / stop-status;运行排查:status / events |
|
|
286
367
|
| feedback | 发送严格无内容的 v2 质量事件;本地诊断默认关闭,须先 `doctor --enable-diagnostics MINUTES` 限时开启,`--send` 前再次交互确认;不采集参数、详情、备注、路径、ID 或正文 |
|
|
287
368
|
| version / self-upgrade / config | 版本查看(--check 强制联网检查)/ 自动升级(先检查、用户确认后执行;启动时会后台低频提示新版)/ `config on|off` 开启或关闭「有新版本时自动升级」(默认关闭;开启后后台自动升级并在升级前后通知,不阻塞命令) |
|
|
288
369
|
|
|
@@ -406,7 +487,19 @@ SKILL.md 位于 [`cli_anything/scriptnow/skills/SKILL.md`](cli_anything/scriptno
|
|
|
406
487
|
`scriptnow agent-guide --json`(完整人工手册用 `--full`)——平台是事实源、
|
|
407
488
|
规划三件套回填优先、禁止体外项目创建(缓存/资料整理除外)、生成命令后台轮询、
|
|
408
489
|
StoryMap 修订需用户明确授权(Agent 不得代替采纳)。
|
|
490
|
+
- **登录凭据只走浏览器授权(MANDATORY)**:登录只用 `scriptnow login`(系统浏览器授权)
|
|
491
|
+
或 `scriptnow login --device`(设备码:打印确认码与链接,用户在**自己已登录的浏览器**里确认;
|
|
492
|
+
托管实例/远程主机里**只有这一种可行**)。两者都不接收密码、不让凭据经过命令行。
|
|
493
|
+
**禁止**向用户索取或要求粘贴 Cookie / 密码;**禁止** Agent 自行调用任何换发/刷新端点,
|
|
494
|
+
也**禁止**读取或打印 CLI 会话文件 —— 会话归宿主管,「未登录」时先让宿主重新下发,
|
|
495
|
+
仍不行才把 `scriptnow login --device` 指给用户。
|
|
409
496
|
- **审阅凭证精确绑定**:凭证绑定用户实际阅读的可读 JSON;解析器默认值不得被当作内容变化。
|
|
497
|
+
- **候选提交响应丢失时原样重试**:dsh 正文及双域 story_cores、blueprint、synopsis、
|
|
498
|
+
rough_outline、storymap、逐人人物小传、单集/单章纲使用同一执行凭据、请求身份与内容重发;回执绑定 attempt、项目、资源、作者和
|
|
499
|
+
内容摘要。撤销后的旧 attempt 只能取回自己已保存的回执,新 attempt 不能冒领。
|
|
500
|
+
梗概与人物小传保留不可变候选号,采纳时必须指明该号并经过独立人审链。旧 `--review-token`
|
|
501
|
+
兼容路径仍按原作用域;旧路径显式 `--request-key` 仅剧本 blueprint 接受。
|
|
502
|
+
结构追加与重建、正式采纳与导出尚不能按此回执规则推断可恢复。
|
|
410
503
|
- **编排前置:Skill 是逐章/逐场创作前的必然门禁(MANDATORY,且须健壮性完善)**:
|
|
411
504
|
创作意图明确且项目落地后,默认用 `skill setup <pid>` 与作者按推荐预设点选共建
|
|
412
505
|
(服务端编译挂载,剧本域含 Method DNA);需要深度定制时先与用户规划专属方法论
|
|
@@ -417,11 +510,25 @@ SKILL.md 位于 [`cli_anything/scriptnow/skills/SKILL.md`](cli_anything/scriptno
|
|
|
417
510
|
premise/tone/world_setting/genre/structure/卷章数/字数等;不要依赖 `--inspire`,也不要建裸项目。
|
|
418
511
|
- **规划回填优先**:story_cores / blueprint / storymap 默认由 Agent 本地生成后 `propose` 回填为候选;
|
|
419
512
|
平台端 generate 仅作后备,不要把平台生成当作首选路径。
|
|
420
|
-
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
`
|
|
424
|
-
|
|
513
|
+
- **dsh 默认主笔**:规划与正文由 dsh 读取平台已采纳事实及方法后完成。逐章/逐场先用
|
|
514
|
+
`run claim` 取得绑定作品、单元和本次执行的写资格,`skill selected --unit-id
|
|
515
|
+
--json` 读取选中方法全文与引用;再以 `chapter/scene propose --execution-token
|
|
516
|
+
--material-digest` 回填候选。平台核对当前方法摘要;`review revision-preview` 展示实际保存的版本。
|
|
517
|
+
作者明确决定后才可 `review confirm`、`review claim`、`adopt --human`。
|
|
518
|
+
写资格不能用于采纳;被撤销的旧尝试不能写新候选。平台 `generate` 仅作显式后备。
|
|
519
|
+
dsh shell 会把 `DSH_SESSION_ID` 随 `run claim` 绑定到 attempt;`run revoke` 先撤销写资格,
|
|
520
|
+
只有 `engine_stopped=true` 才表示引擎确已停止。未确认时用 `run stop-status` 只读复查。
|
|
521
|
+
StoryMap 新增用带执行凭据和稳定请求键的 append 命令;完整替换须先开启隔离重建,
|
|
522
|
+
再由 dsh 用 `novel/script propose <pid> storymap @file --rebuild-direct --execution-token <凭据>`
|
|
523
|
+
一次保存候选。阶段式重建仅为超长作品的可选路径,正式采纳仍需作者确认。
|
|
524
|
+
- **自动批次创作(agent+CLI 侧串行编排)**:`chapter batch <pid> --chapters a,b,c`
|
|
525
|
+
(剧本侧 `scene batch <pid> --scenes a,b,c`)在一批里串行跑 2–3 个正文单元。四道门前置,缺一即拒:
|
|
526
|
+
① **新手期已过** —— 该作品第一章(剧本:第一场)已有已采纳正文;
|
|
527
|
+
② **风格已明确** —— 项目已挂载通过门禁的方法论 Skill;
|
|
528
|
+
③ **批次规模 2–3** —— 1 个用 `generate`,> 3 必须拆批;
|
|
529
|
+
④ **产出必须作者审查** —— 命令只产候选、**绝不自动采纳**,全部完成后由作者逐章/逐场
|
|
530
|
+
`show --plain` → `quality` 审查,再走 `review confirm/claim` → 带 `--review-token` 的 `adopt`。
|
|
531
|
+
中断用 `--save-progress` 保存失败清单、`--resume-from` 续跑;禁止并发或多 subagent 并行编排。
|
|
425
532
|
- 优先 `--json`;**生成命令默认后台并返回 run_id,用 `run status` 分次轮询**——
|
|
426
533
|
不要用 `--wait` 长阻塞(宿主工具轮候窗口有限会超时);交互终端可用 `--wait` 或设
|
|
427
534
|
`SCRIPTNOW_WAIT_MAX_SECONDS` 限制单次等待。平台拒绝操作时,CLI 会优先透出经脱敏的
|
|
@@ -16,13 +16,17 @@
|
|
|
16
16
|
但规划结构与创作循环按域细化,Agent 按域编排。
|
|
17
17
|
- **样本不传平台**:一书一 Skill 用 `interpret local` 在 Agent 本地解读作品、产出方法论后回传,
|
|
18
18
|
平台只接收最终 Skill,不接触作品原文;改编稿用 `chapter propose` / `script scene-propose` 本地回传。
|
|
19
|
+
改编项目的**来源画像**同样回填优先:`interpret propose` 把画像 + 锚点自证交平台校验,
|
|
20
|
+
平台只做校验与采纳(不调模型、不阻塞);`interpret go/read` 的平台通读只是辅助路径。
|
|
19
21
|
- **Skill 能力与版本进化**:`skill growth` 从创作实绩提炼方法论、评估后发布新版本;
|
|
20
22
|
`skill canary` 对新版本做灰度决策(retain / limit / need_evidence / rollback)。
|
|
21
23
|
- **管理员支线**:`admin` 命令组仅 `is_admin` 可用(非管理员 403);token 消费、额度与财务命令
|
|
22
24
|
一律不纳入 CLI。
|
|
23
25
|
- **Token 预算控制**:本地导入(propose / scene-propose / interpret local)带 `--budget` 预估拦截。
|
|
24
26
|
- **会话自动续期**:一次 login 后 access 过期自动 refresh 续期(30 天),Agent 长会话无需反复登录。
|
|
25
|
-
|
|
27
|
+
**宿主托管实例里续期由宿主代做**:实例的会话文件只放短期 access,`sf_refresh` 留在宿主进程内存里
|
|
28
|
+
(沙箱限制写、不限制读,长期凭据放进实例就等于 agent 读得到),CLI 带每实例密钥回宿主换新。
|
|
29
|
+
- **Agent 操作契约**:`scriptnow agent-guide --json` 输出连接平台准则——平台是事实源,dsh 默认完成规划与正文并通过 propose 回填候选,作者负责采纳;平台生成仅为后备。契约还列明顺序、质量门禁、执行写资格和 StoryMap 修订授权。
|
|
26
30
|
- **双域阶段语义**:叙事阶段不决定小说卷边界;剧本 `volume_two` 表示每集场数,阶段比例据此按每集场数解释。
|
|
27
31
|
- **新增卷章 = 纯追加(服务端硬门禁)**:`storymap append-volume` / `append-chapters` / `append-phase` 只尾部新增,已有卷章完全不动;纯追加形状(含任意位置纯新增)的全量提案会被服务端拒绝并指引追加通道;**全置换(retained=0、不保留任何现有单元)的普通全量提案同样被服务端拒绝**——恢复旧结构唯一合法通道是 `novel/script storymap-restore`(服务端按归档镜像校验放行),全新结构仅限首次创建(空结构)或 storymap-rebuild-* 隔离链;旧结构自动归档,`novel/script storymap-restore` 可导出恢复候选。
|
|
28
32
|
- **审读是 Agent 自身能力**:平台不提供固定 rubric,Agent 读正文、自行判断、用 `--feedback` 驱动修正。
|
|
@@ -42,8 +46,8 @@ cd scriptnow-cli && pip install -e .
|
|
|
42
46
|
# 优先生产源直装 wheel(sn.igeewa.com,最稳,不依赖 git)
|
|
43
47
|
version=$(curl -fsS https://sn.igeewa.com/downloads/scriptnow-cli/version.txt)
|
|
44
48
|
python3 -m pip install "https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow_cli-${version}-py3-none-any.whl"
|
|
45
|
-
#
|
|
46
|
-
curl -sL -o /tmp/scriptnow-cli.zip https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow-cli-
|
|
49
|
+
# 与 wheel 同版本的生产源码包(zip)
|
|
50
|
+
curl -sL -o /tmp/scriptnow-cli.zip "https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow-cli-v${version}.zip"
|
|
47
51
|
|
|
48
52
|
# 或从 GitHub 最新代码直接安装(codeload 直连,无需 clone)
|
|
49
53
|
curl -sL -o /tmp/scriptnow-cli-latest.tar.gz https://codeload.github.com/quchenchen/scriptnow-cli/tar.gz/refs/heads/main
|
|
@@ -76,6 +80,15 @@ macOS/Linux 上 CLI 会用跨进程锁协调共享会话的自动续期:不同
|
|
|
76
80
|
多环境共用同一会话文件时登录一次全部生效。
|
|
77
81
|
登录仅通过系统浏览器完成,不再接受密码参数、标准输入或密码环境变量。
|
|
78
82
|
|
|
83
|
+
**宿主托管的实例通常不需要 login**:宿主 Agent(如 ScriptNow × deepseek-harness 整合形态)
|
|
84
|
+
下发 `SCRIPTNOW_HOSTED=1` 时,会话通常已由宿主在服务端换发并写入 `SCRIPTNOW_CLI_CONFIG`
|
|
85
|
+
指向的文件。此时 `scriptnow login` 会被**直接拒绝**(它要等一个只在用户自己电脑上可达的
|
|
86
|
+
浏览器回调,在这里必然超时);确实要重新授权就用 **`scriptnow login --device`** ——
|
|
87
|
+
CLI 给出确认码与链接,用户在自己已登录的浏览器里确认,凭据不经过命令行。
|
|
88
|
+
`doctor` 报未登录时请稍后重试或请宿主重新下发,**不要向任何人索取或粘贴 Cookie / 密码**,
|
|
89
|
+
也不要自行调用换发端点或读取会话文件。该标记只看环境变量本身,
|
|
90
|
+
不从 `SCRIPTNOW_CLI_CONFIG` 推断。
|
|
91
|
+
|
|
79
92
|
## 快速开始(双域)
|
|
80
93
|
|
|
81
94
|
**前置:Skill 是逐章/逐场创作前的必然门禁(须健壮性完善)**——创作意图明确且项目落地后:
|
|
@@ -88,6 +101,9 @@ macOS/Linux 上 CLI 会用跨进程锁协调共享会话的自动续期:不同
|
|
|
88
101
|
scriptnow skill mounts <pid> # 项目已挂载哪些 Skill?无 → 走下方创建流程
|
|
89
102
|
# 默认共建:skill setup <pid> --json → 与作者点选推荐预设(风格/节奏/禁词;剧本域含 Method DNA)→ --answers @answers.json --confirm --json(服务端编译挂载)
|
|
90
103
|
# 一书一 Skill 蒸馏(样本不传平台):interpret local 手稿.docx --spec → 本地解读+多轮完善 → --submit @skill.json --project-id <pid>
|
|
104
|
+
# 改编项目来源画像(回填优先,平台不调模型):interpret propose <pid> --spec → 本地读原著 →
|
|
105
|
+
# interpret propose <pid> --profile @profile.json → interpret decide <pid> <profile-id> --approve
|
|
106
|
+
# (平台通读是辅助路径且同步阻塞:interpret go / create + read)
|
|
91
107
|
# 或 个人 Skill:skill create --domain novel|script ... → skill mount <pid> <skill_id> <version_id>
|
|
92
108
|
# 错误挂载仅在用户明确授权后:skill unmount <pid> <skill_id> --confirm --json(不归档全局 Skill,自动回读)
|
|
93
109
|
```
|
|
@@ -103,7 +119,7 @@ scriptnow review candidate-preview novel <pid> story_core_candidate <candidate_i
|
|
|
103
119
|
scriptnow novel adopt-core <pid> <candidate_id> --review-token <采纳审阅凭证>
|
|
104
120
|
scriptnow novel propose <pid> blueprint @blueprint.json --review-token <提交审阅凭证>
|
|
105
121
|
scriptnow novel outline <pid> --text "一句梗概" --review-token <提交审阅凭证>
|
|
106
|
-
scriptnow novel outline-adopt <pid> <candidate_id> --review-token <采纳审阅凭证>
|
|
122
|
+
scriptnow novel outline-adopt <pid> --candidate-id <candidate_id> --review-token <采纳审阅凭证>
|
|
107
123
|
scriptnow novel rough-outline-example <pid> # 取结构建议
|
|
108
124
|
scriptnow novel rough-outline-check <pid> @rough_outline.json # 自查
|
|
109
125
|
scriptnow novel rough-outline <pid> @rough_outline.json --review-token <提交审阅凭证>
|
|
@@ -129,7 +145,7 @@ scriptnow review candidate-preview script <pid> story_core_candidate <candidate_
|
|
|
129
145
|
scriptnow script adopt-core <pid> <candidate_id> --review-token <采纳审阅凭证>
|
|
130
146
|
scriptnow script propose <pid> blueprint @blueprint.json --review-token <提交审阅凭证>
|
|
131
147
|
scriptnow script outline <pid> --text "一句梗概" --review-token <提交审阅凭证>
|
|
132
|
-
scriptnow script outline-adopt <pid> <candidate_id> --review-token <采纳审阅凭证>
|
|
148
|
+
scriptnow script outline-adopt <pid> --candidate-id <candidate_id> --review-token <采纳审阅凭证>
|
|
133
149
|
scriptnow script rough-outline-example <pid> # 取结构建议
|
|
134
150
|
scriptnow script rough-outline-start <pid> # 长篇开隔离链
|
|
135
151
|
scriptnow script rough-outline-progress <pid> # 回读阶段进度
|
|
@@ -158,20 +174,20 @@ scriptnow script adopt-scene <pid> scene-1-1 <rev> --human --review-token <定
|
|
|
158
174
|
| review | 人类审阅:`propose-preview` 为 outline/cores/blueprint/storymap 自动绑定平台作用域,`preview` 为高级通用预览,`candidate-preview` 展示平台候选;用户明确决定后,Agent 用 confirm 原样登记,再 status / claim;不得推断或伪造 |
|
|
159
175
|
| authorize | **【已弃用】**签发一次性「人工决策授权令牌」(对话内文字授权通道,复用登录会话不要求重新登录):`--chapter/--scene` 限定目标,`--digest` 绑定用户已读内容;token 供 `chapter adopt --human --token` / `scene adopt --human --token` 完成人工定稿。新流程统一走 `review confirm → claim → --review-token`,不再引导 authorize |
|
|
160
176
|
| project | 项目管理:创建 / 列表 / **files(项目文件)** / 上传素材 / **use(设为默认项目)** / 删除 / 方向(--apply 客户端梳理回填 / --inspire 平台灵感) |
|
|
161
|
-
| interpret | 一书一 Skill
|
|
177
|
+
| interpret | 一书一 Skill / 来源画像:**propose(回填来源画像候选,推荐:平台只校验与采纳、不调模型、不阻塞)** / go(平台通读,辅助且同步阻塞)/ local(Agent 本地解读,样本不传平台)/ create / read / status / decide |
|
|
162
178
|
| book | 全书托管创作规划(Agent 编排原语,含 Skill 支撑侦测) |
|
|
163
|
-
| chapter | 小说章节:**outline(单章补纲)/ outline-batch(批量补纲)/ outline-check(章纲自查)/ outline-example(章纲结构示范)/ bible-example(人物圣经范例)** / list / show / generate / quality(--standard 内容/备案/千部)/ adopt / propose(本地回传) |
|
|
179
|
+
| chapter | 小说章节:**outline(单章补纲)/ outline-batch(批量补纲)/ outline-check(章纲自查)/ outline-example(章纲结构示范)/ bible-example(人物圣经范例)** / list / show / generate / **batch(自动批次创作:2–3 章一批、串行、须作者审查)** / quality(--standard 内容/备案/千部)/ adopt / propose(本地回传) |
|
|
164
180
|
| scene | 剧本场次(chapter 的剧本侧对称):list / show / generate / adopt(alias of script adopt-scene)/ propose(本地回传)/ batch(批量串行)/ quality / diff |
|
|
165
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-* 链 |
|
|
166
|
-
| 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(归档导出恢复候选)**;重建须先采纳小说粗纲,阶段按全书章区间且不强制一阶段一卷 |
|
|
167
|
-
| 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(归档导出恢复候选)** |
|
|
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(分集量化仪表盘:节拍密度/冲突分量/角色戏份分布/关键节点覆盖矩阵,确定性算出、只读)** |
|
|
168
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 |
|
|
169
185
|
| translate | 故事归化:create / analyze-source / target-contract / strategies / mappings |
|
|
170
186
|
| cover | 封面:package(平台生成包装包)/ package-propose(Agent 自主提交包装文案)/ package-show / models / specs / generate(默认 1 张 1024×1600)/ list / delete |
|
|
171
187
|
| export | 导出交付:options / create / **preview(交付范围审阅,返回一键审阅地址)** / download / zip;剧本 working DOCX 含每场制作信息 |
|
|
172
188
|
| 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**(版本灰度) |
|
|
173
189
|
| admin | 管理员专用(仅 is_admin,非管理员 403):status / tenant-status / skills / skill-show / skill-update / supply / provider-connect / model-add / image-model-add |
|
|
174
|
-
| run |
|
|
190
|
+
| run | 执行权:claim / renew / revoke / stop-status;运行排查:status / events |
|
|
175
191
|
| feedback | 严格无内容 v2 质量事件;默认关闭,先用 `doctor --enable-diagnostics MINUTES` 限时开启,发送前再次确认;不含参数、详情、备注、路径、ID 或正文 |
|
|
176
192
|
| version / self-upgrade / config | 版本查看与强制检查(--check)/ 自动升级(确认后执行)/ `config on|off` 开启或关闭「有新版本时后台自动升级 + 通知」(默认关闭) |
|
|
177
193
|
|
|
@@ -266,6 +282,11 @@ Agent 负责执行,作者/编辑负责观察和决定。方向、故事核心
|
|
|
266
282
|
不得只在后台推进 JSON。
|
|
267
283
|
|
|
268
284
|
```bash
|
|
285
|
+
# 正文:两条专用命令,作用域由 CLI 自动绑定(**不要手填 resource_kind/resource_id**)
|
|
286
|
+
scriptnow review body-preview novel <pid> <章号> @正文.json # 提交审阅包:chapter + 章 ID
|
|
287
|
+
scriptnow review revision-preview novel <pid> <版本号> # 采纳审阅包:chapter_revision + 版本号
|
|
288
|
+
# 规划候选(cores/blueprint/storymap)用候选预览;其它自定义作用域才用通用 preview
|
|
289
|
+
scriptnow review candidate-preview novel <pid> <resource-kind> <candidate_id>
|
|
269
290
|
scriptnow review preview <pid> <resource-kind> <resource-id> @candidate.json
|
|
270
291
|
# 用户在对话或平台页明确决定后,由 Agent 原样登记:
|
|
271
292
|
scriptnow review confirm <packet-id> --decision retain --evidence "采用这一版,继续下一阶段。"
|
|
@@ -275,7 +296,12 @@ scriptnow review claim <packet-id> --json
|
|
|
275
296
|
scriptnow review status <packet-id> --json
|
|
276
297
|
```
|
|
277
298
|
|
|
278
|
-
|
|
299
|
+
两个审阅包**不可互换**:提交包装的是「要 propose 的正文」(`chapter`/`scene` + 单元 ID),
|
|
300
|
+
采纳包装的是「平台已存的那一版」(`chapter_revision`/`scene_revision` + 版本号)。
|
|
301
|
+
拿错包去提交或采纳会被拒(409),并且要重新走一遍审阅。
|
|
302
|
+
|
|
303
|
+
`review body-preview` / `review revision-preview` / `review preview` 都会在终端展示完整内容
|
|
304
|
+
并登记 digest;`review status` 让 Agent 直接读取用户反馈;
|
|
279
305
|
`--json` 只服务于 Agent 编排,不能替代可读预览。
|
|
280
306
|
|
|
281
307
|
## Agent 使用提示
|
|
@@ -290,17 +316,27 @@ scriptnow review status <packet-id> --json
|
|
|
290
316
|
也可用 interpret local 蒸馏或 skill create。`book` 也会在缺 Skill 时提示。
|
|
291
317
|
- **必须主动填充完整 direction**:用 `project direction <pid> --apply @direction.json` 回填
|
|
292
318
|
premise/tone/world_setting/genre/structure/卷章数/字数等;不要依赖 `--inspire`,也不要建裸项目。
|
|
293
|
-
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
`
|
|
297
|
-
|
|
319
|
+
- **dsh 默认主笔**:规划与正文由 dsh 读取平台事实和方法后完成;逐章/逐场先用
|
|
320
|
+
`run claim` 领取写资格,`skill selected --unit-id --json` 读取本轮选中方法全文,
|
|
321
|
+
再以 `chapter/scene propose --execution-token --material-digest` 保存候选。
|
|
322
|
+
`review revision-preview` 展示已保存版本;作者明确决定后走 `review confirm`、
|
|
323
|
+
`review claim`、`adopt --human`。平台 `generate` 仅作显式后备。
|
|
324
|
+
dsh shell 的 `DSH_SESSION_ID` 会随 `run claim` 绑定到本次 attempt;`run revoke`
|
|
325
|
+
先撤销写资格,只有 `engine_stopped=true` 才表示已停止,未确认可用 `run stop-status` 复查。
|
|
326
|
+
StoryMap 追加持执行凭据与稳定请求键回填;真重构先开启隔离重建,再由 dsh 用
|
|
327
|
+
`novel/script propose <pid> storymap @file --rebuild-direct --execution-token <凭据>`
|
|
328
|
+
一次保存候选。分阶段链仅为超长作品选用,正式采纳仍需作者确认。
|
|
298
329
|
- 优先 `--json`;生成命令默认后台,`--wait` 阻塞等待。平台拒绝操作时,CLI 优先透出
|
|
299
330
|
经脱敏的原始领域 detail;失败统一返回 `{ok:false,error:{type,status,detail}}`,不输出 traceback。
|
|
300
331
|
运行失败按 `run status` 的 `error/detail` 修正,再用 `run events <run_id> --json` 读取事件;无事件固定为
|
|
301
332
|
`events=[]`。Agent 按可行动提示修正,不把中文通用兜底当作修复指令。
|
|
302
333
|
- 版本管理:创作基准 = 最新「已采纳 + 人工修订(未采纳也算)」,未采纳的 Agent 候选不进入基准。
|
|
303
334
|
- 审读是 Agent 自身能力:读正文 → 判断 → `--feedback` 驱动修正。
|
|
335
|
+
- **候选提交响应丢失时原样重试**:dsh 正文及双域 story_cores、blueprint、synopsis、
|
|
336
|
+
rough_outline、storymap、逐人人物小传、单集/单章纲使用同一执行凭据、请求身份与内容重发;回执绑定 attempt、项目、资源、作者和
|
|
337
|
+
内容摘要。旧 attempt 可取回自己的已提交回执,新 attempt 不可冒领。梗概保留不可变
|
|
338
|
+
候选号,指明版本并经独立审阅后采纳。人物小传同样逐人保存候选再采纳。
|
|
339
|
+
旧审阅凭据兼容路径作用域不变;结构追加与重建、正式采纳与导出不可按新回执规则推断可恢复。
|
|
304
340
|
|
|
305
341
|
## 安全说明
|
|
306
342
|
|
|
@@ -329,15 +365,11 @@ scriptnow review status <packet-id> --json
|
|
|
329
365
|
|
|
330
366
|
## Agent 创作角色与流程纪律(必读)
|
|
331
367
|
|
|
332
|
-
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
(cores/blueprint/storymap,前 5-10 集/卷)——不要攒本地文件。
|
|
338
|
-
- **阶段 2(逐场循环)**:每场/每章 = 准备详细 feedback → 生成 → 审查
|
|
339
|
-
(scene-show --plain 读原文 + scene-quality 快检)→ 不达标立即带 feedback 重生成 → 达标才采纳。
|
|
340
|
-
- **质量门槛**:9-10 优秀 · 8-9 良好 · **<8 分立即重生成**,绝不采纳不达标内容。
|
|
368
|
+
- **角色分工**:dsh 与作者连续讨论、构思、规划、写正文和审读;平台保存事实、校验候选、
|
|
369
|
+
管理执行写资格与人工采纳。作者意图不清或构想未成形时,dsh 主动做引导型盘问,
|
|
370
|
+
保留可用的发散,不让作者先填一套结构表。
|
|
371
|
+
- **阶段推进**:先形成作者认可的创作方向,再逐层提交真实需要的规划和正文候选;
|
|
372
|
+
不写死集数、分数或对话轮数。逐章/逐场读回已保存候选,按具体人物行动、因果和表达目标审读。
|
|
341
373
|
- **进度控制**:每集/卷完成后汇报质量统计,询问用户是否继续。
|
|
342
374
|
|
|
343
375
|
## 统一创作 Skill 方案
|