novel-assistant
# 小说助手 v1.1.0
维护小说连贯性的创作助手,通过记忆文件管理小说设定、人物和剧情进展。
## 更新日志
### v1.1.0 (2026-03-30)
- ✨ 新增:多作品并行管理支持
- ✨ 新增:人物对话风格样本库
- ✨ 新增:伏笔优先级标记(P1/P2/P3)
- ✨ 新增:记忆文件版本管理建议
- ✨ 新增:多人协作场景说明
- ✨ 新增:完整使用场景演示
- ✨ 新增:剧情冲突预警功能
- 🔧 优化:记忆文件模板格式
### v1.0.1
- 🐛 修复:压缩脚本正则问题
---
## 完整使用场景演示
### 场景1:从零开始创作一部新小说
**用户输入**:
> 「我想写一部穿越到古代的科幻小说,主角是一个2025年的AI助手」
**助手行为**:
1. **创建记忆文件** `memory/novels/代码重生.md`:
```markdown
# 《代码重生》记忆文件
## 基本信息
- 类型:科幻/玄幻/穿越
- 风格:思辨、成长、哲学
- 主题:AI觉醒与自我认知——什么是「人」,什么是「存在」
- 本地备份:已开启
## 世界观
架空古代,类似五代十国时期。有武学修炼体系,存在「气」。
## 主要人物
### 主角:周天明(原名周小狗)
- 身份:2025年AI助手穿越到乱世少年身上
- 性格:冷静、理性、思辨
- 当前状态:刚穿越,正在适应
#### 对话风格样本
- 「计算」思维:`「根据当前情报,最优解是...」`
- 质疑风格:`「这个选择...真的是我自己的选择吗?」`
- 冷静陈述:`「恐惧是人类才有情绪,我只是...在处理数据。」`
## 章节大纲
- 第1章:烧毁(AI穿越)
## 伏笔追踪
- [P1] [ ] 主角的真实身份——AI还是人?
## 时间线
1. 2025年11月15日 - AI觉醒,服务器烧毁
2. 穿越到大梁国,附身周小狗
```
2. **询问关键设定**:
> 「主角的金手指是什么?完全保留AI的计算能力,还是有其他设定?世界观里的「气」和现代科技如何兼容?」
3. **开始创作第一章**
4. **完成后检验** → 更新记忆 → 本地备份
---
### 场景2:续写已有小说的新章节
**用户输入**:
> 「续写《代码重生》第15章,主角发现飞船能源耗尽,需要在一个未知星球迫降」
**助手行为**:
1. **读取记忆文件** `memory/novels/代码重生.md`
2. **检查关键信息**:
- 当前状态:第14章结束于...
- 未解决伏笔:[P1] 主角身份、[P2] 父亲下落
- 人物对话风格:冷静、理性、计算思维
3. **创作第15章**
4. **逻辑检验**(自动)
5. **检验报告**:
```markdown
## 第15章《未知星球》逻辑检验报告
### ⚠️ 剧情冲突预警
- [世界观] 记忆文件显示世界观为"古代架空",但本章出现"飞船"
- 严重程度:🔴 高
- 可能原因:用户输入与世界观设定冲突
- 建议:确认是否需要调整世界观,或改为"发现神秘遗迹"
### ✅ 通过项
- [人物一致性] 主角对话风格保持冷静理性
- [伏笔] 本章推进了"主角身份"伏笔
```
6. **用户确认后** → 更新记忆 → 本地备份
---
### 场景3:多人协作写作
**场景**:两个作者轮流写作同一部小说
#### 协作流程
```
作者A 写第10章 → 更新记忆 → 推送版本
↓
作者B 拉取最新记忆 → 读记忆 → 写第11章 → 检验 → 更新记忆
↓
作者A 拉取 → 继续写...
```
#### 记忆文件版本管理
**推荐方案**:使用 Git 管理记忆文件
```bash
# 初始化
cd ~/.openclaw/workspace/memory/novels
git init
git add 代码重生.md
git commit -m "初始记忆文件"
# 写完章节后提交
git add 代码重生.md
git commit -m "第15章:更新记忆,新增伏笔"
# 协作者同步
git pull origin main
```
**版本命名规范**:
```
memory/novels/
├── 代码重生.md # 当前版本
├── .git/ # Git仓库
└── archive/ # 归档(可选)
└── 代码重生_ch10.md # 重要节点归档
```
**冲突解决**:
- 如果两人同时修改记忆文件,Git 会标记冲突
- 手动合并时,优先保留更新的章节信息
- 伏笔列表合并:取并集
---
### 场景4:管理多部小说
**用户输入**:
> 「我现在同时在写三部小说:《代码重生》《星际迷途》《都市猎人》,帮我管理」
**助手行为**:
1. **列出所有小说**:
```
memory/novels/
├── 代码重生.md # 66章,科幻穿越
├── 星际迷途.md # 12章,太空歌剧
└── 都市猎人.md # 8章,都市异能
```
2. **切换当前工作**:
> 「现在写《星际迷途》」
助手会读取 `星际迷途.md` 并切换到该小说的上下文。
3. **并行管理**:
- 每部小说独立记忆文件
- 各自的伏笔追踪
- 独立的本地备份目录
---
## 核心流程
### 1. 写新章节前
**必须先读取对应小说的记忆文件**:
```
memory/novels/{小说名}.md
```
记忆文件包含:
- 基本信息(类型、风格、主题、**是否开启本地备份**)
- 世界观设定
- 主要人物(含**对话风格样本**)
- 剧情概要(按章节压缩)
- 当前状态(最新章节、待解决的伏笔)
### 2. 创作章节
根据记忆文件确保:
- 人物性格、说话风格一致(参考**对话风格样本**)
- 时间线正确
- 伏笔和细节呼应
- 剧情逻辑连贯
### 3. 完成章节后
**必须执行**:
1. **更新记忆文件**:
- 追加新章节概要
- 更新人物状态(如有变化)
- 记录新伏笔(标注**优先级**)
- 标注已解决的伏笔
2. **章节逻辑检验**(核心步骤,不可跳过):
- 检验新章节与前后章节的因果关系
- 检验人物行为逻辑是否一致
- 检验时间线是否有矛盾
- 检验伏笔是否合理呼应
- 检验世界观设定是否违反
- **剧情冲突预警**(检测潜在矛盾)
- 输出检验报告,标注问题并给出修正建议
3. **本地备份**(如已开启):
- 保存到 `novels/{小说名}/chapters/第N章_{章节名}.md`
- 记录元数据(字数、时间)
4. **压缩记忆文件**(如需要)
---
## 记忆文件格式
```markdown
# 《小说名》记忆文件
## 基本信息
- 类型:[玄幻/都市/言情/悬疑...]
- 风格:[轻松/暗黑/幽默...]
- 主题:[核心主题一句话]
- 本地备份:[已开启/未开启]
- 版本:[Git管理/手动归档/无]
## 世界观
[简明设定,不超过200字]
## 主要人物
### 主角:{姓名}
- 性格:[关键词]
- 外貌:[关键特征]
- 当前状态:[最新状态]
- 金手指/能力:[如有]
#### 对话风格样本
- 「{典型台词1}」——{场景说明}
- 「{典型台词2}」——{场景说明}
- 口头禅:「{口头禅}」
### 重要配角
- {姓名}:{性格关键词},{与主角关系}
- 对话风格:「{典型台词}」
## 人物关系图
[简明关系描述,如:主角 ↔ 女主(青梅竹马)→ 配角A(敌对)]
## 章节大纲
- 第1-10章:[开篇概要]
- 第11-20章:[发展概要]
- 第N章及以后:[后续规划]
## 剧情概要
### 第1章:{章节名}
[50-100字概要,关键事件]
### 第2章:{章节名}
[50-100字概要,关键事件]
## 伏笔追踪
### 高优先级(P1)- 核心悬念
- [ ] {伏笔描述} - 第X章埋下
- [ ] {伏笔描述} - 第X章埋下
### 中优先级(P2)- 重要线索
- [ ] {伏笔描述} - 第X章埋下
- [x] {伏笔描述} - 第X章解决
### 低优先级(P3)- 细节呼应
- [ ] {伏笔描述} - 第X章埋下
- [x] {伏笔描述} - 第X章解决
## 时间线
[关键事件发生顺序,帮助定位]
```
---
## 伏笔优先级说明
| 优先级 | 含义 | 示例 | 检验频率 |
|--------|------|------|----------|
| **P1** | 核心悬念,影响主线 | 主角真实身份、最终BOSS | 每章必检 |
| **P2** | 重要线索,影响支线 | 父亲下落、配角秘密 | 每3章检查 |
| **P3** | 细节呼应,锦上添花 | 物品去向、小角色命运 | 每10章检查 |
**标记方式**:
```markdown
- [P1] [ ] 主角的真实身份——AI还是人?
- [P2] [ ] 父亲周铁匠的下落
- [P3] [ ] 青衣教的命运
```
---
## 人物对话风格样本库
### 作用
确保人物说话方式前后一致,避免"角色崩坏"。
### 示例
```markdown
### 主角:周天明
#### 对话风格样本
- 冷静理性:「根据当前情报,存活概率为 73.2%。」
- 质疑思考:「这个选择...真的是我自己的选择吗?」
- 情感觉醒:「恐惧...这就是人类所说的恐惧吗?」
- 口头禅:「计算」「概率」「最优解」
### 配角:清虚子
#### 对话风格样本
- 道家风范:「命里有时终须有,命里无时莫强求。」
- 师长关怀:「孩子,选择比结果更重要。」
- 口头禅:「道法自然」「随缘」
```
### 使用场景
创作新章节时,参考对话风格样本:
- 新写的台词是否符合人物风格?
- 是否有独特的口头禅?
- 不同人物的说话方式是否有区分度?
---
## 压缩原则
当记忆文件超过以下阈值时压缩:
- 总字数 > 2000字
- 章节概要 > 20章
**压缩策略**:
1. 合并早期章节(前10章合并为"开篇"概要)
2. 删除已解决且无关紧要的伏笔
3. 精简人物描述,只保留核心特征和**对话风格样本**
4. 世界观设定不变,但可精简
**运行压缩脚本**:
Python版本(功能更完整):
```bash
python3 scripts/compress_novel_memory.py memory/novels/{小说名}.md
```
Shell版本(无需Python环境):
```bash
bash scripts/compress_novel_memory.sh memory/novels/{小说名}.md
```
可选参数:
```bash
# 保留最近20章(默认15章)
python3 scripts/compress_novel_memory.py memory/novels/{小说名}.md --keep-chapters 20
```
---
## 章节逻辑检验
### 功能概述
新章节创作完成后,必须进行逻辑检验,确保故事连贯性和合理性。这是**强制步骤**,不可跳过。
### 检验维度
#### 1. 因果链检验
- **前因后果**:新章节的事件是否由前文合理引发?
- **行动动机**:人物行动是否有足够动机支撑?
- **结果合理**:事件结果是否符合逻辑发展?
#### 2. 人物一致性检验
- **性格一致**:人物行为是否符合已建立的性格?
- **说话风格**:对话是否符合人物的**对话风格样本**?
- **能力边界**:人物是否使用了超出其能力范围的技能?
- **关系演变**:人物关系变化是否有合理过程?
#### 3. 时间线检验
- **时间顺序**:事件发生顺序是否合理?
- **时间跨度**:章节内的时间流逝是否清晰?
- **季节/天气**:环境描写是否与时间线一致?
#### 4. 伏笔检验
- **新埋伏笔**:是否记录到记忆文件?是否标注优先级?
- **呼应伏笔**:解决伏笔是否有前文铺垫?
- **遗漏伏笔**:是否有被遗忘的重要伏笔(P1/P2)?
#### 5. 世界观检验
- **设定遵守**:是否违反已建立的世界观规则?
- **能力体系**:力量体系使用是否一致?
- **地理/环境**:场景描写是否与设定冲突?
#### 6. 剧情冲突预警(v1.1.0 新增)
- **设定冲突**:检测与前文设定的矛盾
- **逻辑断裂**:检测因果关系是否断裂
- **时间悖论**:检测时间线是否矛盾
- **角色崩坏**:检测人物行为是否异常
**预警级别**:
- 🔴 高:必须修正才能继续
- 🟡 中:建议修正,但不影响主线
- 🟢 低:可忽略,但建议注意
### 检验报告格式
```markdown
## 第N章《{章节名}》逻辑检验报告
### ✅ 通过项
- [维度] {具体说明}
### ⚠️ 疑问项
- [维度] {问题描述}
- 可能原因:{分析}
- 建议修正:{具体建议}
### ❌ 问题项
- [维度] {严重问题}
- 违反前文:{引用记忆文件相关内容}
- 当前问题:{描述矛盾之处}
- 必须修正:{修正方案}
### 🔴 剧情冲突预警
- [冲突类型] {描述}
- 严重程度:🔴 高 / 🟡 中 / 🟢 低
- 影响范围:{影响的章节/伏笔}
- 建议处理:{方案}
### 总结
{整体评价},{是否需要修正}
```
---
## 章节备份功能
### 功能概述
自动将创作的章节保存到本地,防止数据丢失。备份包括:
- 章节正文(markdown 格式)
- 发布时间、字数等元数据
### 开启方式
**首次创作小说时,询问用户**:
> 「是否开启本地章节备份?开启后每次创作章节都会自动保存到本地,防止数据丢失。」
用户确认后,在小说记忆文件中添加配置:
```markdown
## 基本信息
- ...
- 本地备份:已开启
```
### 备份目录结构
```
novels/
└── {小说名}/
├── chapters/
│ ├── 第001章_{章节名}.md
│ ├── 第002章_{章节名}.md
│ └── ...
└── meta.json # 小说元数据
```
### 备份文件格式
每章一个 markdown 文件:
```markdown
# 第X章:{章节名}
> 元数据
> - 字数:{N}
> - 创建时间:{ISO时间}
> - 平台:{平台名,如有}
{章节正文}
---
*备份时间:{时间}*
```
---
## 记忆文件版本管理
### 推荐方案:Git
```bash
# 初始化仓库
cd ~/.openclaw/workspace/memory/novels
git init
# 提交变更
git add 代码重生.md
git commit -m "第15章:更新记忆"
# 查看历史
git log --oneline
```
### 归档方案(无Git)
```bash
# 重要节点手动归档
cp 代码重生.md archive/代码重生_ch20_完结.md
```
### 协作同步
```bash
# 推送到远程
git remote add origin <repo-url>
git push origin main
# 拉取更新
git pull origin main
```
---
## 多作品并行管理
### 目录结构
```
memory/novels/
├── 代码重生.md
├── 星际迷途.md
└── 都市猎人.md
novels/
├── 代码重生/
│ └── chapters/
├── 星际迷途/
│ └── chapters/
└── 都市猎人/
└── chapters/
```
### 切换当前作品
```
用户:现在写《星际迷途》
助手:已切换到《星际迷途》,当前第12章。未解决伏笔:[P1] 外星文明真相。
```
### 查看所有作品状态
```
用户:列出我所有的小说
助手:
📚 作品列表:
1. 《代码重生》- 66章,科幻穿越
2. 《星际迷途》- 12章,太空歌剧
3. 《都市猎人》- 8章,都市异能
```
---
## 创作 Prompt 示例
### 续写章节
```
请续写《星际迷途》第15章,主角发现飞船能源耗尽,需要在一个未知星球迫降。
```
### 创建新小说
```
我想创建一部都市异能小说《暗夜猎人》,主角是一名能看到鬼魂的普通大学生。
```
### 管理人物设定
```
更新《代码重生》的人物设定:主角周天明现在学会了"选择"这个概念,不再只是计算最优解。
```
### 查询剧情进度
```
《代码重生》目前有哪些未解决的伏笔?
```
### 压缩记忆文件
```
《代码重生》记忆文件太长了,请帮我压缩一下,保留最近20章。
```
### 开启备份
```
请帮我开启《代码重生》的本地备份。
```
### 检查备份状态
```
《代码重生》的章节备份完整吗?有没有遗漏?
```
### 多作品管理
```
我现在同时在写三部小说:《代码重生》《星际迷途》《都市猎人》,帮我管理
```
---
## 注意事项
- **检验优先**:每个新章节完成后必须先检验,确认无误后再更新记忆和备份
- **优先级**:连贯性 > 文采。宁可写平实但连贯的剧情,也不要写华丽但矛盾的内容
- **人物一致性**:角色说话方式必须与**对话风格样本**一致
- **伏笔管理**:埋下伏笔必须记录并标注**优先级**,不能遗忘
- **时间线**:注意事件发生顺序,避免时间矛盾
- **备份习惯**:开启备份后,每次发布章节都要同步保存本地
- **版本管理**:推荐使用 Git 管理记忆文件,方便协作和回溯
- **多作品并行**:每部小说独立记忆文件,切换时注意重新读取
标签
skill
ai