# PRD: v7 RFC 后续推进

## Goal

根据 v7 RFC 反馈报告（2026-06-16）完成 v7 设计收尾，为实施做好准备，并最终合并到 master 分支。

## Background

v7 RFC 征集期已结束（Discussion #118），反馈报告已完成分析。报告指出：
- 公开反馈支持 v7 核心方向（精准读取降低 token、增加作者确认点）
- 提出了具体改进建议（规划流程停顿点、主角动机检查、文风对齐、多宿主编排）
- 识别出 3 个必须在 v7.0 实施前决策的设计问题（A1/A2/A3）
- 识别出若干需要澄清的 spec 边界问题（B1-B4）
- 识别出应放入 7.x backlog 的功能（C1-C4）

## Requirements

### R1: 核心决策（已完成）✓

三个必须在 v7.0 实施前决策的问题已明确：

**A1: 自动模式叠加视图一致性** — 版本链叠加
**A2: node:sqlite 运行时承诺** — Node >= 22.13.0
**A3: 履历证据结构化锚点** — 章节级别 + 自然语言

### R2: 文档更新（待执行）

根据决策结果和 RFC 反馈更新相关文档：

**必须更新的文档**：
1. `story-repo-spec-2026-06-10.md` (0.6 → 0.7)
   - 补充 A1 决策：自动模式待定稿批次的版本链叠加机制（§8.1）
   - 更新 A2 决策：Node >= 22.13.0 运行时要求（§2.2）
   - 明确 A3 决策：履历证据的章节级验证范围（§5 线索条目格式，§11 缓存重建器职责）
   - **调整三审定义**（§8 写章流程第 6 步）：
     - 改为**两审**：事实审查 + 编辑审
     - 事实审查：v6 的 5 维度（设定/时间线/连贯/角色/逻辑）+ v7 特有项（要写到的事核对、泄密候选判断、履历证据验证）
     - 编辑审：结构、节奏、商业性、**主角动机检查**（新增）
     - 去掉"读者审"（爽点判断留给作者）
     - 输出格式参考 v6 review schema（结构化问题清单，severity + blocking 机制）
   - 澄清 B 类问题：缓存删除代价、关键词扫描边界、两审模式（完整 vs 兼容）

2. `v7-implementation-plan.md` (0.1 → 0.2)
   - **补充 §1.5 v7 架构原则**（指导实施）：
     - AI 永远不接触文件结构（只看 DTO）
     - 状态机只管编排，不做业务判断
     - 按 Use Case 拆分（不做通用工具函数）
     - 拆小端口，不做大接口（避免上帝对象）
     - 配置只调策略，不定义流程
   - 更新 M1 里程碑：`.cache/index.db` DDL 和精准读取接口清单（O4 消解）
   - 补充 M6 里程碑：自动模式版本链叠加视图的实施要点
   - 更新 M4 里程碑：两审任务书单源（事实审查 + 编辑审）
   - 更新 "下一个可立即开工的任务" 章节

3. `v7-prd.md` (保持 1.0)
   - 不修改 PRD 1.0（已定稿）
   - 决策细节只记录在 spec 中

4. `multi-agent-adaptation-spec-2026-06-05.md` (v3.2 → v3.3)
   - 明确两审的两种模式：完整模式（两个新鲜上下文）vs 兼容模式（单 agent 顺序执行）
   - 澄清"兼容模式会诚实声明隔离度下降"
   - 更新审稿清单定义（参考 v6 reviewer schema）

**RFC 反馈采纳清单**（记录在文档中）：
- ✓ 规划流程确认点 — 已在 PRD §2 体现（建书→卷纲→章纲→初稿→审稿）
- ✓ 主角动机检查 — 纳入编辑审清单
- ✓ 多宿主编排模式 — 明确完整模式 vs 兼容模式
- ✓ 审稿维度优化 — 基于 v6 经验调整为两审（事实审查 + 编辑审）
- → 文风对齐 — 放入 7.x backlog（文风指纹、scene beat 标签）
- → 语义召回 — 放入 7.x/plugin backlog（可选能力，不作为事实来源）

## Design Decisions

### D1: 审稿维度调整（基于 v6 经验）

**决策**：从"三审"调整为"两审"，去掉主观的"读者审"

**方案对比**：

| 维度 | v6 (reviewer) | v7 spec 0.6 (三审) | v7 新方案 (两审) |
|------|--------------|-------------------|-----------------|
| 事实验证 | 5 维度 | 设定校对 | **事实审查**（5 维度 + v7 特有项） |
| 结构/商业 | 无 | 编辑审 | **编辑审**（细化 + 主角动机） |
| 主观评价 | 无（明确禁止） | 读者审（爽不爽） | **去掉**（留给作者） |

**新的两审定义**：

**1. 事实审查**（AI，新鲜上下文）
- v6 的 5 个维度：
  - 设定一致性：能力/地点/物品是否符合世界观
  - 时间线：时间衔接、倒计时、角色位置
  - 叙事连贯：钩子回应、场景转换、情绪弧
  - 角色一致性：对话风格、行为动机、知识边界
  - 逻辑：因果关系、角色决策、力量对比
- v7 特有的三项：
  - "要写到的事"逐条核对正文
  - 机检泄密候选的语义判断
  - 条目履历引用的章内证据验证
- 输出：结构化问题清单（severity + category + blocking）

**2. 编辑审**（AI，新鲜上下文）
- 结构：开头/转折/高潮/收尾是否到位
- 节奏：信息密度、情绪起伏
- 商业性：钩子强度、追读力（用知识库标准提示，不终审）
- **主角动机**（RFC 反馈新增）：
  - 主角每个主要行动是否有即时驱动、可见压力、预期收益、情绪原因
  - 或明确标注为非理性行为
- 输出：结构化问题清单

**关键原则**（继承 v6）：
- ✅ 只报可验证的问题（必须有 evidence）
- ✅ severity + blocking 机制（critical 自动阻断）
- ❌ 不评价文笔质量（除非是可计数的句式问题，归机检）
- ❌ 不评价"爽不爽"（AI 无法代替真实读者，作者自己读草稿就是最好的读者审）

**理由**：
1. v6 实践证明：5 维度事实审查是有效的，可验证的
2. "爽不爽"是高度主观的，v6 明确禁止主观评价
3. 作者在第 7 步审稿时通读草稿，本身就是最好的读者视角
4. 两个新鲜上下文比三个更经济，且覆盖了所有可验证维度

**多宿主适配**：
- 完整模式：事实审查 + 编辑审各用独立上下文
- 兼容模式：单 agent 顺序执行两审，诚实声明隔离度下降

### D2: 审稿终止机制（来自 RFC 遗漏分析）

**问题**：Discussion #118 用户 shuimushanjia 反馈："每次让AI审查修改后，再次审查又会出现新的问题，似乎无穷无尽"

**决策**：明确审稿终止条件，避免无限循环

**方案**：
1. **两审输出结构化问题清单**，每个问题包含：
   - `severity`: critical / high / medium / low
   - `category`: 问题分类
   - `blocking`: 是否阻断定稿（critical 默认 true）
   - `description` + `evidence` + `fix_hint`

2. **阻断规则**：
   - 只有 `blocking=true` 的问题阻断定稿
   - `severity=critical` 自动 `blocking=true`
   - 其他 severity 由 AI 判断是否 blocking

3. **作者审稿时的选择**：
   - 接受当前版本（即使有非阻断问题）
   - 改完接受（修改后不重新审稿，直接定稿）
   - 打回重写

4. **系统不强制完美**：
   - 非阻断问题作为"优化建议"，不强制修改
   - 作者可以在审稿单上标注"已知问题，接受现状"

**理由**：
1. v6 实际使用中存在审稿循环问题，v7 必须有明确解法
2. v6 的 reviewer 已有 severity + blocking 机制（参考 `webnovel-writer/references/review-schema.md`）
3. 两审调整减少了主观评价，但仍需要明确的终止机制
4. 作者应该有权决定"够好了"，系统不应追求不可达的完美

**实施要点**：
- spec 0.7 §8（写章流程）明确审稿终止条件
- multi-agent-spec v3.3 更新两审的输出格式（参考 v6 review schema）
- 审稿报告模板明确区分"阻断性问题"和"优化建议"

### D3: 未登记伏笔检测（来自 Discussion #118 深度核验）

**问题**：v7 伏笔系统是纯声明制，只跟踪细纲声明、front matter 登记过的条目。AI 在写稿步（§8 第 4 步，干净上下文）即兴埋的钩子，无对应条目 → 不进"悬了太久"、卷复盘扫不到 → 烂尾。正是 shuimushanjia（06-22）反馈的"埋了一个伏笔之后就没了下文，似乎没将这判定为伏笔"。

**决策**：给声明制加"补漏网"——在事实审查中检测正文里的疑似未登记伏笔，作为**非阻断候选**提示作者。

**方案**：
- **落点**：事实审查（§8 第 6 步），搭已有的整章通读。现检查是单向"声明推进了，正文真有吗"；新增反方向"正文出现疑似伏笔，反查有无条目"——同一次读取，边际成本≈0。
- **形态**：结构化问题清单新增 `category=unregistered_thread`，`severity` low/medium，**`blocking` 永远 false**；走信息差泄密扫描同款"候选制，不拦截"（§4.3 模式）。
- **作者裁决**（审稿单第 7 步三选）：登记成条目（触发"开新条目必须写收尾计划"，自动防悬空）/ 忽略（普通描写）/ 删掉。
- **误报控制**：判定门槛保守，仅捞"刻意强调 + 明显悬置 + 本章无即时解释 + 结构像 setup"者。非阻断，误报代价低，但宁紧勿松。

**理由**：
1. shuimushanjia 抱怨的不是"系统忘了已登记的坑"（v7 防得很死），而是声明制天生看不见 AI 即兴挖的坑。
2. 搭已有整章通读，成本几乎为零；非阻断，风险小。
3. 对口最高频反馈，适合纳入 v7.0。

**实施要点**：
- spec 0.7 §8 第 6 步事实审查职责增列 `unregistered_thread` 候选检测。
- multi-agent-spec v3.3 事实审查 category 取值表加 `unregistered_thread`。

### D4: 设定↔大纲单向依赖（来自 freezero2020 反馈，2026-06-26）

**问题**：freezero2020 反馈"设定集与大纲互相交叉，改一处牵连多文件、频繁不同步"，希望单向关联。v7 目录层已三分（`定稿/设定` 只进不改 / `大纲` 随时改 / `文风` 独立），主体诉求已满足，但依赖方向只是**隐含**单向，未显式成约束。

**决策**：在 spec §1 设计不变量补一条显式约束。

**方案**：
- 不变量文字：**"设定层只记已发生的客观事实，不写排程/章节安排；依赖单向：大纲 → 设定，设定不反向引用大纲条目编号或卷号排程。"**
- 纯文档约束，零代码成本。

**理由**：v7 结构本已是这个方向，写死不变量可防止后续实现把排程内容混入角色卡/世界观，直接回应 freezero2020。

**实施要点**：spec 0.7 §1 不变量列表增补一条；§4.2 角色卡说明可补一句"不写章节排程"。

### R3: RFC 公开跟进（❌ 取消）

~~在 Discussion #118 发布跟进评论~~

**决定**：暂不发布 RFC 跟进评论，只完成文档更新和 git 提交。

理由：文档更新完成后可以根据实际情况再决定是否发布评论。

### R4: master README 更新（待执行）

在 master 分支 README 添加 v7 状态板块：

**内容要点**：
- v6.x 当前稳定版状态（维护模式，仅修 bug）
- v7 设计已定稿，实施进行中
- 链接到 v7 分支的 PRD、spec、实施计划
- 里程碑进度（后续定期更新）

### R5: v7 分支清理（待执行）

处理 v7 分支当前的 git 状态：
- 14 个 `.trellis/` 修改文件需要评估：是否与 v7 任务相关？是否应提交？
- 确保所有 v7 文档更新都提交到 v7 分支

## Acceptance Criteria

- [ ] A1/A2/A3 三个决策问题都有明确方案并记录在案
- [ ] 相关文档已根据决策更新，无遗留"待定"或冲突描述
- [ ] Discussion #118 已发布跟进评论，说明反馈采纳情况
- [ ] v7 → master PR 已准备好或已提交
- [ ] 所有更新已提交到 v7 分支，git 状态干净

## Out of Scope

- v7.0 的实际实施工作（编写代码）— 这只是设计收尾和文档准备
- 7.x backlog 功能的设计细节（文风对齐、语义召回等）
- 已在报告中标记为"需要澄清"但不阻塞 v7.0 的 spec 边界问题（B1-B4）— 可以作为文档微调处理

## Confirmed Facts from Codebase

- RFC 征集期已在 2026-06-12 开始（Discussion #118），原计划 ~06-19 收口（已过期）
- v7 实施计划（`v7-implementation-plan.md`）已存在，状态为草案 0.1（2026-06-13）
- 实施计划定义了 7 个里程碑（M0-M7），RFC 收口是硬节点，收口后才能开始 M1 格式层代码
- 当前 v7 代码量为 0 行（`webnovel-writer/` 是冻结的 v6 遗产）
- 现有文档状态：
  - PRD 1.0 已定稿（2026-06-12）
  - story-repo-spec 0.6（按 PRD 1.0 修订）
  - multi-agent-adaptation-spec v3.2
  - 后端开发规范基线 1.0（`.trellis/spec/backend/`）
- 当前 git 状态：v7 分支有 14 个未提交文件（全部是 `.trellis/` 工作流系统更新）

## Technical Context

**A1 背景**：
- story-repo-spec 0.6 §8.1 描述自动模式"定稿+待定稿批次"叠加视图
- 当前 spec 未定义：批次内第 K 章打回后，K+1 到 N 章已依赖 K 的预登记事实时如何处理

**A2 背景**：
- spec 0.6 §2.2 要求 Node >= 22，使用内置 `node:sqlite` 实现零第三方依赖
- 反馈报告指出 `node:sqlite` 在早期 Node 22 需要 `--experimental-sqlite` flag
- Node v22.13.0+ 才不需要 flag，但模块仍为 release candidate 状态

**A3 背景**：
- spec 0.6 §5 定义三类线索条目（伏笔/悬念/感情线），每条有履历字段记录证据
- spec 要求 cache rebuilder 作为格式参考实现，三审负责校验证据真实性
- 当前 spec 未定义履历证据的结构化格式（如"见本章结尾对峙段"无法脚本验证）

## Decisions Summary

所有核心决策已完成，无阻塞性开放问题。

1. **A1 决策结果**：采用方案 2（版本链叠加）✓
   - 理由：符合实际写作情况，批次内章节需要连续性（新角色、伏笔在前章出现，后章继续发展）
   - 实现要点：
     - 支持批次内依赖，第 K+1 章可以使用第 K 章的预登记事实
     - 当第 K 章被打回时，标记 K+1 到 N 章为"受影响"，需重新审核或重写
     - 需要设计污染传播机制和作者确认流程（整批重写 vs 逐章确认）
   
2. **A2 决策结果**：Node >= 22.13.0 + 提示升级（无降级方案）✓
   - 版本要求：Node >= 22.13.0（`node:sqlite` 无需 flag 的最低版本）
   - 降级方案：不实现文件缓存降级，版本不足时给出清晰的升级指引
   - 理由：
     - Node 22.13.0 发布已 1.5 年，LTS 用户自然更新已覆盖
     - v7 是全新重写，可以设定更高的技术门槛
     - 保持"零第三方依赖"和单一缓存实现的简洁性
     - 本地测试确认 Node 24.15.0 中 `node:sqlite` 可用
   - 实现要点：安装器检测 Node 版本，< 22.13.0 时给出人话升级指引

3. **A3 决策结果**：章节级别锚点 + 自然语言描述 ✓
   - 格式：`第152章：主角在北境对峙时首次察觉真相`（保持现状）
   - 验证范围：
     - 重建器：只验证章节文件存在（脚本能做的）
     - 三审：读取整章验证语义（AI 能做的）
   - 理由：
     - 网文章节长度 2000-3000 字，全文读取压力可接受
     - 避免段落编号维护的复杂性和易错性
     - 符合 PRD 原则"脚本能做的归脚本，做不到的归 AI 语义判断"
     - 作者手改正文后不会破坏锚点引用
   - 实现要点：spec 需明确"履历证据的章节引用由重建器验证存在性，语义正确性由三审负责"

4. **合并时机决策**：暂不合并，master 保持 v6 稳定 ✓
   - 做法：
     - master 分支继续维护 v6（bug 修复）
     - master README 更新 v7 重要进度说明（设计状态、里程碑进展）
     - v7 分支独立开发，直到确认 v7 可以替代 v6
     - 最终合并时机：v7.0 beta 测试通过，确认可替代 v6 后一次性合并
   - 理由：
     - 避免 master 长期处于"设计已公开但不可用"状态
     - v6 用户不受 v7 开发影响，保持稳定性
     - v7 有独立分支可以自由迭代，不受 master 约束
   - 实现要点：
     - 在 master README 添加 v7 状态板块（链接到 v7 分支的 PRD/实施计划）
     - 定期（每个里程碑完成时）更新 master README 的 v7 进度说明
