# Novel Main

> 番茄小说章节全流程创作 — 统筹调用所有子技能，按7步状态机完成从资料整理到备份的完整流程。支持中断恢复与自动/确认双模式

- Skill: `cwjdong-design/novel-main` (Agent Skill)
- Install (CLI): `npx skillmds@latest add cwjdong-design/novel-main`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cwjdong-design/novel-main/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: cwjdong-design (https://skillmd.com/u/cwjdong-design)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cwjdong-design/novel-main

---


# 番茄小说主技能（v2.0）

> 版本历史见 git 提交记录，不在技能正文维护。

## 触发条件

用户说「写第X章」「继续下一章」「生成一章」「续写」时使用本技能。

**🚫 硬性约束：用户未明确说"继续""写第X章"时，严禁擅自推进到下一章。写完当前章后必须等待用户确认，不得自动开始新章。**

## 前置检查

在进入状态机之前，执行以下检查：

0. **确保状态目录存在**：`mkdir -p ~/.hermes/skills/novel/_state/`。此目录用于存储进度文件和活跃书记录。同时确保 `~/novels/_shared/{logs,backups}` 存在（为 cron 预留）。
1. **确认工作书**：读取 `~/.hermes/skills/novel/_state/current_book.txt`，获取当前活跃书名。如果为空或不存在，提示用户选择书籍。
2. **确认目录存在**：检查 `~/novels/books/<书名>/` 目录存在（否则先调用 `novel-new-book`）。
3. **确认目标章节号**：
   - 用户明确说了第 X 章 → 使用 X
   - 用户说「继续写」「下一章」→ 读取 `01-正文存稿/` 下最大章节号 + 1
   - 都没有 → 询问用户「要写第几章？」

4. **尝试恢复中断任务**：检查 `~/.hermes/skills/novel/_state/<书名>_progress.json`，如果存在且 `status != 'completed'`：
   - 如果 `milestone_blocked == true`：拦截并提示「⚠️ 第 N 章里程碑审查未通过，请先修正阻塞问题后再继续。阻塞报告见 `00-大纲细纲/里程碑审查_第N章.md`」。不允许开始新章节。
   - 否则询问用户是否从中断点继续。


5. **检查章节规划内容**：读取 `00-大纲细纲/章节规划.md`，查找目标章节号对应行。
   - **「章节标题」列为空或占位**（如「待填写」「TBD」「—」等任何非实质内容）：
     - 拦截并提示「🛑 第 X 章的章节标题尚未填写，请先在 `00-大纲细纲/章节规划.md` 中为该章填写具体章节标题后再开始生成。」
   - **「核心事件」列为占位文本或空**（如「请填写第X章计划内容」「待填写」「TBD」「—」等任何非实质内容）：
     - **目标章节 = 1**：拦截并提示「🛑 第 1 章的核心事件尚未填写实质内容，请先在 `00-大纲细纲/章节规划.md` 中为第 1 章填写具体核心事件后再开始生成。」不允许从主线大纲自动提取替代——章节规划是硬性底线。
     - **目标章节 > 1**：拦截并提示「🛑 第 X 章的核心事件尚未填写实质内容，请先在 `00-大纲细纲/章节规划.md` 中填写该章计划后再生成。」等待用户补充后重新触发。
   - **表中无对应行**（目标章节 > 1）：提醒用户「⚠️ 第 X 章在章节规划中无对应行，请先在 `00-大纲细纲/章节规划.md` 中补充该章计划后再生成。」等待用户补充后重新触发。
   - **「章节标题」和「核心事件」均有实质内容**（非占位文本，且≥5个字的具体事件描述）：✅ 通过，继续进入 7 步循环。

---

## 7-8 步状态机

### 状态定义

```
IDLE → PREP → PLOT → DRAFT → REVIEW → POLISH → TRACK → [章节号%5==0 → MILESTONE] → BACKUP → COMPLETED
         ↓       ↓       ↓        ↓        ↓        ↓             ↓                 ↓
        (任意步骤失败可回退至 PREP 或用户取消，MILESTONE 阻塞时须回退修正对应章节后方可继续)
```

每个步骤有 3 种状态流转：
- `→ next`：正常进入下一步
- `↻ retry`：失败后重试（最多 2 次）
- `← rollback`：回退至 PREP 重新开始

**MILESTONE 特殊规则**：
- 仅当章节号是 5 的倍数（5, 10, 15...）时触发。其他章节跳过 MILESTONE，TRACK 后直接进入 BACKUP。
- MILESTONE 审查不通过 → ⚠️ **阻塞**，`current_step` 标记 `milestone_blocked`，状态机暂停。用户必须修正对应问题的章节后重新触发。
- MILESTONE 审查通过 → ✅ 正常进入 BACKUP。
- 阻塞期间不允许开始新章节的 7 步流程。用户说「继续写下一章」或「写第X章」时，先检查是否有未解决的 MILESTONE 阻塞。
```
---

### 步骤 1：PREP（资料整理）

**调用子技能**：`novel-prep` + `novel-character`（人物 Want/Need 追踪）

**传入参数**：
```json
{
  "book_name": "<书名>",
  "chapter_num": <章节号>
}
```

**🔒 加载书配置（不可跳过）**：
读取 `~/novels/books/<书名>/02-设定文档/书配置.md`，提取以下规则供后续步骤使用：
- 地名白名单（供 DRAFT 骨架生成和 REVIEW 扫描）
- 系统面板字段（供 DRAFT 骨架生成）
- 方言词表（供 DRAFT 和 POLISH）
- 作者风格（供 DRAFT 和 POLISH）
- 禁止措辞（供 REVIEW 扫描）

> ⚠️ 如果书配置.md 不存在，提示用户先创建（可参考 `novel-new-book` §3.35 模板）。

**人物 Want/Need 更新**（加载 `novel-character`）：
- 检查<主角>的 Want（外在目标）在最近 3 章是否有推进
- 检查 Need（内在需求）是否有变化信号
- 核心配角（从书配置人物库中读取主要配角）的致命缺陷是否有表现
- 输出一句话摘要：「本章主角 Want 推进到___，Need 信号：___」

**期望输出格式**：
```markdown
## 创作上下文（第 X 章）

### 前文关键信息
- 上一章结尾：<文本>
- 章末钩子：<文本>

### 人物当前状态
| 人物 | 状态 | 最近变化 |
|------|------|---------|
| ...  | ...  | ...     |

### 待回收伏笔（优先级排序）
1. [伏笔内容] — 计划第 Y 章回收（⚠️正常 / 🚨超期 Z 章）

### 本章大纲要点
<从章节规划提取>

### 近期修正反馈
<从错误库提取，如无则写「无」>
```


---

### 步骤 2：PLOT（剧情推演）

**调用子技能**：`novel-plot`

**传入参数**：
```json
{
  "大纲要点": "<从步骤1 prep_output 中提取的「本章大纲要点」区块>",
  "前文上下文": "<从步骤1 prep_output 中提取的完整上下文（人物状态、伏笔、修正反馈）>",
  "目标章节号": <章节号>
}
```

**🔒 跨章节奏门控（硬性，不可跳过）**：进入 PLOT 推演前，必须对最近 4 章（Ch.N-4 至 Ch.N-1）做情绪曲线分析，检测节奏衰退。检测方法：读取最近 4 章正文，逐章标注情绪类型（爽/建设/危机/压抑/调查），然后检查以下阈值：

| 信号 | 阈值 | 触发动作 |
|------|------|---------|
| 连续无打脸 | ≥ 3 章 | 🔴 本章 PLOT **必须**包含至少 1 次当众打脸（质疑→实力→闭嘴），否则退回重推 |
| 连续无正面胜利 | ≥ 3 章 | 🔴 本章 PLOT **必须**包含至少 1 次「赢」（对手退让/围观者认可/问题解决） |
| 连续同情绪类型 | ≥ 3 章 | 🔴 本章情绪类型**必须**切换（如连续压抑→本章必须有释放/反转） |
| 主角连续被动 | ≥ 3 章 | 🔴 本章 PLOT **必须**让主角主动出击（不是应对危机，是制造局面） |
| 反派隔空出手 | ≥ 3 章 | ⚠️ 本章**建议**让反派或其代理人正面出场 |

> 来源：`references/general/writing-rhythm.md`。MILESTONE 每 5 章才检测一次，但节奏衰退从第 3 章就开始可观测。PLOT 门控把检测前移到每章，防止「写完 5 章才发现无聊」。
>
> **与 MILESTONE 的分工**：PLOT 门控是**前瞻性**的——看前几章的症状，决定本章该怎么写；MILESTONE 是**回顾性**的——5章写完后整体验收质量。两者有交叉但不矛盾：PLOT 门控防患于未然，MILESTONE 兜底验收。同一类问题（如「连续重复」），PLOT 门控触发时强制本章变化，MILESTONE 触发时阻塞并要求回退修正。

**门控输出格式**（PLOT 推演前置区块）：
```markdown
### 跨章节奏诊断（Ch.N-4 ~ Ch.N-1）
| 章节 | 情绪类型 | 有打脸 | 有正面胜利 | 主角主动/被动 |
|------|---------|--------|-----------|-------------|
| Ch.N-4 | 建设/危机/... | ✅/❌ | ✅/❌ | 主动/被动 |
| ... | ... | ... | ... | ... |

**触发阈值**：<列出触发的🔴项及本章强制对策>
**本章情绪目标**：<如：连续3章压抑→本章必须有释放/反转>
```

**🔒 系统退化检测（与节奏门控并行执行）**：读取最近 5 章面板内容，检查系统是否退化为「计算器」（详见 `references/general/system-golden-finger-design.md` → 系统退化诊断清单 + `references/general/writing-rhythm.md` → 系统退化检测）。触发以下任一🔴→ 本章 PLOT **必须**让系统做至少一件不可替代的事（弹新维度/数字跳变/情报优势/格局重定义）：
- 连续 ≥ 3 章面板后 MC「收掉/看完不行动」
- 系统未弹新维度 ≥ 5 章
- 系统数字对 MC 决策无影响 ≥ 3 章
- **删系统测试**：把最近 5 章的系统删掉，故事走向是否不变？如果不变 → 🔴 系统彻底失败，本章必须让系统给出「没有系统就绝对不可能知道」的情报

**🔒 剧情推进速度检测（与节奏门控并行执行）**：读取章节规划和最近 20 章正文，检查整体推进速度（详见 `references/general/writing-rhythm.md` → 剧情推进速度检测）。触发以下任一🔴→ 本章 PLOT **必须**包含格局升级动作：
- 同一对手连续出场 ≥ 30 章
- 连续无格局升级 ≥ 20 章
- 建设章连续 ≥ 3 章

**期望输出格式**：
```markdown
## 第 X 章剧情推演

### 跨章节奏诊断（Ch.N-4 ~ Ch.N-1）
<门控输出>

### 核心事件
（一句话）

### 情节节点
| # | 阶段 | 字数 | 内容 |
|---|------|------|------|
| 1 | 开场 | 350  | ...  |
| 2 | 推进 | 1600 | ...  |
| 3 | 高潮 | 450  | ...  |
| 4 | 钩子 | 100  | ...  |

### 本章涉及的伏笔
- 新增铺垫：XXX（计划第 Y 章回收）
- 回收伏笔：XXX

### 人物情感弧线
- 主角：XXX → XXX
```


---

### 步骤 3：DRAFT（正文生成 — 骨架模式，v4.0）

**🚫 硬性约束：助理不得直接写正文。DRAFT = 生成骨架(预审) → delegate_task 子智能体写正文 → 主 Agent 验证落盘。**

> ⚠️ DRAFT/POLISH 文字创作通过 Hermes delegate_task 派发子智能体完成（模型为当前会话模型），不调度 Claude Code CLI。子智能体只生成文本返回，主 Agent 负责验证和落盘。

**🔒 容量预审（硬性，不可跳过）**：进入 DRAFT 前必须检查骨架容量：
- 至少 4 个有效剧情回合（冲突交锋、信息增量、利益博弈）
- 至少 3 次局势或利益变化
- 至少 1 次主角主动决策
- 容量不足时退回 PLOT/骨架补充有效回合，不得进入 DRAFT

**执行流程**：

1. **生成骨架**：基于 PREP 上下文，按 `novel-skeleton` 技能规范写骨架，存项目目录 `00-大纲细纲/章节骨架/第N章_骨架.md`。
2. **预审骨架**：`python3 ~/.hermes/skills/novel/scripts/review_scan.py <骨架路径> --book <书名>` — ⛔ 骨有毒肉全烂，必须零违禁。`--book` 参数用于从 `02-设定文档/书配置.md` 加载该书的地名白名单/黑名单/系统违禁词。
3. **派发 delegate_task 子智能体**（仅3条铁律，6KB铁律已固化在骨架中）：
   - 地名只用白名单。禁止真实地名。
   - 系统面板原封不动。
   - 字数/对话/粤语/冷感/格式。

**助理禁止**：直接写正文、改骨架中数字/地名/面板、不预审派发。

**🔒 前置自检（不可跳过）**：无论 PREP 是否已执行，DRAFT 必须自动收集以下上下文后再构造 prompt：
```bash
# 1. 人物卡（如 PREP 未执行，自动拉取）
cat ~/novels/books/<书名>/02-设定文档/人物库/*.md 2>/dev/null || echo "⚠️ 人物库为空"

# 2. 前文时间线速查（如 TRACK 未执行，自动生成基础版）
cat ~/novels/books/<书名>/06-追踪记录/前文时间线速查.md 2>/dev/null || echo "⚠️ 时间线为空"

# 3. 章节规划
grep "第<X>章" ~/novels/books/<书名>/00-大纲细纲/章节规划.md 2>/dev/null || echo "⚠️ 无章节规划"

# 4. 最近3章正文（自动提取）
ls -t ~/novels/books/<书名>/01-正文存稿/第*.md | head -3 | xargs cat 2>/dev/null
```
> 以上收集到的内容**全部注入** delegate_task 的 goal 中。缺失项标注 ⚠️ 但不阻塞 DRAFT。

**派发方式**：使用 `delegate_task(goal=...)` 派发子智能体。goal 包含骨架全文 + 铁律 + 上下文。子智能体返回生成的正文文本，主 Agent 负责验证（字数/对话比/违禁词）和落盘。

**骨架模式 goal 模板**：

```
你是番茄小说签约作者。按以下骨架写第N章正文。只填肉不改骨。把正文写入指定文件。不要调用任何其他工具。

【骨架】
<从 00-大纲细纲/章节骨架/第N章_骨架.md 读取>

【铁律 — 只三条，骨架中已固化地名/数字/面板】
1. 禁止任何真实中国地名。只使用书配置中地名白名单字段定义的架空地名。
2. 系统面板原封不动放进去。不加减行。不修改数字。
3. 字数2000—2800（目标2350）。对话38%以上。方言/口语点缀3-5处。冷感叙述。章末无结束标记。

【网文校准（必须遵循）】
- 对话是核心！每个场景至少6-8轮对话交锋。
- 情绪直接给读者。对手被打脸后的反应要写透，围观者要有反应。
- 事件密度高：本章2-3个场景，每个场景都有信息增量和情绪变化。
- 大白话叙述。数字要具体。
- 章末钩子要具体，不要环境描写收尾。
- MC台词短但每句有分量。
- 字数不足只能增加有效冲突回合和对话交锋，禁止用环境描写凑字。
```

**取回正文**：从 delegate_task 返回结果中提取生成的正文内容。

**验证（主 Agent 执行）**：
```bash
# 字数/对话比/违禁词扫描
python3 ~/.hermes/skills/novel/scripts/review_scan.py <落盘路径> --book <书名>
```
字数/对话比不达标时，再派一个 delegate_task 扩写子任务（传入当前正文 + 扩写指令）。字数略超（<2800）或对话比例略低（>38%）不算问题，不微调。

**取回正文**：从 delegate_task 返回结果中提取生成的正文内容。

> ℹ️ novel-draft 输出格式为 `## 第X章 <章节标题>` + 正文。novel-main 在最终报告中同样会输出章节标题，确保一致性。

**字数要求**：2000—2800字（番茄标准，弹性区间），目标2350字。容量不足时退回 PLOT/骨架补充有效回合，不得进入 DRAFT。不能靠 POLISH 补环境细节凑字数。


---

### 步骤 4：REVIEW（合规审查）

**🚫 硬性约束：DRAFT 完成后必须立即执行 REVIEW，不得跳过。未输出审查报告前，禁止进入 POLISH/TRACK/BACKUP 及下一章。**

**执行方式**：三步流水线 + 可选跨文档校验，自动串联。

**第 0 步：跨文档一致性检查（每 5 章执行一次，约 2 秒）**
```bash
python3 ~/.hermes/skills/novel/scripts/consistency_check.py --book "<书名>"
```
- 仅在章节号是 5 的倍数（5/10/15...）时执行，避免每章重复校验
- 7 维交叉验证：人物卡↔总表 / 章节规划↔正文 / 故事线状态 / 前文时间线 / 伏笔表 / 正文人物注册 / 大纲分卷
- 发现 🔴 问题 → ⚠️ 不通过，阻塞 REVIEW，需先修复问题再继续
- 发现 🟡 问题 → 记录但不阻塞
- 通过（✅ 全绿）→ 继续

**第 1 步：自动扫描（3 秒，DRAFT 完成后立即执行）**
```bash
python3 ~/.hermes/skills/novel/scripts/review_scan.py ~/novels/books/<书名>/01-正文存稿/第X章.md --book <书名>
```
扫描通过（零真实问题）后，继续。

**第 2 步：爽点注入检查（强制 5 项）**

**爽点注入检查**（强制，加载 `novel-writing` → `references/case-studies/爽点注入方法论.md`）：
```markdown
[ ] 系统钱花出去了？花给谁？对方什么反应？
[ ] 有人不理解 MC 的能力/资源？MC 解释了吗？
[ ] 有打脸？（质疑→实力→闭嘴）
- [ ] 有收入对比？（书配置中的对照组 vs 系统收入）
[ ] 系统面板出现时 MC 是「行动」不是「算账」？
```
任一项「否」→ 该章需注入爽点后再次审查。

**跨章爽点衰减检查**（强制，与单章5项并行执行）：
检查最近 3 章（含本章）的爽点密度，触发以下任一阈值→**本章审查结论为 ⚠️ 不通过**，必须在 POLISH 中补足：
```markdown
[ ] 连续 ≥ 3 章无当众打脸？→ 🔴 本章必须补1次打脸场景
[ ] 连续 ≥ 3 章无正面胜利（对手退让/围观认可/问题解决）？→ 🔴 本章必须补1次「赢」
[ ] 连续 ≥ 3 章主角处于被动应对（危机来了→冷静处理→安排下一步）？→ 🔴 本章必须有主角主动出击
[ ] 连续 ≥ 3 章反派只隔空出手、从不正面出场？→ ⚠️ 本章建议让反派代理人正面出场
[ ] 连续 ≥ 3 章同一种叙事结构（如「危机→冷静→拒绝→安排」循环）？→ 🔴 本章结构必须变化
```
> 此检查与 PLOT 阶段的跨章节奏门控互为兜底：PLOT 门控在前端拦截，REVIEW 衰减检查在后端验证。如果 PLOT 门控触发了🔴但 DRAFT/正文未体现，REVIEW 必须拦截。

**读者视角审查**（每 3 章强制执行，`references/case-studies/读者审查标准.md`）：
单章写完后放在上下文中连读 3 章，用 delegate_task 子智能体以 20 年网文读者身份审查。
读者说「想弃」→ 重写，不修。读者说「想追」→ 保留结构，微调。

**广告打断点检查**（每 3 章，加载 `novel-platform`）：
- 第 3/6/9 章章末必须是强钩子（信息截断/视角切换/倒计时型）
- 广告点后第一章开头必须立刻接上悬念，不换场景
检查通过（零问题）再进入人工审查。

**调用子技能**：`novel-review`

**传入参数**：
```json
{
  "draft_output": "<步骤3 的完整输出>",
  "character_cards": "<人物库内容>",
  "foreshadow_table": "<伏笔追踪表内容>",
  "world_setting": "<世界观.md 内容>",
  "storyline_status": "<故事线状态.md 内容>",
  "recent_chapters": "<最近5章正文内容>"
}
```

**REVIEW 审查自检清单**（审查时必须逐条检查，不得跳过）：

- [ ] **时间线一致性**：本章日期/时间跨度与所有前章不矛盾（逐章比对，尤其关注跨章事件的时间先后顺序）
- [ ] **人物存活状态**：对话中引用或提及的人物均未在之前章节中死亡（交叉核验 `02-设定文档/人物库/` 中的人物状态）
- [ ] **字数在 2000—2800 字**：番茄显示字数（去掉首行标题和空白，保留标点/数字/字母）
- [ ] **禁用词零命中**：正文中不包含任何禁用词（参见 `04-错误库/禁用词表.md` 或知识库中的禁用词列表，注意区分对话中的口语化表达与叙事中的禁用词）
- [ ] **人物全部注册**：正文中出现的所有有名角色（含龙套有名字者）均在人物库中注册，无凭空出现的新角色
- [ ] **地名白名单**：正文仅使用 `02-设定文档/书配置.md` 的地名白名单字段中定义的架空地名，不包含任何真实中国地名（扫描 '港''城''市''县''镇' 等字眼，与白名单交叉核验）
- [ ] **系统面板合规**：①无「检测到」「建议」「任务」「预警」「解锁」「第二阶段」等主动措辞 ②结算数字与系数匹配（结算公式：结算基数 × 系数 × 结算比例，具体值见 `02-设定文档/书配置.md`）③结算仅在凌晨00:00弹出，其他时间面板仅被动统计 ④每章至少出现1次系统面板（面板字段从 `02-设定文档/书配置.md` 的系统面板字段读取）

> ⚠️ 审查报告必须先逐条列出以上 7 项的结果（✅/⚠️），再输出问题清单。任一项未通过（⚠️）则审查结论为 ⚠️ 不通过。
>
> 🚫 **硬性约束：DRAFT 完成后必须立即执行 REVIEW，不得跳过。未输出审查报告前，禁止进入 POLISH/TRACK/BACKUP 及下一章。**

**期望输出格式**：
```markdown
## 审查报告 — 第 X 章

### 总体结论
✅ 通过 / ⚠️ 不通过

### 问题清单
| 序号 | 等级 | 类型 | 位置 | 问题描述 | 修改建议 |
|------|------|------|------|---------|---------|
| 1    | 🔴严重 | OOC  | 第X段 | ...     | ...     |
| 2    | 🟡建议 | 节奏 | 第X段 | ...     | ...     |

### 质量评分
- 对话自然度：⭐/5
- 节奏把控：⭐/5
- 钩子吸引力：⭐/5
```

**通过/不通过判断**：
- 存在一级问题（🔴或🚨） → ⚠️ 不通过
- 仅存在二级问题（🟡建议） → ✅ 通过（问题记录，但不阻塞）


---

### 步骤 5：POLISH（内容打磨）

**执行方式**：派发给 delegate_task 子智能体执行。

**🔒 修改前备份（强制，不可跳过）**：在执行 POLISH 修改之前，必须先备份当前章节到版本历史：
```bash
python3 ~/.hermes/skills/novel/scripts/backup_chapter.py ~/novels/books/<书名>/01-正文存稿/第X章.md
```
备份后文件存入 `03-版本备份/正文历史/第X章_YYYYMMDD_HHMMSS.md`。
> ⚠️ 没有备份就没有修改历史，改错了找不回来。此步骤不可跳过。

**派发方式**：使用 `delegate_task(goal=...)` 派发子智能体。goal 包含初稿全文 + 审查报告 + 打磨原则。

**传入内容**（作为 goal 传递）：
- book_name：`<书名>`
- draft_output：`<步骤3 的完整输出>`
- review_report：`<步骤4 的完整输出>`

**goal 模板**：
```
你是一位番茄小说资深编辑。请根据审查报告打磨以下第X章正文。

【初稿】
{步骤3 的完整输出}

【审查报告】
{步骤4 的完整输出}

打磨原则：
- 审查通过的 → 标准打磨（对话/画面感/节奏/钩子强化）
- 审查不通过的 → 先修复审查问题，再标准打磨
- 打磨 ≠ 重写，保持原有剧情结构
- 作者风格：直接、不煽情、冷幽默、冷感叙述
- 输出打磨后的完整定稿（Markdown，格式同初稿）
```

**取回正文**：从 delegate_task 返回结果中提取打磨后的定稿，主 Agent 负责落盘。

**打磨原则**：
- 审查通过的 → 执行标准打磨（对话 / 画面感 / 节奏 / 钩子强化）
- 审查不通过的 → 先修复审查问题，再标准打磨
- **打磨 ≠ 重写**，保持原有剧情结构


**REVIEW↔POLISH 循环状态处理**：
- POLISH 完成后，若上轮 REVIEW 判定为 ⚠️ 不通过且循环未达 3 次上限，则自动回到步骤 4 REVIEW 重审。
- 回到 REVIEW 前，进度文件状态需回退：`current_step` 设为 `"review"`，`steps_completed` 数组中移除 `"review"` 和 `"polish"`，`retry_counts.review_polish_loop` 递增 1。
- 若 REVIEW 通过（✅）或循环已达 3 次上限，则正常进入步骤 6 TRACK。

---

### 步骤 6：TRACK（状态更新）

**调用子技能**：`novel-track` + `novel-platform`（章末读者互动模板）

**传入参数**：
```json
{
  "final_draft": "<步骤5 的定稿>",
  "plot_output": "<步骤2 的完整输出>",
  "book_name": "<书名>",
  "chapter_num": <章节号>
}
```

**章末读者互动**（如果本章是广告打断点（3/6/9章），加载 `novel-platform` 模板）：
- 引导评论（悬念型）：「这章结尾你们猜到了吗？评论区说说——」
- 引导追读（留存型）：「明天这一章，会揭晓那个电话是谁打的。提示：不是你们想的任何一个人。」
- 50-80 字，必须带行动号召，不道歉不卖惨不解释剧情

**期望输出格式**：
```markdown
## 更新确认 — 第 X 章

### 人物状态变更
- <人物名>：XXX → XXX

### 伏笔变更
- 新增：N 条
- 回收：N 条
- 🚨 超期未回收：N 条

### 主线进度
X / Y 章（XX%）

### 前文时间线速查（供下一章 DRAFT 使用）
<!-- 本区块输出后同时追加保存到 `06-追踪记录/前文时间线速查.md`，供步骤3 DRAFT 读取 -->
| 章节 | 标题 | 梗概（≤20字） | 时间标记 |
|------|------|--------------|----------|
| Ch.X-2 | `<标题>` | `<梗概>` | `<日期/时间>` |
| Ch.X-1 | `<标题>` | `<梗概>` | `<日期/时间>` |
| Ch.X   | `<标题>` | `<梗概>` | `<日期/时间>` |

> ℹ️ 首次写第1章时仅输出 Ch.1 行；第2章时输出 Ch.1–2；第3章起固定输出最近3章。每完成一章后，将此表追加/更新到 `06-追踪记录/前文时间线速查.md`（只保留最近3行）。
```


---

### 步骤 7：MILESTONE（里程碑审查）

> ⚠️ **条件触发**：在以下任一条件满足时执行本步骤：
> 1. `章节号 % 5 == 0`（即第 5、10、15、20...章）
> 2. **当前章节是所在卷的最后一章**（从分卷细纲/章节规划确认。卷末必须审查，不论章节号是否为5的倍数）
> 非上述情况的章节跳过本步骤，直接进入 BACKUP。

**调用子技能**：`novel-milestone`（若不存在则按以下规范内联执行）

**传入参数**：
```json
{
  "book_name": "<书名>",
  "current_chapter": <当前章节号>,
  "last_5_chapters": "<最近5章正文内容（第 N-4 至第 N 章）>",
  "track_output": "<步骤6 TRACK 的完整输出>",
  "foreshadow_table": "<06-追踪记录/伏笔追踪表.md 完整内容>",
  "main_outline": "<00-大纲细纲/主线大纲.md 内容>",
  "volume_outline": "<00-大纲细纲/分卷细纲.md 内容>",
  "timeline_tracker": "<06-追踪记录/前文时间线速查.md 完整内容>",
  "character_cards": "<02-设定文档/人物库/ 下所有文件内容>",
  "arc_tracker": "<06-追踪记录/人物弧线追踪.md（若有）>"
}
```

**审查维度**（5 项，必须逐条检查）：

1. **前后 5 章连贯性**：检查最近 5 章（Ch.N-4 至 Ch.N）之间剧情是否有跳跃（逻辑断层、场景突兀切换）或重复（同类型事件/对话/套路连续出现 ≥ 3 章）
2. **伏笔埋坑状态**：
   - 统计本节段内新增伏笔数量与 ID
   - 统计本节段内回收伏笔数量与 ID
   - **超期统计**：列出所有超过计划回收章节 ≥ 3 章仍未回收的伏笔（🚨严重），以及超过 1-2 章的伏笔（⚠️警告）
3. **人物弧线推进进度**：与 `00-大纲细纲/主线大纲.md` 中的人物弧线规划对照，检查主要人物（≥ 3 个）的阶段性推进是否达标（预期 vs 实际）
4. **主线进度**：与 `00-大纲细纲/分卷细纲.md` 对照，检查当前卷内进度（已完成章节数 / 本卷总章节数），确认主线事件完成度是否匹配规划
5. **时间线全链路一致性**：交叉验证最近 5 章 + 前文时间线速查中所有章节的时间标记，确认日期/时间跨度的先后顺序无矛盾，无跨越不可能的时间跳跃
6. **章节规划同步**（强制，不可跳过）：
   - **已完成章回填**：逐个检查 Ch.N-4 至 Ch.N 的章节规划行，标题和核心事件是否为占位文本（「待定」「待填写」「TBD」等）。若是 → 🚨 阻塞，必须用实际发生的标题和事件回填。
   - **未来章检查**：检查 Ch.N+1 至 Ch.N+5 是否在章节规划中有实质内容（标题非占位，核心事件≥5字）。若无 → ⚠️ 警告，提示需在下一批 5 章开始前补充。
   - **分卷细纲同步**：检查 `00-大纲细纲/分卷细纲/` 中对应卷的细纲，确认其章节段描述与最近 5 章实际内容不矛盾。若章节段内容明显过时（描述的事件已发生但完全不同）→ ⚠️ 警告，提示需更新。
   - **输出**：在里程碑报告中增加「第 6 项：章节规划同步」表格，逐章列出规划行状态（✅ 已回填 / 🚨 占位需回填 / ⚠️ 未来章需补充）。

**期望输出格式**：
```markdown
## 里程碑审查报告 — 第 N 章（第 N/5 次里程碑）

### 总体结论
✅ 通过 / ⚠️ 阻塞（一级问题）

### 逐项检查

#### 1. 前后 5 章连贯性
| 检查项 | 状态 | 说明 |
|--------|------|------|
| 剧情跳跃 | ✅/⚠️/🚨 | <具体说明> |
| 剧情重复 | ✅/⚠️/🚨 | <具体说明> |

#### 2. 伏笔埋坑状态
| 类型 | 数量 | 详情 |
|------|------|------|
| 新增 | N 条 | V01, V02, ... |
| 回收 | N 条 | VXX→第X章回收, ... |
| 🚨超期≥3章 | N 条 | VXX（计划Ch.Y，已超Z章） |
| ⚠️超期1-2章 | N 条 | VXX（计划Ch.Y，已超Z章） |

#### 3. 人物弧线推进
| 人物 | 预期阶段 | 实际进度 | 偏差 |
|------|---------|---------|------|
| <主角> | <弧线描述> | <实际表现> | ✅/⚠️ |
| <配角1> | <弧线描述> | <实际表现> | ✅/⚠️ |
| <配角2> | <弧线描述> | <实际表现> | ✅/⚠️ |

#### 4. 主线进度
- 本卷总章节：X 章
- 已完成：Y 章（YY%）
- 规划节点对比：<预期 vs 实际>
- 偏差评估：✅/⚠️/🚨

#### 5. 时间线全链路一致性
| 章节 | 时间标记 | 距前章间隔 | 一致性 |
|------|---------|-----------|--------|
| Ch.N-4 | <时间> | — | ✅ |
| ... | ... | ... | ... |
| Ch.N | <时间> | <间隔> | ✅/⚠️ |

### 阻塞问题清单（如有）
| 序号 | 等级 | 维度 | 涉及章节 | 问题描述 | 修正建议 |
|------|------|------|---------|---------|---------|
| 1 | 🔴阻塞 | 连贯性 | Ch.X-Y | ... | ... |
| 2 | 🚨严重 | 伏笔 | Ch.Z | ... | ... |

### 通过后的放行声明
> ✅ 第 N 章里程碑审查通过。第 N/5 批 5 章（Ch.N-4 ~ Ch.N）质量检验合格，允许进入第 N+1 ~ N+5 章的创作。
```

**通过/阻塞判断**：
- 存在一级问题（🔴阻塞 / 🚨严重）→ ⚠️ 阻塞，不允许进入下一批 5 章
- 仅存在二级问题（⚠️警告 / 💡建议）→ ✅ 通过，问题记录但不阻塞
- 阻塞 → 标记 `milestone_blocked`，展示阻塞问题清单，提示用户修正对应章节后重新触发里程碑审查

**阻塞时的处理流程**：
1. 将进度文件中 `current_step` 设为 `milestone_blocked`，`status` 设为 `failed`
2. 将里程碑审查报告保存到 `00-大纲细纲/里程碑审查_第N章.md`
3. 展示阻塞问题清单，给出每个问题的修正建议（回退到哪个章节 PREP 重新开始）
4. 用户修正后，从修正后的章节重新走 7 步流程，到该章的 TRACK 后再次触发 MILESTONE
5. 用户说「继续下一章」「写第 X 章」时，前置检查先检测 `milestone_blocked` 状态 → 若存在则拦截并提示「⚠️ 第 N 章里程碑审查未通过，请先修正阻塞问题」


---

### 步骤 8：BACKUP（自动备份）

**调用子技能**：`novel-backup`

**传入参数**：
```json
{
  "final_draft": "<步骤5 的定稿>",
  "book_name": "<书名>",
  "chapter_num": <章节号>,
  "word_count": <字数>,
  "mode": "chapter"
}
```

**期望输出格式**：
```markdown
✅ 备份完成
- 正文：01-正文存稿/第X章.md
- 设定快照：03-版本备份/设定快照_第X章/
- 备份版本：v<version>
```


---

## 最终输出格式（步骤 8 完成后）

```markdown
✅ 第 X 章《章节标题》完成！

📊 本章统计：
- 字数：XXXX
- 新增伏笔：N 条（V01-V0N）
- 回收伏笔：N 条
- 人物状态变更：N 人

📁 备份已保存 → 03-版本备份/设定快照_第X章/

🔄 下一步：说「继续下一章」写第 Y 章
```

**写入进度文件**：更新 `~/.hermes/skills/novel/_state/<书名>_progress.json`，标记 `status: 'completed'`。

---

## 中间状态保存与中断恢复

> 📄 完整机制（进度文件格式/状态枚举/保存时机/恢复流程/技能缓存）见 `references/general/progress-format.md`。

**核心要点：**
- 进度文件：`~/.hermes/skills/novel/_state/<书名>_progress.json`
- 每步完成后自动保存进度，中断后询问用户是否从断点继续
- `milestone_blocked` 状态拦截新章节，需先修正阻塞问题
- 前置检查阶段读取进度文件，检测 `milestone_blocked` 和 `status != 'completed'`

---

## 用户交互策略

| 步骤 | 自动化 | 需要确认 | 触发确认的条件 |
|------|--------|---------|---------------|
| 前置检查 | ✅ | — | 无活跃书 / 书不存在时询问 |
| 中断恢复 | — | ✅ 确认 | 检测到未完成进度 |
| PREP | ✅ | — | 仅在 fallback 时询问 |
| PLOT | ✅ | — | 仅在 fallback 时询问 |
| DRAFT | ✅ | — | 仅在字数严重异常时询问 |
| REVIEW | ✅ | ✅ 需确认 | 3 次审查仍不通过时 |
| POLISH | ✅ | — | 仅在打磨引入新问题时 |
| TRACK | ✅ | — | 仅在写入失败时 |
| MILESTONE | ✅ | ✅ 阻塞时 | 仅 5 的倍数章节触发；审查不通过时标记阻塞，需用户修正 |
| BACKUP | ✅ | — | 仅在打包失败时 |
| 最终统计 | ✅ | — | 自动展示 |

**总结**：正常流程下，用户说「写第 X 章」→ 全自动 7-8 步（5 的倍数章为 8 步）→ 看到完成报告。仅在异常或里程碑阻塞时才需要用户介入。

---

## 多书切换

在 PREP 开始前，检查当前活跃书。如果用户说「切到《XXX》写第 Y 章」：
1. 更新 `~/.hermes/skills/novel/_state/current_book.txt` 为 `<XXX>`
2. 保存当前书的进度（如果正在进行）
3. 对新书执行前置检查
4. 继续 7 步流程

---

## 注意事项

- **严格按序执行**：不跳过任何步骤，每步完成后检查子技能输出是否完整
- **REVIEW-POLISH 循环**：审查不通过 → 打磨 → 重回审查，最多 3 次
- **MILESTONE 阻塞机制**：每 5 章触发里程碑审查，一级问题标记阻塞（`milestone_blocked`），不允许进入下一批 5 章，必须先修正再继续
- **进度常保存**：每步完成后写入进度 JSON，确保中断可恢复
- **前置检查增强**：`milestone_blocked` 状态下的书籍，前置检查时必须拦截并提示「⚠️ 第 N 章里程碑审查未通过，请先修正阻塞问题」，不允许开始新章节
- **文件路径约定**：
  - 工作数据：`~/novels/books/<书名>/`
  - 技能与模板：`~/.hermes/skills/novel/`
  - 知识库：`~/.hermes/skills/novel/knowledge/`
  - 状态文件：`~/.hermes/skills/novel/_state/`
  - 全局日志与备份：`~/novels/_shared/logs/` 和 `~/novels/_shared/backups/`
- **DRAFT/POLISH 铁律**：这两步是文字创作，通过 Hermes `delegate_task` 派发子智能体完成，不调度 Claude Code CLI。主 Agent 负责验证（review_scan.py）和落盘。字数略超或对话比例略低不微调——这是小说，不是代码。
- **里程碑审查报告归档**：报告保存至 `00-大纲细纲/里程碑审查_第N章.md`，方便后续回溯各批 5 章的质量评估历史

