scriptnow-cli 0.3.95__tar.gz → 0.4.4__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 (55) hide show
  1. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/PKG-INFO +3 -3
  2. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/README.md +109 -8
  3. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/README.pypi.md +2 -2
  4. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/scriptnow/README.md +33 -7
  5. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/scriptnow/__init__.py +1 -1
  6. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/scriptnow/scriptnow_cli.py +733 -74
  7. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/SKILL.md +98 -0
  8. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/agents/openai.yaml +6 -0
  9. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/methods.md +117 -0
  10. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/operations.md +54 -0
  11. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/planning.md +157 -0
  12. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/review.md +60 -0
  13. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/setup.md +80 -0
  14. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/storyboard.md +21 -0
  15. scriptnow_cli-0.4.4/cli_anything/scriptnow/skills/references/writing.md +29 -0
  16. scriptnow_cli-0.4.4/cli_anything/scriptnow/utils/browser_login.py +85 -0
  17. scriptnow_cli-0.4.4/cli_anything/scriptnow/utils/device_login.py +180 -0
  18. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/scriptnow/utils/diag.py +11 -0
  19. scriptnow_cli-0.4.4/cli_anything/scriptnow/utils/hosted.py +102 -0
  20. scriptnow_cli-0.4.4/cli_anything/scriptnow/utils/session.py +1067 -0
  21. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/pyproject.toml +1 -1
  22. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/scriptnow_cli.egg-info/PKG-INFO +3 -3
  23. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/scriptnow_cli.egg-info/SOURCES.txt +18 -0
  24. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_append_commands.py +29 -56
  25. scriptnow_cli-0.4.4/tests/test_batch_commands.py +171 -0
  26. scriptnow_cli-0.4.4/tests/test_browser_login.py +50 -0
  27. scriptnow_cli-0.4.4/tests/test_device_login.py +178 -0
  28. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_document_revision_state.py +5 -0
  29. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_guide_chain.py +5 -1
  30. scriptnow_cli-0.4.4/tests/test_host_refresh.py +192 -0
  31. scriptnow_cli-0.4.4/tests/test_hosted_instance.py +295 -0
  32. scriptnow_cli-0.4.4/tests/test_session.py +799 -0
  33. scriptnow_cli-0.4.4/tests/test_session_isolation.py +29 -0
  34. scriptnow_cli-0.4.4/tests/test_skill_bundle.py +26 -0
  35. scriptnow_cli-0.3.95/cli_anything/scriptnow/skills/SKILL.md +0 -311
  36. scriptnow_cli-0.3.95/cli_anything/scriptnow/utils/session.py +0 -548
  37. scriptnow_cli-0.3.95/tests/test_session.py +0 -298
  38. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/LICENSE +0 -0
  39. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/__init__.py +0 -0
  40. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/scriptnow/__main__.py +0 -0
  41. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/scriptnow/ui.py +0 -0
  42. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/scriptnow/utils/__init__.py +0 -0
  43. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/cli_anything/scriptnow/utils/upgrade.py +0 -0
  44. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/scriptnow_cli.egg-info/dependency_links.txt +0 -0
  45. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/scriptnow_cli.egg-info/entry_points.txt +0 -0
  46. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/scriptnow_cli.egg-info/requires.txt +0 -0
  47. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/scriptnow_cli.egg-info/top_level.txt +0 -0
  48. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/setup.cfg +0 -0
  49. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/setup.py +0 -0
  50. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_json_errors.py +0 -0
  51. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_outline_commands.py +0 -0
  52. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_review_commands.py +0 -0
  53. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_run_commands.py +0 -0
  54. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_storyboard_commands.py +0 -0
  55. {scriptnow_cli-0.3.95 → scriptnow_cli-0.4.4}/tests/test_upgrade.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scriptnow-cli
3
- Version: 0.3.95
3
+ Version: 0.4.4
4
4
  Summary: ScriptNow 创作 CLI —— 从灵感到成书交付的一站式命令行(CLI-Anything 模式)
5
5
  Author: ScriptNow
6
6
  License: MIT
@@ -46,13 +46,13 @@ The command is `scriptnow`; the distribution name is `scriptnow-cli`.
46
46
  scriptnow --version
47
47
  scriptnow agent-guide --json
48
48
  scriptnow doctor
49
- scriptnow login --host https://sn.igeewa.com --email you@example.com
49
+ scriptnow login --host https://sn.igeewa.com
50
50
  scriptnow guide --medium novel
51
51
  # For screenwriting:
52
52
  scriptnow guide --medium script
53
53
  ```
54
54
 
55
- Enter your password at the hidden terminal prompt. A ScriptNow account and
55
+ Sign in and approve CLI access in your system browser; never send your password to the Agent. A ScriptNow account and
56
56
  appropriate project access are required; installing this client does not create
57
57
  an account or grant service credits.
58
58
 
@@ -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 消费、额度与财务命令
@@ -35,11 +37,29 @@
35
37
  - **新增卷章 = 纯追加(服务端硬门禁)**:`storymap append-volume` / `storymap append-chapters` / `storymap append-phase` 只尾部新增,已有卷章
36
38
  id/序号/标题/字数完全不动;纯追加形状(含任意位置纯新增)的全量提案被服务端拒绝并指引追加通道;**全置换(retained=0)的普通全量提案同样被拒绝**——恢复旧结构唯一合法通道是 `novel/script storymap-restore`(服务端按归档镜像校验放行),全新结构仅限首次创建(空结构)或 storymap-rebuild-* 隔离链;被替换的旧结构自动归档,平台「结构历史」可查看导出。
37
39
  - **集纲 / 章纲先于正文**:StoryMap 不能只提供 episode/scene 或 volume/chapter 容器。剧本每个
38
- `episode` 需填写平铺字段 `logline`、`active_goal`、`conflict`、`turn`、`state_changes`、`anchor_ids`;可用
40
+ `episode` 需填写平铺字段 `logline`、`active_goal`、`conflict`、`turn`、`state_changes`、`anchor_ids`,并给
41
+ `title`(**改后的集名**)与 `source_titles`(原著章名原名,仅用于追溯);可用
39
42
  `script episode-outline <pid> <episode_id> @outline.json` 补单集;
40
43
  小说每个 `chapter` 需填写嵌入的 `outline`(`summary`/`logline`、`active_goal`、`conflict`、`turn`、
41
44
  `state_changes`,锚点可来自 outline 或 beat);先运行
42
45
  `script/novel planning-quality`,全量通过并经作者采纳后才可写正文。历史章节(已有正文)可读可写,不受章纲字段缺失影响;新章节必须带完整章纲(提交前可用 `chapter outline-check` 自查、`chapter outline-example` 看结构示范)。
46
+ - **集名必须改写(服务端硬门禁)**:提取阶段要求原著章名逐字照抄是对的,但**集名不能照抄**——网文标题
47
+ 多为引流词(如『第27章 你可懂了?』),照抄等于让观众从集名读不出本集发生了什么。集名要写进本集当下的
48
+ 冲突对象、主角动作或局面反转;只把章号摘掉、引流词原样保留同样被 `episode_title_rewrite` 判为照抄(revise)。
49
+ - **关键节点必须各有归属(覆盖矩阵门禁)**:蓝图每个 `event` 锚点(含历史别名 `plot`)与每个 `quote`(金句)
50
+ 锚点,都必须被某一集承载(写入该集 `anchor_ids`,或该集某条节拍的 `anchor_ids`)。`script storymap propose`
51
+ 与 `storymap-rebuild-propose` 会跑覆盖矩阵,**无任何一集承载即整体拒绝并列名**;确实要删的节点,在该蓝图
52
+ 锚点 payload 写 `intentionally_dropped: true` 与 `drop_reason: "理由"` 后重新采纳蓝图——不允许不声不响地丢掉一个关键节点。
53
+ - **金句是可选锚点类别**:`kind: "quote"`(别名 quotes / signature_line / signature_lines / golden_line /
54
+ key_line,原句放 `payload.description`)不是每部戏都盘得出来,所以**不要求六类齐全**;但一旦采纳入蓝图就受
55
+ 覆盖矩阵约束——金句必须被**分配**到某一集,而不是碰运气看写手记不记得。名场面是场景、金句是可以单独传播的
56
+ 那一句话,两件事都要点名,不要互相代替。
57
+ - **量化仪表盘(只读派生视图)**:`scriptnow script analytics <作品号> [--top N] [--json]` → 每集节拍密度
58
+ (拍/分钟)、冲突分量(不可逆转向/有障碍的对峙/做出选择/付出代价)、角色戏份分布(场数/分钟/占比)与关键节点
59
+ 覆盖矩阵。**不引入任何模型打分**,全部由已采纳 StoryMap 确定性算出,同一份集纲永远得到同一组数字,可以直接
60
+ 拿去对账。剧本每个 scene 另填 `characters`(本场出场角色的蓝图 key):只填 `character_action.active_character_key`
61
+ 只回答「这一场由谁推动」,答不了「谁在这一场出现、占多少戏」;留空的场次单列为「未标注出场人物」,
62
+ **不按 0 戏份计入任何角色**。谈节奏、谈戏份、谈覆盖率一律读它,不要自己估算分钟数或占比。
43
63
 
44
64
  ## 安装
45
65
 
@@ -58,8 +78,8 @@
58
78
  # 安装生产源公布的最新版本
59
79
  version=$(curl -fsS https://sn.igeewa.com/downloads/scriptnow-cli/version.txt)
60
80
  python3 -m pip install "https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow_cli-${version}-py3-none-any.whl"
61
- # 源码包(zip)
62
- curl -sL -o /tmp/scriptnow-cli.zip https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow-cli-v0.3.80.zip
81
+ # 与 wheel 同版本的生产源码包(zip)
82
+ curl -sL -o /tmp/scriptnow-cli.zip "https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow-cli-v${version}.zip"
63
83
  ```
64
84
 
65
85
  **GitHub 兜底(生产源不可达时)**:
@@ -136,18 +156,70 @@ GitHub 镜像仓库与 release tag 仅作生产源之外的备用下载。`lates
136
156
  ## 登录
137
157
 
138
158
  ```bash
139
- scriptnow login --host https://sn.igeewa.com --email 你的账号 # 交互式隐藏输入密码(或 --password-stdin / SCRIPTNOW_PASSWORD)
159
+ scriptnow login --host https://sn.igeewa.com # 打开系统浏览器登录授权
160
+ scriptnow login --device --host https://sn.igeewa.com # 设备码:在自己已登录的浏览器里确认
140
161
  ```
141
162
 
142
163
  会话保存到 `~/.config/scriptnow-cli/session.json`(仅 Cookie,不含密码,权限 0600)。
143
164
  CLI 在 macOS/Linux/Windows 上会用跨进程锁协调共享会话的自动续期:不同项目可并发执行,避免 refresh token
144
165
  轮换互相覆盖;同一项目的创作写操作仍必须串行,以免产生候选或版本冲突。
145
- 也可用 `SCRIPTNOW_BASE_URL` / `SCRIPTNOW_EMAIL` / `SCRIPTNOW_PASSWORD` 环境变量。
166
+ 登录仅通过系统浏览器完成,不再接受密码参数、标准输入或密码环境变量。
167
+
168
+ **两种授权方式的分工**:
169
+
170
+ | 方式 | 怎么走 | 什么时候用 |
171
+ |---|---|---|
172
+ | `scriptnow login` | CLI 在本机 `127.0.0.1` 起一个临时回调,浏览器授权后把 code 交回 CLI(PKCE) | 你自己电脑上的普通终端 |
173
+ | `scriptnow login --device` | CLI 给出**确认码**与链接;你在**自己已登录的浏览器**里确认;CLI 轮询取会话(RFC 8628) | 托管实例、远程主机、没有图形界面的环境 |
174
+
175
+ 设备流是**托管实例里唯一能走通**的方式:普通登录等的是实例自己的 `127.0.0.1` 回调,
176
+ 而你自己的浏览器到不了那个地址。两种方式的产物完全相同(同一份 `session.json`),
177
+ 且都**不接收密码**、不让凭据经过命令行。
146
178
 
147
179
  **会话自动续期**:access token 约 60 分钟过期,CLI 会**自动**用 refresh token 续期并写回本地文件
148
180
  (refresh 有效 30 天)——一次登录后 30 天内无需再登录,Agent 长会话也不会中途失效。
149
181
  仅当 refresh 也过期(30 天未用)或改密/管理员重置密码/主动登出后,才需要重新 `scriptnow login`。
150
182
 
183
+ **托管实例里续期由宿主代做**(与"谁持有 refresh"是同一件事):实例里的会话文件**只放
184
+ 短期 access**,`sf_refresh` 留在**宿主进程的内存**里 —— 因为沙箱限制的是写、不是读,
185
+ 把长期凭据放进实例的文件系统就意味着 agent 的 `shell` 能读到它(2026-09-17 事故正是
186
+ agent 读出了三件套)。access 过期时 CLI 带**每实例密钥**回宿主换一条新的,凭据一步都不
187
+ 进实例。代价是宿主重启后需要你**打开一次助手页面**让它重新换发;
188
+ `scriptnow doctor` 在那种情况下会提示这一点。
189
+
190
+ ### 宿主托管的实例里通常不需要 login
191
+
192
+ 由宿主 Agent 托管的实例(如 ScriptNow × deepseek-harness 整合形态)会给 CLI 下发
193
+ `SCRIPTNOW_HOSTED=1`。此时**登录会话通常已由宿主在服务端换发**并写进
194
+ `SCRIPTNOW_CLI_CONFIG` 指向的文件,你什么都不用做:
195
+
196
+ - `scriptnow login` 会被**直接拒绝**并说明原因 —— 它要在本实例的 `127.0.0.1` 上等一个
197
+ 浏览器回调,而你自己的浏览器到不了那个地址,流程只会超时;
198
+ - 确实需要重新授权时,用 **`scriptnow login --device`**:CLI 给出确认码与链接,
199
+ 你在自己已登录的浏览器里确认即可,凭据不经过命令行;
200
+ - `scriptnow doctor` 报「未登录」时,正确处理是**稍后重试**、或请宿主重新下发会话,
201
+ 再不行才走 `--device`;**不要向任何人(包括 Agent)索取或粘贴 Cookie / 密码**,
202
+ Agent 也不应自行调用换发端点或读取会话文件;
203
+ - 该标记只看环境变量本身,**不从 `SCRIPTNOW_CLI_CONFIG` 推断**:挪动会话文件是下面
204
+ 写明的自助修法,那类用户仍然拥有自己的登录。
205
+
206
+ 确实要在本机自行登录时,先 `unset SCRIPTNOW_HOSTED` 再运行。
207
+
208
+ `SCRIPTNOW_HOSTED=1` 只回答「会话归谁」。平台 API 挂在哪儿由另一个变量回答:
209
+ 独立部署是 `/api`(默认,无需设置),整合形态是 `/sn-api` —— 宿主会一并下发
210
+ `SCRIPTNOW_API_PREFIX`。若 CLI 报「平台 API 不在 `<api_root>`」,说明它把请求打到了
211
+ agent 运行时自己的命名空间(那里被登录闸门守着,回的 401 与会话过期长得一样),
212
+ 把 `SCRIPTNOW_API_PREFIX` 指向平台 API 的真实挂载点即可。值格式非法时 CLI 会点名该
213
+ 变量报错,不会静默回落 `/api`。
214
+
215
+ **网页挂在哪儿**由第三个变量回答:`SCRIPTNOW_WEB_PREFIX`。独立部署默认空串(Creator 占站点根),
216
+ 整合形态是 `/platform` —— 宿主会一并下发。CLI 打印的每一个**给用户点开的链接**
217
+ (`scriptnow login` 的 `/cli/authorize`、`scriptnow login --device` 的 `/device`)
218
+ 都经过它拼接。2026-09-17 的线上缺陷正出在这里:链接是手拼的 `base + "/cli/authorize"`,
219
+ 而整合形态下站点根已经给了 agent 外壳,于是授权页被准确地送进了**另一个应用**——在最需要
220
+ 它的那个部署里永远打不开。现在所有链接都走一个函数(`session.web_url`),值非法时点名该
221
+ 变量报错。
222
+
151
223
  ### 配置与会话定位(Agent 必读)
152
224
 
153
225
  | 内容 | 位置 |
@@ -176,6 +248,9 @@ CLI 在 macOS/Linux/Windows 上会用跨进程锁协调共享会话的自动续
176
248
  scriptnow skill mounts <pid> # 项目已挂载哪些 Skill?
177
249
  # 无 → 默认共建:skill setup <pid> --json → 与作者点选推荐预设 → --answers @answers.json --confirm --json
178
250
  # 一书一 Skill 蒸馏(样本不传平台):interpret local 手稿.docx --spec → 本地解读 → --submit @skill.json --project-id <pid>
251
+ # 改编项目来源画像(回填优先,平台不调模型):interpret propose <pid> --spec → 本地读原著 →
252
+ # interpret propose <pid> --profile @profile.json → interpret decide <pid> <profile-id> --approve
253
+ # (平台通读是辅助路径且同步阻塞:interpret go / create + read)
179
254
  # 或 个人 Skill:skill create --domain novel|script ... → skill mount <pid> <skill_id> <version_id>
180
255
  # 错误挂载:用户明确授权后 skill unmount <pid> <skill_id> --confirm --json(只解除本项目,自动回读确认)
181
256
  ```
@@ -248,6 +323,8 @@ scriptnow script rough-outline-propose <pid> --review-token <提交审阅凭证>
248
323
  scriptnow script propose <pid> storymap @storymap.json --review-token <提交审阅凭证>
249
324
  # 每个 chapter/episode 都要有对应章纲/集纲字段;先质量门禁再采纳
250
325
  scriptnow script planning-quality <pid> storymap @storymap.json
326
+ # 交付前自检:节拍密度 / 冲突分量 / 戏份分布 / 关键节点覆盖矩阵(确定性算出,只读)
327
+ scriptnow script analytics <pid>
251
328
  # 创作循环(生成默认后台)
252
329
  scriptnow script scene-list <pid>
253
330
  scriptnow script scene-show <pid> scene-1-1 --plain
@@ -269,13 +346,13 @@ scriptnow script adopt-scene <pid> scene-1-1 <rev> --human --review-token <定
269
346
  | authorize | **【已弃用】**签发一次性「人工决策授权令牌」(对话内文字授权通道,复用登录会话不要求重新登录):`--chapter/--scene` 限定目标,`--digest` 绑定用户已读内容;token 供 `chapter adopt --human --token` / `scene adopt --human --token` 完成人工定稿。新流程统一走 `review confirm → claim → --review-token`,不再引导 authorize |
270
347
  | review | 人类审阅回路:`propose-preview` 为 outline/cores/blueprint/storymap 自动绑定平台审阅作用域,`preview` 为高级通用预览,`candidate-preview` 展示平台候选;用户明确决定后,Agent 以 `confirm` 原样登记,再 `status` / `claim`;不得推断或伪造决定 |
271
348
  | project | 项目管理:创建 / 列表 / **files(项目文件)** / 上传素材 / **use(设为默认项目)** / 删除 / 方向(--apply 客户端梳理回填 / --inspire 平台灵感) |
272
- | interpret | 一书一 Skill:go(一键解读)/ local(Agent 本地解读,样本不传平台)/ create / read / status / decide |
349
+ | interpret | 一书一 Skill / 来源画像:**propose(回填来源画像候选,推荐:平台只校验与采纳、不调模型、不阻塞)** / go(平台通读,辅助且同步阻塞)/ local(Agent 本地解读,样本不传平台)/ create / read / status / decide |
273
350
  | book | 全书托管创作规划(Agent 编排原语,含 Skill 支撑侦测) |
274
- | chapter | 小说章节:**outline(单章补纲)/ outline-batch(批量补纲)/ outline-check(章纲自查)/ outline-example(章纲结构示范)/ bible-example(人物圣经范例)** / list / show / generate / quality(--standard 内容/备案/千部)/ adopt / propose(本地回传) |
351
+ | chapter | 小说章节:**outline(单章补纲)/ outline-batch(批量补纲)/ outline-check(章纲自查)/ outline-example(章纲结构示范)/ bible-example(人物圣经范例)** / list / show / generate / **batch(自动批次创作:2–3 章一批、串行、须作者审查)** / quality(--standard 内容/备案/千部)/ adopt / propose(本地回传) |
275
352
  | scene | 剧本场次(chapter 的剧本侧对称):list / show / generate / adopt(alias of script adopt-scene)/ propose(本地回传)/ batch(批量串行)/ quality / diff |
276
353
  | 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
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(归档导出恢复候选)**;重建须先采纳小说粗纲,阶段按全书章区间且不强制一阶段一卷 |
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(归档导出恢复候选)** |
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(分集量化仪表盘:节拍密度/冲突分量/角色戏份分布/关键节点覆盖矩阵,确定性算出,只读)** |
279
356
  | 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
357
  | translate | 故事归化:create / analyze-source / target-contract / strategies / mappings |
281
358
  | cover | 封面:package(平台生成包装包)/ package-propose(Agent 自主提交包装文案)/ package-show / models / specs / generate(默认 1 张 1024×1600)/ list / delete |
@@ -406,6 +483,12 @@ SKILL.md 位于 [`cli_anything/scriptnow/skills/SKILL.md`](cli_anything/scriptno
406
483
  `scriptnow agent-guide --json`(完整人工手册用 `--full`)——平台是事实源、
407
484
  规划三件套回填优先、禁止体外项目创建(缓存/资料整理除外)、生成命令后台轮询、
408
485
  StoryMap 修订需用户明确授权(Agent 不得代替采纳)。
486
+ - **登录凭据只走浏览器授权(MANDATORY)**:登录只用 `scriptnow login`(系统浏览器授权)
487
+ 或 `scriptnow login --device`(设备码:打印确认码与链接,用户在**自己已登录的浏览器**里确认;
488
+ 托管实例/远程主机里**只有这一种可行**)。两者都不接收密码、不让凭据经过命令行。
489
+ **禁止**向用户索取或要求粘贴 Cookie / 密码;**禁止** Agent 自行调用任何换发/刷新端点,
490
+ 也**禁止**读取或打印 CLI 会话文件 —— 会话归宿主管,「未登录」时先让宿主重新下发,
491
+ 仍不行才把 `scriptnow login --device` 指给用户。
409
492
  - **审阅凭证精确绑定**:凭证绑定用户实际阅读的可读 JSON;解析器默认值不得被当作内容变化。
410
493
  - **编排前置:Skill 是逐章/逐场创作前的必然门禁(MANDATORY,且须健壮性完善)**:
411
494
  创作意图明确且项目落地后,默认用 `skill setup <pid>` 与作者按推荐预设点选共建
@@ -422,6 +505,14 @@ SKILL.md 位于 [`cli_anything/scriptnow/skills/SKILL.md`](cli_anything/scriptno
422
505
  正文后经 `chapter propose` / `script scene-propose` 回填候选 → `review preview` 审读 →
423
506
  `adopt --human`。未明确选择时一律按平台主笔执行;本规则只约束正文(章节/场次)创作,
424
507
  「规划回填优先」(story_cores / blueprint / storymap 规划三件套)保持不变、不受影响。
508
+ - **自动批次创作(agent+CLI 侧串行编排)**:`chapter batch <pid> --chapters a,b,c`
509
+ (剧本侧 `scene batch <pid> --scenes a,b,c`)在一批里串行跑 2–3 个正文单元。四道门前置,缺一即拒:
510
+ ① **新手期已过** —— 该作品第一章(剧本:第一场)已有已采纳正文;
511
+ ② **风格已明确** —— 项目已挂载通过门禁的方法论 Skill;
512
+ ③ **批次规模 2–3** —— 1 个用 `generate`,> 3 必须拆批;
513
+ ④ **产出必须作者审查** —— 命令只产候选、**绝不自动采纳**,全部完成后由作者逐章/逐场
514
+ `show --plain` → `quality` 审查,再走 `review confirm/claim` → 带 `--review-token` 的 `adopt`。
515
+ 中断用 `--save-progress` 保存失败清单、`--resume-from` 续跑;禁止并发或多 subagent 并行编排。
425
516
  - 优先 `--json`;**生成命令默认后台并返回 run_id,用 `run status` 分次轮询**——
426
517
  不要用 `--wait` 长阻塞(宿主工具轮候窗口有限会超时);交互终端可用 `--wait` 或设
427
518
  `SCRIPTNOW_WAIT_MAX_SECONDS` 限制单次等待。平台拒绝操作时,CLI 会优先透出经脱敏的
@@ -461,3 +552,13 @@ SKILL.md 位于 [`cli_anything/scriptnow/skills/SKILL.md`](cli_anything/scriptno
461
552
  ## 统一创作 Skill 方案
462
553
 
463
554
  CLI、Creator 与创作运行共用服务端 creative-skill-plan。逐章/逐场前使用 ready-check --unit-id <单元ID> 查看已采纳叙事阶段、本单元功能、个人与内置方法及执行准备;缺少阶段不按集数比例推定。阶段 narrative_stage 与功能 unit_function 随集纲/章纲候选提交,采纳后生效。节奏建议不构成一票否决;已选中、已读取、已应用分别留证。
555
+
556
+ ## ScriptNow 创作搭档 Skill
557
+
558
+ 作者可以说“启动 ScriptNow 新手模式”或“继续我的作品”。`scriptnow` Skill 负责对话引导,CLI 负责执行,平台负责权限、审阅与保存。入口按当前任务读取安装、规划、审阅、写作方法、正文、运行恢复或分镜说明,不一次加载全部规则。安装 CLI 包会携带完整 Skill,但不会自动向所有 Agent 客户端注册;注册时须包含整个 skills 目录及其 references、agents 文件。Skill 与 CLI 同步发布,实时 `agent-guide --json` 为操作规则依据。
559
+
560
+ 开始或继续 ScriptNow 创作时,Skill 默认自检;缺少 CLI 即自动安装必要依赖并验证,无需作者另行提出安装要求,已有可用版本直接复用。先检查 Agent 实际执行环境,Windows 优先调用官方 `install-agent.ps1`,完成后用绝对路径验证并继续登录。现有自动 Python 安装分支针对 amd64;其他架构、组织策略和网络限制按具体检查处理,不承诺所有机器均可无人值守安装。
561
+
562
+ 作品写作方法共建:Skill 从灵感和规划对话中积累作者的理念、人物思路、节奏、钩子与表达要求,围绕真实创作决定,正文前整理成核心追求、条件性原则、适用边界和取舍顺序;正反例不是共建主流程,craft 必需的 examples 从已确认的具体取舍中提取。通过现有 skill setup / craft 接口,经作者确认、平台保存和挂载核验后生效;单次修改不自动升级为长期规则。
563
+
564
+ 浏览器授权登录:运行 `scriptnow login` 后由系统浏览器登录并确认,临时授权凭证自动传递,作者无需复制。CLI 不接收密码参数、标准输入或密码环境变量。登录会话复用并自动刷新;默认访问凭据 60 分钟,成功刷新后重新计算 30 天闲置有效期,实际值由服务端设置决定。退出、改密或撤销后仍须重新授权。此变更需后端与 Creator 授权页配套部署后发布 CLI。
@@ -23,13 +23,13 @@ The command is `scriptnow`; the distribution name is `scriptnow-cli`.
23
23
  scriptnow --version
24
24
  scriptnow agent-guide --json
25
25
  scriptnow doctor
26
- scriptnow login --host https://sn.igeewa.com --email you@example.com
26
+ scriptnow login --host https://sn.igeewa.com
27
27
  scriptnow guide --medium novel
28
28
  # For screenwriting:
29
29
  scriptnow guide --medium script
30
30
  ```
31
31
 
32
- Enter your password at the hidden terminal prompt. A ScriptNow account and
32
+ Sign in and approve CLI access in your system browser; never send your password to the Agent. A ScriptNow account and
33
33
  appropriate project access are required; installing this client does not create
34
34
  an account or grant service credits.
35
35
 
@@ -16,12 +16,16 @@
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 长会话无需反复登录。
27
+ **宿主托管实例里续期由宿主代做**:实例的会话文件只放短期 access,`sf_refresh` 留在宿主进程内存里
28
+ (沙箱限制写、不限制读,长期凭据放进实例就等于 agent 读得到),CLI 带每实例密钥回宿主换新。
25
29
  - **Agent 操作契约**:`scriptnow agent-guide`(--json)输出连接平台唯一准则——平台是事实源、规划回填优先(cores/blueprint/storymap 默认本地生成后 propose 回填)、正文默认由平台内 AgentScope 主笔、固定创作顺序(故事核心与蓝图→梗概→粗纲→StoryMap 与集纲/章纲一体→正文)、集纲/章纲质量门禁、生成后台轮询(含持久化 stage/progress 与分批 checkpoint)、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` 可导出恢复候选。
@@ -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
- # 固定版本源码包(zip)
46
- curl -sL -o /tmp/scriptnow-cli.zip https://sn.igeewa.com/downloads/scriptnow-cli/scriptnow-cli-v0.3.80.zip
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
@@ -63,7 +67,7 @@ Windows PowerShell 使用 `py -3 -m venv .venv` 创建 Python 3.10+ 环境,通
63
67
  ## 登录
64
68
 
65
69
  ```bash
66
- scriptnow login --host https://sn.igeewa.com --email 你的账号 # 交互式隐藏输入密码(或 --password-stdin / SCRIPTNOW_PASSWORD)
70
+ scriptnow login --host https://sn.igeewa.com # 打开系统浏览器登录授权
67
71
  ```
68
72
 
69
73
  会话保存到 `~/.config/scriptnow-cli/session.json`(仅 Cookie,不含密码,权限 0600)。
@@ -74,7 +78,16 @@ macOS/Linux 上 CLI 会用跨进程锁协调共享会话的自动续期:不同
74
78
  是否登录、账号、平台地址与连通性。任何「登录失败 / 找不到配置 / 409 / No such option」
75
79
  先 `scriptnow doctor` 定位,不要猜配置位置。`SCRIPTNOW_CLI_CONFIG` 可覆盖会话路径;
76
80
  多环境共用同一会话文件时登录一次全部生效。
77
- 也可用 `SCRIPTNOW_BASE_URL` / `SCRIPTNOW_EMAIL` / `SCRIPTNOW_PASSWORD` 环境变量。
81
+ 登录仅通过系统浏览器完成,不再接受密码参数、标准输入或密码环境变量。
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` 推断。
78
91
 
79
92
  ## 快速开始(双域)
80
93
 
@@ -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
  ```
@@ -158,13 +174,13 @@ 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:go(一键解读)/ local(Agent 本地解读,样本不传平台)/ create / read / status / decide |
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
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(归档导出恢复候选)**;重建须先采纳小说粗纲,阶段按全书章区间且不强制一阶段一卷 |
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(归档导出恢复候选)** |
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(分集量化仪表盘:节拍密度/冲突分量/角色戏份分布/关键节点覆盖矩阵,确定性算出、只读)** |
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 |
@@ -348,3 +364,13 @@ CLI、Creator 与创作运行共用服务端 creative-skill-plan。逐章/逐场
348
364
  ## CLI release synchronization
349
365
 
350
366
  Maintainers run monorepo `scripts/sync-cli-release.sh` to synchronize GitHub, the production distribution and PyPI. PyPI environment review remains required; exit 3 means pending, with an exact resume command. See [publishing instructions](https://github.com/quchenchen/scriptnow-cli/blob/main/PUBLISHING.md).
367
+
368
+ ## ScriptNow 创作搭档 Skill
369
+
370
+ 作者可以说“启动 ScriptNow 新手模式”或“继续我的作品”。`scriptnow` Skill 负责对话引导,CLI 负责执行,平台负责权限、审阅与保存。入口按当前任务读取安装、规划、审阅、写作方法、正文、运行恢复或分镜说明,不一次加载全部规则。安装 CLI 包会携带完整 Skill,但不会自动向所有 Agent 客户端注册;注册时须包含整个 skills 目录及其 references、agents 文件。Skill 与 CLI 同步发布,实时 `agent-guide --json` 为操作规则依据。
371
+
372
+ 开始或继续 ScriptNow 创作时,Skill 默认自检;缺少 CLI 即自动安装必要依赖并验证,无需作者另行提出安装要求,已有可用版本直接复用。先检查 Agent 实际执行环境,Windows 优先调用官方 `install-agent.ps1`,完成后用绝对路径验证并继续登录。现有自动 Python 安装分支针对 amd64;其他架构、组织策略和网络限制按具体检查处理,不承诺所有机器均可无人值守安装。
373
+
374
+ 作品写作方法共建:Skill 从灵感和规划对话中积累作者的理念、人物思路、节奏、钩子与表达要求,围绕真实创作决定,正文前整理成核心追求、条件性原则、适用边界和取舍顺序;正反例不是共建主流程,craft 必需的 examples 从已确认的具体取舍中提取。通过现有 skill setup / craft 接口,经作者确认、平台保存和挂载核验后生效;单次修改不自动升级为长期规则。
375
+
376
+ 浏览器授权登录:运行 `scriptnow login` 后由系统浏览器登录并确认,临时授权凭证自动传递,作者无需复制。CLI 不接收密码参数、标准输入或密码环境变量。登录会话复用并自动刷新;默认访问凭据 60 分钟,成功刷新后重新计算 30 天闲置有效期,实际值由服务端设置决定。退出、改密或撤销后仍须重新授权。此变更需后端与 Creator 授权页配套部署后发布 CLI。
@@ -1,3 +1,3 @@
1
1
  """scriptnow-cli — agent-native CLI for the ScriptNow creative platform."""
2
2
 
3
- __version__ = "0.3.95"
3
+ __version__ = "0.4.4"