# webnovel-writer v7 产品需求文档（PRD）

> 状态：1.2（2026-07-04 修订，仅 §4 #2 验收用词「时间线孤儿」→「缺时间锚点」，依据 M5.5 任务决策 D4 与 story-repo-spec 0.11 决策 35；1.1 于 2026-07-02 修订 §5 依赖口径一处；1.0 于 2026-06-12 作者逐项确认定稿）
> 日期：2026-06-12
> 读者：①开发实施者（含 AI）；②issue 区用户（RFC 母本，裁剪时换大白话）
> 地位：本 PRD 是 v7 的产品法律文本。spec 0.5 的"冻结"已解除——本 PRD 先行，`story-repo-spec` 与 `multi-agent-adaptation-spec` 随本文档修订（修订指令见 §10）。
> 上游：story-repo-spec 0.5、multi-agent-adaptation-spec v3.1、v7-design-discussion-notes、v6 issue 区（#58–#113）
> 决策过程：`.trellis/tasks/06-11-v7-prd-webnovel-writer/prd.md`（20 条 ADR）

---

## 1. 背景与目标

### 1.1 一句话

为中文网文作者做一个**开箱即用、全程中文、200 万字不崩**的 AI 长篇创作系统：一本书是一个 git 仓库，AI 负责写和审，脚本负责数和记，作者只做三件事——确认细纲、审稿、拍创作决策。

### 1.2 为什么推翻 v6 重来

v6 的病根（issue 与代码互证）：

| 病根 | 证据 |
|---|---|
| 用 prompt 驱动确定性状态机，模型不遵守 | #91、#66、#87/#76；385 行写章流程规范 |
| 派生状态（SQLite/投影）与作者手改冲突，无解 | #100、#77、#63、#67、#70、#71、#89 |
| Token/时间消耗失控（每章 3 subagent + 4 份 JSON + 多道 gate） | #58、#92、#106 |
| 安装门槛高（Python 依赖 + .env + RAG key） | #90、#103、#69 |
| 禁词表治不了 AI 味 | #94 |
| 连写缺失/质量漂移 | #79、#95、#74 |

**核心教训：v6 信任流程、不信任模型和作者；v7 信任 markdown 和作者，把流程压到最薄。**

### 1.3 继承与归零

- **继承**：仓库/star/用户群/issue 区；37 个题材模板；追读力分类与爽点节奏知识库；审查维度；踩坑记录。
- **归零**：Story System、SQLite 双库、RAG、Python runtime、8 个命令、Dashboard 常驻服务。
- v6 留 master 分支只修致命 bug；v7 新 major + `/migrate` 一次性迁移。

### 1.4 产品原则（宪法级）

1. **文件即真相**：作者面对的一切状态都是中文 Markdown，可手改、可 git diff。系统检测手改并提议入账，永不报错拒绝。
2. **脚本能做的归脚本，做不到的归 AI 语义判断——一定要分清楚**。禁止用正则硬凑语义判断（一点用没有）；能数的不让模型估，能模型判的不打扰作者。
3. **git 隐身铁律**：作者永远不需要亲手敲 git 命令——真需要 git 操作时由 AI 代为运行；任何 git 异常都有人话修复流程。
4. **可靠性来自自愈，不来自门禁**：宁停勿崩；hook 语义是 ask 不是 deny（#113 教训）。
5. **精准读取，非必要不全文读**：所有数据文件都有"精准读到所需一段"的脚本命令；AI 默认读片段，不整文件读取（v6 token 失控的根治手段）。
6. **作者界面零机器味**：术语全部用网文圈原生词或大白话（§8 术语表）；财务/工程/数据库隐喻和自造精简词禁止出现在作者界面。
7. **品味决策归人**：**定稿永远由作者敲定（没有"自动定稿"）**；金句入库、文风规则入铁律，一律作者审核，不交给阈值或模型。

---

## 2. 用户画像与作者旅程

用户是**中文网文作者，非工程师**，Windows 为主力环境，目标体量 200 万字。三条旅程全部支持，**主旅程是新书作者**——它是产品定义本身；迁移作者第二；连写党是日常写作的一种模式而非独立门面。

### 2.1 主旅程：新书作者（从零到稳定日更）

```text
① 安装        npx webnovel-writer init
              （检测 Node ≥22 与已装的 AI 工具，生成工作目录；缺 Node 时人话提示升级）
② 建书        打开 AI 工具说"开始写书"→ 引导式问答生成 book.yaml、总纲、第一卷卷纲
③ 写第一章    确认细纲（AI 拟，作者点头或改）→ AI 写稿 → 机检 → 三审 → 审稿 → 定稿
④ 日常        每次打开，AI 先报全书近况（写到哪、哪些伏笔悬了太久、连续几章钩子弱）
              → 继续写下一章，或说"改第 N 章""把这条感情线收了"
⑤ 卷末        卷复盘：伏笔清账、卷摘要、与作者对谈定下卷卷纲、伏笔机会扫描
⑥ 发布        一键导出干净正文（单章/范围/全书，去 front matter），贴到起点/番茄
```

体验底线：全程看不到 git、看不到报错堆栈、看不到英文术语；目录里只有 定稿/大纲/文风/工作区 四个中文文件夹。

### 2.2 旅程二：v6 迁移作者

```text
① 引导        市场版插件页面与 README 指引：v7 换了安装方式 → 卸载市场版 → npx 安装
② 迁移        在工作目录说"迁移我的书"→ /migrate 一次性脚本（映射表见 §10.3）
③ 校对        迁移报告人话列出：迁了什么、哪些条目标了"迁移待校对"、建议先看哪
④ 继续写作    进入主旅程 ④
```

体验底线：迁移不丢任何一个字；v6 的伏笔/剧情线/追读账本全部有去处；失败可整体回退。

### 2.3 旅程三：连写党（自动模式）

```text
① 前提        当前卷卷纲已确认（自动模式的控制边界——全自动 ≠ 无控制，是控制上移到大纲层）
② 开关        自动确认细纲 + 连写批次大小（默认与体检周期一致 8 章；开关中文名 spec 定稿时敲定）
③ 挂机        连写一个批次：草稿与预入账数据攒在工作区，**不定稿**；
              写后续章的材料从"定稿 + 待定稿批次"叠加组装（脚本提供）
④ 停止        批次写满 / 体检不过线 / 卷纲耗尽（绝不让模型裸奔编纲）
              + 连续 3 章（可配）无账本变动也停
⑤ 批量审稿    作者过一遍攒下的审稿单：整批接受 / 改某几章 / 从某章起打回重写
              （批内错误未定稿，直接改，影响最多波及一个批次）
⑥ 批量定稿    作者敲定后逐章按序定稿（原子性按章保留）→ 继续下一批次
              整批不要 → "回到第 N 章"（git 回滚的人话包装）
              已发布后才发现错误 → 影响分析 → 顺势圆（向后兼容；已发布不可改是铁律）
```

**定稿永远需要作者敲定——系统没有任何不经作者确认就写入定稿区的路径**（宪法级）。自动模式与手动模式的差异只是确认粒度：逐章 vs 按批次。

---

## 3. 系统形态

### 3.1 安装布局：工作目录 ⊃ 书目录

```text
工作目录/                      ← AI 工具在这里启动；本身不是 git 仓库
├── AGENTS.md                  # 公约数层：没装插件的 AI 也能看懂这里是什么、入口在哪
├── .claude/  .codex/ …        # 各平台壳（按检测到的环境生成）
├── .webnovel/                 # 插件本体：Node 脚本、角色定义、版本与模板哈希清单
│   └── books.jsonl            # ★ 书目录登记：每行一本书（书名/目录/是否当前在写/最后打开）
├── 我的第一本书/               # 书仓库（独立 git 仓库）
└── 我的第二本书/               # 多本书共用一套安装
```

- **强制安装到工作目录（项目级），不支持用户级**——所有用户目录结构一字不差，可诊断性优先于灵活性（v6 安装类 issue 半数根源是"装哪了/读的哪份"歧义）。
- **分发只走 npx**（`npx webnovel-writer init` / `update`）。Claude Code 插件市场渠道放弃，市场版停在 v6 并指引新装法。
- `update` 用模板哈希追踪：用户没改过的文件直接更新，改过的提示（Trellis 模式）。
- **当前书与书单由登记文件解析**（`.webnovel/books.jsonl`，机器域，每行一本书：书名/目录/是否当前在写/最后打开）：
  - **SessionStart hook 注入上下文**（Claude Code）：会话启动自动注入"当前在写哪本、共几本书、全书近况入口"；无 hook 宿主由状态机入口启动时读同一文件，行为等价——关键能力不得只存在于 hook 中。
  - 换书 = 一句话让 AI 改登记（对话即编辑器）；作者不需要手编 jsonl。
  - 自愈：登记文件缺失/损坏 → 扫描工作目录下含 book.yaml 的子目录**重建书单**（书单是可重建派生物），"当前在写"标记请作者选一次。
- **只支持从工作目录启动**：各宿主只在启动目录自动加载 skills/配置（`.claude/`、`.codex/` 都住工作目录），在书目录里启动插件根本不会加载。当前书一律由登记文件决定。脚本启动时校验当前目录含 `.webnovel/`，不是工作目录 → 人话提示"请从工作目录启动"。
- 运行时要求 **Node ≥ 22**（用内置 `node:sqlite` 实现缓存，零依赖承诺保住）；无 Python、无 pip、无 .env。

### 3.2 书仓库目录（spec 0.5 §2 修订版）

```text
<书名>/
├── .git/  .gitignore  book.yaml
├── AGENTS.md                   # ★ 指路文件（建书时自动生成）：误在书目录启动 AI 工具 /
│                               #   单独 clone 时，指引回工作目录或 npx 重建
├── 定稿/                       # ── 审稿通过后的一切，只进不改 ──
│   ├── 正文/0152-北境的雪.md    # 正文 + 章信息 front matter（自包含档案）
│   ├── 设定/
│   │   ├── 角色/林晚.md
│   │   ├── 信息差/信息差-021-灭门真凶.md
│   │   ├── 世界观.md
│   │   ├── 时间线/第05卷.md     # ★ 按卷拆分（原单文件）
│   │   └── 名册.md
│   └── 摘要/                   # ★ 原「记忆/」
│       ├── 章摘要/0152.md
│       └── 卷摘要/第05卷.md
├── 大纲/                       # ── 作者意图，随时可改 ──
│   ├── 总纲.md
│   ├── 卷纲/第05卷.md          # 主线支线的推进写在这里，不另记账
│   ├── 伏笔/伏笔-031-灭门真凶.md  # ★ 账本三类（原「承诺/」大一统拆分）
│   ├── 悬念/悬念-008-神秘老者身份.md
│   └── 感情线/感情线-012-林晚主线.md
├── 文风/
│   ├── 文风铁律.md             # ★ 原「风格宪法.md」；含反和解标准段
│   └── 金句库/战斗.md …
├── 工作区/                     # ── 没定稿的一切，默认不进 git ──
│   ├── 细纲.md                 # ★ 原「决策卡.md」：全书近况+本章提案+要写到的事+备选
│   ├── 本章写作材料.md          # ★ 原「上下文包.md」
│   ├── 草稿-A.md
│   ├── 审稿.md                 # ★ 原「验收卡」
│   ├── 评审报告/
│   └── 导出/                   # ★ 新增：干净正文导出落点（不进 git）
└── .cache/index.db             # 唯一派生物，删了能全量重建（CI 验收项）
```

书仓库里**零工程文件**——作者打开文件夹只看到书。唯一显式例外是指路 `AGENTS.md`：误在书目录启动 AI 工具或单独 clone 时，它是唯一会被 AI 自动读到的求生通道。

### 3.3 账本：三类，统一引擎

有"开启→推进→收尾"生命周期的才进账本；引擎一套共用（每条一个文件、平铺 front matter、履历、"悬了太久"预警、定稿时入账；机器内部状态同构 open/advance/resolve/drop）：

| 类型 | 编号 | 生命周期动词 | "悬了太久"默认阈值 |
|---|---|---|---|
| 伏笔 | 伏笔-031 | 埋下 → 推进 → 回收 / 放弃 | 紧（10 章量级） |
| 悬念 | 悬念-008 | 设下 → 推进 → 揭晓 / 放弃 | 紧（10 章量级） |
| 感情线 | 感情线-012 | 开启 → 推进 → 修成正果 / 无疾而终 | 宽（30 章量级） |

**条目编号一律用全称**（伏笔-031，不是 伏-031 或 P-031）——作者天天要念的编号必须是人话，不过度压缩；信息差同理（信息差-021）。

不进账本的（各归各位）：

- **爽点**：不是账本条目，是**知识层**——v6 的追读力分类（危机钩/悬念钩/渴望钩/情绪钩/选择钩）、爽点与节奏知识库（压抑爆发/微反转补刀/黄金三章等，按题材有偏好和毒点）、37 个题材模板**平移继承**，喂给细纲（按题材推荐本章钩子类型/情绪定位/爽点节拍）和三审读者审。
- **钩子、情绪定位**：每章属性，住章节 front matter（本章钩子类型与强弱、情绪定位：压抑/铺垫/小爽/大爽/转折）。
- **剧情线（主线/支线）**：推进本来就是总纲/卷纲正文内容，再开一类账=重复记账。
- **冲突、立旗**：不设类（冲突每章都有；立旗是黑话直译，归悬念或爽点知识）。
- **"装逼打脸蓄积了多少章"**：信息差的派生报表（数据源就是"谁还不知道主角的底牌"），不需要独立机制。

账本态度："悬了太久"是提醒不是错误，**有些伏笔收不了可以接受**——系统不逼作者填所有坑。

> 注：「账本」是开发侧词汇，仅用于本文档与 spec 内部指代这套机制；作者界面只出现 伏笔/悬念/感情线 三个具体名字，不出现"账本"二字。

### 3.4 写章流程（八阶段，spec 0.5 §8 修订版）

| # | 阶段 | 执行体 | 说明 |
|---|------|--------|------|
| 1 | 起草细纲 | 脚本读全书近况 + AI 拟 | 生成 `工作区/细纲.md`；**细纲声明本章定位（推进/过渡/日常）**——过渡章合法，消除模型撒谎动机（替代 0.5 的"每章必须动一条承诺"硬门检与豁免机制） |
| 2 | 确认细纲 | **作者** | 点头 / 改 / 选备选；自动模式可跳过 |
| 3 | 备料 | 脚本 | 组装 `工作区/本章写作材料.md`：全书近况+要写到的事+事实切片+信息差边界+近章结尾+反复读清单+文风锚点+反和解规则；**默认用精准片段**（当前卷+上一卷时间线、按编号取账本条目） |
| 4 | 写稿 | AI（干净上下文） | `工作区/草稿-*.md`；关键章 best-of-N |
| 5 | 机检 | 脚本，零 token | **只做可计数项**：字数、禁词/禁句式、复读、高频意象统计、句式体检（句长方差/段落分布/高频开头）、新专名比对名册、front matter 格式、账本文件是否变动（只查形式）、信息差关键词命中（**只出候选清单，不拦截**）。不过关打回第 4 步，不打扰作者 |
| 6 | 三审 | AI ×3（各自新鲜上下文） | 读者审（爽不爽/哪段想划走，用追读力知识库的标准）、编辑审（结构与商业性）、**设定校对**（语义判断在这里：①"本章要写到的事"逐条核对正文写没写到；②机检的泄密候选是不是真泄密；③账本履历引用的章内证据是否属实） |
| 7 | 审稿 | **作者** | `工作区/审稿.md` = 草稿 + 三句话审意见 + 待确认新人名 + 章摘要（扫一眼可改）。动作：接受 / 改完接受 / 打回。手动模式逐章审；自动模式按批次审（§2.3）。**定稿永远需要作者敲定，没有"自动定稿"** |
| 8 | 定稿 | 脚本，**原子** | 一次 git commit：正文进定稿、设定/时间线/名册更新、账本各条目写入履历、章摘要存入 `定稿/摘要/`、工作区清空。要么完成要么原样保留，没有中间态 |

写评分离：写稿与三审必须在不同上下文中进行；机检先于 AI 审。

### 3.5 单入口状态机（spec 0.5 §10 修订版）

系统启动按序判定，命中即停。**第 0 步之前加 git 健康检查**：半提交/冲突/锁文件/.git 损坏/网盘冲突副本（"xxx (1).md"），每种配自动修复或人话指引——作者永远不直面 git 报错。

| 序 | 条件 | 下一步 |
|----|------|--------|
| 0 | 任一源文件解析失败 | **修复确认**（原"修复卡"）：定位到行、AI 提议保留意图的修复、作者确认；全角标点结构性错误直接预修复只报不问。永不带堆栈崩溃 |
| 1 | 定稿/大纲有未入账手改 | 提议补登（系统适应作者，不报错） |
| 2 | 工作区有未完成流程 | 从中断的阶段继续 |
| 3 | 刚定稿的章是卷末章 | 卷复盘 |
| 4 | 章号到达体检周期 | 体检 |
| 5 | 其余 | 起草新章细纲 |

v6 的 8 个命令全部内化为以上状态；作者只需要一个入口和"继续"。

### 3.6 精准读取接口（新增，宪法级原则的落地）

每类数据文件的 spec 定义都附带"定位读取"脚本接口，例如：

- 读伏笔-031 的履历 / 读感情线-012 的当前状态
- 读第 5 卷卷纲的高潮节点 / 读总纲的结局承诺段
- 读 0152 章结尾 500 字 / 读第 148–152 章的章摘要
- 查"玄阶令牌"在全书的出现章（Grep 正文，正文本身就是无损数据库）

`.cache/index.db` 的表设计必须支撑这些查询；写作材料组装默认用精准片段。

---

## 4. 功能需求：问题空间 16 项的产品化映射

| # | 问题 | 解法 | 版本 | 验收方式 |
|---|---|---|---|---|
| 1 | 客观事实吃书（修为/资产/物品） | 角色卡结构化字段增量记账，定稿时脚本更新 | 7.0 | 改 100 章前的设定，影响分析能列全受影响章 |
| 2 | 时间线混乱 | 每章强制时间锚点；时间线按卷拆分，append-only | 7.0 | 从第 1 章起强制；体检报告缺时间锚点的章为零 |
| 3 | 信息差泄密 | 登记表（每条一文件：知情人/读者已知/关键词）+ 机检出候选 + 设定校对判真伪；写作材料注入出场人物知识边界 | 7.0 | 构造泄密样章，三审能逮住；误报不拦截流程 |
| 4 | 人设语气漂移 | 角色卡存典型对话原文 few-shot + 周期语气体检 + 遮名盲测 | 7.x（体检后置） | 盲测准确率报告 |
| 5 | 摘要信息损耗 | 分层摘要（章≤200字/卷≤500字/全书骨架按需拼接、不落盘）+ Grep 正文管细节 + 账本即"人工标注的未来相关性" | 7.0 | 写第 0153 章时，写作材料能召回第 12 章埋下、第 152 章推进的伏笔 |
| 6 | 大纲漂移 | 偏离是决策点不是 bug：细纲阶段给"拉回/改纲/进灵感池"三选 | 7.0 | 细纲模板含偏离报告段 |
| 7 | 改稿三档 | 未发布：直接改+自动重入账；已发布：只读，生成"顺势圆"方案；设定/大纲：影响分析出已发布/未发布两清单 | 7.0 | 三档各有端到端用例 |
| 8 | AI 和解倾向毒害爽文 | 反和解规则入文风铁律标准段，随写作材料前置注入，按题材配浓度 | 7.0 | 题材模板含反和解预设；样章对比可感 |
| 9 | 桥段循环 | 高频意象统计（零 token 脚本，7.0）+ 桥段使用史"冷却中"清单（7.x） | 7.0/7.x | "空气仿佛凝固"全书 47 次这类能被机检报出 |
| 10 | 情绪节奏失控 | 每章情绪定位入 front matter（7.0）+ 波形体检与平台预设周期（7.x） | 7.0/7.x | 体检报告含情绪波形图 |
| 11 | AI 味 | 分布问题分层打：禁词表（第一层）+ 句式体检脚本（7.0）+ 文风锚定 few-shot（7.x）。**诚实边界：承诺"读者不出戏"，不承诺过 AI 检测器** | 7.0/7.x | 句式体检指标进体检报告 |
| 12 | 对话同质化 | 口癖卡 + 遮名盲测 | 7.x | 盲测用例 |
| 13 | 诚实边界 | README/RFC 明示承诺口径；合规/敏感词不进 v1 | 全程 | 文档口径一致 |
| 14 | 控制点滑杆 | 确认细纲/审稿两个开关；全关=逐章交互，全开=自动模式；一套实现 | 7.0 | 开关组合矩阵全测 |
| 15 | 连写质量漂移 | **按批次定稿**（错误最多污染一个批次，且未定稿可直接改）+ 体检与批次对齐（默认 8 章）+ 停止条件（写满/体检不过线/卷纲耗尽/连续 3 章无账本变动）+ 已发布错误走顺势圆 | 7.0 | 自动模式端到端 + 注入错误的恢复演练 |
| 16 | 真源唯一 | 正文+摘要 markdown 即全部状态；`.cache` 删了全量重建 | 7.0 | 重建 CI（重建器即格式的参考实现） |

---

## 5. 非功能需求

| 维度 | 要求 |
|---|---|
| 运行时 | Node ≥ 22.13.0；运行时直接依赖仅 `js-yaml`（YAML 解析；序列化手写防呆），其余零依赖，缓存用内置 `node:sqlite`（决策记录：M1 任务 design §8.1）；安装器检测版本并人话提示 |
| 平台 | Windows 中文环境一等公民：全链路 UTF-8 无 BOM、`core.quotepath false`、CI 含 Windows 中文路径全链路测试（建库→写章→定稿→重建缓存） |
| Token 成本 | 机检零 token；精准读取默认片段化；分层摘要控制长程上下文；每章 AI 调用次数有预算上限（实现时定数） |
| 健壮性 | 永不带堆栈崩溃（修复确认兜底）；定稿原子性；git 健康检查；容错读取（未知字段保留原样写回） |
| 可诊断性 | 强制项目级安装，目录结构全网统一；issue 里贴目录清单即可定位 |
| 防呆 | 系统写出的 YAML 一律平铺、块列表、危险值加引号；多条记录每条一文件 |
| 多宿主 | 格式层平台无关；SKILL.md 开放标准零适配；角色单源生成三平台壳 + drift check；降级诚实（不允许声称调用了不存在的能力）；hook 语义 ask 不 deny |
| 许可证 | MIT/Apache-2.0（v7 从零写） |

---

## 6. 范围切分

**切线原则**：已设计完且实现成本低的进 7.0；需要新设计或调参的体检类全部 7.x。

### v7.0（首发）

- 骨架：状态机单入口、写章流程八阶段（机检/三审新分工）、三类账本（声明制）、客观事实记账、时间线（按卷）、分层摘要、改稿三档、git 隐身全套（含健康检查与"回到第 N 章"）、精准读取接口
- 高呼声卖点：自动模式（连写，**按批次定稿**）、反和解规则、信息差登记（候选制泄密检查）
- 配套：npx 安装器（工作目录布局）+ update、`/migrate`、干净导出、AGENTS.md
- 文风层基础：文风铁律 + 禁词/句式机检 + 高频意象统计（v6 资产平移）；金句库目录与手动放入
- 宿主：一级（Claude Code + Codex），亲测过 smoke

### v7.x（增量）

- 金句库自动收割（候选制：作者改写且字数相近才候选，净删减不算；**对话触发**：作者聊天中夸某段也触发；最终一律作者审核入库）
- **按需静态简报**（单文件 HTML，内联样式无外链无服务器；账本全貌、体检统计与情绪波形、时间线浏览——"全书近况"管对话里的决策瞬间，浏览级信息归简报。**生成方式：脚本从缓存渲染固定模板，零 token，AI 不参与 HTML 构造**；模板随插件分发并入模板哈希清单；可选"近况点评"小节由 AI 以数据形式提供给脚本嵌入）
- 文风锚定（对标作者 few-shot）、桥段冷却清单、语气盲测、情绪波形、口癖卡
- 多宿主二级平台（Gemini CLI / Cursor，社区反馈确认）

### 不做（封死）

- RAG/向量库（语义检索=可选插件，永不做事实召回主路径）、常驻服务、敏感词/合规、AI 检测器承诺
- 大一统 YAML 数据文件、事件级 witnesses 投影、自建提交链、模型自由评"文笔好坏"、模型裸奔编纲
- 术语禁用词 CI 检查（术语一致性靠自审与评审把关，不上机器）

---

## 7. 发布判据

| 阶段 | 过线标准 |
|---|---|
| **发 RFC** | 本 PRD 定稿；术语表/目录图/三条作者旅程齐；RFC 以大白话裁剪发 GitHub Discussions（需先开启 Discussions，issue 区发置顶指引），征求意见至少开放 1 周 |
| **beta** | 用 v7 真实写一本书到 50 章（自用验证，覆盖建书→日更→吃书→卷复盘）；Windows 中文路径全链路 CI 绿；"删光 .cache 全量重建" CI 绿 |
| **7.0.0** | `/migrate` 在 ≥3 个真实 v6 项目跑通；beta 期无数据丢失级 bug；迁移指引文档齐 |

---

## 8. 术语表（作者界面词汇的法律文本）

**命名四原则**：①网文圈原生词优先；②圈内没有的用自然大白话；③财务/工程/数据库隐喻禁止出现在作者界面；④不自造两字精简词——宁可用自然的长短语。

| spec 0.5 旧词 | v7 定名 | 备注 |
|---|---|---|
| 承诺（P-031） | **账本拆三类**：伏笔（伏笔-031）/ 悬念（悬念-008）/ 感情线（感情线-012） | 各用各的生命周期动词（埋下→回收 / 设下→揭晓 / 开启→修成正果）；**编号一律全称** |
| 节奏债 | "悬了太久"预警 | 是提醒不是错误 |
| retcon 事务 | 吃书（吃书-87） | commit 前缀仍 retcon（机器域） |
| settle / 结转 | 定稿（动词） | 与 `定稿/` 目录一致 |
| 章事务 | 写章流程 | |
| 盘面 | 全书近况 | |
| 上下文包 | 本章写作材料 | |
| 合同 | 本章要写到的事 | |
| 镜头评审 | 三审（读者审/编辑审/设定校对） | 出版业原生词 |
| 棘轮 | 删除该比喻 | 直接说"定稿前/定稿后" |
| 风格宪法 | 文风铁律 | |
| 决策卡 | **取消"卡"概念**：环节叫"确认细纲"，文件 `工作区/细纲.md` | AI 拟细纲→作者点头或改 |
| 验收（卡） | 审稿，文件 `工作区/审稿.md` | |
| 修复卡 | 修复确认 | |
| 定稿/记忆/ | 定稿/摘要/ | "记忆"是 AI 视角词 |
| 信息差/时间线/名册/金句库/体检/钩子/强弱钩 | 保留 | 原生或大白话 |

机器协议不动（机器域，作者看不到）：commit 前缀 ch/vol/retcon/fix、`book.yaml`、`spec_version`、`.cache` 表名。**条目编号全部中文全称**（伏笔-031/悬念-008/感情线-012/信息差-021，原 P-031/S-021 废止）——编号是作者天天要念的，必须是人话且不过度压缩。

---

## 9. 风险与开放问题

| 风险 | 控制 |
|---|---|
| 三审每章 3 次 AI 调用，弱模型宿主上质量参差 | 三审任务书单源；设定校对给的是核对清单不是开放问题；降级模式（无 subagent 顺序执行）如实声明 |
| 自动模式错误连锁 | 按批次定稿——错误不经作者审稿不入定稿，污染上限一个批次且未定稿可直接改；已发布后的错误走影响分析+顺势圆 |
| 中文路径在小众平台/工具链上出幺蛾子 | CI 全链路 + 一级宿主 smoke；问题平台降级到二三级，不硬保 |
| Node 22 普及度 | 安装器人话提示升级；22 已是 LTS，写手装最新版无历史包袱 |
| Codex skill 列表 8k 字符预算 | description 精简纪律 + validator 检查 |
| 金句库 few-shot 注入旧文加重自我重复 | 7.x 才做自动收割；候选制+作者审核；按场景分文件轮换 |

开放问题（不阻塞 RFC，spec 修订时解决）：

- [O2] 自动模式开关的中文定名（"自动确认细纲"+"连写批次大小"候选）。
- [O3] 灵感池（偏离大纲的素材去向）的文件落点——`大纲/灵感池.md` 候选。
- [O4] 精准读取接口的完整清单与 `.cache` 表设计（实现 spec 定）。

（已消解，均为作者 2026-06-12 拍板：编号体系→全称中文编号；攒批审稿落点→按批次定稿后问题不复存在；多本书切换→`.webnovel/books.jsonl` 登记 + hook 注入；启动点→只支持工作目录启动；O1 书仓库自描述→根部指路 `AGENTS.md`。）---

## 10. spec 修订指令清单（本 PRD 对两份 spec 的下行要求）

### 10.1 story-repo-spec 0.5 → 0.6

1. §0/§1：删"棘轮"比喻；不变量补三条——git 隐身铁律、精准读取、"脚本/AI 语义分界"。
2. §2：目录按 §3.2 修订（账本三目录、摘要/、时间线按卷、细纲/审稿/导出、工作区文件改名）；**条目编号改中文全称**（"编号保留 ASCII"条款废止）；新增"工作目录 ⊃ 书目录"安装布局、书目录登记（`.webnovel/books.jsonl`）、**启动点限制**（只支持从工作目录启动——宿主只在启动目录加载 skills/配置；脚本校验 cwd 含 `.webnovel/`，否则人话提示）。
3. §2.1：Node ≥ 22，`node:sqlite`。
4. §3 book.yaml：**删除"自动验收"开关**（定稿永远归作者），新增"连写批次大小"（默认与体检周期一致）；开关中文名随术语表（O2）；新增分类型"悬了太久"阈值。
5. §5：大一统"承诺"拆三类账本；"每章必须结转"硬门检改**声明制**（细纲声明本章定位）；履历行必须引用章内证据；删豁免机制。
6. §6.1 改名文风铁律；§6.2 金句库 7.0 仅目录+手动，自动收割条款移入 7.x 附录（候选制+对话触发+作者审核）。
7. §7 决策卡 → 细纲.md，固定段落改为：全书近况 / 本章提案与定位声明 / 本章要写到的事 / 备选。
8. §8：第 5 步机检删"合同断言比对"（移三审设定校对）、信息差扫描改"只出候选"；第 6 步三审职责按 §3.4 重写。§8.1 **整节重写**：删除"自动验收过线即 settle"——**定稿永远由作者敲定**；自动模式改为按批次定稿（批内草稿与预入账数据攒工作区、写作材料组装支持"定稿+待定稿批次"叠加视图、批量审稿、作者敲定后逐章按序定稿）；停止条件增加"连续 3 章无账本变动即停"。
9. §9：retcon 作者界面叫吃书；新增影响分析脚本、"回到第 N 章"命令、顺势圆主路径。
10. §10：第 0 步前加 git 健康检查；修复卡→修复确认。
11. §11：表设计须支撑精准读取接口（O4）。
12. §4.1 章节 front matter：字段名随术语表与账本三类改写（开启/推进/兑付承诺 → 分类型的 埋下/推进/回收 等；"合同"→"本章要写到的事"）；**新增章属性字段**：钩子类型与强弱、情绪定位（压抑/铺垫/小爽/大爽/转折）。
13. **新增"建书"入口**：状态机目前假设书已存在，需补"无书/空仓库"态——引导式问答生成 book.yaml、总纲、第一卷卷纲（主旅程 §2.1 ② 的依据）；建书时同步生成书仓库根部指路 `AGENTS.md`（误启动/单独 clone 的指引）并登记进 `books.jsonl`。
14. §12 迁移映射更新：foreshadowing→伏笔、plot_threads→并入卷纲（不进账本）、chase_debt/reading_power→知识层与章属性；新增"市场版插件卸载+npx 重装"引导。
15. 新增章节：干净导出命令、精准读取接口。

### 10.2 multi-agent-adaptation-spec v3.1 → v3.2

1. §8 安装器重写：工作目录布局、强制项目级、npx init/update、模板哈希追踪、Node 版本检测、书目录登记初始化（建书时写入 `.webnovel/books.jsonl`）。
2. §5.5 hook 条款扩充：SessionStart 注入"当前在写哪本/书单/全书近况入口"（读 `books.jsonl`）；无 hook 宿主由状态机入口读同一文件，行为等价。
3. 新增 AGENTS.md 公约数层条款（工作目录根部，`<!-- WEBNOVEL:START/END -->` 标记块管理）。
4. 吸收 Trellis 调研：共享模板 + 平台上下文/条件块编译降级路径（降级在安装时定稿，不靠运行时判断）。
5. 删除 §5.2 中插件市场相关表述（`.claude-plugin/` 仅作为 v6 遗留说明）。

### 10.3 迁移映射（v6 → v7，更新版）

| v6 | v7 |
|----|----|
| `正文/` | `定稿/正文/`（补 front matter，"要写到的事"标"迁移"） |
| `设定集/` | `定稿/设定/` |
| `大纲/` | `大纲/总纲.md`、`大纲/卷纲/` |
| foreshadowing | `大纲/伏笔/` 逐条成文件 |
| plot_threads | 并入卷纲正文（不进账本） |
| chase_debt / reading_power | 知识层与章属性（不进账本） |
| `.webnovel/state.json` | 一次性展开进 `定稿/设定/` |
| `summaries/` | `定稿/摘要/` |
| project_memory patterns / scratchpad | `文风/文风铁律.md`（人工过一遍再入） |
| `.story-system/` 提交链 | 压成初始 commit，原目录只读归档 |
| index.db / vectors.db / projection_log | 删除（缓存重建；向量为可选插件） |
| references（题材模板/追读力/爽点节奏） | 知识层平移继承 |

---

## 11. 验收清单（PRD 自身）

- [x] 三条作者旅程完整（安装→建书/迁移→日常写作→卷复盘→发布）
- [x] 问题空间 16 项每项有归属（7.0 / 7.x / 不做）与验收方式
- [x] 发布判据可执行（每阶段有可验证的过线条件）
- [x] RFC 可从本 PRD 直接裁剪产出（§1.1、§2、§3.2、§6、§8 为裁剪主体）
- [x] spec 修订指令完整（两份 spec 的每处冲突都有下行指令）
