# Novel Chapter Sop

> Use during Phase 2 novel writing when user is drafting a chapter or scene - scene-level 8-step workflow requiring at least two rounds of independent agent review until no P0/P1 remains

- Skill: `gonsoninter/novel-chapter-sop` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gonsoninter/novel-chapter-sop`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gonsoninter/novel-chapter-sop/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: GonsonInter (https://skillmd.com/u/gonsoninter)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/gonsoninter/novel-chapter-sop

---


# 场景/单章写作 SOP（Phase 2 · 写作中）

## 核心原则（最严格版）

**以"场景"为单位走 SOP，不是以"章"为单位。**

一个章可能包含 1-4 个场景。每个场景必须：
- 写完后独立走一次 SOP
- 至少**两轮独立 agent review**
- 改到**没有 P0 / P1** 为止（只剩 P2 才算收）

**为什么是"场景"而不是"章"**：
- 一章可能跨多个场景（比如"前铺对话"→"后堂布置"→"走到内堂见人"三个场景）
- 每个场景有独立的时间地点人物状态，bug 也按场景分布
- 场景级 review 能更早 catch 问题，修改成本低得多

## 激活条件

由 `novel-writer-workflow-guide` 路由激活，当用户：
- 说"开始写 Ch X" / "继续写下一章" / "这一章怎么写"
- 说"改一下 Ch X" / "Review 一遍" / "agent 再审一次"
- 已经在写作期，提交新章节稿 / 新场景稿

## 可用的 review agent（本地）

**首选**：`general-purpose` agent（Agent 工具默认选项）
- 最通用，可以按三个 prompt 模板塑造成逻辑审 / 风格审 / 终审三种角色
- 每次派一个新 agent 实例，互不串场
- **并行派两个做第一轮**（逻辑审 + 风格审），**串行派一个做第二轮终审**

**补充**：
- `Explore` agent：适合"读全书找某条线索是否连贯"这种横向扫描（不是每轮都用，跨章一致性检查时用）
- **外部 codex**（如果用户机器上有）：最强的"独立视角"来源，做最后终审最稳
- `superpowers:code-reviewer`、`agent-friendly-review`：不适合 novel，跳过

**派 agent 的硬规则**：
1. 第一轮的两个 agent 必须是**两个独立实例**（两次 Agent 调用，不是同一个 agent 看两遍）
2. 第二轮的终审 agent 必须是**全新实例**（不能让第一轮的 agent 继续看）
3. 每次派 agent 时，prompt 里明确说"带这些文件读、按这个模板报告"，不要让 agent 自由发挥
4. 如果用户本地有 codex 或其他外部 review 工具，**第二轮优先用外部**（独立视角）

## 核心流程：场景/单章 8 步 SOP

**单位是场景（Scene），不是章（Chapter）**。每写完一个场景就走一次 SOP。

一个章可能包含 1-4 个场景，比如：
- 场景 A：前铺对话（15 分钟）
- 场景 B：后堂布置物件（10 分钟）
- 场景 C：走到内堂见女主（20 分钟）

每个场景独立走 SOP。收齐 3 个场景之后，再做一次**整章级** review（确认场景间衔接）。

**跳任何一步都会在后期翻倍成 bug。**

### 步骤 1：读前 1-2 个场景正文

保持语感、细节、人物状态的连续。这步最容易偷懒省掉、但最致命。

- 用 Read 读前 2-3 章的完整正文（不只是钩子）
- 标记本章开始时人物状态（谁在哪、身上带什么、伤情恢复到什么程度）
- 对齐本章时间点（前一章结束在 X 日 Y 时，本章开始应该衔接）

### 步骤 2：按钩子 plan 写正文

- 从 `大纲.md` 和 `钩子与反转.md` 读本章的核心事件 + 章末钩子
- Plan 是路线，写的时候允许小偏
- 严格遵守 `宪法.md` 的硬约束

### 步骤 3：写完立即 self-review（机械项）

跑脚本扫描以下项，不靠人工数：

```python
import re
t = open('chapter.md').read()
parts = t.split('\n\n', 2)
body = parts[-1] if len(parts) >= 3 else t

checks = [
    ('字数', len(re.sub(r'\s','',body))),
    ('破折号', body.count('——')),
    ('markdown bold', t.count('**')),
    ('ASCII 双引号', t.count('"')),
    ('ASCII 单引号', t.count("'")),
    ('全角引号配对', t.count('"') == t.count('"')),
    ('禁用姓氏（如林淮）', t.count('林淮')),
    ('meta Ch N 引用', bool(re.search(r'Ch\s*\d+', t))),
]
```

对照 `宪法.md` 的**硬约束锁清单**（由 `novel-consistency-guards` 提供），所有违规必改。

### 步骤 4：按 self-review 结果自己先修一轮

**不要跳这一步。** 把机械项和自己能看出的内容问题先改掉。

否则下一步 agent 读的是脏稿，浪费 token，也会让 agent 的注意力被机械项分散。

### 步骤 5：spawn 并行 agent review（内容项）

**这时 agent 读的是你自己修过一轮之后的版本，不是脏稿**。

按维度分派两个 agent 并行跑：

**Agent 1 · 逻辑审**
```
维度：时间线、道具链、人物状态、跨章冲突、能力越界
prompt 带入：
- 宪法.md 的硬约束清单
- 关键时间锚（上一章结束时间、本章时间）
- 已锁设定（姓氏、能力边界、人物关系）
- 本章正文
- 前 2-3 章的关键细节摘要
```

**Agent 2 · 风格审**
```
维度：句式密度、破折号克制、钩子节奏、对话人物性、全知插话检测
prompt 带入：
- 前几章的风格样本（让它感基线）
- 本章正文
- 宪法.md 的风格原则
```

两个并行跑。取两份报告的交集（两个都报的多半是真 bug）和并集（各自报的看权重）。

### 步骤 6：按 P0 / P1 分级修（必须改到 0 P0、0 P1）

**P0（必修）**：硬约束违反 / 时间矛盾 / 道具错位 / 跨章冲突。读者一眼看穿。
**P1（必修）**：逻辑可以圆但略勉强 / 细节不够稳 / 口径不统一。
**P2（可忽略）**：风格偏好 / 字数倾向 / 单字瑕疵。

**新的硬红线**：**场景收口的唯一标准是 P0 和 P1 全部为 0**。只要还有任何 P1，就不算收。

**Agent 经常把 P2 报成 P0/P1，要自己判断权重。** 判断后如果确认是 P2，可以跳过；但如果是真 P1，必须修。

用 Edit 定点替换，不用 Write 覆盖整章。

### 步骤 7：再派一个独立 agent 做"终审"——修到无 P0/P1 才算收

**这一步是关键。** 派 agent 的三条硬规则见开头"可用的 review agent"一节。

- **不要让刚才那个 agent 再审一次**（它会顺着自己上一轮的思路看）
- 派**全新 agent 实例**，带当前修订后的版本
- prompt 明确写："这是刚做过一轮修订的版本，请从零读一遍，找**新引入的问题**和**第一轮可能漏掉的项**"
- **如果本地有 codex 或其他外部 review 工具，第二轮终审优先用外部**

经常能 catch 到：
- 修订过程中引入的新 bug（改一个字破坏了前后呼应）
- 第一轮 agent 漏掉的项（第一轮它看到全稿问题多就漏了一些小的）
- 跨段重复（修一处加了一句，正好和前面已有的一句语义重复）

**判断标准（严格）**：
- 如果第二轮 agent 报出**任何** P0 或 P1，**继续修、继续派新 agent 审**，不要停
- 每一轮修订后必须派新 agent（不能同一个 agent 连审两次）
- 直到某一轮**新派的 agent** 报告**只剩 P2** 或**"无发现"**，这个场景才算收
- 实战记录：一个场景可能需要 2-5 轮 review 才能收干净，正常，不要图快

**轮次记录**（可选但推荐）：

```markdown
## 场景 A · Review 记录

- Round 1（逻辑审 general-purpose）：报 P0×3、P1×5 → 修
- Round 1（风格审 general-purpose 并行）：报 P0×1、P1×2 → 修
- Round 2（终审 general-purpose 新实例）：报 P1×2（两处新引入） → 修
- Round 3（终审 general-purpose 新实例）：报 P1×1（口径不统一） → 修
- Round 4（终审 codex 外部）：无发现 ✓
```

### 步骤 8：修完再跑一次机械扫描

防止修订过程中引入新问题：
- 改字时可能手抖加了破折号
- 复制粘贴可能带入 ASCII 引号
- 新段落意外出现 markdown bold
- 修时序时可能引入新的 meta "Ch N"

跑一次步骤 3 的 Python 脚本，全过才算收。

## 三个 review prompt 模板

### 模板 1 · 逻辑审（第一轮 agent 1）

```
你是严格的网络小说责编。检查本章的逻辑、时间线、道具链、跨章连贯性。

**必读**：
- /path/to/chapters/N.md（本章）
- /path/to/chapters/(N-1).md 和 /path/to/chapters/(N-2).md（前两章，核对连贯）
- /path/to/宪法.md（硬约束）

**重点扫描**：
1. 时间线（本章时间是否衔接前一章 / 内部时间跨度是否合理）
2. 道具链（每件关键物件的位置、状态、是否和前章冲突）
3. 人物状态（伤情、位置、对他人的知晓程度）
4. 能力边界（是否越过宪法定义的金手指边界）
5. 跨章冲突（是否和前文锁定的设定冲突）

**硬约束锁**：
- 主角（如"苏淮"）始终姓苏
- 无超自然
- 无 meta "Ch N" 引用
- 中文全角引号
- 无 markdown bold
- 破折号每章 ≤ 7

按 P0 / P1 / P2 分级，每条给行号 + 建议改法。400 字内。
不要重述剧情、不要赞美、不要挑风格问题（那是另一个 agent 的事）。
```

### 模板 2 · 风格审（第一轮 agent 2）

```
你是网络小说频道风控编辑。检查本章的风格、句式、节奏、钩子。

**必读**：
- /path/to/chapters/N.md（本章）
- /path/to/chapters/(N-3).md 到 /path/to/chapters/(N-1).md（前三章作风格基线）

**重点扫描**：
1. 句式密度（是否和前几章一致，有没有突然变散文诗或变网文口水）
2. 破折号使用（数一数本章用了几个，超过 7 必修）
3. 钩子节奏（开头 / 中段 / 结尾的钩子强度是否撑起本章）
4. 对话人物性（每个人说话是否符合人物卡）
5. 全知插话检测（有没有"作者口吻"入侵主角视角）
6. 重复用词密集段落

按 P0 / P1 / P2 分级。400 字内。
不要重述剧情，不要挑逻辑问题（那是另一个 agent 的事）。
```

### 模板 3 · 终审（第二轮独立 agent）

```
你是严格的网络小说责编。本章刚做过一轮修订。

**你的任务**：
从零读修订后的版本，专门找：
1. **新引入的问题**——修订过程中可能破坏了哪些原本对的地方
2. **第一轮可能漏掉的项**——上一个 agent 没看到的细节

**必读**：
- /path/to/chapters/N.md（修订后的本章）
- /path/to/宪法.md

**重点扫查**：
- 修订后的段落和未修订的段落之间是否自洽
- 修订是否造成重复表达
- 修订是否破坏了前后呼应
- 所有硬约束项是否仍然满足
- 是否有修订过程中的误操作（多余字、漏字、错别字）

按 P0 / P1 / P2 分级。300 字内。
如果全部通过，明确说"无发现"。
```

## 与姐妹 skill 的关系

- **输入来源**：
  - `novel-framework` 的大纲、钩子矩阵、人物卡、世界观
  - `novel-ideation` 的 constitution
- **主动调用**：
  - 每一步都**引用** `novel-consistency-guards` 的硬约束清单和扫描脚本
- **输出交付**：
  - 写完的单章稿，进入 `chapters/` 目录
  - 修订日志（可选），记录两轮 review 发现的问题

## 常见陷阱

### 跳过步骤 1（读前章）

"我记得主角上一章干了什么"——不行。记忆不可靠。必须 Read。漏读一次，本章就可能写出道具位置错位、时间对不上、人物状态不连贯的问题。

### 跳过步骤 4（自己先修）

"直接让 agent 看吧"——不行。agent 看脏稿会被机械项分散注意力，而且 agent 报告里会大量 P0 其实是你自己都能修的。浪费 token + 浪费时间。

### 只做一轮 review

"一轮就够了"——不够。修订过程本身会引入新 bug。必须第二轮独立 agent 审修订后的版本。

### 盲从 agent 报告

"agent 说 P0 那就改"——不行。agent 经常把风格偏好报成 P0。要自己判断。改前问自己：这是真 bug 还是风格选择？

### 修订用 Write 整章覆盖

"反正要改很多，覆盖省事"——危险。整章覆盖容易误伤未修订段落（copy-paste 时漏、格式变化、破折号意外增减）。用 Edit 定点替换。

## 完成标准（这个场景可以收）

**硬性条件（全部满足才算收）**：
- [ ] 机械扫描全部通过（字数/破折号/引号/markdown/姓氏/meta 都过）
- [ ] 最后一轮独立 agent review 报告 **0 P0 + 0 P1**
- [ ] 最后一轮 agent 必须是**新实例**（不是修订前看过的那个）
- [ ] review 轮次记录齐全（至少 2 轮，必要时 3-5 轮）

**软性条件（偏离要有明确理由）**：
- [ ] 字数在目标范围内
- [ ] 本场景钩子强度达到预期

**如果场景分多个**：
- 每个场景独立走 SOP 收到 0 P0/P1
- 整章场景都收齐后，再做一次**章级 review**，重点查场景间衔接（时间、人物状态、道具位置）
- 章级 review 也要 0 P0/P1 才算整章收

## 下一章 / 切换到收口

- **写下一章**：重新走这 8 步
- **初稿全部完成**：主 skill 会问是否切换到 `novel-finalization`

