--- date: 2026-02-25 status: 决议 来源: 用户与 Agent 讨论(设计文档与 beat 的 SSOT、Yarn 落实后的 Fiction 失真) --- # Beat 职责重定义与叙事信源迁移 ## 关键认识(讨论摘要) - **Yarn 才是叙事的 ground truth**:一旦 beat 进入 prototype 或更后阶段,yarn 就是这个 beat 的实际叙事——玩家玩到的就是它。在 beat 里再维护一份 Fiction 副本 = 双源,违反 SSOT,且 Fiction 注定失真(没人会两边同步维护)。 - **设计文档的归属**:服务于某 beat 的工程文档(功能需求、设计优化、Yarn command 说明等)跟 Yarn 放一起是合理的;早期设计梗概进 inbox 归档即可,不必搬进 kb 做第二份权威。 ## 建议:重定义 Beat 文件职责 Beat 文件**不要**和 yarn 争「谁写具体叙事」,而应做 **yarn 做不到的事**: | Beat 负责(yarn 做不到的) | Yarn / 工程文档负责(beat 不重复) | |---------------------------|-----------------------------------| | 设计意图:为什么存在这个 beat、想让玩家感受什么 | 具体对话、分支、流程 | | reveals:本 beat 对角色/世界观揭示了什么 | 具体怎么揭示 | | 情绪弧线(一两句) | 情绪的具体实现 | | 状态追踪:dev_status、yarn 路径、关联角色/设定 | 波形/粒子等工程细节 | | 决策记录(变更日志) | 功能需求文档、设计优化文档 | **Fiction 区**:当信源在 yarn 时,只保留**叙事骨架**(几句话概括流程)+ **指向 yarn 的引用**;不在此维护与 yarn 重复的详细内容。 ## 决议:SSOT 以 beat 为入口、信源随阶段迁移 - 叙事 SSOT 随阶段迁移:**short-fiction → flow → full-fiction → yarn**。Beat 文件始终是入口,用 `fiction_source` 指向**当前阶段的唯一信源**;Fiction 区做简单总结(骨架)或即信源本身(当 `fiction_source: self` 时)。 - 落地:`template/tpl-beat.md` 增加 `fiction_source` 字段;`template/README.md` 增加「Beat 叙事信源迁移」约定;示范 `kb/beats/火山-维修1.md` 改为指向 Yarn 的形态。 --- ## 变更日志 | 日期 | 变更内容 | 决策理由 / 来源 | |------|---------|-----------------| | 2026-02-25 | 新增本决策记录,归档「关键认识」「重定义 beat 职责」讨论及决议 | 用户要求将对话存档并补全 changelog | | 2026-02-25 | `template/tpl-beat.md`:增加 `fiction_source` 字段;Fiction 区增加信源说明折叠块 | 落实叙事信源迁移约定 | | 2026-02-25 | `kb/template/tpl-beat.md`:与 template 源同步 | 修改模板后需同步至 kb/template | | 2026-02-25 | `template/README.md`:增加「Beat 叙事信源迁移(fiction_source)」一节 | 文档化四阶段迁移与 Fiction 区写法 | | 2026-02-25 | `kb/beats/火山-维修1.md`:`fiction_source` 指向 Test_Huoshan;Fiction 改为 Stage 骨架摘要;变更日志补来源列与本次迁移记录 | 示范 yarn 阶段 beat 形态 |