Files
Capture/template/README.md
T
2026-02-25 10:13:26 +08:00

108 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 模板与 Templater 说明
项目使用 Obsidian 插件 Templater。AI 创建 bible/beat 时需与模板体系兼容。与 Agent 身份与原则见 **`AGENTS.md`**;本文档说明**模板位置、占位符、新建/修改流程**以及 **Bible 可读性与结构**
---
## 模板位置
| 用途 | 路径 |
|------|------|
| TemplaterObsidian 内) | `kb/template/` |
| AI 创建文件时参考 | `template/`(项目根) |
| 两者内容应同步,**以 `template/` 为源** |
| 模板 | 用途 |
|------|------|
| `tpl-character.md` | 角色 Bible;底部含「关联提案」Dataview |
| `tpl-beat.md` | 节拍 Beat;底部含「关联提案」Dataview |
| `tpl-worldbuilding.md` | 设定 Bible;底部含「关联提案」Dataview |
| `tpl-proposal.md` | 提案文档,保存到 `proposals/P-xxx_标题.md`(项目根) |
---
## 占位符约定
- **`{{name}}`**:角色名,AI 填充时用上下文角色名。
- **`{{title}}`**Beat/Eureka 标题,AI 填充时用场景-事件。
- **`{{term_name}}`**:世界观设定名。
Templater 语法对应:`<% await tp.system.prompt("提示", "默认值") %>``tp.file.title`(以文件名为值)。**AI 创建文件时**:直接替换占位符为实际值,不写入 Templater 标签。
---
## summary 写作规范
第一层渐进式读取依赖 frontmatter 的 `summary` 做相关性过滤,故需统一格式与字数,避免偏流程、偏流水账的描述。
- **字数**:不超过 **60 字**(按字符计,含标点)。
- **结构模板**:**\[身份/定位] + [核心矛盾或功能] + [与主线的关键钩子]**
不必机械拆成三句,但需同时覆盖「是谁/是什么」「核心矛盾或功能」「和主线/关键剧情的关系」。
- **避免**:只写「发生了 A → 然后 B → 然后 C」的流程梗概;应提炼**矛盾、功能、钩子**,方便第一层判断是否与当前任务相关。
| 类型 | 侧重 |
|------|------|
| **角色** | 身份/气质 + 核心矛盾或欲望 + 与主线或关键角色的钩子 |
| **设定** | 是什么/功能 + 在剧情中的关键作用或矛盾 + 与主线/核心事件的钩子 |
| **节拍** | 谁/场景 + 核心矛盾或情绪转折 + 对主线或角色弧的关键影响(非流水步骤) |
**示例(符合规范)**
- 角色·奇琳:*「用眼泪给客人调制美酒,眼泪从未为自己而流;东京打工妹气质、努力坚强,过度渴望他人爱与认可。」*(身份+矛盾+钩子,约 50 字)
- 设定·罐头:*「机体维持生存的综合凝胶,每日必需品;迷梦/特别罐头由记忆制造、激发原型人性,与销赛、戈塔什、暴动线核心相关。」*(功能+作用+主线钩子)
**反例(偏流程,不宜作 summary)**
- 节拍:*「火山表达模块崩溃,堆积很多没说出口的话。效率审查司拦住导致紧张。帮助校准情绪处理器,让他自信起来。」* → 可改为强调矛盾与落点,例如:*「火山因审查司拦截积压未说之话、表达崩溃;维修中校准情绪处理器,落点振作与自信。」*(≤60 字,含谁、矛盾、对角色/主线的影响)
新建或更新 Bible/Beat 时,summary 须满足上述规范;与正文「一句话」一致,但可更压缩以适配 60 字上限。
---
## 新建文件流程
- **人类**:命令面板 → `Templater: Create new note from template` → 选模板 → 保存到对应目录。
- **AI**:读取 `template/tpl-*.md`,复制内容,替换 `{{xxx}}` 为实际值,写入 `kb/bible/角色/``kb/bible/设定/``kb/beats/` 等。
---
## 修改模板时
修改 `template/` 下任意 `tpl-*.md` 后,需**同步到 `kb/template/`**,保证 Obsidian 内 Templater 使用最新版本。
---
## Beat 叙事信源迁移(fiction_source
Beat 的叙事 SSOT 不是永远写在 Fiction 区——它随开发阶段迁移。`fiction_source` 字段标记当前信源位置,Fiction 区的详略随之变化。
| 阶段 | fiction_source | Fiction 区写什么 | 典型 dev_status |
|------|---------------|-----------------|----------------|
| **short-fiction** | `self` | 几段简要叙事,即 SSOT 本体 | fiction |
| **flow** | `self` 或外部路径 | 流程/步骤/机制描述;若独立成文档则指向它 | prototype |
| **full-fiction** | `self` | 完整剧本级 fiction,即 SSOT 本体 | fiction |
| **yarn** | Yarn 文件夹路径 | **叙事骨架**(几句话概括流程),完整内容见 Yarn | playable / function / close |
**规则**
- `fiction_source: self`(默认):Fiction 区就是叙事 SSOT,直接在里面写。
- `fiction_source: 外部路径`:叙事 SSOT 已迁移到外部,Fiction 区只保留骨架摘要 + 指向外部的链接。不要在 Fiction 区维护与外部重复的详细内容。
- **Beat 始终维护 Yarn 做不到的东西**summary、reveals、emotional_tone、player_feels、characters、terms、变更日志。这些元数据无论信源在哪个阶段都由 Beat 独家负责。
- 工程文档(功能需求、设计优化、Yarn command 说明等)跟 Yarn 放一起,不搬进 kb。
- 信源迁移时在变更日志中记录。
---
## Bible 可读性与结构(自然语言优先)
- **开篇必读**:正文最前用「一句话」+「自然语言介绍」让人和 AI 快速抓意图;假设读者不知道该概念,用 2~5 段连贯文字说明「是什么、在剧情里起什么作用、和谁相关」,用 `[[wikilink]]` 关联角色与设定。
- **自然语言介绍与 SSOT 同步**:每当 SSOT 发生重大变更(如核心矛盾、身份、生死状态变化)时,必须检查并重写「自然语言介绍」,避免介绍过时。
- **详情可折叠**:权威设定(定义、流程、时间线、实体关系网)、待确认/冲突、变更日志/来源索引可放在 Obsidian 折叠块(`> [!abstract]- 标题` 等)中,需要时再展开;或保留在 YAML 中供机器用。
- **模板参考**:新建/大改 bible 时以 `template/tpl-worldbuilding.md``template/tpl-character.md` 为参考;新建提案时以 `template/tpl-proposal.md` 为参考。上述模板已同步到 `kb/template/` 供 Templater 使用。
---
## 变更日志
| 日期 | 变更内容 | 决策理由 / 来源 |
|------|---------|-----------------|
| 2026-02-25 | 新增「summary 写作规范」:模板「身份/定位+核心矛盾或功能+与主线钩子」、≤60 字、类型侧重与正反例 | 统一第一层渐进式读取的 summary 质量,避免偏流程描述;见项目 CHANGELOG |
| 2026-02-25 | 新增「Beat 叙事信源迁移(fiction_source)」一节 | Beat 职责重定义:叙事 SSOT 随阶段迁移,详见 [[kb/decisions/2026-02-25-Beat职责重定义与叙事信源迁移]] |