--- name: webnovel-write description: Writes webnovel chapters (3000-5000 words) using v5.2 architecture. Context Agent outputs creative brief, writer produces pure text, review agents report issues, webnovel polish fixes problems, Data Agent extracts entities and records hooks/patterns. allowed-tools: Read Write Edit Grep Bash Task --- # Chapter Writing Skill ## Workflow Checklist ⚠️ **强制要求**: 开始写作前,**必须复制以下清单**到回复中并逐项勾选。跳过任何步骤视为工作流不完整。 ``` 章节创作进度 (v5.2): - [ ] Step 1: Context Agent 搜集上下文(创作任务书) - [ ] Step 1.5: 章节设计(开头/钩子/爽点模式) - [ ] Step 2A: 生成粗稿(剧情正确、场面成立) - [ ] Step 2B: 风格适配器(网文化改写,剧情不变) - [ ] Step 3: 审查 (6个Agent并行,输出汇总表格) - [ ] Step 4: 网文化润色(基于审查报告) - [ ] Step 5: Data Agent 处理数据链 - [ ] Step 6: Git 备份 ``` **工作流规则**: 1. 每完成一个 Step,立即更新 TodoWrite 状态 2. Step 之间的验证必须通过才能进入下一步 3. 如遇阻断,记录 deviation 但不可跳过 --- ## 模式说明(可选) ``` /webnovel-write --mode fast # 快速模式:跳过 Step 2B /webnovel-write --mode minimal # 极简模式:跳过 Step 2B + 仅运行3个核心 checker ``` **模式影响**: - **标准模式**: 完整执行 Step 1-6 - **快速模式**: 跳过 Step 2B(风格适配),其余照常 - **极简模式**: 跳过 Step 2B + 仅运行 3 个核心审查(consistency / continuity / ooc) --- ## Step 1: Context Agent 搜集上下文 **调用 Context Agent**: 使用 Task 工具调用 `context-agent` subagent: ``` 调用 context-agent,参数: - chapter: {chapter_num} - project_root: {PROJECT_ROOT} - storage_path: .webnovel/ - state_file: .webnovel/state.json ``` **Agent 自动完成**: 1. 读取本章大纲,分析需要什么信息 2. 读取 state.json 获取主角状态快照 3. 查询 index.db (v5.1 schema) 召回实体/别名/关系 4. 调用 data_modules.rag_adapter 语义检索 5. Grep 设定集搜索相关设定 6. 评估伏笔紧急度 7. 选择风格样本 8. 组装**创作任务书**(人话版) **输出**:创作任务书(非 JSON),包含: - 本章核心任务(冲突一句话、必须完成、绝对不能) - 接住上章(上章钩子、读者期待、开头必须) - 出场角色(状态、动机、情绪底色、说话风格、红线) - 场景与力量约束(地点、可用/禁用能力) - 风格指导(本章类型、参考样本、最近模式、本章建议) - 伏笔管理(必须处理、可选提及) - 连贯性检查点(时间、位置、情绪) - 章末钩子设置(建议类型、禁止事项) **失败处理**: - 如果大纲不存在 → 提示用户先创建大纲 - 如果 state.json 不存在 → 提示用户初始化项目 --- ## Step 1.5: 章节设计(新增) **目标**: 在写作前明确本章结构与变体,避免模式重复。 **加载变体池(必须执行)**: ```bash cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/style-variants.md" ``` **输出内容**: - 核心冲突一句话 - 开头类型(冲突开场/悬疑开场/动作开场/对话开场/氛围开场) - 钩子类型(危机钩/悬念钩/反转钩/期待钩/代价钩) - 爽点执行模式(装逼打脸/扮猪吃虎/越级反杀/打脸权威/反派翻车/甜蜜超预期) - 情绪节奏(低→高/高→低/低→高→低/平稳) - 信息密度(low/medium/high) **差异化检查**: - 查询 `state.json → chapter_meta` 最近 3 章模式 - 避免与最近 3 章“开头类型/钩子类型/情绪节奏”重复 --- ## Step 2A: 生成粗稿(剧情正确) **字数**: 3000-5000 字(短章 <2000 字需声明) **核心原则**: - **大纲即法律**: 100% 执行大纲 - **设定即物理**: 实力 ≤ 上下文包中的设定 - **纯正文**: 不需要写任何 XML 标签 **加载核心约束**: ```bash cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/core-constraints.md" ``` **按需加载场景参考**: | 场景类型 | 判断条件 | 执行命令 | |---------|---------|---------| | 战斗戏 | 大纲含打斗/对决/追逐 | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/combat-scenes.md"` | | 情感戏 | 大纲含告白/冲突/羁绊 | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/emotion-psychology.md"` | | 对话密集 | 预估对话 >50% | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/dialogue-writing.md"` | | 复杂场景 | 新地点/大场面描写 | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/scene-description.md"` | | 欲念描写 | 大纲含暧昧/亲密/情欲场景 | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/desire-description.md"` | **可选加载题材风格参考**(用户指定时加载): ```bash # 如需特定题材的写作风格参考,可按需加载 genres 目录下的对应文件 # 可用题材目录: # xuanhuan/ - 玄幻修仙 # dog-blood-romance/ - 狗血言情 # zhihu-short/ - 知乎短篇 # period-drama/ - 古言/宫斗 # realistic/ - 现实题材 # rules-mystery/ - 规则怪谈/推理 # 示例: cat "${CLAUDE_PLUGIN_ROOT}/genres/xuanhuan/power-systems.md" ``` **输出格式**: - Markdown 文件: `正文/第{NNNN}章.md` - **不追加摘要**(摘要由 Data Agent 独立写入 `.webnovel/summaries/`) --- ## Step 2B: 风格适配器(网文化改写) **跳过条件**: fast / minimal 模式跳过 **加载风格适配器**: ```bash cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/style-adapter.md" ``` **目标**: - 保持剧情不变 - 提升网文口感(短句、动作、对白张力、情绪反应) - 强化开头冲突与章末钩子 --- ## Step 3: 审查 ⚠️ **强制要求**: 必须在**同一条消息**中并行调用全部审查 Agent(除非 minimal 模式)。 **执行命令(不可修改)**: 在一条消息中发送 Task 工具调用,每个调用需传入以下公共参数: - project_root: {PROJECT_ROOT} - storage_path: .webnovel/ - state_file: .webnovel/state.json - chapter_file: "正文/第{NNNN}章.md" **标准/快速模式:6 个 Agent** | # | subagent_type | 必须 | 说明 | |---|---------------|------|------| | 1 | `high-point-checker` | ✅ | 爽点密度检查 | | 2 | `consistency-checker` | ✅ | 设定一致性检查 | | 3 | `pacing-checker` | ✅ | Strand 节奏检查 | | 4 | `ooc-checker` | ✅ | 人物 OOC 检查 | | 5 | `continuity-checker` | ✅ | 连贯性检查 | | 6 | `reader-pull-checker` | ✅ | 追读力检查 | **极简模式:仅 3 个核心 Agent** - `consistency-checker` - `continuity-checker` - `ooc-checker` **验证**: 收到全部报告后,**必须输出以下汇总表格**: ``` ┌─────────────────────────────────────────────────┐ │ 审查汇总 - 第 {chapter_num} 章 │ ├──────────────────────┬───────────┬──────────────┤ │ Agent │ 结果 │ 关键问题数 │ ├──────────────────────┼───────────┼──────────────┤ │ high-point-checker │ PASS/FAIL │ {N} │ │ consistency-checker │ PASS/FAIL │ {N} │ │ pacing-checker │ PASS/FAIL │ {N} │ │ ooc-checker │ PASS/FAIL │ {N} │ │ continuity-checker │ PASS/FAIL │ {N} │ │ reader-pull-checker │ PASS/FAIL │ {N} │ ├──────────────────────┴───────────┴──────────────┤ │ critical issues: {N} | high issues: {N} │ │ 是否可进入润色: {是/否} │ └─────────────────────────────────────────────────┘ ``` **Only proceed to Step 4 when:** 1. 已收到全部审查报告(或 minimal 模式仅 3 份) 2. 已输出汇总表格 > **Minimal 模式**: 汇总表格仅列出已执行的 3 个 Agent。 --- ## Step 4: 网文化润色(基于审查报告) ⚠️ **强制要求**: 必须按以下顺序执行全部子步骤(4.0-4.4),不可跳过。 ### 4.0 加载润色指南(必须先执行) ```bash cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/polish-guide.md" cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/typesetting.md" ``` ### 4.1 修复审查问题 | 严重度 | 处理方式 | |-------|---------| | critical | **必须修复**,否则记录 deviation | | high | 优先修复 | | medium | 建议修复 | | low | 可选修复 | ### 4.2 网文口感硬规则检查 - 开头 120 字必须出现冲突/风险/强情绪 - 每 800-1200 字至少一次局面变化 - 结尾 80-150 字设置钩子 - 对话每句必须带意图 - 连续 400 字纯解释 → 必须打散 ### 4.3 AI 痕迹检测(辅助提醒) **注意**: 词频统计仅作为提醒,不再作为硬性门槛。若明显超标,请修复并简要说明。 - 总结词:`综合|总之|由此可见|总而言之` - 列举结构:`首先|其次|最后|第一|第二|第三` - 学术词:`而言|某种程度上|本质上` - 因果连词:`因为|所以|由于|因此` ### 4.4 输出检查清单(必须输出) ``` ┌─────────────────────────────────────────────────┐ │ 润色检查清单 - 第 {chapter_num} 章 │ ├─────────────────────────────────────────────────┤ │ [x] polish-guide.md 已加载 │ │ [x] typesetting.md 已加载 │ │ [x] critical issues 已修复: {是/否/无} │ │ [x] high issues 已修复: {是/否/无} │ ├─────────────────────────────────────────────────┤ │ 网文口感检查: │ │ - 开头120字冲突: {是/否} │ │ - 局面变化频率: {达标/偏少} │ │ - 章末钩子: {是/否} │ ├─────────────────────────────────────────────────┤ │ AI痕迹提醒: {已检查/未检查} │ │ [x] 未违反润色红线 │ │ 是否可进入 Data Agent: {是/否} │ └─────────────────────────────────────────────────┘ ``` **Only proceed to Step 5 when:** 1. 已加载 polish-guide.md + typesetting.md 2. 已修复所有 critical/high issues(或记录 deviation) 3. 网文口感硬规则已达标(不足则记录 deviation) 4. 已输出检查清单 **输出**: 润色后的章节文件(覆盖原文件) --- ## Step 5: Data Agent 处理数据链 **调用 Data Agent**: 使用 Task 工具调用 `data-agent` subagent: ``` 调用 data-agent,参数: - chapter: {chapter_num} - chapter_file: "正文/第{NNNN}章.md" - review_score: {overall_score from Step 3} - project_root: {PROJECT_ROOT} - storage_path: .webnovel/ - state_file: .webnovel/state.json ``` **Agent 自动完成**: 1. **AI 实体提取**(Agent 内置,无需外部 LLM) 2. **实体消歧**(高/中/低置信度策略) 3. **写入存储** - 更新 state.json (精简状态 + chapter_meta) - 更新 index.db (实体/别名/状态变化/关系) 4. **AI 场景切片**(生成场景摘要) 5. **向量嵌入**(rag_adapter) 6. **风格样本评估**(review_score > 80) 7. **摘要分离存储**:写入 `.webnovel/summaries/ch{NNNN}.md` **输出**: ```json { "entities_appeared": 5, "entities_new": 1, "state_changes": 2, "scenes_chunked": 4, "uncertain": [...], "warnings": [...] } ``` --- ## Step 6: Git 备份 ```bash git add . && git commit -m "Ch{chapter_num}: {title}" ``` --- ## 错误处理 ### Context Agent 失败 ``` ⚠️ 上下文包生成失败 → 检查大纲是否存在 → 检查 state.json 是否初始化 → 手动加载必要上下文后继续 ``` ### 审查发现严重问题 ``` ⚠️ 审查发现 critical 级别问题 → 润色步骤必须修复 → 如果无法修复,记录 deviation ``` ### Data Agent 失败 ``` ⚠️ AI 提取失败 → 记录 warning → 可选:手动添加关键实体 → Git 备份仍然执行 ``` --- ## 成功标准 章节完成后,**必须输出最终验证报告**: ``` ┌─────────────────────────────────────────────────┐ │ 章节完成验证 - 第 {chapter_num} 章 │ ├─────────────────────────────────────────────────┤ │ 1. [x] 字数: {N}字 (3000-5000) │ │ 2. [x] 大纲执行: 100% │ │ 3. [x] 审查Agent: {6/6 or 3/3} 已调用 │ │ 4. [x] 审查汇总表格: 已输出 │ │ 5. [x] polish-guide.md: 已加载 │ │ 6. [x] 网文口感规则: 已检查 │ │ 7. [x] 润色检查清单: 已输出 │ │ 8. [x] Data Agent: 成功提取 {N} 个实体 │ │ 9. [x] summaries: 已生成 ch{NNNN}.md │ │ 10.[x] Git: 已提交 ({commit_hash}) │ ├─────────────────────────────────────────────────┤ │ 最终状态: {成功/有deviation} │ └─────────────────────────────────────────────────┘ ``` **验证失败处理**: - 如有任何项目未完成,记录 deviation 原因 - deviation 不阻断工作流,但必须记录 - 连续 3 章出现相同 deviation → 标记为系统问题