novelws 5.0.0 → 5.1.0
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.
- package/CHANGELOG.md +20 -0
- package/README.md +6 -2
- package/package.json +1 -1
- package/templates/commands/expand.md +43 -10
- package/templates/dot-claude/CLAUDE.md +9 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [5.1.0] - 2026-02-20
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **`/expand` 上下文隔离声明** — 强制从文件系统重新加载所有资源,不依赖对话历史中 /write 的中间记忆
|
|
13
|
+
- **`/expand` 3 层资源加载结构** — 从 6 项扩展为 9 项:
|
|
14
|
+
- 第 1 层(全局):specification.md 摘要 + 当前卷大纲(新增)
|
|
15
|
+
- 第 2 层(章节):当前章概要 + 前一章正文末尾
|
|
16
|
+
- 第 3 层(细节):角色状态 + 伏笔 + 角色关系(新增)+ 风格参考 + 反AI规范
|
|
17
|
+
- **`/expand` 全局一致性原则** — 正文必须与 specification.md 类型定位和 creative-plan.md 卷级设计保持一致
|
|
18
|
+
- **`/expand` 角色关系驱动原则** — 对话和互动必须体现 relationships.json 中的关系动态
|
|
19
|
+
- **`/expand` 批量模式资源隔离** — 每章独立从文件系统加载资源,不复用前一章扩写的中间状态
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **`/expand` allowed-tools** — 新增 `Read(//resources/constitution.md)` 权限
|
|
24
|
+
- **CLAUDE.md 会话级复用规则** — 从统一复用改为分命令策略:/specify、/plan、/write 可复用;/expand、/analyze 强制从文件重载
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
8
28
|
## [5.0.0] - 2026-02-20
|
|
9
29
|
|
|
10
30
|
### Breaking Changes
|
package/README.md
CHANGED
|
@@ -75,9 +75,13 @@ novelws init my-novel --model claude-sonnet-4-5-20250929
|
|
|
75
75
|
|
|
76
76
|
### /expand — 扩写正文
|
|
77
77
|
|
|
78
|
-
将概要扩写为 3000-5000
|
|
78
|
+
将概要扩写为 3000-5000 字完整正文。采用 3 层资源加载结构,强制从文件系统重新加载(不依赖对话历史):
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
- 第 1 层(全局):specification.md 摘要 + 当前卷大纲
|
|
81
|
+
- 第 2 层(章节):当前章概要 + 前一章正文末尾
|
|
82
|
+
- 第 3 层(细节):出场角色状态 + 活跃伏笔 + 角色关系 + 风格参考 + 反AI规范
|
|
83
|
+
|
|
84
|
+
总上下文控制在 3500 字以内。支持批量模式:`/expand 1 --batch 10`(每章独立加载资源)。
|
|
81
85
|
|
|
82
86
|
### /analyze — 质量检查
|
|
83
87
|
|
package/package.json
CHANGED
|
@@ -2,11 +2,20 @@
|
|
|
2
2
|
description: 将章节概要扩写为 3000-5000 字正文
|
|
3
3
|
argument-hint: [章节号] [--batch N]
|
|
4
4
|
recommended-model: claude-opus-4-6
|
|
5
|
-
allowed-tools: Read(//stories/**), Write(//stories/**/content/**), Read(//tracking/**), Write(//tracking/**), Read(//resources/style-reference.md), Read(//resources/anti-ai.md), Bash(ls:*)
|
|
5
|
+
allowed-tools: Read(//stories/**), Write(//stories/**/content/**), Read(//tracking/**), Write(//tracking/**), Read(//resources/style-reference.md), Read(//resources/anti-ai.md), Read(//resources/constitution.md), Bash(ls:*)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
用户输入:$ARGUMENTS
|
|
9
9
|
|
|
10
|
+
## 上下文隔离(强制)
|
|
11
|
+
|
|
12
|
+
本命令的所有创作资源必须从文件系统重新加载,禁止依赖本对话中之前任何 /write 或其他命令的生成过程和中间记忆。
|
|
13
|
+
|
|
14
|
+
具体规则:
|
|
15
|
+
- 忽略对话历史中所有 /write 生成的概要内容,以文件系统中的 synopsis.md 为唯一真实来源
|
|
16
|
+
- 忽略对话历史中所有 tracking 文件的中间状态,重新从文件读取最新版本
|
|
17
|
+
- 不复用对话中已加载的 style-reference.md 或 anti-ai.md,重新读取
|
|
18
|
+
|
|
10
19
|
## 目标
|
|
11
20
|
|
|
12
21
|
将已生成的章节概要扩写为 3000-5000 字的完整正文。
|
|
@@ -16,18 +25,38 @@ allowed-tools: Read(//stories/**), Write(//stories/**/content/**), Read(//tracki
|
|
|
16
25
|
- 章节号:从 $ARGUMENTS 提取
|
|
17
26
|
- `--batch N`:批量扩写 N 章(最大 10),从指定章节号开始
|
|
18
27
|
|
|
19
|
-
##
|
|
28
|
+
## 资源加载(3 层结构,从文件系统重新加载)
|
|
29
|
+
|
|
30
|
+
所有资源必须从文件系统读取,不复用对话中的缓存。总上下文控制在 3500 字以内。
|
|
31
|
+
|
|
32
|
+
### 第 1 层 — 全局视角
|
|
33
|
+
|
|
34
|
+
1. **specification.md 摘要**:读取 `stories/<story>/specification.md`,提取 100 字核心摘要(类型 + 主角 + 核心冲突)
|
|
35
|
+
2. **当前卷大纲**:读取 `stories/<story>/creative-plan.md`,只提取当前章节所属卷的段落
|
|
20
36
|
|
|
21
|
-
|
|
22
|
-
2. **前一章正文末尾**:读取前一章 `chapter-XXX.md` 的最后 500-800 字(衔接用)。如果前一章尚未扩写,读取前一章概要代替
|
|
23
|
-
3. **本章出场角色状态**:从概要中提取出场角色列表,然后从 `tracking/character-state.json` 只提取这些角色的条目
|
|
24
|
-
4. **本章活跃伏笔**:从 `tracking/plot-tracker.json` 提取 status=planted 或 status=hinted 且 keyChapters 包含当前章或相邻章(±3章)的伏笔
|
|
25
|
-
5. **风格参考**:读取 `resources/style-reference.md`
|
|
26
|
-
6. **反AI规范**:读取 `resources/anti-ai.md`
|
|
37
|
+
### 第 2 层 — 章节核心
|
|
27
38
|
|
|
28
|
-
|
|
39
|
+
3. **当前章概要**:读取 `stories/<story>/content/chapter-XXX-synopsis.md`(200-500字)
|
|
40
|
+
4. **前一章正文末尾**:读取前一章 `chapter-XXX.md` 的最后 500-800 字(衔接用)。如果前一章尚未扩写,读取前一章概要代替
|
|
29
41
|
|
|
30
|
-
|
|
42
|
+
### 第 3 层 — 细节支撑
|
|
43
|
+
|
|
44
|
+
5. **本章出场角色状态**:从概要中提取出场角色列表,然后从 `tracking/character-state.json` 只提取这些角色的条目
|
|
45
|
+
6. **本章活跃伏笔**:从 `tracking/plot-tracker.json` 提取 status=planted 或 status=hinted 且 keyChapters 包含当前章或相邻章(±3章)的伏笔
|
|
46
|
+
7. **本章相关角色关系**:从 `tracking/relationships.json` 提取本章出场角色之间的关系条目(最多 5 条,超出则取最近更新的)
|
|
47
|
+
8. **风格参考**:读取 `resources/style-reference.md`
|
|
48
|
+
9. **反AI规范**:读取 `resources/anti-ai.md`
|
|
49
|
+
|
|
50
|
+
**上下文预算**:
|
|
51
|
+
|
|
52
|
+
| 层级 | 预估字数 |
|
|
53
|
+
|------|---------|
|
|
54
|
+
| 第 1 层 全局 | 200-400 字 |
|
|
55
|
+
| 第 2 层 章节 | 700-1300 字 |
|
|
56
|
+
| 第 3 层 细节 | 800-1500 字 |
|
|
57
|
+
| **总计** | **1700-3200 字** |
|
|
58
|
+
|
|
59
|
+
每层加载完后检查上下文预算,超出则截断(如角色关系条目过多时只取最核心的 5 条)。
|
|
31
60
|
|
|
32
61
|
## 执行步骤
|
|
33
62
|
|
|
@@ -45,6 +74,8 @@ allowed-tools: Read(//stories/**), Write(//stories/**/content/**), Read(//tracki
|
|
|
45
74
|
基于概要,扩写为 3000-5000 字正文。遵循以下原则:
|
|
46
75
|
|
|
47
76
|
- **忠实于概要**:核心事件、出场角色、情感走向必须与概要一致
|
|
77
|
+
- **全局一致性**:正文必须与 specification.md 的类型定位和 creative-plan.md 的卷级设计保持一致
|
|
78
|
+
- **角色关系驱动**:对话和互动必须体现 relationships.json 中的关系动态
|
|
48
79
|
- **文学表达**:专注于场景描写、对话、心理活动、动作细节
|
|
49
80
|
- **风格一致**:遵循 style-reference.md 的风格设定
|
|
50
81
|
- **反AI规范**:遵循 anti-ai.md 的写作规范
|
|
@@ -63,6 +94,8 @@ allowed-tools: Read(//stories/**), Write(//stories/**/content/**), Read(//tracki
|
|
|
63
94
|
|
|
64
95
|
如果指定了 `--batch N`,重复步骤 2-4 共 N 次。每章完成后输出进度和字数。
|
|
65
96
|
|
|
97
|
+
**批量模式资源隔离**:每章都必须重新从文件系统加载所有资源(前一章扩写可能更新了 tracking)。批量模式中每章视为独立的扩写任务,不复用前一章扩写过程中的中间状态。
|
|
98
|
+
|
|
66
99
|
### 6. 后续建议
|
|
67
100
|
|
|
68
101
|
单章完成:「第X章扩写完成(XXXX字)。继续 /expand [X+1] 或使用 /analyze X 检查质量。」
|
|
@@ -49,10 +49,17 @@
|
|
|
49
49
|
|
|
50
50
|
## 会话级资源复用
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
不同命令的资源复用策略不同:
|
|
53
53
|
|
|
54
|
+
**可复用命令**(/specify、/plan、/write):
|
|
54
55
|
1. **首次加载**:读取资源文件内容,记住已加载的资源列表
|
|
55
56
|
2. **后续命令**:检查资源是否在"已加载列表"中
|
|
56
57
|
- ✅ 已加载:直接使用已有知识,不重新读取文件
|
|
57
58
|
- ❌ 未加载:读取文件并添加到"已加载列表"
|
|
58
|
-
|
|
59
|
+
|
|
60
|
+
**强制重载命令**(/expand、/analyze):
|
|
61
|
+
- 必须从文件系统重新加载所有资源,不复用对话中的缓存
|
|
62
|
+
- 忽略对话历史中其他命令的生成过程和中间记忆
|
|
63
|
+
- 以文件系统中的数据为唯一真实来源
|
|
64
|
+
|
|
65
|
+
**例外**:用户明确要求"重新加载"时,任何命令都重新读取
|