prd.md 4.9 KB

M2 写章流程脚本面(零 AI 全通)

Goal

实现八阶段写章流程里「执行体 = 脚本」的部分,使一章能全程脚本、零 AI 调用地从细纲走到定稿:备料 → 机检 → 原子定稿。为 M4(AI 写稿/两审)和 M3(状态机编排)提供确定性的脚本地基。

上游法律文本:story-repo-spec §7(工作区/细纲)、§8(八阶段流程)、§8.1(自动模式,本任务不实现)。架构原则见 v7-implementation-plan §1.5(脚本只做能数的,AI 不碰文件,状态机不判业务)。

Background(已确认事实,来自 spec §7/§8 + M1 成果)

八阶段中属于 M2(脚本执行体)的步骤:1 的脚本部分 / 3 / 5 / 8(第 2/7 步是作者,第 1 拟提案/4 写稿/6 两审是 AI=M4)。

  • §8 步骤表:① 起草细纲(脚本读全书近况 + AI 拟提案)② 作者确认 ③ 备料(脚本) ④ 写稿(AI)⑤ 机检(脚本,零 token) ⑥ 两审(AI×2)⑦ 作者审稿 ⑧ 定稿(脚本,原子)
  • 工作区(§7):默认整体 gitignored(定稿前可丢失),但实现不得假设工作区未被 git 跟踪工作区/细纲.md 四段固定(全书近况/本章提案/本章要写到的事/备选)。
  • 定稿一次 commit 含(§8):草稿→定稿/正文/(front matter 写章档案 + 条目变动);设定/ 变更(位置/状态/境界/持有/信息差/名册/时间线追加);三类条目文件更新(front matter + 履历追加);摘要/章摘要/;工作区清空。commit message 约定 ch(152): 标题 + 条目:/设定: 行(ASCII 前缀是机器协议)。
  • 机检可计数项(§8 第 5 步,9 类):字数、禁词/禁句式、复读检测、跨章高频意象统计、句式体检(句长方差/段落长度分布/高频句式开头)、新专名比对名册、front matter 格式完整性、条目文件是否变动(只查形式不判内容)、信息差关键词命中(只出候选清单,不拦截)。不过关直接打回第 4 步。

M1 已就绪可复用:41 精准读取接口 + Storage Adapter 读端口;run(args,options,ctx) 命令契约;.cache 重建器;解析/防呆序列化库。Writer 端口仍是占位(ChapterWriter/ThreadLedgerWriter 抛「M2 实现」)。

现有空壳模块(M0 占位,待 M2 填真):v7/src/prep/v7/src/mechanical-check/v7/src/finalize/

Requirements(待 brainstorm 收敛,先列骨架)

  • R1 全书近况组装:复用 M1 报表(悬了太久/连续弱钩/全书统计/卷进度)产出结构化近况
  • R2 备料 prepareChapterMaterials:组装 工作区/本章写作材料.md(默认精准片段)
  • R3 机检 mechanicalCheck:可计数项检查,产结构化结果(不过关项 + 候选清单),打回判定
  • R4 定稿 finalizeChapter:原子 commit(多文件写入 + 工作区清空),断电安全;含 Writer 端口真实现
  • R5 写出防呆与容错:所有写入走 M1 防呆序列化 + 保留未知字段(不变量 9)

Acceptance Criteria(来自 §8 M2 出口,待细化)

  • 用手工伪造的草稿与细纲,一章从细纲走到定稿全程脚本可跑、零 AI 调用
  • 定稿中断注入测试(断电模拟)后工作区原样保留(要么完成要么原样回退)
  • 定稿后 .cache 删光可全量重建出一致结果(不破坏 M1 不变量 2)

Out of Scope

  • ❌ 第 1 步 AI 拟提案、第 4 步 AI 写稿、第 6 步两审(M4)
  • ❌ 第 2/7 步作者交互编排、状态机单入口(M3)
  • ❌ §8.1 自动模式(连写/批次/叠加视图/污染传播)(M6)
  • ❌ 增量更新缓存(定稿后只写变化行)——M2 先全量重建,增量是 M6 优化

决策记录(brainstorm)

  • D1 交付粒度:单任务分期(同 M1),不拆父子。内部分期:全书近况+备料 → 机检 → 定稿+Writers,每期一 commit。理由:三块是紧依赖链(出口要三者集成跑通一章),M1 已证明单任务分期可控。
  • D2 机检 MVP 深度:做 7 个确定性可计数项——字数、禁词/禁句式、本章内复读(简单 n-gram)、新专名比对名册、front matter 格式完整性、条目文件变动(只查形式)、信息差关键词候选。统计项(跨章高频意象统计、句式体检)推到 M3+ 体检(与 M1 已 defer 的文体指纹提取重叠,避免重复造轮子);M2 机检框架预留扩展点。

  • D3 定稿原子性(design §4):git commit 为原子单元;写工作树→git add→commit→最后清工作区;commit 前中断则 git restore 丢半成品、工作区原样,不存在半章入档。

  • D4 Writer 端口(design §3):延续 M1 小端口——Chapter/ThreadLedger 做真 + 新增 Entity/Timeline/Secret/Summary 共 6 端口;原子性在 finalize 编排,不在 Writer 层。