| name | novel-main |
| description | 番茄小说章节全流程创作 — 统筹调用所有子技能,按7步状态机完成从资料整理到备份的完整流程。支持中断恢复与自动/确认双模式 |
| category | novel |
番茄小说主技能(v2.0)
版本历史见 git 提交记录,不在技能正文维护。
触发条件
用户说「写第X章」「继续下一章」「生成一章」「续写」时使用本技能。
🚫 硬性约束:用户未明确说"继续""写第X章"时,严禁擅自推进到下一章。写完当前章后必须等待用户确认,不得自动开始新章。
前置检查
在进入状态机之前,执行以下检查:
-
确保状态目录存在:mkdir -p ~/.hermes/skills/novel/_state/。此目录用于存储进度文件和活跃书记录。同时确保 ~/novels/_shared/{logs,backups} 存在(为 cron 预留)。
-
确认工作书:读取 ~/.hermes/skills/novel/_state/current_book.txt,获取当前活跃书名。如果为空或不存在,提示用户选择书籍。
-
确认目录存在:检查 ~/novels/books/<书名>/ 目录存在(否则先调用 novel-new-book)。
-
确认目标章节号:
- 用户明确说了第 X 章 → 使用 X
- 用户说「继续写」「下一章」→ 读取
01-正文存稿/ 下最大章节号 + 1
- 都没有 → 询问用户「要写第几章?」
-
尝试恢复中断任务:检查 ~/.hermes/skills/novel/_state/<书名>_progress.json,如果存在且 status != 'completed':
- 如果
milestone_blocked == true:拦截并提示「⚠️ 第 N 章里程碑审查未通过,请先修正阻塞问题后再继续。阻塞报告见 00-大纲细纲/里程碑审查_第N章.md」。不允许开始新章节。
- 否则询问用户是否从中断点继续。
-
检查章节规划内容:读取 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 信号:___」
期望输出格式:
## 创作上下文(第 X 章)
### 前文关键信息
- 上一章结尾:<文本>
- 章末钩子:<文本>
### 人物当前状态
| 人物 | 状态 | 最近变化 |
|------|------|---------|
| ... | ... | ... |
### 待回收伏笔(优先级排序)
1. [伏笔内容] — 计划第 Y 章回收(⚠️正常 / 🚨超期 Z 章)
### 本章大纲要点
<从章节规划提取>
### 近期修正反馈
<从错误库提取,如无则写「无」>
步骤 2:PLOT(剧情推演)
调用子技能:novel-plot
传入参数:
{
"大纲要点": "<从步骤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 推演前置区块):
### 跨章节奏诊断(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 章
期望输出格式:
## 第 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 = 生成骨架(预审) → Claude Code CLI 填肉。
🔒 容量预审(硬性,不可跳过):进入 DRAFT 前必须检查骨架容量:
- 至少 4 个有效剧情回合(冲突交锋、信息增量、利益博弈)
- 至少 3 次局势或利益变化
- 至少 1 次主角主动决策
- 容量不足时退回 PLOT/骨架补充有效回合,不得进入 DRAFT
执行流程:
- 生成骨架:基于 PREP 上下文,按
novel-skeleton 技能规范写骨架,存项目目录 00-大纲细纲/章节骨架/第N章_骨架.md。
- 预审骨架:
python3 ~/.hermes/skills/novel/scripts/review_scan.py <骨架路径> --book <书名> — ⛔ 骨有毒肉全烂,必须零违禁。--book 参数用于从 02-设定文档/书配置.md 加载该书的地名白名单/黑名单/系统违禁词。
- 派发 Claude Code CLI(仅3条铁律,6KB铁律已固化在骨架中):
- 地名只用白名单。禁止真实地名。
- 系统面板原封不动。
- 字数/对话/粤语/冷感/格式。
助理禁止:直接写正文、改骨架中数字/地名/面板、delegate_task冒充、不预审派发。
🔒 前置自检(不可跳过):无论 PREP 是否已执行,DRAFT 必须自动收集以下上下文后再构造 prompt:
cat ~/novels/books/<书名>/02-设定文档/人物库/*.md 2>/dev/null || echo "⚠️ 人物库为空"
cat ~/novels/books/<书名>/06-追踪记录/前文时间线速查.md 2>/dev/null || echo "⚠️ 时间线为空"
grep "第<X>章" ~/novels/books/<书名>/00-大纲细纲/章节规划.md 2>/dev/null || echo "⚠️ 无章节规划"
ls -t ~/novels/books/<书名>/01-正文存稿/第*.md | head -3 | xargs cat 2>/dev/null
以上收集到的内容全部注入 DRAFT prompt 的对应区块。缺失项标注 ⚠️ 但不阻塞 DRAFT。
命令(文件传参,避免 shell 转义):
cat > /tmp/novel_chX_prompt.txt << 'PROMPT_EOF'
<完整 prompt 内容>
PROMPT_EOF
python3 ~/.hermes/skills/novel/scripts/claude_runner.py \
--prompt-file /tmp/novel_chX_prompt.txt \
--model sonnet \
--max-turns 15 \
--allowed-tools Read,Write,Edit \
--idle-timeout 120 \
--exit-timeout 10 \
--target-file ~/novels/books/<书名>/01-正文存稿/第N章.md \
--events-file /tmp/novel_chX_events.jsonl \
--output-file /tmp/novel_chX_result.json
⚠️ 切勿使用内联 claude -p "prompt文本" ——中文引号「」等字符会导致 shell 转义失败。
ℹ️ 字数统计、违禁词扫描、系统面板验收由主 Agent 脚本在进程结束后执行,不在 prompt 中要求 Claude 调用 Bash。这避免了权限拒绝、无效轮次和超时误判。
骨架模式 prompt 模板(骨架已固化所有约束,仅需3条铁律):
- 先将 prompt 写入临时文件:
你是番茄小说签约作者。按以下骨架写第N章正文。只填肉不改骨。直接输出正文。
【骨架】
<从 00-大纲细纲/章节骨架/第N章_骨架.md 读取>
【铁律 — 只三条,骨架中已固化地名/数字/面板】
1. 禁止任何真实中国地名。只使用 `02-设定文档/书配置.md` 的地名白名单字段中定义的架空地名。
2. 系统面板原封不动放进去。不加减行。不修改数字。
3. 字数2200—2400(目标2250)。对话40%以上。方言/口语点缀3-5处(具体见书配置)。冷感叙述。章末无结束标记。无HTML。
【网文校准(必须遵循)】
- 情绪直接给读者,不留白。对手被打脸后的反应要写透(震惊/不服/闭嘴),围观者要有反应。
- 事件密度高:本章2-3个场景,每个场景都有信息增量和情绪变化。不要一章只写一件事。
- 大白话叙述。比喻读者看不懂就不用。数字要具体。
- 章末钩子要具体(谁来了/什么消息/什么危机),不要环境描写收尾。
- MC台词短但每句有分量(判断/决定/指令),不是"嗯""好"这种无信息回复。
- 派发(字数/违禁词/面板验收由主 Agent 脚本执行,不要求 Claude 自行 Bash):
python3 ~/.hermes/skills/novel/scripts/claude_runner.py \
--prompt-file /tmp/novel_chX_prompt.txt \
--model sonnet \
--max-turns 15 \
--allowed-tools Read,Write,Edit \
--idle-timeout 120 \
--exit-timeout 10 \
--target-file ~/novels/books/<书名>/01-正文存稿/第N章.md \
--events-file /tmp/novel_chX_events.jsonl \
--output-file /tmp/novel_chX_result.json
⚠️ 旧版 6KB opus铁律.md 不再注入骨架模式。约束已固化在骨架中。opus铁律.md 保留作为参考/review 用,不出现在 prompt 中。
取回正文:从 Claude Code CLI 的 stdout 中提取生成的正文内容。
ℹ️ novel-draft 输出格式为 ## 第X章 <章节标题> + 正文。novel-main 在最终报告中同样会输出章节标题,确保一致性。
字数要求:2200—2400字(番茄标准),目标2250字。DRAFT 设字数 + 有效密度双门槛:字数达标且有效内容达标才可进入 REVIEW。容量不足时退回 PLOT/骨架补充有效回合,不得进入 DRAFT。不能靠 POLISH 补环境细节凑字数。
步骤 4:REVIEW(合规审查)
🚫 硬性约束:DRAFT 完成后必须立即执行 REVIEW,不得跳过。未输出审查报告前,禁止进入 POLISH/TRACK/BACKUP 及下一章。
执行方式:三步流水线 + 可选跨文档校验,自动串联。
第 0 步:跨文档一致性检查(每 5 章执行一次,约 2 秒)
python3 ~/.hermes/skills/novel/scripts/consistency_check.py --book "<书名>"
- 仅在章节号是 5 的倍数(5/10/15...)时执行,避免每章重复校验
- 7 维交叉验证:人物卡↔总表 / 章节规划↔正文 / 故事线状态 / 前文时间线 / 伏笔表 / 正文人物注册 / 大纲分卷
- 发现 🔴 问题 → ⚠️ 不通过,阻塞 REVIEW,需先修复问题再继续
- 发现 🟡 问题 → 记录但不阻塞
- 通过(✅ 全绿)→ 继续
第 1 步:自动扫描(3 秒,DRAFT 完成后立即执行)
python3 ~/.hermes/skills/novel/scripts/review_scan.py ~/novels/books/<书名>/01-正文存稿/第X章.md --book <书名>
扫描通过(零真实问题)后,继续。
第 2 步:爽点注入检查(强制 5 项)
爽点注入检查(强制,加载 novel-writing → references/case-studies/爽点注入方法论.md):
[ ] 系统钱花出去了?花给谁?对方什么反应?
[ ] 有人不理解 MC 的能力/资源?MC 解释了吗?
[ ] 有打脸?(质疑→实力→闭嘴)
- [ ] 有收入对比?(书配置中的对照组 vs 系统收入)
[ ] 系统面板出现时 MC 是「行动」不是「算账」?
任一项「否」→ 该章需注入爽点后再次审查。
跨章爽点衰减检查(强制,与单章5项并行执行):
检查最近 3 章(含本章)的爽点密度,触发以下任一阈值→本章审查结论为 ⚠️ 不通过,必须在 POLISH 中补足:
[ ] 连续 ≥ 3 章无当众打脸?→ 🔴 本章必须补1次打脸场景
[ ] 连续 ≥ 3 章无正面胜利(对手退让/围观认可/问题解决)?→ 🔴 本章必须补1次「赢」
[ ] 连续 ≥ 3 章主角处于被动应对(危机来了→冷静处理→安排下一步)?→ 🔴 本章必须有主角主动出击
[ ] 连续 ≥ 3 章反派只隔空出手、从不正面出场?→ ⚠️ 本章建议让反派代理人正面出场
[ ] 连续 ≥ 3 章同一种叙事结构(如「危机→冷静→拒绝→安排」循环)?→ 🔴 本章结构必须变化
此检查与 PLOT 阶段的跨章节奏门控互为兜底:PLOT 门控在前端拦截,REVIEW 衰减检查在后端验证。如果 PLOT 门控触发了🔴但 DRAFT/正文未体现,REVIEW 必须拦截。
读者视角审查(每 3 章强制执行,references/case-studies/读者审查标准.md):
单章写完后放在上下文中连读 3 章,用 Claude Code opus 以 20 年网文读者身份审查:
python3 ~/.hermes/skills/novel/scripts/claude_runner.py \
--prompt-file /tmp/reader_review_N章.txt \
--model sonnet \
--max-turns 30 \
--allowed-tools Read \
--idle-timeout 120 \
--exit-timeout 10 \
--events-file /tmp/reader_review_N章_events.jsonl \
--output-file /tmp/reader_review_N章_result.json
读者说「想弃」→ 重写,不修。读者说「想追」→ 保留结构,微调。
广告打断点检查(每 3 章,加载 novel-platform):
- 第 3/6/9 章章末必须是强钩子(信息截断/视角切换/倒计时型)
- 广告点后第一章开头必须立刻接上悬念,不换场景
检查通过(零问题)再进入人工审查。
调用子技能:novel-review
传入参数:
{
"draft_output": "<步骤3 的完整输出>",
"character_cards": "<人物库内容>",
"foreshadow_table": "<伏笔追踪表内容>",
"world_setting": "<世界观.md 内容>",
"storyline_status": "<故事线状态.md 内容>",
"recent_chapters": "<最近5章正文内容>"
}
REVIEW 审查自检清单(审查时必须逐条检查,不得跳过):
⚠️ 审查报告必须先逐条列出以上 7 项的结果(✅/⚠️),再输出问题清单。任一项未通过(⚠️)则审查结论为 ⚠️ 不通过。
🚫 硬性约束:DRAFT 完成后必须立即执行 REVIEW,不得跳过。未输出审查报告前,禁止进入 POLISH/TRACK/BACKUP 及下一章。
期望输出格式:
## 审查报告 — 第 X 章
### 总体结论
✅ 通过 / ⚠️ 不通过
### 问题清单
| 序号 | 等级 | 类型 | 位置 | 问题描述 | 修改建议 |
|------|------|------|------|---------|---------|
| 1 | 🔴严重 | OOC | 第X段 | ... | ... |
| 2 | 🟡建议 | 节奏 | 第X段 | ... | ... |
### 质量评分
- 对话自然度:⭐/5
- 节奏把控:⭐/5
- 钩子吸引力:⭐/5
通过/不通过判断:
- 存在一级问题(🔴或🚨) → ⚠️ 不通过
- 仅存在二级问题(🟡建议) → ✅ 通过(问题记录,但不阻塞)
步骤 5:POLISH(内容打磨)
执行方式:派发给 Claude Code CLI 执行。
🔒 修改前备份(强制,不可跳过):在执行 POLISH 修改之前,必须先备份当前章节到版本历史:
python3 ~/.hermes/skills/novel/scripts/backup_chapter.py ~/novels/books/<书名>/01-正文存稿/第X章.md
备份后文件存入 03-版本备份/正文历史/第X章_YYYYMMDD_HHMMSS.md。
⚠️ 没有备份就没有修改历史,改错了找不回来。此步骤不可跳过。
命令(文件传参,避免 shell 转义):
cat > /tmp/novel_chX_polish_prompt.txt << 'PROMPT_EOF'
<完整 prompt 内容>
PROMPT_EOF
python3 ~/.hermes/skills/novel/scripts/claude_runner.py \
--prompt-file /tmp/novel_chX_polish_prompt.txt \
--model sonnet \
--max-turns 15 \
--allowed-tools Read,Write,Edit \
--idle-timeout 120 \
--exit-timeout 10 \
--target-file ~/novels/books/<书名>/01-正文存稿/第N章.md \
--events-file /tmp/novel_chX_polish_events.jsonl \
--output-file /tmp/novel_chX_polish_result.json
⚠️ 切勿使用内联 claude -p "prompt文本" ——中文引号会导致 shell 转义失败。
传入内容(作为 prompt 传递):
- book_name:
<书名>
- draft_output:
<步骤3 的完整输出>
- review_report:
<步骤4 的完整输出>
prompt 模板:
你是一位番茄小说资深编辑。请根据审查报告打磨以下第X章正文:
【初稿】
{步骤3 的完整输出}
【审查报告】
{步骤4 的完整输出}
打磨原则:
- 审查通过的 → 执行标准打磨(对话 / 画面感 / 节奏 / 钩子强化)
- 审查不通过的 → 先修复审查问题,再标准打磨
- 打磨 ≠ 重写,保持原有剧情结构
- 作者风格:直接、不煽情、冷幽默、冷感叙述(具体风格参考书配置)
- 输出打磨后的完整定稿(Markdown,格式同初稿)
取回正文:从 Claude Code CLI 的 stdout 中提取打磨后的定稿。
打磨原则:
- 审查通过的 → 执行标准打磨(对话 / 画面感 / 节奏 / 钩子强化)
- 审查不通过的 → 先修复审查问题,再标准打磨
- 打磨 ≠ 重写,保持原有剧情结构
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(章末读者互动模板)
传入参数:
{
"final_draft": "<步骤5 的定稿>",
"plot_output": "<步骤2 的完整输出>",
"book_name": "<书名>",
"chapter_num": <章节号>
}
章末读者互动(如果本章是广告打断点(3/6/9章),加载 novel-platform 模板):
- 引导评论(悬念型):「这章结尾你们猜到了吗?评论区说说——」
- 引导追读(留存型):「明天这一章,会揭晓那个电话是谁打的。提示:不是你们想的任何一个人。」
- 50-80 字,必须带行动号召,不道歉不卖惨不解释剧情
期望输出格式:
## 更新确认 — 第 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(里程碑审查)
⚠️ 条件触发:在以下任一条件满足时执行本步骤:
章节号 % 5 == 0(即第 5、10、15、20...章)
- 当前章节是所在卷的最后一章(从分卷细纲/章节规划确认。卷末必须审查,不论章节号是否为5的倍数)
非上述情况的章节跳过本步骤,直接进入 BACKUP。
调用子技能:novel-milestone(若不存在则按以下规范内联执行)
传入参数:
{
"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 项,必须逐条检查):
- 前后 5 章连贯性:检查最近 5 章(Ch.N-4 至 Ch.N)之间剧情是否有跳跃(逻辑断层、场景突兀切换)或重复(同类型事件/对话/套路连续出现 ≥ 3 章)
- 伏笔埋坑状态:
- 统计本节段内新增伏笔数量与 ID
- 统计本节段内回收伏笔数量与 ID
- 超期统计:列出所有超过计划回收章节 ≥ 3 章仍未回收的伏笔(🚨严重),以及超过 1-2 章的伏笔(⚠️警告)
- 人物弧线推进进度:与
00-大纲细纲/主线大纲.md 中的人物弧线规划对照,检查主要人物(≥ 3 个)的阶段性推进是否达标(预期 vs 实际)
- 主线进度:与
00-大纲细纲/分卷细纲.md 对照,检查当前卷内进度(已完成章节数 / 本卷总章节数),确认主线事件完成度是否匹配规划
- 时间线全链路一致性:交叉验证最近 5 章 + 前文时间线速查中所有章节的时间标记,确认日期/时间跨度的先后顺序无矛盾,无跨越不可能的时间跳跃
- 章节规划同步(强制,不可跳过):
- 已完成章回填:逐个检查 Ch.N-4 至 Ch.N 的章节规划行,标题和核心事件是否为占位文本(「待定」「待填写」「TBD」等)。若是 → 🚨 阻塞,必须用实际发生的标题和事件回填。
- 未来章检查:检查 Ch.N+1 至 Ch.N+5 是否在章节规划中有实质内容(标题非占位,核心事件≥5字)。若无 → ⚠️ 警告,提示需在下一批 5 章开始前补充。
- 分卷细纲同步:检查
00-大纲细纲/分卷细纲/ 中对应卷的细纲,确认其章节段描述与最近 5 章实际内容不矛盾。若章节段内容明显过时(描述的事件已发生但完全不同)→ ⚠️ 警告,提示需更新。
- 输出:在里程碑报告中增加「第 6 项:章节规划同步」表格,逐章列出规划行状态(✅ 已回填 / 🚨 占位需回填 / ⚠️ 未来章需补充)。
期望输出格式:
## 里程碑审查报告 — 第 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,展示阻塞问题清单,提示用户修正对应章节后重新触发里程碑审查
阻塞时的处理流程:
- 将进度文件中
current_step 设为 milestone_blocked,status 设为 failed
- 将里程碑审查报告保存到
00-大纲细纲/里程碑审查_第N章.md
- 展示阻塞问题清单,给出每个问题的修正建议(回退到哪个章节 PREP 重新开始)
- 用户修正后,从修正后的章节重新走 7 步流程,到该章的 TRACK 后再次触发 MILESTONE
- 用户说「继续下一章」「写第 X 章」时,前置检查先检测
milestone_blocked 状态 → 若存在则拦截并提示「⚠️ 第 N 章里程碑审查未通过,请先修正阻塞问题」
步骤 8:BACKUP(自动备份)
调用子技能:novel-backup
传入参数:
{
"final_draft": "<步骤5 的定稿>",
"book_name": "<书名>",
"chapter_num": <章节号>,
"word_count": <字数>,
"mode": "chapter"
}
期望输出格式:
✅ 备份完成
- 正文:01-正文存稿/第X章.md
- 设定快照:03-版本备份/设定快照_第X章/
- 备份版本:v<version>
最终输出格式(步骤 8 完成后)
✅ 第 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 章」:
- 更新
~/.hermes/skills/novel/_state/current_book.txt 为 <XXX>
- 保存当前书的进度(如果正在进行)
- 对新书执行前置检查
- 继续 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 铁律:这两步是文字创作,必须用 Claude Code CLI (
--model sonnet --max-turns 15),禁止用 delegate_task。delegate_task 的子代理不遵循创作规则,会自创地名/数字/系统功能。
- 里程碑审查报告归档:报告保存至
00-大纲细纲/里程碑审查_第N章.md,方便后续回溯各批 5 章的质量评估历史