dsh-novel-writer 0.4.0 → 0.5.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/INSTALL.md +39 -0
- package/README.md +55 -50
- package/cordis.patch.yml +7 -1
- package/lib/analysis.js +618 -0
- package/lib/client.js +561 -0
- package/lib/index.js +681 -457
- package/package.json +15 -8
- package/skills/novel-writing/SKILL.md +52 -0
- package/test/client-test.mjs +34 -0
- package/test/pattern-test.mjs +52 -0
- package/client.js +0 -72
- package/lib/pattern.js +0 -125
package/INSTALL.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# dsh-novel-writer v0.5.0 — 安装指南(v0.3.0 × v0.4.0 合并版)
|
|
2
|
+
|
|
3
|
+
宿主端零第三方依赖;浏览器端依赖 Web GUI 自带的 react。
|
|
4
|
+
本包 UI:侧边栏「句式分析」大开关面板(统一开关位置);设置 > 插件配置 卡片仅显示状态 + 跳转按钮。
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
dsh-novel-writer-v0.5.0/
|
|
8
|
+
├── lib/
|
|
9
|
+
│ ├── index.js # 宿主端(8 个 novel_* 工具 + state 路由)
|
|
10
|
+
│ ├── analysis.js # 句式模式分析引擎(九类/情感/节奏,零依赖)
|
|
11
|
+
│ └── client.js # 浏览器端(侧边栏面板 + 设置页卡片)
|
|
12
|
+
├── test/ # 引擎与 client 契约测试
|
|
13
|
+
├── package.json
|
|
14
|
+
├── cordis.patch.yml
|
|
15
|
+
├── README.md
|
|
16
|
+
├── INSTALL.md
|
|
17
|
+
└── skills/novel-writing/SKILL.md
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 安装
|
|
21
|
+
|
|
22
|
+
1. 把本文件夹放入 profile 的 node_modules(或 `dsh plugin --profile web add <路径>`);
|
|
23
|
+
2. profile `package.json` 的 `dsh.profile.bundles` 加入 `dsh-novel-writer`;
|
|
24
|
+
3. (可选)把 `skills/novel-writing` 复制到工作区 `.dsh/skills/`;
|
|
25
|
+
4. **重启 web 应用**。
|
|
26
|
+
|
|
27
|
+
## 验证
|
|
28
|
+
|
|
29
|
+
- 工具列表出现:novel_books / novel_chapters / novel_read / novel_keywords / novel_new_chapter /
|
|
30
|
+
novel_import / novel_sentence_analysis / novel_sentence_config;
|
|
31
|
+
- 侧边栏出现「句式分析」入口;设置 > 插件配置 出现 novel-writer 状态卡片;
|
|
32
|
+
- `GET /api/dsh-novel-writer/state` 返回 200 JSON。
|
|
33
|
+
|
|
34
|
+
## 开关
|
|
35
|
+
|
|
36
|
+
- 默认开启;**唯一开关位置:侧边栏「句式分析」面板**(总开关 enabled + 子开关 autoAnalyze);
|
|
37
|
+
- 设置 > 插件配置 卡片仅显示状态并提供「打开开关面板」跳转;
|
|
38
|
+
- 持久化 `~/.dsh/dsh-novel-writer/state.json`;兼容读取 `~/.dsh/novel-writer.json`(v0.4.0 stylePattern);
|
|
39
|
+
- config 支持 `sentenceAnalysis.enabled / autoAnalyze` 与 `stylePattern`(v0.4.0 兼容)。
|
package/README.md
CHANGED
|
@@ -1,78 +1,83 @@
|
|
|
1
|
-
# dsh-novel-writer —
|
|
1
|
+
# dsh-novel-writer — 小说写作助手插件(v0.5.0 合并版)
|
|
2
2
|
|
|
3
|
-
DSH(DeepSeek Harness)小说写作助手 bundle
|
|
4
|
-
|
|
3
|
+
DSH(DeepSeek Harness)小说写作助手 bundle 插件。宿主端零第三方依赖(仅 Node 内置模块),
|
|
4
|
+
浏览器端仅依赖 Web GUI 自带的 react。
|
|
5
|
+
**v0.5.0 = v0.3.0(深度句式分析 + 侧边栏开关)与 v0.4.0(批量导入 + 设置页卡片)的合并版**。
|
|
5
6
|
|
|
6
|
-
##
|
|
7
|
+
## 功能
|
|
7
8
|
|
|
8
9
|
1. **章节库**:章节存于 `novels/<书名>/第N章.md`(或 `.txt`/`.markdown`),
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
4.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
`novel_books` / `novel_chapters` / `novel_read` 浏览与读取。
|
|
11
|
+
章号任意位置 + 中文数字识别;UTF-8 / UTF-16 LE/BE / GBK 编码自动探测。
|
|
12
|
+
2. **分析**:`novel_keywords` 提取全书/单章高频关键词(中文二字词组 + 英文词)。
|
|
13
|
+
3. **句式模式分析**:`novel_sentence_analysis` 对全书/单章输出——
|
|
14
|
+
- 九类句式:陈述 / 环境 / 心理 / 对话 / 疑问 / 反问 / 感叹 / 祈使 / 省略留白(比例、句数、均长、例句);
|
|
15
|
+
- 排列规律:句式转移、2/3 连句高频模板、段首/段尾句式、**按章节的压缩节奏序列**(S×8 ENV×2 PSY×3…);
|
|
16
|
+
- 句长节奏:均值/中位数、短句/长句占比;
|
|
17
|
+
- 主观情感:情感词典(喜/怒/哀/惧/惊)+ 强度副词加权 → 主导情绪、情绪分布、情感曲线、主观性指数;
|
|
18
|
+
- 风格指纹 + 给模型的**节奏建议**(guidance)。
|
|
19
|
+
⚠️ 风险约束:句式模式是"参考节奏"而非"模板套用",模型在机械复刻导致僵硬时会优先回归自然表达。
|
|
20
|
+
4. **原稿件批量导入**:`novel_import` 扫描存放多本小说的文件夹(支持子文件夹、多编码、任意位置章号),
|
|
21
|
+
从文件名与文件头双通道提取书名候选并分组(scan 预览),AI 确认后一键复制/移动到 `novels/<书名>/`(apply);
|
|
22
|
+
支持 `book` 强制归并异名同书、`files` 精确指定、`move` 移动模式。
|
|
23
|
+
5. **续写**:先读后写、保持文风与伏笔一致,`novel_new_chapter` 创建新章节文件。
|
|
23
24
|
|
|
24
25
|
## 提供的工具
|
|
25
26
|
|
|
26
27
|
| 工具 | 说明 |
|
|
27
28
|
|---|---|
|
|
28
|
-
| `novel_books` |
|
|
29
|
-
| `novel_chapters` |
|
|
30
|
-
| `novel_read` |
|
|
31
|
-
| `novel_keywords` |
|
|
32
|
-
| `novel_new_chapter` |
|
|
33
|
-
| `novel_import` |
|
|
34
|
-
| `
|
|
29
|
+
| `novel_books` | 列出章节库全部作品 |
|
|
30
|
+
| `novel_chapters` | 列出某作品章节清单 |
|
|
31
|
+
| `novel_read` | 阅读某章正文(offset/limit 分段) |
|
|
32
|
+
| `novel_keywords` | 提取高频关键词 |
|
|
33
|
+
| `novel_new_chapter` | 创建新章节文件 |
|
|
34
|
+
| `novel_import` | **原稿件批量导入/自动分类(v0.4.0)** |
|
|
35
|
+
| `novel_sentence_analysis` | **句式模式分析(v0.3.0 深度 + v0.4.0 节奏)** |
|
|
36
|
+
| `novel_sentence_config` | 查看/修改句式分析开关 |
|
|
37
|
+
|
|
38
|
+
## UI 开关(统一在一处)
|
|
39
|
+
|
|
40
|
+
- **唯一开关位置:侧边栏「句式分析」面板**——状态横幅 + **总开关「启用句式分析」**(enabled)+ 子开关「分析作品时自动使用」(autoAnalyze);
|
|
41
|
+
- **设置 > 插件配置** 的 novel-writer 卡片仅**显示状态**(已启用/已关闭、自动分析开/关),并提供「打开开关面板」按钮跳转;
|
|
42
|
+
- 也可让 AI 用 `novel_sentence_config` 查看/修改。
|
|
43
|
+
- 状态写入 `~/.dsh/dsh-novel-writer/state.json`;同时**只读兼容** v0.4.0 的 `~/.dsh/novel-writer.json`(stylePattern)与 config.stylePattern。
|
|
44
|
+
- 开关默认**开启**;宿主端路由 `/api/dsh-novel-writer/state`(loopback 围栏 + 可选注入,headless 自动跳过)。
|
|
35
45
|
|
|
36
46
|
## 安装(web profile)
|
|
37
47
|
|
|
38
48
|
```sh
|
|
39
|
-
dsh plugin --profile web add D:/
|
|
49
|
+
dsh plugin --profile web add D:/tools/dsh-novel-writer
|
|
40
50
|
```
|
|
41
51
|
|
|
42
|
-
|
|
43
|
-
`dsh-novel-writer
|
|
52
|
+
或手动:把本文件夹放入 profile 的 `node_modules`,并在 profile `package.json` 的
|
|
53
|
+
`dsh.profile.bundles` 中加入 `dsh-novel-writer`。安装后**重启 web 应用**生效。
|
|
44
54
|
|
|
45
55
|
## 配置
|
|
46
56
|
|
|
47
|
-
插件 config 支持 `root`:章节库根目录(默认取会话工作区,即 `novels/` 所在位置)。
|
|
48
|
-
在 profile 的 `cordis.patch.yml` 中可覆盖(顶层数组元素直接是条目,无需 `patch:` 包装):
|
|
49
|
-
|
|
50
57
|
```yaml
|
|
51
58
|
- id: novel-writer
|
|
52
59
|
config:
|
|
53
60
|
root: 'D:/我的小说库'
|
|
61
|
+
sentenceAnalysis:
|
|
62
|
+
enabled: true
|
|
63
|
+
autoAnalyze: true
|
|
64
|
+
# stylePattern: true # v0.4.0 兼容写法(任一生效即开启)
|
|
54
65
|
```
|
|
55
66
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
`stylePattern`(布尔,**默认 false 关闭**):控制 `novel_style_pattern` 工具与
|
|
59
|
-
"句式模式仿写"提示词——分析原文陈述/反问/心理/对话等句子的排列节奏,引导续写时保持相近
|
|
60
|
-
叙事节奏。
|
|
67
|
+
## 版本记录
|
|
61
68
|
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
### v0.5.0(合并版)
|
|
70
|
+
- 合并 v0.3.0 与 v0.4.0:九类句式(新增"环境")、章节压缩节奏序列、guidance 节奏建议、采样上限;
|
|
71
|
+
- 新增 novel_import 批量导入(v0.4.0);开关同时出现在侧边栏面板与官方设置页;
|
|
72
|
+
- 路由改可选注入 ctx.inject(["webServer"]),headless 兼容;保留 loopback 围栏;
|
|
73
|
+
- 兼容读取 v0.4.0 的 novel-writer.json / config.stylePattern;提示词内置"僵硬时优先自然表达"约束。
|
|
64
74
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
### v0.4.0(他人改版,已并入)
|
|
76
|
+
- novel_import 批量导入自动分类;novel_style_pattern 轻量句式分析(环境类/压缩序列/guidance);
|
|
77
|
+
- 官方设置页插件配置卡片;ctx.inject 可选注入;开关默认关闭 + 风险提示。
|
|
68
78
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
```yaml
|
|
72
|
-
- id: novel-writer
|
|
73
|
-
config:
|
|
74
|
-
root: ''
|
|
75
|
-
stylePattern: true
|
|
76
|
-
```
|
|
79
|
+
### v0.3.0(本系列)
|
|
80
|
+
- 句式模式分析深度版(情感曲线/句长/段落/指纹);侧边栏开关面板;state 路由。
|
|
77
81
|
|
|
78
|
-
|
|
82
|
+
### v0.2.0 / v0.1.0
|
|
83
|
+
- 章节库、关键词、新建章节;编码探测。
|
package/cordis.patch.yml
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# dsh-novel-writer bundle patch: mounts the novel-writing assistant plugin
|
|
2
|
-
# into the profile's loader tree. The entry's
|
|
2
|
+
# into the profile's loader tree. The entry's name is the plugin package
|
|
3
3
|
# itself, resolved from the profile's node_modules.
|
|
4
|
+
#
|
|
5
|
+
# v0.3.0: the same row now carries BOTH halves — the node half (exports ".")
|
|
6
|
+
# runs in the host process (novel_* tools + /api/dsh-novel-writer/state
|
|
7
|
+
# routes for the UI switch), and the dsh.client declaration in package.json
|
|
8
|
+
# makes the browser half (exports "./client") load in the web GUI, mounting
|
|
9
|
+
# the 「句式分析」 sidebar entry with the enable switch.
|
|
4
10
|
- insert:
|
|
5
11
|
- id: novel-writer
|
|
6
12
|
name: 'dsh-novel-writer'
|