---
name: 全能小说作家
description: 全流程长篇小说创作技能，28个功能模块，支持 AI 全自动和分步引导双模式。涵盖书名生成、人设构建、大纲规划、章节写作、爽点设计、节奏诊断、风格创作、强约束系统、作品拆解分析（含拆文库）、叙事质量管理、导入已有小说、轻量直出短文、朱雀去AI化与「人工为主」验收、写后流水线硬门禁。配备三大自动系统：自然语言记忆系统（故事圣经/人物弧线/剧情时间线/伏笔清单/角色数据库）、强约束系统（金手指叙事/时间约束/叙事线监控）、叙事质量管理框架（写前预检/三阶复核/参数链条）。触发词：「写小说」「新开一本」「继续」「接着写」「下一章」「书名」「人设」「大纲」「看记忆」「导出」「导入」「切书」「金手指」「叙事线」「分析《XXX》」「菜单」「预检」「复核」「规则集」「疑似AI」「去AI化」「朱雀」「写后」「补缺」「写篇推文」「写篇短文」「直接出正文」「短文直写」「公众号文章」。
user-invocable: true
tags: [小说, 创作, 写作, 长篇, 故事, 文学, 大纲, 人物, 章节写作, 爽文, 网文, 平台文案, 书名生成, 记忆系统, 自然语言记忆, 风格创作, 短篇爆款, 朱雀, 去AI化, 疑似AI, AIGC检测, 人工为主]
version: 9.6.1
---

## 📂 文件路径约定

**本 skill 中所有文件引用遵循以下规则：**

1. **skill 内部文件**：`modules/`、`references/`、`templates/`、`memory-system/`（skill 内模板）等路径，均相对于本 skill 的根目录（`scripts/…` 命令也在该根执行；项目侧参数写该书绝对路径，见 00「命令执行基准」）。
   - 示例：`references/书名生成策略.md` → skill 目录下的 references/书名生成策略.md
   - 示例：`memory-system/bible/story_bible.md`（不带 `[书名]/` 前缀）→ skill 内模板文件，只读

2. **项目文件**：带 `[书名]/` 前缀的路径，相对于当前工作目录。`[书名]` 是项目初始化时用户确认的书名。
   - 示例：`[书名]/记忆系统/圣经/故事圣经.md` → 项目目录下的记忆系统副本
   - 示例：`[书名]/设定/[书名]_人设卡.md` → 项目目录下的设定文件

3. **记忆系统文件区分**：
   - `memory-system/xxx`（无前缀）= skill 内的只读模板 → 仅用于项目初始化时复制
   - `[书名]/记忆系统/xxx`（有前缀）= 项目目录下的读写副本 → 所有后续操作的目标
   - 中英对应示例：`memory-system/bible/story_bible.md`（模板）→ 初始化复制为 `[书名]/记忆系统/圣经/故事圣经.md`（项目副本）；`memory-system/summaries/_template.md` → `[书名]/记忆系统/摘要/模板.md`

4. **项目查找**：跨会话恢复时，在当前工作目录下搜索 `*/记忆系统/圣经/故事圣经.md` 定位已有项目。

# 全能小说作家

---

## ⛔ 强制执行协议

> **本技能采用模块化架构，加载后必须先读取 `modules/00_强制执行协议.md`。**
>
> 00 协议包含完整的：意图识别、场景路由、写作/写后命令、快捷命令映射、写前检查点、
> 操作确认点、边界条件。
> **除下方★「章节完成硬定义」为防跳步内联副本外，本文件其余协议不重复，以 00 协议为唯一权威。**
>
> **启动路径唯一**：加载后只读根 `SKILL.md` → `modules/00_强制执行协议.md` 一跳，无二级协议跳转。
> **权威链条**：步骤/顺序权威 = `modules/03_26_功能模块.md`；协议/命令权威 = `modules/00_强制执行协议.md`；下方★为只读硬副本。

---

## ★ 章节完成硬定义（内联，防止只加载 SKILL 时仍跳过写后）

**「本章完成」当且仅当（`.done` 为唯一权威；顺序权威 = `modules/03_26_功能模块.md` 步骤4）：**

1. 正文已保存（仅标题行 + 正文）  
2. 字数检查通过 → `.done/第NNN章_wordcount.done`  
3. 写后流水线 `modules/03_26_功能模块.md` **按序**已执行（不得「先交稿后补」）  
4. **U 审核后先跑朱雀 4.1b–4.1e → `.done_zhuque`；再处理 FAIL/建议修复**（禁止整段重写人工段；修复改动大则补跑 4.1e）  
5. 圣经/摘要 + U 相关 `.done` + **`.done/第NNN章_zhuque.done` 存在**；新架构项目（存在 `_state.json`）另含 `state` 标记且 `last_committed_chapter ≥ 本章`  
6. 闭环必需 `.done` 齐全（12 基础项；存在 `_state.json` 时 +`state` = 13 项；10 倍数章另 +`innovation`，故第 10/20/30… 章的新架构项目为 14 项）**且细纲任务书四段齐、`（必落）` 拍全勾**（03_06 步骤2.6；脚本 `check-done --require-task-sheet`）；**10 倍数章另须有阶段压缩 `记忆系统/阶段/阶段N_第{起始}-{结束}章.md`**（03_18 工作流D；规则单源 `phase_compress` 缺则 exit1）；**文件门禁 `file_gates`（规则单源，缺则 exit1）**：每章须有 `报告/第NNN章_章节档案.md`（03_26 步骤6·参数链条唯一输入源），10 倍数章另须 `阶段N_参数.md` + `报告/创新深度检查报告.md`，50 倍数章另须卷压缩 `卷N_第X-Y章.md` + `卷N_参数.md` → 才可写 `.done_chapter`  
7. `text_guard` 指纹与最终稿一致（03_26 五·文本指纹；流水线内改稿——4.1e 人工段注入/强化轮、4.3 修复轮——后已重跑 `digest`；证据 = `.story/text-digests.json` + `text_guard verify`）  

**结束本章时必须输出【第NNN章状态】回执**（正文/字数/写后是否执行/朱雀预检三态/人工证据包动作/.done 清单/能否写下一章）。

**漏步自愈（检测到即补跑，不询问）**：缺任一必需 `.done`（尤其 `zhuque`）→ 禁止称完成、禁止开写 N+1；对当前章自动「补缺」。`delegate_task` 失败时降级自审 **仍必须**跑 4.1b–4.1e。

**周期产出不靠记忆，靠 check-done**：阶段压缩、参数链压缩、卷压缩、章节档案、创新深度检查报告这类每 N 章一次的产出，文档写「自动触发」也扛不住长流程——权威是 `scripts/check-done`（规则单源 `phase_compress` / `file_gates`，产物缺失即 exit1），每章写 `.done_chapter` 前跑一次（命令格式见下方「客观核验」），让脚本替你记「10 章一压缩」。给本 skill 新增任何周期性产出时，同批写进 `scripts/check-done-rules.json` 并补双实现与对拍用例——只写进文档的周期任务等于没写。

**子代理回传≠已落盘（写章后必验文件 + 独立数字数）**：写作子代理的最终 summary 是自报，不可信。返回后①先确认 `正文/第NNN章_*.txt` 存在且非空——已观测子代理把正文只写在 summary 里、不落盘，文件根本不存在，缺失则主代理直接从 summary 提取写入；也观测到子代理将正文存到工作目录临时文件（如 `D:\DS\chapterNN.txt`）而非 `正文/` 目录——此时在工作目录 `ls chapter*.txt` 找到后移动到 `正文/第NNN章_*.txt`；②字数一律以 `scripts/fingerprint.py` 实测为准，**不信子代理「全部通过 / All checks pass」自检**——已观测子代理在 1856 字（低于 2000 下限）时仍报通过。③**子代理报的字数可能是「含标点」总数，与中文字符数（`re.findall(r'[\u4e00-\u9fff]', content)`）有系统偏差约 35–40%**——已观测子代理报「含标点2544字」而中文字符仅 1846（差 39%）。子代理报的数看起来达标时更要验证：2544 看起来 > 2000 下限，但按中文字符标准只有 1846，不达标。不达标则主代理补过渡句/环境/分析细节至达标，再重跑脚本。④`delegate_task` 报 HTTP 429 限流时，等返回的 reset 倒计时结束再重派同一任务（同 goal/context 不改内容），勿改稿重试。

**标点后处理（半角引号·保存后必检）**：写作子代理可能不可靠地遵守格式规则（已观测：上下文模板要求全角引号，子代理仍返回上百个半角 `"`）。保存正文后立即检测半角引号，存在即按出现顺序成对替换为全角 “ ”（奇数个时最后一个也转全角）。主代理自身新增的过渡句/补充内容也须用全角引号——后处理捕获所有来源。Python 一行修复：
```
content = open(path, encoding='utf-8').read()
if '"' in content:
    out, open_q = [], True
    for ch in content:
        if ch == '"': out.append('\u201c' if open_q else '\u201d'); open_q = not open_q
        else: out.append(ch)
    open(path, 'w', encoding='utf-8').write(''.join(out))
```
检测与修复在字数脚本之前执行。**设定文档同规则**：细纲/规划表/档案/约束文档注入写作子代理前先做同一次半角引号成对替换（标点红线覆盖全部项目文档；子代理会照搬细纲直引号），口径见 `references/章节写作校验流程.md` 六。**替换后重扫确认**：成对替换在嵌套引号、奇数个引号、或引号出现在非对话语境时可能漏换——已观测首次替换后仍有 10 个半角引号残留。替换代码执行后立即 `content.count('"')` 重扫，>0 则对残留再次执行替换（通常一轮即可）。**

**修复替换防重复**：主代理对已存正文做 in-place 字符串替换（采纳审核建议、补过渡句、拆段、改引号）时，若替换的新文本与原文已有内容重叠，会静默复制出重复段/句——字数与段落脚本只查缩水不查膨胀，重复块能蒙混过关。每次替换后核对旧块已消失、关键短语出现次数符合预期（如 `content.count('陈默没接话')` 应为 1）；重复即当场删冗，再重跑字数脚本。**patch 失配先验行尾符再照字节拼串（正文常为 CRLF）**：`patch` 多行匹配不识别 CRLF——正文行尾为 `\r\n` 时整段失配。处置优先级：①先定位后 `repr(open(path,'rb').read()[i:i+80])` 看是否 `\r\n`；②改用 `execute_code` Python `open(path, encoding='utf-8', newline='')` 做含 `\r\n` 的 `count==1` 替换；③拼 `old_string` **一律从字节原文照录，勿凭记忆重敲**（已观测把『来回数过』敲成『来数过』导致重复替换；另注意同义不同字：『来回』vs『来』，漏一个字就失配）。

**复核返修（闭环后改动正文）再同步口径**：check-done 已闭环、`chapter.done` 已写后，复核子代理仍发现阻断项（如信息重复句须删）→ 修正文后：①重跑 `text_guard digest` 刷新指纹；②新字数/段数/方差/指纹写入 `报告/第NNN章_章节档案.md`、U 报告证据包节、`报告/第NNN章_朱雀证据包.md`（段号锚点须按新段落号重核）；③`_state.json` 的 `wordcounts` 键为字符串目录（如 `"15": 2725`）——JSON 直改后跑 `python scripts/state_render.py --project <项目绝对路径>` 重渲染派生（参数名是 `--project`，非 `-p`）；④终次复核报告命名『终版复核』并在【第NNN章状态】回执附终版指纹。详见 `references/章节写作校验流程.md` 七。勿把重复稿直接送进流水线。

**子代理内容后处理（保存后必检·游戏UI文本+一级禁用词）**：写作子代理可能不可靠地遵守内容质量规则，除半角引号外，还可能出现两类问题：①**游戏UI风格文本**（已观测：`【检测到异常：循环计数型】`、`【已使用：一】`、`【机制：每释放七次，中断一次】`等带方括号的系统通知式文本——非小说叙事文体，会严重破坏代入感并触发朱雀 n-gram 模板指纹）；②**一级禁用词混入**（已观测：`深吸一口气`——03_06 已要求子代理遵循去AI化规则，但子代理仍可能使用）。保存正文后立即：①扫描 `【` / `】` 字符，命中即定位并改写为角色内心感知/叙述性描写（保持原信息量，仅换表达形式，如 `【已使用：一】` → `第一格，灭了。`）；②wordfreq 脚本输出的 ❌ 高危词命中即替换（瞬间→那一刻/当时、然而→但/结果、深吸一口气→直接删或改角色动作）。此两项与半角引号检查同批执行，不额外占用独立步骤。

**时间指代词扫描（保存后必检·防跨章矛盾）**：写作子代理不知故事中"今天"是第几天，默认用"昨天"指代过去事件，高频与已确立时间线矛盾（已观测：第8章"昨天"×7全部与"第4天下午"矛盾，其中3处事件前7章无出处，1处与第6章实测直接冲突）。保存正文后扫描 `昨天/前天`，逐处核对 `记忆系统/上下文.md` 的当前章节位置——时间指代错误 → 改为正确的故事日参考（"中午""上次""之前"）；该时间指代的事件在前文无出处 → 改为模糊指代（"上次""之前"）或删去。此检查与半角引号扫描同批执行，不额外占用独立步骤。

### ★ 步骤4 段落长度校验（文风硬约束）

步骤4 字数+人工种子核对之后、移交写后流水线之前，**必须**执行段落长度校验：读取 `[书名]/设定/[书名]_文风设定.md` 的「每段上限句数」字段（留空/0/不存在 = 不限制）。若有限制值，逐段用正则 `re.findall(r'[。！？]', paragraph)` 计数，超过上限的段落当场拆段修复（在动作/对话节拍处断开换行），**不退回子代理**（拆段是机械操作，主代理可直接完成）。修复后重跑字数脚本确认未缩水。未设上限的项目跳过。

**执行细节与拆段原则见 `references/章节写作校验流程.md`。**

**句长方差交付门禁（同批次必检）**：正文移交流水线前与字数脚本同批计算句长方差（口径 `scripts/fingerprint.py` 或 `references/章节写作校验流程.md` 五的内联脚本）——方差 ≥110 达标、90–110 记 🟡 放行、**<90（电报体）当场执行「句法修复轮」再移交**（穿插 40–60 字长句每 150 字 1 处 + 合并碎片段 + 每处替换前断言 `content.count(old)==1` 防静默重复块；禁为控字数删长句）；流水线内删掉长句类改动后同样重算，跌破 90 补一处动作长句。写作子代理 context 每次注入「长短句交错、避免通篇短句/电报体」。**判定细节见 `references/章节写作校验流程.md` 五；操作前探测（行尾符/段落分隔/命中数预检）与预算记实口径见该文件同节。**

**规划表场景核对**：写前比对规划表「场景」列与 `记忆系统/上下文.md` 的「下一章承诺」——两者不一致时以**上下文承诺为准**（上下文是派生件，规划表可能是旧版），在细纲 CONTEXT 中注明场景取值理由。

**朱雀目标 = 人工为主**：三态中「人工创作特征」必须 **>**「疑似AI创作特征」。仍疑似 ≥ 人工时禁用「全文再润一遍」与同义补丁；按 `templates/朱雀去AI化检查清单.md`「人工为主协议」执行人工段注入 + 整段重生 + 结构破坏 + 强化轮。触发词：「疑似AI」「去AI化」「朱雀」。

**语义边界 / 双验收**：
- **流水线闭环** = 必需 `.done` 齐（含 `zhuque`）+ 状态回执——脚本可验。
- **朱雀检测达标** = 用户回传三态「人工 > 疑似」——以检测器+用户为准；**`.done_zhuque` 存在 ≠ 检测已通过**。
- 纯 AI 全自动常停在「疑似」；要稳定过检测通常需真人重写关键句。禁止把闭环说成过关。
- **对外汇报硬约定**：回执分列（a）流水线/check-done 结果（b）朱雀三态或「待检测」；禁止只贴 `.done` 或 exit0 冒充检测通过。
- 可选客观核验：`scripts/check-done.ps1` / `scripts/check-done.py`（规则单源 `scripts/check-done-rules.json`；**只认空标记 size=0，非空无效**；**默认要求 `chapter.done`**（中途检查用 `--no-chapter-done`/`-NoChapterDone`）；报告「人工证据包」节**默认硬校验**：标题 + 结构证据类别 ≥2 类且至少含一类强证据（须带段号/字数结构，如 `人工段注入：第3段，约320字`）+ 正文段号交叉。**格式红线（已观测3次写错）**：①段号=「第N段」（正文按空行分段的段落序号），非「第N行」——行号不匹配任何强证据正则；②字数=「约N字」「共N字」「至少N字」「超过N字」「≥N字」`>N字`，非「N中文字」「N字」——后者不匹配字数正则；③「人工段」/「人工注入」须与「第N段」或字数同在一行内（≤24字符间隔），跨行不匹配；`--soft-report`/`-SoftReport` 仅调试）。**`--allow-non-empty`/`-AllowNonEmpty`/`--soft-report`/`--no-chapter-done` 闭环宣称禁止携带。**
  - 命令格式：`python scripts/check-done.py -p "[项目绝对路径]" -c [章节号]`（**必须**带 `-p` 项目路径参数，仅 `--chapter` 不够会报参数错误）

**U审核 PASS（含优化建议）的 P2 修复策略**：U 返回 PASS（含优化建议）且无阻断项时，P2 建议按优先级处理——格式/一致性类机械替换（改词、统一数字格式、删比喻）由主代理直接修复（<5% 改动，符合 03_26 步骤4.3 例外条款）；结构性/分析性建议（长句拆分、节奏调整）记录到报告「已知观察」节但不在本轮修复，避免过度修改已达标章节。修复后重跑 `text_guard digest` 刷新指纹。**建议项三分处理**（U 返回建议/FAIL 均适用）：正文类（机械替换、改动 <5% 正文字数）主代理直接修，涉及段落结构/多段联动 → 修复子代理；文档同步类（U 点名「记忆系统未跟上/规划表行属旧版/约束文件停在旧章」）→ 同轮滚动同步，不派修复子代理——章节规划表本章行补执行注「**【已执行·第NN章《名》】**」+ 实际执行要点（保留原规划原文不覆盖）、约束三件套（`时间约束.md` / `叙事线.md` / `金手指约束.md`）同步到本章（当前章节、累计天数、最后活跃章节、最近使用表追加本章行；本章未用金手指的写「未使用」）；保留项（风味级用词、U 自评非缺陷）→ 记到报告「已知观察」节，不改正文、不标 FAIL、不占修复轮。

**4.1e 轻量模式**：客观指标已达标（方差≥110、高危词0、对话占比≥25%）时，可执行轻量 4.1e（3 项：1 整段重生 + 1 人工段注入 + 1 结构破坏）替代全量 6 项——节省时间同时保留人工证据。指标未达标时仍须执行全量 6 项（P0 人工段注入≥2 段且合计约≥300 字）。

**state_commit delta 三陷阱（已观测多次报错）**：①`context.position` 须为对象（含 city/location/chapter 等子键），非字符串——报 `❌ delta.context.position 须为对象`；②`foreshadow` 每项须为 `{desc, status}` 对象，非字符串——报 `❌ 合并结果复验失败：foreshadow.xxx 须为对象`；③`summaries` 键须为十进制数字字符串（如 `"9"`），非 `"第9章"`——报 `❌ summaries 键必须是十进制数字字符串（≤18 位）`。三者写错均需改事务重跑（详见 03_26 五·状态提交节）。

---
