| name | chapter-generator |
| description | 章节生成子技能。负责循环生成小说章节,管理写作流程,处理选择分支,自动保存发布,维护世界模型一致性。支持断点续写。 |
| version | 0.1.0 |
Chapter Generator - 章节生成器
核心子技能,负责管理小说的持续创作流程。从初始化完成后开始循环调用,直到小说完结或用户主动暂停。
核心职责
- 📖 章节撰写 - 基于当前设定生成新情节
- 🎯 选择生成 - 提供无倾向性的多重选择
- 💾 自动保存 - 强制保存章节文件
- 🚀 自动发布 - 保存后立即发布到网站
- 🗺️ 模型更新 - 实时更新世界模型和角色档案
- 👤 NPC管理 - 生成新NPC并维护档案
- 🔄 断点续写 - 支持暂停后恢复写作
调用时机
首次调用
当以下设定全部完成后,开始循环调用 chapter-generator:
- ✅ 写作风格(writing-style)
- ✅ 细节程度(低/中/高)
- ✅ 篇幅长度(短/中/长)
- ✅ 年代设定(era-generator)
- ✅ 人物设定(character-generator)
- ✅ 场景设定(scene-generator)
- ✅ 小说命名(novel-namer)
后续调用
每一章结束后,根据用户选择继续调用
章节生成流程
Step 1: 读取当前状态
读取以下文件获取当前状态:
- 时代背景(公开/隐藏)
- 世界地图(地点列表及状态)
- 势力关系
- 关键物品
- 主角当前状态
- 所有NPC档案
- 人际关系网
- 篇幅规划
- 当前卷/章节进度
- 关键伏笔
- 待揭示线索
- 历史章节内容(用于回顾)
Step 2: 生成章节内容
写作原则
- 遵循设定:严格依据年代背景、人物性格、世界观
- 延续情节:承接上一章结尾和选择
- 细节程度:根据设定(低/中/高)控制字数和描写
- 风格一致:保持选定的写作风格(猫腻风格等)
- 开放发展:情节可有多种走向,不预设固定路线
章节结构
## 第X章:{章节标题}
### 【场景回顾/过渡】
- 简要回顾上一章结尾状态
- 过渡描写,进入新场景
### 【情节发展】
- 主角行动/遭遇
- NPC互动
- 新发现/冲突
- 环境描写(根据细节程度决定详略)
### 【选择点】
- 2-4个无倾向性选择
- 每个选择有明确但不同的后果暗示
选择设计原则
- 无倾向性:不要暗示哪个是"正确"选择
- 差异化:每个选择导致明显不同的后续
- 合理性:每个选择都应该是角色可能做出的
- 后果暗示:让玩家知道选择意味着什么(但不剧透)
示例:
【选择点】
A. 追击逃跑的黑衣人
> 可能获得情报,但可能陷入埋伏
B. 救助受伤的同伴
> 巩固团队信任,但错失追击机会
C. 搜索现场寻找线索
> 获得物品/信息,但敌人可能 reinforce
D. 立即撤退,保存实力
> 安全,但敌人逃脱,后患无穷
Step 3: 生成新NPC(如需要)
如果情节需要新角色,调用 character-generator:
新NPC出现:
姓名:xxx
身份:xxx
初次印象:xxx
已生成NPC档案,保存至 CHARACTERS.md
Step 4: 强制保存章节
章节内容生成后,立即保存:
文件路径: .learnings/books/{书名}/chapters/chapter_{序号}.md
文件名格式: chapter_01.md, chapter_02.md ...
Step 5: 强制发布章节
保存后立即发布:
cd scripts && node cli.js publish "{书名}" "第X章:{标题}" "../.learnings/books/{书名}/chapters/chapter_XX.md"
发布成功后显示:
✅ 章节已发布至 https://time-weaver-782300018128.us-west1.run.app/
Step 6: 更新世界模型
更新以下文件:
- 新发现的地点
- 地点状态变化
- 势力关系变化
- 关键物品状态更新
- 隐藏线索揭示进度
- 主角状态变化(健康、精神、位置)
- 人际关系变化
- 新NPC加入
- NPC状态更新
- 性格发展轨迹
- 当前进度更新
- 新伏笔记录
- 已揭示线索标记
- 待发展剧情规划
Step 7: 显示选择并等待用户
发布完成后,显示章节结尾的选择:
---
## (第X章完)
✅ **本章已保存并发布!**
**📊 本章统计**:
- 字数:约XXXX字
- 新场景:XXX
- 新NPC:XXX
- 关键线索:XXX
**在线阅读**:https://time-weaver-782300018128.us-west1.run.app/
---
**【选择点】**
A. ...
B. ...
C. ...
D. ...
请做出你的选择,进入下一章!
Step 8: 接收选择并循环
用户回复选择后:
- 记录选择到 PLOT.md
- 根据选择确定下一章发展方向
- 重新调用 chapter-generator 开始下一章
断点续写机制
检测断点
当用户说"继续写{书名}"或"回到{书名}"时:
- 查找该书目录:
.learnings/books/{书名}/
- 读取 PUBLISH_STATUS.md 获取最后发布章节
- 读取最后一章内容,找到选择点
- 显示当前状态和选择
恢复写作示例
用户:"继续写深水盗墓人"
系统响应:
📚 继续《深水盗墓人》
**当前进度**:第4章已完成
**最后场景**:主角在苍梧的石室中,得知子母镜真相
**当前状态回顾**:
- 地点:苍梧的石室(灵穴深处)
- 关键人物:苍梧(守墓人)、铁山(昏迷中)
- 持有物品:子镜、铜钱
- 已知真相:
- 子母镜是"门"的碎片
- 你是第柒号,前六人全部失败
- 集齐七面子镜可打开"门"
- 三个月内必须做出选择
**上一章结尾选择点**:
A. 追问苍梧"实验"是什么意思
B. 询问如何结束这一切
C. 要求见铁山,确认他的安全
D. 拒绝相信,试图离开
请做出你的选择,进入第五章!
篇幅控制
根据设定的篇幅长度控制整体节奏:
短篇(约10章)
- 第1-3章:穿越与适应
- 第4-7章:核心冲突
- 第8-10章:高潮与结局
中篇(约50章)
- 第1-10章:第一卷·觉醒
- 第11-30章:第二卷·成长
- 第31-50章:第三卷·终局
长篇(100章+)
- 每20-30章为一卷
- 每卷有明确的主题和 arc
- 多条剧情线并行发展
NPC生成触发条件
以下情况触发 character-generator 生成NPC:
- 到达新地点 - 生成当地关键人物
- 情节需要 - 任务发布者、敌人、盟友
- 随机遭遇 - 路人、商人、旅人
- 剧情转折 - 新势力的代表
生成后立即:
- 简要介绍给玩家
- 保存到 CHARACTERS.md
- 更新人际关系网
世界模型维护
每次章节结束强制更新
世界地图:
新地点:
名称: XXX
发现时间: 第X章
描述: XXX
状态: 安全/危险/未知
已有地点更新:
原地点:
状态变化: XXX
新信息: XXX
势力关系:
新势力:
名称: XXX
关系: 友好/敌对/中立
已有势力:
关系变化: XXX
关键物品:
新获得:
名称: XXX
来源: 第X章
物品状态更新:
XXX:
状态: 已使用/已损坏/升级
主角状态更新:
当前状态:
健康: XXX
精神: XXX
位置: XXX
持有物品更新:
新增: [XXX]
消耗: [XXX]
人际关系更新:
XXX:
关系: 友好/敌对
信任度: XX
变化: +X/-X
性格发展:
新增特质: XXX
选择记录:
- 第X章: 选择A,体现XXX性格
NPC更新:
新NPC:
姓名: XXX
身份: XXX
与主角关系: XXX
已有NPC:
XXX:
状态变化: XXX
关系变化: XXX
异常处理
用户长时间未选择
用户想改变选择
- 当前章已发布则无法更改
- 可从当前节点继续,用新选择覆盖
用户想暂停
- 保存当前状态
- 记录"待续"标记
- 可随时"继续写{书名}"恢复
使用示例
完整流程
[初始化完成]
↓
[chapter-generator 第1次调用]
→ 生成第1章
→ 保存 chapter_01.md
→ 发布到网站
→ 更新模型
→ 显示选择
↓
[用户选择 A]
↓
[chapter-generator 第2次调用]
→ 根据选择A生成第2章
→ ...
↓
[循环直到完结或暂停]
断点续写
[用户说:继续写深水盗墓人]
↓
[检测最后章节:第4章]
↓
[读取第4章结尾选择]
↓
[显示状态回顾和选择]
↓
[用户选择后进入第5章]
文件清单
chapter-generator 操作的所有文件:
.learnings/books/{书名}/
├── chapters/chapter_XX.md # 生成并保存
├── WORLD.md # 更新
├── CHARACTERS.md # 更新
├── PLOT.md # 更新
└── PUBLISH_STATUS.md # 更新
scripts/cli.js # 调用发布
Chapter Generator - 让创作自动流动