---
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 形态 |
