novel-writer
- Repo stars 35
- Author updated Live
- Author repo novel-writer
- Domain
- Other
- Compatible agents
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- Trust score
- 88 / 100 · community maintained
- Author / version / license
- @AI-Practical-Lab · no license declared
- Token usage
- Lean
- Setup complexity
- Guided setup
- External API key
- Not required
- Operating systems
- Unspecified (assume cross-platform)
- Runtime requirements
- No special requirements
- Permissions
-
- Read-only
- Write / modify
- Network behavior
- Local-only
- Install commands
- 26 variants
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: novel-writer
description: ~/Documents/{书名}/ │ ├── project_info.md # 项目元信息 │ ├── worldbuilding.md # 世界观设定 │ ├── characters.…
category: other
runtime: no special runtime
---
# novel-writer output preview
## PART A: Task fit
- Use case: ~/Documents/{书名}/ │ ├── project_info.md # 项目元信息 │ ├── worldbuilding.md # 世界观设定 │ ├── characters.md # 人物小传 │ └── volume_outline.md # 卷纲 runs entirely locally. Works with Claude Code, Cursor, Cline and 23 more..
- Inputs: target material, constraints, expected output, and acceptance criteria.
- Evidence boundary: follow “项目输出路径 / 核心架构 / 状态机(带强制验证)” and do not present inference as author intent.
## PART B: Execution result
- **01** The card summarizes the use case; runtime output centers on “~/Documents/{书名}/ │ ├── project_info.md # 项目元信息 │ ├── worldbuilding.md # 世界观设定 │ ├── characters.md # 人物小传 │ └── volume_outline.md # 卷纲 runs entirely locally. Works with Claude Code, Cursor, Cline and 23 more.”.
- **02** When the source has headings, the agent prioritizes “项目输出路径 / 核心架构 / 状态机(带强制验证)” so the result follows the author’s structure.
- **03** Typical output includes task judgment, concrete steps, required commands or file edits, validation, and follow-up options.
- **04** Risk context follows the fingerprint: read files, write/modify files; mostly runs locally; usually needs no extra API key.
## Running Rules
- read files, write/modify files; mostly runs locally; usually needs no extra API key.
- Validate with a small sample before expanding scope.
- Return the result, validation criteria, and next iteration options. The source does not require a stable slash command. After installation, invoke the skill by name and describe the task.
Name target files or source material, expected output, forbidden changes, and whether network or shell access is allowed. Permission fingerprint: read files, write/modify files.
Start with a small task and check whether the result follows “项目输出路径 / 核心架构 / 状态机(带强制验证)”. Inspect diffs, logs, previews, or tests before expanding scope.
Confirm the final output includes a concrete result, evidence, and next action. If it stays generic, tighten inputs, boundaries, and acceptance criteria.
---
name: novel-writer
description: ~/Documents/{书名}/ │ ├── project_info.md # 项目元信息 │ ├── worldbuilding.md # 世界观设定 │ ├── characters.…
category: other
source: AI-Practical-Lab/novel-writer
---
# novel-writer
## When to use
- ~/Documents/{书名}/ │ ├── project_info.md # 项目元信息 │ ├── worldbuilding.md # 世界观设定 │ ├── characters.md # 人物小传 │ └── volume…
- Use it when the task has clear inputs, repeatable steps, and validation criteria.
## What to provide
- Target material, scope, expected result, and forbidden changes.
- Whether network, commands, file writes, or external services are allowed.
## Execution rules
- Organize steps around “项目输出路径 / 核心架构 / 状态机(带强制验证)” and keep inference separate from source facts.
- read files, write/modify files; mostly runs locally; usually needs no extra API key.
- Validate with a small sample before expanding the task.
## Output requirements
- Return the deliverable, key evidence, validation method, and next action.
- Mark missing information as unknown; do not invent commands, platforms, or dependencies. The author source anchors workflow facts; repository files anchor sources and commands; Fluxly only adds fit, limitations, and quality judgment.
skill "novel-writer" {
input -> user goal + target files + boundaries + acceptance criteria
context -> 项目输出路径 / 核心架构 / 状态机(带强制验证)
rules -> SKILL.md triggers / order / output contract
runtime -> no special runtime | read files, write/modify files | mostly runs locally
guardrails -> usually needs no extra API key + small-sample validation + diff/log review
output -> copyable result + checklist + next iteration
} novel-writer v3.0
核心理念:文字规范抵不过代码约束。用脚本强制验证,用检查点保证可恢复,用进化机制持续改进。
项目输出路径
路径规则:~/Documents/{书名}/
- 目录名使用纯中文字符,与书名完全一致
- 示例:《他养大了皇帝》→
~/Documents/他养大了皇帝/ - 示例:《隐相》→
~/Documents/隐相/
目录结构:
~/Documents/{书名}/
├── config/
│ ├── project_info.md # 项目元信息
│ ├── worldbuilding.md # 世界观设定
│ ├── characters.md # 人物小传
│ └── volume_outline.md # 卷纲
├── memory/
│ ├── character_cards.md # 角色卡(YAML格式)
│ ├── relationship_map.md # 人物关系图谱
│ ├── foreshadowing.md # 伏笔追踪
│ ├── lessons_learned.md # 创作经验积累
│ └── checkpoints/ # 检查点快照
├── chapters/
│ ├── vol1_chapter_01.md
│ ├── vol1_chapter_02.md
│ └── ...
├── deliverables/
│ ├── final.md # 合并稿
│ └── final.docx # 导出文档
└── status.md # 当前状态(唯一真相源)
核心架构
用户 ←→ novel-writer(调度器)
│
├── scripts/validate_step.py(强制验证)
├── scripts/checkpoint.py(快照/回滚)
└── 子Skill(执行具体任务)
铁律:
- 每一步完成必须运行验证脚本
- 验证失败 = 阻断,不可跳过
- 关键节点自动创建检查点
状态机(带强制验证)
Step 0: init
动作:初始化项目
验证:scripts/validate_step.py --step 0
产出:status.md(初始状态)
Step 1: brainstorm(创意构思)⚠️ 必须与用户讨论
动作:与用户讨论并确认以下六个要素
1. 书名(提供3-5个选项让用户选择,或接受用户自己的命名)
2. 篇幅(短篇/中篇/长篇,说明字数范围)
3. 叙事视角(第三人称/第一人称/双视角,说明优劣)
4. 故事范围(聚焦某段/完整人生)
5. 情感基调(如:悬疑、感人、热血、轻松等)
6. 文风(见下方【文风选择指南】)
【文风选择指南】
文风是写作的核心规范,必须在创意阶段确定。常见选项:
A. 动词驱动型(推荐网文)
- 特点:短句、快节奏、信息密集、动作先行
- 禁用:形容词堆砌、长句从句、心理形容词
- 示例:《大奉打更人》《诡秘之主》
- 适用:悬疑、权谋、生存类
B. 克制典雅型
- 特点:情感内敛、留白艺术、古典韵味
- 禁用:直白抒情、现代口语、过度解释
- 示例:《琅琊榜》《庆余年》
- 适用:历史正剧、权谋、情感类
C. 幽默吐槽型
- 特点:主角内心戏丰富、现代梗、轻松化解紧张
- 禁用:过度煽情、沉重压抑
- 示例:《我师兄实在太稳健了》《大奉打更人》
- 适用:爽文、穿越、系统流
D. 热血燃向型
- 特点:金句频出、情绪高涨、对抗性强
- 禁用:拖沓、犹豫、过度算计
- 示例:《斗破苍穹》《雪中悍刀行》
- 适用:玄幻、武侠、升级流
E. 悬疑压抑型
- 特点:氛围营造、信息差、层层揭秘
- 禁用:过早解密、平铺直叙
- 示例:《诡秘之主》《盗墓笔记》
- 适用:悬疑、惊悚、探案类
【文风规范模板】(确定后写入 project_info.md)
- 文风类型:xxx型
- 核心原则:(一句话概括)
- 句式规范:(段落长度、句子长度)
- 禁用词汇:(列出具体禁用词)
- 心理描写:(如何表达)
- 对话规范:(格式要求)
- 章节钩子:(结尾要求)
状态锁(写入 status.md):
"当前任务:等待用户确认{要素名称}"
每确认一个要素,更新:
"- [x] 书名已确认:xxx"
"- [x] 篇幅已确认:xxx"
"- [x] 文风已确认:xxx"
...
验证:
scripts/validate_step.py --step 1 --book-name "{书名}"
检查项:
□ status.md 中包含"书名已确认"
□ status.md 中包含"篇幅已确认"
□ status.md 中包含"视角已确认"
□ status.md 中包含"范围已确认"
□ status.md 中包含"基调已确认"
□ status.md 中包含"文风已确认"
□ project_info.md 中包含完整的【文风规范模板】
阻断规则:六个要素全部确认后,才能进入 Step 2
Step 2: project_init ⚠️ 第一个强制阻断点
动作:创建项目目录
命令:
mkdir -p ~/Documents/{书名}/{config,memory,chapters,deliverables}
echo "# {书名}" > ~/Documents/{书名}/config/project_info.md
验证(必须全部通过):
scripts/validate_step.py --step 2 --book-name "{书名}"
检查项:
□ 目录存在:~/Documents/{书名}/
□ 子目录齐全:config/, memory/, chapters/, deliverables/
□ project_info.md 存在且非空
失败处理:报错并停止,不进入 Step 3
检查点:验证通过后自动创建 step_2_complete.checkpoint
Step 3: world_building ⚠️ 第二个强制阻断点
动作:构建世界观、人物设定
产出(缺一不可):
1. config/worldbuilding.md - 时代背景、核心场景、制度礼仪
2. config/characters.md - 主角、配角人物小传
3. memory/character_cards.md - 结构化角色卡(YAML)
4. memory/relationship_map.md - 人物关系图谱
验证:
scripts/validate_step.py --step 3 --book-name "{书名}"
检查项:
□ 四个文件全部存在
□ 每个文件字数 > 500
□ character_cards.md 包含至少3个角色的YAML结构
失败处理:列出缺失文件,禁止进入 Step 4
检查点:验证通过后创建 step_3_complete.checkpoint
Step 4: volume_outline(卷纲设计)
动作:设计三卷主题、核心冲突、情感弧线
产出:config/volume_outline.md
确认:用户审阅并明确确认
验证:
scripts/validate_step.py --step 4 --book-name "{书名}"
检查项:
□ volume_outline.md 存在
□ 包含至少3卷的规划
□ 用户已确认(status.md 中有确认记录)
检查点:确认后创建 step_4_complete.checkpoint
Step 5: volume_chapter_outline(整卷章节大纲)⚠️ 每卷开始前必须执行
触发条件:
- 新项目开始第一卷
- 上一卷完成,进入下一卷
动作:为当前卷生成所有章节的情节概述
产出:config/volume_{X}_chapter_outline.md
【章节情节推进四大原则】⚠️ 绝对不可违反
**原则一:因果链原则**
- 每一章的危机必须从上一章的隐患发展而来
- 禁止独立事件——每一章都必须承接上一章,不能凭空出现新危机
- 格式要求:每章细纲必须写明"危机来源"(来自上一章的哪个隐患)
**原则二:抉择+代价原则**
- 主角每章必须做出明确的抉择(不是被动承受,而是主动选择)
- 每个抉择都有代价,这个代价成为下一章的危机
- 格式要求:每章细纲必须写明"主角抉择"和"埋下隐患"
**原则三:升级递进原则**
- 危机必须层层升级,像一根绳子越绷越紧
- 从"可能暴露"→"即将暴露"→"已经暴露"逐步推进
- 禁止同一级别的危机重复出现
**原则四:节奏权重原则** ⚠️ 用章节数量体现节奏
- **过渡阶段**:快速推进,每年/每件事只用1章,甚至合并多件事到1章
- **铺垫阶段**:积累张力,每章比前一章更接近危机核心
- **高潮阶段**:详细展开,一个大事件拆成3-6章,占全卷40%以上篇幅
- **结尾阶段**:情感释放,快速收尾,每章解决一个问题
【权重标记规范】
| 权重 | 含义 | 章节数建议 | 用途 |
|-----|------|-----------|------|
| ⭐ | 过渡 | 1章/年或更少 | 时间推进、日常交代 |
| ⭐⭐ | 铺垫 | 1-2章 | 张力积累、危机初现 |
| ⭐⭐⭐ | 转折 | 2-3章 | 重大变化、局势恶化 |
| ⭐⭐⭐⭐ | 高潮前奏 | 3-4章 | 决战准备、正面对峙 |
| ⭐⭐⭐⭐⭐ | 大高潮 | 4-6章 | 全书最精彩段落,详细展开 |
【细纲格式要求】
每章必须包含以下要素:
第X章:章节标题
- 时间:具体时间点
- 权重:⭐-⭐⭐⭐⭐⭐
- 危机来源:来自上一章的哪个隐患
- 核心冲突:本章要解决什么问题
- 主角抉择:主角做了什么选择
- 埋下隐患:这个抉择埋下了什么新危机
- 接下一章:如何引出下一章
【强制约束】⚠️ 绝对不可违反
1. **只写当前卷内容**:严格限定在 volume_outline.md 中定义的当前卷时间范围和情节内
2. **不写上一卷内容**:前一卷的情节只在"前情衔接"中简要提及,不重复展开
3. **不写下一卷内容**:下一卷的情节完全不留入当前卷细纲
4. **做好卷间衔接**:
- 当前卷首章:简要说明承接自上一卷的什么状态
- 当前卷末章:明确结尾状态,为下一卷做好铺垫
5. **时间线清晰**:每章的时间点必须落在当前卷定义的时间范围内
违规示例(禁止):
❌ 第一卷细纲中出现第二卷"掖庭岁月"的章节
❌ 第一卷末章直接写到登基(这是第三卷内容)
❌ 当前卷细纲中出现"详见下一卷"的依赖
正确示例:
✅ 第一卷末章:刘病已获赦出狱,结束在掖庭门口(为第二卷铺垫)
✅ 第二卷首章:从掖庭生活开始,简要提及"前年获赦"
流程:
1. 读取 config/volume_outline.md,了解本卷主题和情节范围
2. 【检查时间边界】确认本卷的起止时间,绝不越界
3. 根据本卷章节数量,为每章分配情节
4. 【自查】检查是否有超出本卷范围的内容
5. 写入 config/volume_{X}_chapter_outline.md
6. ⚠️【自动审查循环】调用 scripts/validate_volume_outline.py 进行审查
- 使用优秀网文 10 大标准审查大纲
- 审查不通过时,自动调用大模型修改
- 循环执行"审查→修改→再审查",最多 5 次
- 审查通过后,才能进入下一步
7. 用户确认后才能进入 Step 6
验证:
scripts/validate_step.py --step 5 --book-name "{书名}" --volume {X}
检查项:
□ volume_{X}_chapter_outline.md 存在
□ scripts/validate_volume_outline.py 执行成功
□ 审查结果为"通过"(或有审查报告)
□ 用户已确认
□ 包含本卷所有章节的情节概述
□ 【新增】无上一卷内容的重复展开
□ 【新增】无下一卷内容的提前泄露
□ 【新增】时间线完全在本卷范围内
□ 用户已确认
检查点:确认后创建 volume_{X}_outline_complete.checkpoint
Step 6: chapter_loop(逐章循环)
进入时检查:
- 是否是本卷第一章?
- 是否已存在本卷的 volume_{X}_chapter_outline.md?
- 如果不存在,先执行 Step 5
进入时更新 status.md:
"当前任务:第{X}卷第{Y}章 - 等待章纲讨论"
├─ 6.1: chapter_outline(单章章纲)
│ 【前置检查】
│ 1. 读取 config/volume_{X}_chapter_outline.md,确认本章情节
│ 2. 如果不是第一章,读取前一章 chapters/vol{X}_chapter_{Y-1}.md
│ 3. 【连续性检查】确认与前章的时间线、人物状态、情节衔接
│ - 时间:本章是前章的什么时候?(当日/次日/数日后)
│ - 人物:前章结束时的位置、状态是否与本章开头一致?
│ - 情节:前章的结尾是否有伏笔需要在本章回收?
│ 【节奏约束】严格按照章节大纲写作,禁止压缩或扩展
│
│ 产出:memory/chapter_{X}_{Y}_outline.md
│ 验证:文件存在 + 字数 > 300
│
│ 【强制确认】⚠️ 必须执行
│ - 创建章纲后,必须停下来向用户展示章纲内容
│ - 明确询问:"请确认章纲,确认后开始写作"
│ - 用户确认后,更新 status.md = "第{X}卷第{Y}章 - 章纲已确认,等待写作"
│ - ❌ 禁止:未确认就直接进入 Step 6.2 写作
│
├─ 6.2: chapter_write(章节写作)
│ 前置:检查 status.md 状态必须是"章纲已确认"
│
│ 【验证脚本】⚠️ 写作前必须通过
│ python3 scripts/validate_outline_confirmation.py <书名> <章节号>
│ - 验证失败 = 阻断流程,必须先确认章纲
│
│ 【上下文准备】⚠️ 写作前必须读取以下内容
│
│ 1. 章节大纲定位:config/volume_{X}_chapter_outline.md
│ - 读取前三章(第Y-3、Y-2、Y-1章)的情节概述(如果存在)
│ - 读取本章(第Y章)的情节概述
│ - 读取后三章(第Y+1、Y+2、Y+3章)的情节概述(如果存在)
│ - ⚠️ 明确边界:本章写什么,前几章已写什么,后几章要写什么
│ - ⚠️ 避免重复:不要写前几章已写的内容
│ - ⚠️ 避免超前:不要提前写后几章的内容
│
│ 2. 前一章完整内容(如果不是第一章):chapters/vol{X}_chapter_{Y-1}.md
│ - 已包含结尾,无需额外读取
│ - 确保时间线衔接、人物状态一致
│
│ 3. 角色卡:memory/character_cards.md(本章出场角色)
│
│ 4. 伏笔追踪:memory/foreshadowing.md(如有)
│
│ 5. 【文风规范】⚠️ 必须读取并严格遵守
│ 读取:config/project_info.md 中的【文风规范模板】
│ - 文风类型:确认本章使用的文风
│ - 句式规范:段落长度、句子长度
│ - 禁用词汇:绝对禁止使用
│ - 心理描写:按文风要求表达
│ - 对话规范:格式必须符合
│ - 章节钩子:结尾必须留下钩子
│
│ 【文风检查清单】(写作时自检)
│ □ 每段不超过3句话
│ □ 每句话不超过15个字
│ □ 没有使用禁用词汇
│ □ 心理描写用动作/场景表达,不用形容词
│ □ 对话一句一换行,最多两句
│ □ 章节结尾有强钩子
│ □ 每100字有新信息或新动作
│
│ 【范围约束】⚠️ 必须遵守
│ - 只写本章大纲规定的内容
│ - 不要写前章已写的内容
│ - 不要提前写后章的内容
│ - 结尾要留有悬念,为下一章铺垫
│
│ 产出:chapters/vol{X}_chapter_{Y}.md
│ 字数:3000-4000字(强制)
│
│ 【写作原则】⚠️ 必须遵守
│
│ 【去AI味强制要求】⚠️ 绝对禁止以下AI特征句式
│
│ 一、禁止"不是……而是……"句式
│ - ❌ 绝对禁止:"不是……而是……"、"并非……而是……"、"与其说是……不如说是……"
│ - ❌ 错误示例:"他不是害怕,而是愤怒"、"这不是结束,而是开始"
│ - ✅ 正确写法:直接用动作和神态表现,"他握紧拳头,额头青筋暴起"
│ - ✅ 正确写法:用具体场景呈现,"门关上,新的风暴才刚刚开始"
│
│ 二、禁止其他AI特征表达
│ - ❌ 禁止:"从某种意义上说"、"从某种角度来看"、"换句话说"
│ - ❌ 禁止:"值得注意的是"、"关键在于"、"核心在于"
│ - ❌ 禁止:"一方面……另一方面……"、"既……又……"(过度使用)
│ - ❌ 禁止:"正如……所说"、"就像……一样"(过度比喻)
│ - ❌ 禁止:"或许"、"也许"、"可能"(过度使用弱化确定性)
│ - ❌ 禁止:"突然"、"忽然"、"猛然"(过度使用制造紧张)
│ - ❌ 禁止:"然而"、"但是"、"可是"(每段都用转折)
│ - ❌ 禁止:"最终"、"最后"、"结局是"(过度总结)
│
│ 一、画面感优先
│ - 用细节和场景描写,让读者"看到"而不是"被告知"
│ - ❌ 错误:他很紧张。
│ - ✅ 正确:他的手指不自觉地敲击着桌面,额头上渗出细密的汗珠。
│ - 用五感:视觉、听觉、嗅觉、触觉、味觉
│
│ 二、代入感营造
│ - 让读者身临其境,感受人物的情绪和处境
│ - 描写环境氛围:光线、温度、气味、声音
│ - 通过人物的感官体验来传递信息
│
│ 三、冲突张力
│ - 每一场景都要有冲突或悬念
│ - 冲突类型:人与人的冲突、人与环境的冲突、内心的冲突
│ - 场景结束时留下悬念或钩子
│
│ 四、对话有戏
│ - 对话要推动情节,揭示人物性格
│ - ❌ 错误:"你觉得怎么样?""我觉得不太好。"
│ - ✅ 正确:"你觉得怎么样?"他端起茶杯,目光却没落在对方身上。
│ - 用动作和神态打断对话,避免"你一句我一句"
│ - 对话中要有潜台词,不要把所有意思都说出来
│
│ 五、节奏控制
│ - 长短句交替,避免单调
│ - 动作场景用短句,营造紧张感
│ - 情感场景用长句,营造氛围
│ - 段落不要过长,便于阅读
│
│ 六、留白艺术
│ - 不要把所有东西都写出来
│ - 让读者自己想象和推理
│ - 用暗示代替直说
│
│ 七、开场抓人
│ - 开头就要有钩子
│ - 可以用:悬念、冲突、对话、场景
│ - 避免开头就大段背景介绍
│
│ 八、情感共鸣
│ - 让读者关心人物的命运
│ - 展现人物的脆弱和困境
│ - 用具体的事件而不是抽象的描述
│
九、结尾钩子 ⚠️ 必须为下一章留下钩子
- 结尾必须与下一章紧密衔接,为下一章留下明确的钩子
- 钩子类型:
- 悬念钩子:一个未解决的问题("门外传来脚步声,是谁?")
- 行动钩子:人物即将采取的行动("他站起身,走向狱门")
- 对话钩子:以对话结束,暗示即将发生的事("'大人,使者到了。'")
- 消息钩子:一个重要消息传来("甘泉宫传来消息,望气者发现异常天象")
- 场景钩子:场景转换,暗示变化("远处,马蹄声渐近")
- 结尾要具体,不要泛泛而谈(❌ "风暴要来了" → ✅ "远处传来马蹄声,郭穰的人马到了")
- 结尾要指向下一章的具体事件,让读者想知道"接下来会发生什么"
- 不要总结本章,而要开启下一章的悬念
│ 验证(必须全部通过):
│ 1. 基础验证:
│ scripts/validate_step.py --step 6 --chapter {X}_{Y} --book-name "{书名}"
│ □ 文件存在
│ □ 字数在 3000-4000 范围内
│ □ 开场有标点符号/对话
│ □ 包含感官描写
│ □ 包含对话
│
│ 2. ⚠️【新增】优秀网文10大标准审查(强制):
│ scripts/validate_chapter_quality.py "{书名}" "{X}_{Y}"
│ □ 开场抓人 (2分) - 前3段有悬念/冲突/情绪
│ □ 节奏紧凑 (2分) - 每3-5段有小高潮
│ □ 每章有冲突 (2分) - 至少2个冲突
│ □ 人物有动机 (2分) - 主角和反派动机清晰
│ □ 对话有戏 (2分) - 对话推动情节,有潜台词
│ □ 结尾有钩子 (2分) - 为下一章留悬念
│ □ 信息密度 (2分) - 每100字有新信息
│ □ 画面感 (2分) - 五感描写
│ □ 情感真实 (2分) - 情感有层次
│ □ 去AI味 (2分) - 自然流畅,无AI痕迹
│
│ 评分标准:
│ - 80-100% (16-20分):优秀 🌟
│ - 60-79% (12-15分):良好 ✅ 可通过
│ - 40-59% (8-11分):及格 ⚠️ 建议修改
│ - <40% (<8分):不及格 ❌ 必须重写
│
│ 更新:status.md = "第{X}卷第{Y}章 - 已完成,等待审阅"
│ 检查点:创建 chapter_{X}_{Y}_complete.checkpoint
│ ⚠️ 完成后立即执行 6.3,不可跳过
│
├─ 6.3: character_check(角色检查)⚠️ 每章完成后强制执行
│ 【触发时机】Step 6.2 完成后立即自动执行,不可跳过
│ 【动作】检查本章出场人物,为新角色创建角色卡
│ 【流程】
│ 1. 【提取人物】分析本章内容,提取所有出场人物名单
│ 2. 【对照角色卡】读取 memory/character_cards.md,标记没有角色卡的人物
│ 3. 【判断重要性】对于没有角色卡的人物:
│ - 读取 config/volume_outline.md(卷纲)
│ - 读取 config/volume_{X}_chapter_outline.md(本卷细纲)
│ - 搜索该人物名字,判断是否在后续章节出现
│ - 如果出现 ≥2 次 → 重要角色,必须创建角色卡
│ - 如果只出现1次 → 工具人,可选创建
│ 4. 【创建角色卡】为重要角色创建角色卡,包含:
│ - id: 拼音ID
│ - name: 姓名
│ - roles: 身份列表
│ - significance: 在故事中的作用
│ - key_events: 关键事件(可选)
│ 5. 【更新关系图】如有新的人物关系,更新 relationship_map.md
│ 【产出】更新 memory/character_cards.md(如需要)
│ 【验证】确认所有重要角色都有角色卡
│ 【完成后】进入 6.4 等待用户审阅
│
├─ 6.4: user_review(用户审阅)
│ 满意 → 进入下一章
│ 修改 → 返回 6.1 或 6.2
│ 进化:写入 lessons_learned.md(用户修改意见、改进方向)
│
└─ 6.5: volume_complete(卷完成判断)
本卷未完 → 回到 6.1,讨论下一章
本卷结束 → 用户确认,创建卷检查点,进入下一卷(Step 5)
Step 7: final_assemble(最终合稿)
动作:合并所有章节
产出:
- deliverables/final.md
- deliverables/final.docx(可选)
验证:
scripts/validate_step.py --step 6 --book-name "{书名}"
检查项:
□ final.md 存在
□ 包含所有章节
□ 总字数符合预期
验证脚本使用
每次步骤转换前必须运行:
# 验证 Step 2(项目初始化)
python3 scripts/validate_step.py --step 2 --book-name "他养大了皇帝"
# 验证 Step 3(世界构建)
python3 scripts/validate_step.py --step 3 --book-name "他养大了皇帝"
# 验证 Step 5(章节写作)
python3 scripts/validate_step.py --step 5 --chapter 1_01 --book-name "他养大了皇帝"
返回值:
- 0 = 验证通过
- 1 = 验证失败(会输出具体错误)
检查点机制
创建检查点:
python3 scripts/checkpoint.py create --book-name "{书名}" --name "step_3_complete"
回滚到检查点:
python3 scripts/checkpoint.py rollback --book-name "{书名}" --name "step_3_complete"
检查点存储位置:
~/Documents/{书名}/memory/checkpoints/
├── step_2_complete.checkpoint
├── step_3_complete.checkpoint
├── step_4_complete.checkpoint
└── chapter_1_01_complete.checkpoint
进化机制
每章完成后,写入 memory/lessons_learned.md:
## 章节:第1卷第1章
### 用户修改意见
- 开头节奏太慢
- 主角出场不够强势
### 改进方向
- 下章开头3段内必须有冲突
- 人物对话要更有张力
### 本次经验
- 伏笔埋设成功:神秘老人身份
- 字数控制良好:3200字
每卷完成后,生成 memory/volume_{X}_retrospective.md:
## 第1卷复盘
### 主题执行情况
- 核心冲突是否推进
- 情感弧线是否完成
### 角色发展
- 主角成长轨迹
- 配角作用评估
### 伏笔追踪
- 已埋设:5处
- 已回收:2处
- 待回收:3处(第2卷处理)
### 改进计划
- 第2卷节奏加快
- 增加反派戏份
错误处理
验证失败
- 停止当前流程
- 输出具体错误信息
- 等待用户指令(修复/回滚/跳过需用户明确授权)
子Skill执行失败
- 重试3次
- 仍失败 → 人工干预
- 可选择回滚到上一个检查点
用户不满意
- 记录修改意见到 lessons_learned.md
- 无限循环修改直到满意
- 每次修改后重新验证
状态文件格式(status.md)
# {书名} - 创作状态
**当前阶段**: Step 5 - chapter_loop
**当前任务**: 第1卷第3章 - 章纲已确认,等待写作
**最后更新**: 2026-03-04 12:30
## 进度统计
- 已完成章节:2章
- 当前字数:6,500字
- 目标字数:300,000字
## 检查点记录
- 2026-03-04 10:00: step_3_complete.checkpoint
- 2026-03-04 11:00: step_4_complete.checkpoint
- 2026-03-04 12:00: chapter_1_02_complete.checkpoint
## 用户确认记录
- 2026-03-04 11:00: 卷纲已确认
- 2026-03-04 12:00: 第1卷第1章章纲已确认
使用方式
用户说"我想写小说"即可激活。
首次创作:从 Step 0 开始 继续创作:读取 status.md,从记录的状态继续 恢复创作:可选择回滚到某个检查点
记住:不验证就不算完成,不检查就不算正确。
Decide Fit First
Design Intent
How To Use It
Boundaries And Review