Преглед изворни кода

docs(v7): RFC 后续决策落地 - spec 0.7 + 实施计划 0.2

- 补充 A1/A2/A3 核心决策(版本链叠加、Node 22.13.0、章节级锚点)
- 审稿机制调整为两审(事实审查 + 编辑审),增加终止机制
- 更新实施计划反映决策,明确 M1/M4/M6 里程碑要点
- 补充 v7 架构原则(端口/适配器 + 显式用例)
- 多宿主 spec 明确两审模式(完整 vs 兼容)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
lingfengQAQ пре 2 дана
родитељ
комит
939996d415

+ 50 - 11
docs/architecture/multi-agent-adaptation-spec-2026-06-05.md

@@ -1,9 +1,9 @@
 # Webnovel Writer 多宿主与多智能体适配 Spec
 
-> 日期:2026-06-05(v3 修订:2026-06-11;v3.1:同日,hook 语义 deny → ask,依据 #113;v3.2:2026-06-12,按 PRD 1.0 §10.2 修订——安装器重写为工作目录布局、AGENTS.md 公约数层、SessionStart 注入、模板条件块、放弃插件市场)
-> 状态:草案 v3.2
-> 基线:**v7 story repo**(`story-repo-spec-2026-06-10.md` 0.6)+ **PRD**(`v7-prd.md` 1.0,产品法律文本,冲突时以 PRD 为准)。v2 的基线是 v6.1.0 Python runtime,该架构已被 v7 推翻;本版继承 v2 的元层纪律,重写全部基座层。
-> 来源:v2(基于 PR #110 review 重写)+ 2026-06 多平台调研核验 + Trellis 多宿主机制调研(2026-06-11)+ PRD 1.0
+> 日期:2026-06-05(v3 修订:2026-06-11;v3.1:同日,hook 语义 deny → ask,依据 #113;v3.2:2026-06-12,按 PRD 1.0 §10.2 修订——安装器重写为工作目录布局、AGENTS.md 公约数层、SessionStart 注入、模板条件块、放弃插件市场;v3.3:2026-06-26,RFC 后续决策——两审模式、审稿清单定义
+> 状态:草案 v3.3
+> 基线:**v7 story repo**(`story-repo-spec-2026-06-10.md` 0.7)+ **PRD**(`v7-prd.md` 1.0,产品法律文本,冲突时以 PRD 为准)。v2 的基线是 v6.1.0 Python runtime,该架构已被 v7 推翻;本版继承 v2 的元层纪律,重写全部基座层。
+> 来源:v2(基于 PR #110 review 重写)+ 2026-06 多平台调研核验 + Trellis 多宿主机制调研(2026-06-11)+ PRD 1.0 + RFC 后续决策(2026-06-26)
 > 定位:把 v7 的格式层(story repo)原封不动地暴露给多个 agent 宿主——格式平台无关,本 spec 只管入口怎么落、角色怎么生成、安装怎么零门槛、支持等级怎么诚实。
 
 ---
@@ -63,7 +63,7 @@ Codex 跑 GPT、Cursor 什么模型都有。"流程薄 + 脚本确定性"不是
 ### 3.2 具体目标
 
 1. 状态机单入口落成标准 SKILL.md,在所有支持 SKILL.md 的宿主上可发现、可执行。
-2. 角色(三审:读者审/编辑审/设定校对)单源定义,构建时生成各平台壳。
+2. 角色(两审:事实审查/编辑审)单源定义,构建时生成各平台壳。
 3. 所有宿主复用同一套 Node 脚本(机检、定稿、全书近况、体检),零业务逻辑复制。
 4. `npx` 安装器一条命令完成环境检测与 skills 分发(根治 v6 #90/#103/#69 安装类 issue)。
 5. 每个宿主的支持状态可验证:support.md + smoke + 分级 registry,不承诺未核验的能力。
@@ -110,9 +110,48 @@ Claude Code 的使用体验是其他宿主的对照基准。**插件市场渠道
 
 ### 5.4 Subagent 只做增强,不做依赖
 
-- 三审(story repo spec §8 第 6 步:读者审/编辑审/设定校对)在支持 subagent 的宿主上用独立 subagent 保证"各自新鲜上下文"。
-- 不支持的宿主降级:主 agent 按同一份三审任务书顺序执行,输出必须明确声明"未调用 subagent,使用兼容模式"。
-- **降级诚实条款(继承 v2)**:不允许声称调用了不存在的能力;机检与定稿是脚本,不参与降级。
+### 5.4 两审模式与降级诚实(RFC 决策 D1/D2)
+
+**完整模式**(推荐):
+- 两审(story repo spec §8 第 6 步:事实审查/编辑审)在支持 subagent 的宿主上用独立 subagent 保证"各自新鲜上下文"。
+- 事实审查:v6 的 5 维度(设定一致性、时间线、叙事连贯、角色一致性、逻辑)+ v7 特有项("要写到的事"核对、泄密候选判断、履历证据验证)
+- 编辑审:结构、节奏、商业性、主角动机
+- 输出格式:结构化问题清单(severity + category + blocking),参考 v6 review schema
+
+**兼容模式**(降级):
+- 不支持 subagent 的宿主:主 agent 按同一份两审任务书顺序执行
+- 输出必须明确声明:"本次使用兼容模式(单上下文顺序审稿),审稿隔离度低于完整两审模式"
+- 审稿报告中标注使用的模式
+
+**审稿清单输出格式**:
+```json
+{
+  "chapter": 100,
+  "issues": [
+    {
+      "severity": "critical | high | medium | low",
+      "category": "setting | timeline | continuity | character | logic | requirement | leak | evidence | structure | pacing | commercial | motivation",
+      "location": "第N段 或 具体引用",
+      "description": "问题描述",
+      "evidence": "原文引用 vs 数据记录",
+      "fix_hint": "修复方向",
+      "blocking": true
+    }
+  ],
+  "issues_count": 1,
+  "blocking_count": 1,
+  "has_blocking": true,
+  "summary": "N个问题:X个阻断,Y个高优"
+}
+```
+
+**阻断规则**:
+- `severity=critical` 自动 `blocking=true`
+- 其他 severity 由 AI 根据上下文判断是否 blocking
+- 存在 `blocking=true` 的问题 → 作者审稿时看到明确标识
+- 作者可选择:接受当前版本(即使有非阻断问题)/ 改完接受 / 打回重写
+
+**降级诚实条款(继承 v2)**:不允许声称调用了不存在的能力;机检与定稿是脚本,不参与降级。
 
 ### 5.5 Hook 只是 Claude Code 上的自动兜底
 
@@ -244,7 +283,7 @@ node scripts/build-host-shells.mjs --check     # drift check,CI 必跑
 - **drift check**:`build-host-shells.mjs --check`,验证生成器输出确定性(同输入必同输出),CI 必跑。
 - **package validator**:registry schema、逐宿主 support.md 存在性、smoke 命令声明、生成物无本机绝对路径、skill description 长度(Codex 8k 预算)。
 - **行为 smoke**(每个一级宿主):discover(skill 可发现)→ npx init → 建书 → 全书近况 → 写一章全流程(细纲→定稿)→ 删 `.cache/` 重建。Windows 中文路径全链路必测。
-- **降级验收**:至少一个无 subagent 环境跑通审兼容模式,且输出含兼容模式声明。
+- **降级验收**:至少一个无 subagent 环境跑通审兼容模式,且输出含兼容模式声明。
 
 ---
 
@@ -267,7 +306,7 @@ node scripts/build-host-shells.mjs --check     # drift check,CI 必跑
 |---|---|
 | 宿主能力描述过期 | support.md 核验日期纪律;无核验不进一二级 |
 | 角色壳三平台漂移 | 单源 `roles/` + 生成器,禁止手改生成物,drift check 兜底 |
-| 弱模型宿主上流程失守 | 机检与定稿全是脚本;模型只做写稿与审 |
+| 弱模型宿主上流程失守 | 机检与定稿全是脚本;模型只做写稿与审 |
 | Codex skill 预算超限 | validator 检查 description 长度 |
 | 降级模式被冒充 | 降级诚实条款进行为 smoke 验收 |
 | Windows 中文路径 | Node 默认 UTF-8 + CI 全链路测试 |
@@ -280,7 +319,7 @@ node scripts/build-host-shells.mjs --check     # drift check,CI 必跑
 - [ ] npx 安装器在 Windows 中文环境一条命令完成工作目录布局(含 AGENTS.md、books.jsonl、平台壳)。
 - [ ] update 哈希追踪:改过的文件不被静默覆盖。
 - [ ] registry 三级分级,一级宿主有 support.md + 过 smoke。
-- [ ] 无 subagent 宿主跑通审兼容模式且如实声明。
+- [ ] 无 subagent 宿主跑通审兼容模式且如实声明。
 - [ ] hook 缺席的宿主核心流程行为等价(含 books.jsonl 上下文注入的等价路径)。
 
 ## 13. 简短结论

+ 54 - 17
docs/architecture/story-repo-spec-2026-06-10.md

@@ -1,9 +1,16 @@
-# Story Repo 格式规格(v7 草案 0.6)
-
-> 状态:0.6。相对 0.5 的变更:按 **PRD 1.0**(`v7-prd.md` §10.1 修订指令,作者已逐项确认)全面修订——术语表全文贯彻(§14 决策记录 16-24)、「承诺」大一统拆为三类条目(伏笔/悬念/感情线)、自动模式改按批次定稿(定稿永远归作者)、新增工作目录层与启动点限制、Node ≥ 22、新增导出命令与精准读取接口。
-> 来源:2026-06-10「最正确架构」讨论 + PRD 1.0(2026-06-12 定稿)。
+# Story Repo 格式规格(v7 草案 0.7)
+
+> 状态:0.7。相对 0.6 的变更:
+> - 补充 A1 决策:自动模式待定稿批次的版本链叠加机制(§8.1)
+> - 更新 A2 决策:Node >= 22.13.0 运行时要求(§2.2)
+> - 明确 A3 决策:履历证据的章节级验证范围(§5 线索条目格式,§11 缓存重建器职责)
+> - 调整审稿定义:从三审改为两审(事实审查 + 编辑审),去掉读者审(§8 第 6 步)
+> - 补充审稿终止机制:severity + blocking 规则(§8 第 6-7 步)
+> - 澄清 B 类问题:缓存删除代价(§11)、关键词扫描边界(§4.3)、两审模式(§8 第 6 步)
+> 
+> 来源:2026-06-10「最正确架构」讨论 + PRD 1.0(2026-06-12 定稿)+ RFC 后续决策(2026-06-26)。
 > 地位:`v7-prd.md` 是产品法律文本,本规格是**格式法律文本**——两者冲突时以 PRD 为准并修订本规格。代码是格式的派生物:任何实现与本规格冲突时,改实现或改规格,不允许"代码里悄悄多存一份"。
-> 范围:本规格管**格式层**(工作目录与 story repo 里有什么、长什么样、怎么变更),平台无关。宿主适配(SKILL.md 入口、subagent 壳、安装器)由 `multi-agent-adaptation-spec-2026-06-05.md`(v3.2)承接。
+> 范围:本规格管**格式层**(工作目录与 story repo 里有什么、长什么样、怎么变更),平台无关。宿主适配(SKILL.md 入口、subagent 壳、安装器)由 `multi-agent-adaptation-spec-2026-06-05.md`(v3.3)承接。
 
 ---
 
@@ -89,8 +96,8 @@
 │   ├── 细纲.md                 # (§7)
 │   ├── 本章写作材料.md          # 本次写稿的材料包,留档供核查
 │   ├── 草稿-A.md               # 关键章多稿时 A/B/C
-│   ├── 审稿.md                 # 草稿+三审意见+待确认新人名+章摘要(§8 第 7 步)
-│   ├── 评审报告/               # 机检与审原始输出
+│   ├── 审稿.md                 # 草稿+两审意见+待确认新专名+章摘要(§8 第 7 步)
+│   ├── 评审报告/               # 机检与审原始输出
 │   ├── 待定稿/                 # 自动模式的批次暂存(§8.1):每章一个子目录
 │   └── 导出/                   # 干净正文导出落点(§4.7),不进 git
 └── .cache/                     # 唯一允许的派生缓存(§11)
@@ -99,7 +106,7 @@
 
 ### 2.2 中文路径的工程约束(规范性,CI 强制)
 
-- **脚本运行时统一 Node ≥ 22**(零第三方依赖:`.cache/index.db` 用内置 `node:sqlite`;装任何 agent CLI 的用户必有 Node;无 Python、无 pip、无 .env)。安装器检测 Node 版本,不足时人话提示升级。一切文件 IO 显式 UTF-8(Node 默认即是),禁止依赖系统 locale。
+- **脚本运行时统一 Node ≥ 22.13.0**(零第三方依赖:`.cache/index.db` 用内置 `node:sqlite`,v22.13.0 起无需 `--experimental-sqlite` flag;装任何 agent CLI 的用户必有 Node;无 Python、无 pip、无 .env)。安装器检测 Node 版本,< 22.13.0 时人话提示升级。一切文件 IO 显式 UTF-8(Node 默认即是),禁止依赖系统 locale。
 - 仓库初始化时设置 `git config core.quotepath false`(git log 里中文路径可读)。
 - 文件排序一律靠零填充数字前缀(`0152-`、`第05卷`、`伏笔-031`),不依赖中文字典序。
 - 实体引用一律用**正名**(中文),别名经名册(§4.5)解析。
@@ -163,7 +170,7 @@ spec_version: "7.0"
   - 推进 悬念-008
 感情线:
   - 推进 感情线-012
-本章要写到的事:                 # 确认细纲时点的清单(已经审核对)
+本章要写到的事:                 # 确认细纲时点的清单(已经审核对)
   - 林晚得知灭门真相的第一条实证
   - 伏笔-058 埋下:神秘老者来历
   - 结尾强钩:玄阶令牌现世
@@ -199,7 +206,7 @@ front matter 是机检消费的结构化字段(平铺、块列表);正文
 
 ### 4.3 信息差 `定稿/设定/信息差/信息差-NNN-<短题>.md`
 
-不追踪"每个角色知道哪些事件",只登记**值得管理的信息差**,每条一个文件。机检的泄密扫描只产出**候选清单**(角色对白/内心戏命中其不知道的信息差关键词),是否真泄密由三审的设定校对判断,不拦截流程。"装逼打脸蓄积了多少章"是信息差的派生报表(§11),不另建机制。群像戏的"谁在场"由时间线在场列(§4.4)补足。
+不追踪"每个角色知道哪些事件",只登记**值得管理的信息差**,每条一个文件。机检的泄密扫描只产出**候选清单**(角色对白/内心戏命中其不知道的信息差关键词),是否真泄密由两审的事实审查判断,不拦截流程。"装逼打脸蓄积了多少章"是信息差的派生报表(§11),不另建机制。群像戏的"谁在场"由时间线在场列(§4.4)补足。
 
 ```markdown
 ---
@@ -251,7 +258,7 @@ front matter 是机检消费的结构化字段(平铺、块列表);正文
 | 悬念 | 悬念-008 | 设下 → 推进 → 揭晓 / 放弃 | 10 章 |
 | 感情线 | 感情线-012 | 开启 → 推进 → 修成正果 / 无疾而终 | 30 章 |
 
-**不设条目的,各归各位**:爽点是知识层(v6 追读力分类、爽点与节奏知识库、题材模板平移继承,喂给细纲与审,§8);钩子与情绪定位是章属性(§4.1);主线/支线的推进写在总纲/卷纲正文里;冲突、立旗不设类。
+**不设条目的,各归各位**:爽点是知识层(v6 追读力分类、爽点与节奏知识库、题材模板平移继承,喂给细纲与审,§8);钩子与情绪定位是章属性(§4.1);主线/支线的推进写在总纲/卷纲正文里;冲突、立旗不设类。
 
 文件名 `伏笔-031-灭门真凶.md`(全称编号-短题);front matter 平铺短字段,描述、收尾计划、履历全是 Markdown 正文:
 
@@ -278,7 +285,13 @@ front matter 是机检消费的结构化字段(平铺、块列表);正文
 **条目规则(声明制)**:
 
 - **不设"每章必须推进条目"的硬门检**。细纲声明本章定位(推进章/过渡章/日常章,§7)——过渡章合法,消除模型造假账的动机。
-- **履历行必须引用章内证据**(一句话指明出处),三审的设定校对核对引用是否属实——这是防假推进的真正防线。
+- **履历行必须引用章内证据**(一句话指明出处),两审的事实审查核对引用是否属实——这是防假推进的真正防线。
+  - **履历证据格式**(RFC 决策 A3):`第152章:推进——林晚取得实证(见本章结尾对峙段)`
+  - 格式:章节级别 + 自然语言描述(无段落编号)
+  - 验证范围:
+    - 重建器验证:章节文件是否存在(脚本能做的,§11)
+    - 两审验证:读取整章验证语义正确性(AI 能做的,§8 第 6 步)
+  - 理由:网文章节 2000-3000 字,全文读取压力可接受;避免段落编号维护的复杂性和易错性
 - 开新条目必须写收尾计划;强度"高"必须填预计收尾。
 - "悬了太久"= `当前章 − 最后推进章` 超过该类型阈值,在全书近况里亮提醒。**提醒不是错误**:有些伏笔收不了可以接受,系统不逼作者填所有坑。
 - 放弃必须在履历留原因行(弃线也要留痕)。
@@ -354,10 +367,29 @@ B 方案:本章纯感情线过渡(定位改"过渡章"),伏笔-031 推
 | 3 | 备料 | 脚本 | 组装 `工作区/本章写作材料.md`:全书近况+要写到的事+事实切片+信息差边界+近章结尾+反复读清单+文风锚点+反和解规则。**默认精准片段**(当前卷+上一卷时间线、按编号取条目、按需取正文段,§11.1) |
 | 4 | 写稿 | AI(干净上下文) | `工作区/草稿-*.md`;关键章 best-of-N |
 | 5 | 机检 | 脚本(零 token) | **只做可计数项**:字数、禁词/禁句式、复读检测、跨章高频意象统计("空气仿佛凝固"全书 47 次这类)、句式体检(句长方差/段落长度分布/高频句式开头)、新专名比对名册、front matter 格式完整性、条目文件是否变动(只查形式不判内容)、信息差关键词命中(**只出候选清单,不拦截**)。不过关直接打回第 4 步,不打扰作者 |
-| 6 | 三审 | AI ×3(各自新鲜上下文) | **读者审**(爽不爽/哪段想划走,用追读力知识库的标准)、**编辑审**(结构与商业性)、**设定校对**(语义判断都在这里:①"要写到的事"逐条核对正文写没写到;②机检泄密候选是否真泄密;③条目履历引用的章内证据是否属实)→ `工作区/评审报告/` |
+| 6 | 两审 | AI ×2(各自新鲜上下文) | **事实审查**(v6 的 5 维度:设定一致性、时间线、叙事连贯、角色一致性、逻辑 + v7 特有项:①"要写到的事"逐条核对正文;②机检泄密候选是否真泄密;③条目履历引用的章内证据是否属实)、**编辑审**(结构、节奏、商业性、主角动机:主角每个主要行动是否有即时驱动、可见压力、预期收益、情绪原因,或明确标注为非理性行为)→ `工作区/评审报告/`。输出格式:结构化问题清单(severity + category + blocking),参考 v6 review schema。|
 | 7 | 审稿 | **作者** | `工作区/审稿.md` = 草稿 + 三句话审意见 + 待确认新专名 + 章摘要(扫一眼可改)。动作:接受 / 改完接受 / 打回。手动模式逐章审;自动模式按批次审(§8.1)。**定稿永远需要作者敲定**(不变量 5) |
 | 8 | 定稿 | 脚本,**原子** | 见下 |
 
+**审稿终止机制**(防止无限循环,RFC 决策 D2):
+
+- 两审输出结构化问题清单,每个问题包含:
+  - `severity`: critical / high / medium / low
+  - `category`: 问题分类(事实审查:setting/timeline/continuity/character/logic/requirement/leak/evidence;编辑审:structure/pacing/commercial/motivation)
+  - `blocking`: 是否阻断定稿(boolean)
+  - `description`: 问题描述
+  - `evidence`: 原文引用或数据对比
+  - `fix_hint`: 修复方向
+- **阻断规则**:
+  - `severity=critical` 自动 `blocking=true`
+  - 其他 severity 由 AI 根据上下文判断是否 blocking
+  - 存在任何 `blocking=true` 的问题 → 作者审稿时看到明确标识
+- **作者审稿选择**:
+  - 接受当前版本(即使有非阻断问题)
+  - 改完接受(修改后不重新审稿,直接定稿)
+  - 打回重写
+- **系统不强制完美**:非阻断问题作为"优化建议",作者可以在审稿单上标注"已知问题,接受现状"并定稿。
+
 **定稿的一次 commit 包含**:草稿 → `定稿/正文/`(front matter 写入章档案与条目变动);`设定/` 变更(位置/状态/境界/持有/信息差/名册/时间线追加);涉及的三类条目文件更新(front matter + 履历追加);`摘要/章摘要/`(审稿单定稿版);工作区清空。
 
 **commit message 约定**(前缀 ASCII 是机器协议,便于 `git log --grep`):
@@ -375,7 +407,7 @@ ch(152): 北境的雪
 
 - `自动确认细纲: true` → 第 2 步默认采纳细纲提案(提案必须含定位声明)。
 - **批次运行**:连写 `连写批次大小`(默认 8)章。每章走完 1-6 步后**不定稿**,草稿、审稿单、预登记数据存入 `工作区/待定稿/NNNN-标题/`。
-- **叠加视图**(规范性要求):写批内后续章时,备料脚本组装"`定稿/` + 待定稿批次预登记"的叠加视图——批内前章的设定变更、条目推进、时间线行在工作区就位,定稿时原样转正。
+- **叠加视图与版本链**(规范性要求,RFC 决策 A1):写批内后续章时,备料脚本组装"`定稿/` + 待定稿批次预登记"的叠加视图——批内前章的设定变更、条目推进、时间线行在工作区就位,定稿时原样转正。**支持批次内依赖**:第 K+1 章可以使用第 K 章的预登记事实。当第 K 章被作者打回时,标记 K+1 到 N 章为"受影响",需重新审核或重写(具体污染传播机制由 M6 实施时设计)。
 - **停止条件**(命中即停转人工):批次写满 / 体检不过线 / 卷纲耗尽(**绝不让模型裸奔编纲**)/ 连续 3 章(可配)无条目变动。
 - **批量审稿与定稿**:批次结束 → 体检 → 作者过一遍攒下的审稿单(整批接受 / 改某几章 / 从某章起打回重写)→ 作者敲定后**逐章按序定稿**(原子性按章保留)→ 下一批次。批内错误未定稿,直接改,影响最多波及一个批次。
 - 整批不要 → "回到第 N 章"(§9);已发布后才发现的错误 → 影响分析 + 顺势圆(§9)。
@@ -414,6 +446,11 @@ v6 的 8 个命令全部内化为以上状态。作者只需要一个入口和"
 
 唯一允许的持久派生物(`node:sqlite`),gitignored,任何时刻可删。首查重建,重建器只读 定稿/大纲/文风 源文件。表(机器域,表名英文):`chapters`(front matter 展开,含章定位/钩子/情绪定位)、`threads`(三类条目统一存放,类型为列)、`secrets`(信息差,含"读者已知"与蓄积章数)、`entities`(名册)、`fingerprints`(文体指纹历史)。**重建器即格式的参考实现**——能完整重建,说明格式自洽。
 
+**删除 `.cache/` 后的行为**(RFC 澄清 B1):
+- 系统从源文件全量重建缓存(所有查询照常回答,这是 CI 验收项,不变量 2)
+- 首次查询会触发冷重建(可能需数秒,视书籍体量),或临时降级为全文件扫描并给出提示
+- 不应暗示"删除缓存零代价"——重建需要时间,但系统保证功能不受影响
+
 ### 11.1 精准读取接口(不变量 11 的落地)
 
 每类源文件配"定位读取"脚本命令,AI 默认用它们取片段、不整文件读取。初版清单(实现可扩充,不可削减):
@@ -458,7 +495,7 @@ v6 的 8 个命令全部内化为以上状态。作者只需要一个入口和"
 - ❌ 持久向量库(语义检索 = 可选插件,永不做事实召回主路径)
 - ❌ 常驻服务(浏览级信息 = 按需静态简报:零 token 脚本渲染单文件 HTML,只读 story repo,7.x)
 - ❌ 自建提交链 / projection_log / scratchpad
-- ❌ 模型自由评"文笔好坏"(审职责里明确排除)
+- ❌ 模型自由评"文笔好坏"(审职责里明确排除)
 - ❌ 模型裸奔编纲(连写硬停止条件:卷纲耗尽即停,§8.1)
 - ❌ 不经作者确认写入 `定稿/` 的任何路径(不变量 5)
 
@@ -472,12 +509,12 @@ v6 的 8 个命令全部内化为以上状态。作者只需要一个入口和"
 
 | # | 变更 | 落点 | PRD 依据 |
 |---|------|------|---------|
-| 16 | 术语表全文贯彻(定稿动词/写章流程/全书近况/本章写作材料/本章要写到的事/审/文风铁律/细纲/审稿/修复确认/吃书/摘要/悬了太久;"卡"与"棘轮"退场) | 全文 | §8 术语表、ADR 术语-1/2 |
+| 16 | 术语表全文贯彻(定稿动词/写章流程/全书近况/本章写作材料/本章要写到的事/审/文风铁律/细纲/审稿/修复确认/吃书/摘要/悬了太久;"卡"与"棘轮"退场) | 全文 | §8 术语表、ADR 术语-1/2 |
 | 17 | 「承诺」大一统拆为三类条目:伏笔/悬念/感情线,统一引擎分类型目录;爽点归知识层、钩子归章属性、主线支线归卷纲 | §5、§2.1、§4.1 | ADR 账本-1 |
 | 18 | "每章必须推进"硬门检 + 豁免机制 → **声明制**(细纲声明章定位;履历须引用章内证据) | §5、§7 | ADR 机制-2 |
 | 19 | 条目编号中文全称(伏笔-031/信息差-021),"编号保留 ASCII"废止 | §2.1、§5 | ADR 术语-3 |
 | 20 | 自动模式重写:**删除自动验收,定稿永远归作者**;按批次审稿与定稿;叠加视图;停止条件 +"连续 3 章无条目变动" | §8.1、不变量 5、§3 | ADR 机制-6 |
-| 21 | 机检/审职责重划:机检只做可计数项(含高频意象/句式体检),"要写到的事"核对与泄密判断移给设定校对(机检只出候选) | §8 第 5/6 步 | ADR 机制-1 |
+| 21 | 机检/审职责重划:机检只做可计数项(含高频意象/句式体检),"要写到的事"核对与泄密判断移给事实审查(机检只出候选) | §8 第 5/6 步 | ADR 机制-1 |
 | 22 | git 隐身铁律入宪 + 启动前 git 健康检查 + 影响分析/顺势圆/"回到第 N 章" | 不变量 8、§9、§10 | ADR 机制-3/4 |
 | 23 | 新增工作目录层:工作目录 ⊃ 书目录、唯一启动点、`books.jsonl` 登记 + hook 注入、书仓库指路 AGENTS.md;Node ≥ 22(node:sqlite) | §2.0、§2.2 | ADR 安装-1/2/3、技术-1 |
 | 24 | 时间线按卷拆分;`记忆/`→`摘要/`;新增导出命令、灵感池、精准读取接口、建书态;金句库自动收割移 7.x 附录 | §4.4/4.6/4.7、§6.2、§7、§10、§11.1 | ADR 格式-1/2/3、机制-5、原则-1、范围-1/2 |

+ 94 - 16
docs/architecture/v7-implementation-plan.md

@@ -1,21 +1,21 @@
 # webnovel-writer v7 实施计划(里程碑路线图)
 
-> 状态:草案 0.1(2026-06-13,待作者确认
-> 上游:`v7-prd.md` 1.0(产品法律文本)、`story-repo-spec-2026-06-10.md` 0.6(格式法律文本)、`multi-agent-adaptation-spec-2026-06-05.md` v3.2(宿主适配)、`.trellis/spec/backend/` 基线 1.0(开发规范)
+> 状态:草案 0.2(2026-06-26,反映 RFC 后续决策
+> 上游:`v7-prd.md` 1.0、`story-repo-spec-2026-06-10.md` 0.7、`multi-agent-adaptation-spec-2026-06-05.md` v3.3、`.trellis/spec/backend/` 基线 1.0
 > 地位:本文档管**实施排程**——把 PRD §6 的 v7.0 范围切成有依赖顺序、有出口判据的里程碑。范围与行为以 PRD/spec 为准,两者冲突时改本文档。
 
 ---
 
-## 0. 现状盘点(2026-06-13
+## 0. 现状盘点(2026-06-26
 
 | 事项 | 状态 |
 |---|---|
 | PRD 1.0 | ✅ 定稿(06-12,作者逐项确认) |
-| story-repo-spec 0.6 / multi-agent-spec v3.2 | ✅ 按 PRD §10 修订指令完成 |
-| RFC | ✅ 已发 Discussions(06-12),开放至少 1 周 → **~06-19 收口** |
+| story-repo-spec 0.7 / multi-agent-spec v3.3 | ✅ 按 PRD §10 修订指令完成,RFC 后续决策已落地(06-26) |
+| RFC | ✅ 已发 Discussions(06-12),~06-19 收口,06-26 完成后续决策(A1/A2/A3/D1/D2) |
 | 后端开发规范基线 1.0 | ✅ `.trellis/spec/backend/` |
 | v7 代码 | ❌ 0 行(`webnovel-writer/` 目录是 v6 遗产,冻结) |
-| PRD 开放问题 | O2(开关定名)、O3(灵感池落点)已被 spec 0.6 消解;**O4(精准读取接口完整清单 + `.cache` 表设计)归 M1 第一步** |
+| PRD 开放问题 | O2/O3 已消解;**O4(精准读取接口完整清单 + `.cache` 表设计)归 M1 第一步**(不在 RFC 后续任务范围,需单独任务) |
 
 ## 1. 排程原则
 
@@ -25,6 +25,77 @@
 4. **每个里程碑出口判据可验证**——对应 PRD §4 验收方式或 §7 发布判据的具体条目,不接受"做完了"。
 5. 里程碑是依赖序不是严格串行:M4 的知识层平移(纯搬运 v6 资产)、M5 安装器骨架可与 M2/M3 并行。
 
+## 1.5 v7 架构原则(指导实施)
+
+v7 的架构目标是**降低变化影响面**,通过清晰分层和显式用例,避免 v6 "动一个地方其他地方都受影响"的问题。
+
+### 核心原则
+
+1. **AI 永远不接触文件结构**
+   - AI 只看到整理好的上下文 DTO(`CharacterContext`、`ChapterBrief`、`ReviewInput`)
+   - AI 不知道 `定稿/设定/角色/林晚.md` 在哪里,只知道"当前角色是林晚,境界是金丹"
+   - 改文件结构不影响 AI 层
+
+2. **状态机永远不做业务判断**
+   - 状态机只负责流程编排:下一步是备料/写稿/机检/两审/定稿
+   - 不判断伏笔真假,不解析 Markdown,不拼上下文
+
+3. **脚本层按 Use Case 拆,不按技术动作拆**
+   - 显式用例:`prepareChapterMaterials`、`runMechanicalChecks`、`finalizeChapter`、`rebuildCache`、`analyzeRetconImpact`
+   - 不做通用工具函数到处调用
+
+4. **Markdown 格式变化只影响 Storage Adapter**
+   - front matter 字段、目录命名、履历格式这些变化,收敛在 `MarkdownStoryStore` / parser / serializer
+
+5. **跨层通信用稳定 DTO**
+   - 例如 `Chapter`、`ThreadEntry`、`ReviewIssue`、`ContextPack`
+   - 不跨层传 Markdown 字符串、文件路径、半解析 YAML
+
+### 接口设计:拆小端口,不做大接口
+
+**避免上帝对象**:
+- ❌ 不做 `StoryRepo` 大接口(20 个方法,谁都能干任何事)
+- ✅ 拆成小端口:`ChapterReader`、`ChapterWriter`、`ThreadLedgerReader`、`GitPublisher`
+- 每个 use case 只依赖需要的端口(权限最小化)
+
+### 配置化边界:只调策略,不定义流程
+
+**可以配置**(策略参数):
+```yaml
+review:
+  max_iterations: 3
+  enable_fact_check: true
+
+auto_mode:
+  batch_size: 8
+```
+
+**不要配置**(自定义流程语言):
+```yaml
+steps:
+  - id: custom_step
+    command: my_script.js
+```
+
+理由:v7.0 的目标是"可预测",不是"无限可扩展"。配置化流程会让调试成本暴涨。
+
+### 变化影响面
+
+- ✅ 改格式(front matter 字段)→ 只改 Storage Adapter
+- ✅ 改流程策略(批次大小、审稿轮数)→ 只改配置
+- ✅ 改 AI prompt → 只改 AI 层模板
+- ✅ 换模型 → AI 层封装,对外接口不变
+- ✅ 加新宿主 → 只动 Host Adapter
+- ⚠️ 改领域模型(如伏笔/悬念/感情线概念)→ 合理的跨层影响
+
+### 里程碑对应
+
+- **M1 格式层**:实现 Storage Adapter 接口(ChapterReader/Writer 等)
+- **M2 脚本层**:实现 Use Case(prepareChapterMaterials、finalizeChapter 等)
+- **M3 状态机**:只管流程编排,不管业务逻辑
+- **M4 AI 层**:只吃 DTO,只吐结构化输出
+- **M5 安装器**:Host Adapter 层
+
 ## 2. 里程碑
 
 ### M0 仓库骨架(RFC 开放期内,立即可开)
@@ -34,14 +105,16 @@
 - npm 包骨架:包名、`bin` 入口、`src/` 模块划分(安装器/状态机/机检/备料/定稿/缓存)——定稿后回填 `.trellis/spec/backend/directory-structure.md` §4 待补项
 - 测试骨架:`node:test`,零第三方依赖纪律从第一行代码生效;测试目录与命名约定回填规范
 - CI:Linux + Windows 双矩阵,Windows 跑**中文路径**用例(先空壳,用例随里程碑长)
-- **出口**:CI 双平台绿;`node --version` 门槛检查(≥22)与人话提示可跑
+- **Node 版本门槛**(RFC 决策 A2):≥ 22.13.0(`node:sqlite` 无需 flag 的最低版本)
+- **出口**:CI 双平台绿;`node --version` 门槛检查(≥ 22.13.0)与人话提示可跑
 
 ### M1 格式层核心库 + 派生缓存(RFC 收口后第一批)
 
-- **第一步消解 O4(设计文档,可在 RFC 开放期内先行起草)**:`.cache/index.db` 五表(chapters/threads/secrets/entities/fingerprints)DDL + 精准读取接口完整清单(spec 0.6 §11.1 初版清单的补全),成稿后补进 spec §11
+- **第一步消解 O4(设计文档,需单独任务)**:`.cache/index.db` 五表(chapters/threads/secrets/entities/fingerprints)DDL + 精准读取接口完整清单(spec 0.7 §11.1 初版清单的补全),成稿后补进 spec §11
 - 容错读写库:front matter / 平铺 YAML / 三类条目文件 / book.yaml;未知字段保留原样写回(不变量 9);写出防呆(平铺、块列表、危险值加引号)
-- 重建器:只读 定稿/大纲/文风 全量重建缓存——**重建器即格式的参考实现**
+- 重建器:只读 定稿/大纲/文风 全量重建缓存——**重建器即格式的参考实现**;履历证据引用验证章节文件存在(RFC 决策 A3)
 - 精准读取接口 CLI 全套(条目/大纲/正文/时间线/设定/全文检索/报表)
+- **架构实施**(§1.5 原则):实现 Storage Adapter 接口(ChapterReader/Writer、ThreadLedgerReader/Writer 等小端口)
 - **出口**:「删光 `.cache` 全量重建」CI 绿(beta 判据之一提前达成);精准读取清单逐条有测试
 
 ### M2 写章流程脚本面(零 AI 全通)
@@ -62,10 +135,13 @@
 
 ### M4 AI 角色层 + 一级宿主壳(可与 M2/M3 部分并行)
 
-- SKILL.md 入口、角色单源生成三平台壳 + drift check(multi-agent-spec v3.2)
-- 三审任务书单源(读者审/编辑审/设定校对)、写评分离的上下文编排、降级模式(无 subagent 顺序执行,如实声明)
+- SKILL.md 入口、角色单源生成三平台壳 + drift check(multi-agent-spec v3.3)
+- 两审任务书单源(事实审查/编辑审,RFC 决策 D1/D2)、写评分离的上下文编排、降级模式(无 subagent 顺序执行,诚实声明隔离度下降)
+- 两审输出格式:结构化问题清单(severity + category + blocking),参考 v6 review schema
 - SessionStart 注入(读 `books.jsonl`);无 hook 宿主状态机入口等价路径
-- 知识层平移:37 题材模板、追读力分类、爽点节奏库(纯搬运,可提前并行做)
+- 知识层平移:37 题材模板、追读力分类、爽点节奏库(纯搬运,可提前并行做)
+- **架构实施**(§1.5 原则):AI 只吃 DTO(CharacterContext、ChapterBrief、ReviewInput),只吐结构化输出
+- **出口**:Claude Code + Codex 各跑一次真模型 smoke(建书引导→写 1 章→定稿→导出)
 - **出口**:Claude Code 与 Codex 各跑一次真模型 smoke——建书 → 写 1 章 → 三审 → 定稿
 
 ### M5 安装器与多本书
@@ -76,9 +152,11 @@
 
 ### M6 自动模式(按批次定稿)
 
-- `工作区/待定稿/` 批次结构、"定稿+待定稿批次"叠加组装视图
+- `工作区/待定稿/` 批次结构、"定稿+待定稿批次"叠加组装视图(**支持批次内依赖**,RFC 决策 A1)
+- 版本链与污染传播:第 K 章打回 → 标记 K+1 到 N 章"受影响",作者确认重审/重写
 - 停止条件四件套(写满/体检不过线/卷纲耗尽/连续 3 章无账本变动)
 - 批量审稿、作者敲定后逐章按序定稿、整批回滚("回到第 N 章"复用 M3)
+- **架构实施**(§1.5 原则):叠加视图通过 Storage Adapter 组装,状态机只管编排
 - **出口**:PRD §4 #15 验收——自动模式端到端 + 注入错误的恢复演练(批内污染不出批次)
 
 ### M7 导出 + /migrate + beta 入口
@@ -106,6 +184,6 @@
 
 ## 5. 下一个可立即开工的任务
 
-1. **M0 仓库骨架**(今天可起):格式无关,不等 RFC
-2. **O4 设计文档**(与 M0 并行):表 DDL + 精准读取接口清单,纸面工作,RFC 改格式时修订成本低。
-3. RFC 意见跟进(持续,到 06-19 收口)
+1. **M0 仓库骨架**(立即可起):格式无关,不等 RFC。Node 版本门槛 ≥ 22.13.0(RFC 决策 A2)
+2. **O4 设计文档**(与 M0 并行,需单独任务):表 DDL + 精准读取接口清单,纸面工作,RFC 改格式时修订成本低。
+3. spec 0.7 / multi-agent-spec v3.3 已完成(RFC 后续任务),M1 可依据新 spec 开工