@zb2947244682/supernovel 1.0.0 → 1.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/README.md +306 -78
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,122 +1,350 @@
|
|
|
1
|
-
# SuperNovel
|
|
1
|
+
# SuperNovel 📚
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
AI-powered novel generation system with Core-Shell architecture and RAG for long-form consistency.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
一个基于 Core-Shell 架构的 AI 长篇小说生成系统,支持向量检索和知识图谱,确保几百章长篇小说的一致性。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
---
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- **纯函数**:所有业务逻辑都是纯函数,无副作用
|
|
11
|
-
- **Effects 模式**:UseCase 返回 Effect 声明而非直接执行 I/O
|
|
12
|
-
- **类型安全**:完整的 TypeScript 类型定义
|
|
9
|
+
## 🚀 快速开始(小白教程)
|
|
13
10
|
|
|
14
|
-
###
|
|
15
|
-
- **命令分发**:Command 到 UseCase 的路由
|
|
16
|
-
- **Effect 执行**:执行 Core 层声明的 Effects
|
|
17
|
-
- **工作流协调**:管理生成流程的状态流转
|
|
11
|
+
### 第一步:安装 Node.js
|
|
18
12
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
1. 访问 [nodejs.org](https://nodejs.org)
|
|
14
|
+
2. 下载 **LTS** 版本(推荐 20.x 或更高)
|
|
15
|
+
3. 双击安装,一直点"下一步"即可
|
|
16
|
+
4. 验证安装:打开命令提示符(CMD)或 PowerShell,输入:
|
|
17
|
+
```bash
|
|
18
|
+
node --version
|
|
19
|
+
npm --version
|
|
20
|
+
```
|
|
23
21
|
|
|
24
|
-
###
|
|
25
|
-
- **AI 适配器**:支持 OpenAI、Anthropic、OpenRouter 等
|
|
26
|
-
- **存储适配器**:文件系统操作
|
|
27
|
-
- **校验适配器**:AI 辅助的内容校验
|
|
22
|
+
### 第二步:获取 AI API 密钥
|
|
28
23
|
|
|
29
|
-
|
|
24
|
+
本工具需要 AI 模型来生成小说,支持以下服务商:
|
|
25
|
+
|
|
26
|
+
#### 选项 A:阿里云灵积(推荐国内用户)
|
|
27
|
+
1. 访问 [dashscope.aliyun.com](https://dashscope.aliyun.com)
|
|
28
|
+
2. 注册/登录账号
|
|
29
|
+
3. 创建 API Key
|
|
30
|
+
4. 推荐模型:`qwen3.5-flash`(速度快、价格便宜)
|
|
31
|
+
|
|
32
|
+
#### 选项 B:OpenAI(需要翻墙)
|
|
33
|
+
1. 访问 [platform.openai.com](https://platform.openai.com)
|
|
34
|
+
2. 创建 API Key
|
|
35
|
+
3. 推荐模型:`gpt-4o-mini` 或 `gpt-4o`
|
|
36
|
+
|
|
37
|
+
#### 选项 C:其他平台
|
|
38
|
+
- **OpenRouter**: 支持多种模型聚合
|
|
39
|
+
- **Anthropic Claude**: 适合长文本生成
|
|
40
|
+
|
|
41
|
+
### 第三步:运行 SuperNovel
|
|
42
|
+
|
|
43
|
+
打开命令提示符,输入以下命令:
|
|
30
44
|
|
|
31
45
|
```bash
|
|
32
|
-
|
|
33
|
-
|
|
46
|
+
# 使用 npx 直接运行(无需安装)
|
|
47
|
+
npx @zb2947244682/supernovel
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 第四步:初始化配置
|
|
51
|
+
|
|
52
|
+
第一次运行会提示初始化,选择你的 AI 服务商并输入 API Key:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# 或者在 D:\Novel 目录下运行初始化
|
|
56
|
+
mkdir D:\Novel
|
|
57
|
+
cd D:\Novel
|
|
58
|
+
npx @zb2947244682/supernovel init
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
这将创建:
|
|
62
|
+
- `D:\Novel\config.json` - AI 配置
|
|
63
|
+
- `D:\Novel\draft\` - 小说存放目录
|
|
64
|
+
- `D:\Novel\logs\` - 日志目录
|
|
65
|
+
|
|
66
|
+
### 第五步:生成你的第一部小说
|
|
67
|
+
|
|
68
|
+
#### 方式一:TUI 交互界面(推荐新手)
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npx @zb2947244682/supernovel
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
然后按提示选择:
|
|
75
|
+
1. 🏗️ 生成小说框架 → 输入你的创意
|
|
76
|
+
2. 📝 生成章节内容 → 选择刚创建的项目
|
|
77
|
+
3. 等待 AI 生成完成
|
|
78
|
+
|
|
79
|
+
#### 方式二:命令行(适合高级用户)
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# 1. 生成小说框架
|
|
83
|
+
cd D:\Novel
|
|
84
|
+
npx @zb2947244682/supernovel framework "一个关于程序员穿越到异世界的故事" --name my-first-novel
|
|
85
|
+
|
|
86
|
+
# 2. 生成所有章节
|
|
87
|
+
npx @zb2947244682/supernovel chapters my-first-novel
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 第六步:查看成果
|
|
91
|
+
|
|
92
|
+
生成完成后,在 `D:\Novel\draft\你的项目名\` 目录下可以看到:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
my-first-novel/
|
|
96
|
+
├── project.json # 项目主文件(包含所有数据)
|
|
97
|
+
├── requirements.md # 需求文档
|
|
98
|
+
├── world.md # 世界观设定
|
|
99
|
+
├── outline.md # 小说大纲
|
|
100
|
+
└── chapters/ # 章节文件
|
|
101
|
+
├── chapter-1-1.md
|
|
102
|
+
├── chapter-1-2.md
|
|
103
|
+
├── chapter-1-3.md
|
|
104
|
+
└── ...
|
|
34
105
|
```
|
|
35
106
|
|
|
36
|
-
|
|
107
|
+
用任何文本编辑器(如记事本、VS Code)打开 `.md` 文件即可阅读。
|
|
37
108
|
|
|
38
|
-
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 📖 完整命令参考
|
|
112
|
+
|
|
113
|
+
### 全局安装(可选)
|
|
114
|
+
|
|
115
|
+
如果你不想每次都输入 `npx`,可以全局安装:
|
|
39
116
|
|
|
40
117
|
```bash
|
|
41
|
-
npm
|
|
42
|
-
|
|
43
|
-
|
|
118
|
+
npm install -g @zb2947244682/supernovel
|
|
119
|
+
|
|
120
|
+
# 之后直接使用
|
|
121
|
+
supernovel
|
|
122
|
+
# 或简写
|
|
123
|
+
sn
|
|
44
124
|
```
|
|
45
125
|
|
|
46
|
-
###
|
|
126
|
+
### 所有命令
|
|
47
127
|
|
|
48
128
|
```bash
|
|
129
|
+
# 初始化配置
|
|
130
|
+
supernovel init
|
|
131
|
+
|
|
132
|
+
# 测试 AI 连接
|
|
133
|
+
supernovel test
|
|
134
|
+
|
|
49
135
|
# 生成小说框架
|
|
50
|
-
|
|
136
|
+
supernovel framework "你的创意描述" --name 项目名称
|
|
51
137
|
|
|
52
138
|
# 生成章节
|
|
53
|
-
|
|
139
|
+
supernovel chapters 项目名称
|
|
140
|
+
|
|
141
|
+
# 查看帮助
|
|
142
|
+
supernovel --help
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## ⚙️ 配置文件详解
|
|
148
|
+
|
|
149
|
+
编辑 `D:\Novel\config.json`:
|
|
54
150
|
|
|
55
|
-
|
|
56
|
-
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"ai": {
|
|
154
|
+
"provider": "custom",
|
|
155
|
+
"baseURL": "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|
156
|
+
"apiKey": "你的API密钥",
|
|
157
|
+
"model": "qwen3.5-flash",
|
|
158
|
+
"temperature": 0.7,
|
|
159
|
+
"maxTokens": 8000
|
|
160
|
+
}
|
|
161
|
+
}
|
|
57
162
|
```
|
|
58
163
|
|
|
59
|
-
|
|
164
|
+
### 参数说明
|
|
60
165
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
166
|
+
| 参数 | 说明 | 推荐值 |
|
|
167
|
+
|------|------|--------|
|
|
168
|
+
| `provider` | AI 服务商类型 | `custom` / `openai` / `anthropic` |
|
|
169
|
+
| `baseURL` | API 地址 | 根据服务商填写 |
|
|
170
|
+
| `apiKey` | 你的 API 密钥 | 从服务商获取 |
|
|
171
|
+
| `model` | 模型名称 | `qwen3.5-flash` / `gpt-4o` |
|
|
172
|
+
| `temperature` | 创造性(0-2) | 0.7(平衡)|
|
|
173
|
+
| `maxTokens` | 单次最大输出 | 8000(越大越不容易截断)|
|
|
65
174
|
|
|
66
|
-
|
|
67
|
-
- 选择已创建的项目
|
|
68
|
-
- AI 自动按大纲生成章节
|
|
69
|
-
- 自动校验并保存
|
|
175
|
+
---
|
|
70
176
|
|
|
71
|
-
|
|
72
|
-
- 导出为 Markdown 格式
|
|
73
|
-
- 后续支持 EPUB 格式
|
|
177
|
+
## 🎯 创意描述技巧
|
|
74
178
|
|
|
75
|
-
|
|
179
|
+
好的创意描述会让 AI 生成更精彩的小说:
|
|
180
|
+
|
|
181
|
+
### ✅ 好的示例
|
|
76
182
|
|
|
77
183
|
```
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
├── requirements.md # 需求文档
|
|
82
|
-
├── world.md # 世界观设定
|
|
83
|
-
├── outline.md # 小说大纲
|
|
84
|
-
└── chapters/ # 章节文件
|
|
85
|
-
├── chapter-1.md
|
|
86
|
-
├── chapter-2.md
|
|
87
|
-
└── ...
|
|
184
|
+
异世界治愈奇幻小说,讲述一位现代医生穿越到魔法世界,
|
|
185
|
+
用医学知识解决魔法无法治愈的疾病。
|
|
186
|
+
主题是治愈与救赎,风格温暖治愈,适合全年龄阅读。
|
|
88
187
|
```
|
|
89
188
|
|
|
90
|
-
|
|
189
|
+
```
|
|
190
|
+
科幻悬疑小说,主角发现自己生活在一个虚拟现实中,
|
|
191
|
+
每次死亡都会回到起点,但保留记忆。
|
|
192
|
+
需要解开这个世界的真相才能逃脱。
|
|
193
|
+
```
|
|
91
194
|
|
|
92
|
-
|
|
195
|
+
### ❌ 避免的描述
|
|
93
196
|
|
|
94
197
|
```
|
|
95
|
-
|
|
198
|
+
写个小说 # 太简单
|
|
199
|
+
玄幻小说 # 太笼统
|
|
200
|
+
类似斗破苍穹的小说 # 涉及版权作品
|
|
96
201
|
```
|
|
97
202
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 🔧 常见问题
|
|
206
|
+
|
|
207
|
+
### Q1: 提示 "未找到配置文件"
|
|
208
|
+
**解决**: 先运行 `supernovel init` 初始化
|
|
209
|
+
|
|
210
|
+
### Q2: API 报错 401
|
|
211
|
+
**解决**: API Key 不正确,检查 config.json 中的 apiKey
|
|
212
|
+
|
|
213
|
+
### Q3: 生成的 JSON 解析失败
|
|
214
|
+
**解决**: 增加 `maxTokens` 到 8000 或更高,避免响应被截断
|
|
215
|
+
|
|
216
|
+
### Q4: 章节的 volume 显示 undefined
|
|
217
|
+
**解决**: 已修复,请更新到最新版本
|
|
218
|
+
|
|
219
|
+
### Q5: 如何修改已生成的大纲?
|
|
220
|
+
**解决**: 直接编辑 `outline.md` 文件,然后重新生成章节
|
|
221
|
+
|
|
222
|
+
### Q6: 支持生成多少章?
|
|
223
|
+
**解决**: 理论上无限制。3章后自动启用 RAG(检索增强生成),确保长文本一致性
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 🏗️ 架构设计
|
|
228
|
+
|
|
229
|
+
项目采用 **Core-Shell 架构**:
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
┌─────────────────────────────────────────────────────────┐
|
|
233
|
+
│ Shell 层 (CLI / TUI) │
|
|
234
|
+
│ - 用户交互界面 │
|
|
235
|
+
└─────────────────────────────────────────────────────────┘
|
|
236
|
+
↓
|
|
237
|
+
┌─────────────────────────────────────────────────────────┐
|
|
238
|
+
│ Bus 层 (Command Dispatcher) │
|
|
239
|
+
│ - 命令分发、Effect 执行、工作流协调 │
|
|
240
|
+
└─────────────────────────────────────────────────────────┘
|
|
241
|
+
↓
|
|
242
|
+
┌─────────────────────────────────────────────────────────┐
|
|
243
|
+
│ Core 层 (纯函数业务逻辑) │
|
|
244
|
+
│ - UseCases: generateWorld, generateOutline, etc. │
|
|
245
|
+
│ - Effects: 声明式副作用 │
|
|
246
|
+
└─────────────────────────────────────────────────────────┘
|
|
247
|
+
↓
|
|
248
|
+
┌─────────────────────────────────────────────────────────┐
|
|
249
|
+
│ Adapters 层 (AI / Storage / Logger) │
|
|
250
|
+
│ - AI 适配器、文件存储、日志系统 │
|
|
251
|
+
└─────────────────────────────────────────────────────────┘
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### RAG 长文本一致性系统
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
┌─────────────────────────────────────────────────────────┐
|
|
258
|
+
│ RAG Layer │
|
|
259
|
+
├─────────────────────────────────────────────────────────┤
|
|
260
|
+
│ 1. 向量存储 (Vector Store) │
|
|
261
|
+
│ - 章节语义嵌入、相似度检索 │
|
|
262
|
+
├─────────────────────────────────────────────────────────┤
|
|
263
|
+
│ 2. 知识图谱 (Knowledge Graph) │
|
|
264
|
+
│ - 实体、关系、事件追踪 │
|
|
265
|
+
├─────────────────────────────────────────────────────────┤
|
|
266
|
+
│ 3. 分层摘要 (Hierarchical Summaries) │
|
|
267
|
+
│ - 全书 → 卷 → 章 三级摘要体系 │
|
|
268
|
+
├─────────────────────────────────────────────────────────┤
|
|
269
|
+
│ 4. 一致性检查 (Consistency Checker) │
|
|
270
|
+
│ - 角色、世界观、时间线验证 │
|
|
271
|
+
└─────────────────────────────────────────────────────────┘
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 💡 高级用法
|
|
277
|
+
|
|
278
|
+
### 自定义存储路径
|
|
279
|
+
|
|
280
|
+
设置环境变量:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
# Windows PowerShell
|
|
284
|
+
$env:SUPERNOVEL_HOME = "D:\MyNovels"
|
|
285
|
+
|
|
286
|
+
# Windows CMD
|
|
287
|
+
set SUPERNOVEL_HOME=D:\MyNovels
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### 批量生成多个项目
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
# 创建批处理脚本 generate.bat
|
|
294
|
+
@echo off
|
|
295
|
+
supernovel framework "创意1" --name novel1
|
|
296
|
+
supernovel framework "创意2" --name novel2
|
|
297
|
+
supernovel chapters novel1
|
|
298
|
+
supernovel chapters novel2
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 📄 导出格式
|
|
304
|
+
|
|
305
|
+
目前支持:
|
|
306
|
+
- **Markdown** (`.md`) - 默认格式,适合阅读
|
|
307
|
+
- **项目 JSON** (`.json`) - 包含完整数据,可重新导入
|
|
308
|
+
|
|
309
|
+
未来计划:
|
|
310
|
+
- EPUB 电子书格式
|
|
311
|
+
- PDF 格式
|
|
312
|
+
- Word 文档
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## 🤝 参与贡献
|
|
317
|
+
|
|
318
|
+
欢迎提交 Issue 和 PR!
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
# 克隆项目
|
|
322
|
+
git clone https://github.com/username/supernovel.git
|
|
323
|
+
cd supernovel
|
|
324
|
+
|
|
325
|
+
# 安装依赖
|
|
326
|
+
npm install
|
|
327
|
+
|
|
328
|
+
# 开发模式
|
|
329
|
+
npm run dev
|
|
330
|
+
|
|
331
|
+
# 运行测试
|
|
332
|
+
npm test
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## 📜 许可证
|
|
103
338
|
|
|
104
|
-
|
|
339
|
+
MIT License
|
|
105
340
|
|
|
106
|
-
|
|
107
|
-
- 智能校验:字数、角色一致性、禁用元素等
|
|
108
|
-
- 两阶段生成:先框架后章节,确保质量
|
|
109
|
-
- 纯函数架构,易于测试和维护
|
|
110
|
-
- 模块化设计,易于扩展
|
|
341
|
+
---
|
|
111
342
|
|
|
112
|
-
##
|
|
343
|
+
## 🙏 致谢
|
|
113
344
|
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
- @inquirer/prompts (TUI)
|
|
117
|
-
- Commander.js (CLI)
|
|
118
|
-
- Vitest (测试)
|
|
345
|
+
- 阿里云灵积平台提供的模型支持
|
|
346
|
+
- 开源社区的贡献者们
|
|
119
347
|
|
|
120
|
-
|
|
348
|
+
---
|
|
121
349
|
|
|
122
|
-
|
|
350
|
+
**Happy Writing! 🎉**
|