|
|
@@ -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 |
|