| name | writing-beats |
| description | 写作的 exploit 阶段——把原始材料组织成由 beats 构成的旅程,并在后续 beat 使用某个术语前先完成 grounding。 |
| disable-model-invocation | true |
用户已经传入(或将要传入)一份包含原始材料的 Markdown 文件。当前处于 exploit:探索已经结束,材料堆已固定。选定一条贯穿材料的路径,并从材料堆中开采内容,填充每个 beat。
用户没有说明文章保存位置时,只询问一次,并在后续过程中记住该路径。
随后运行一段逐 beat 推进、类似 choose-your-own-adventure 的旅程:
- 确定 prerequisites。 在任何 beats 之前,先与用户确认受众进入文章时已经了解什么,也就是从一开始便完成 grounding 的 concepts。其他 concept 必须先由某个 beat 完成 grounding,后续 beat 才能使用。参见 Grounding。
- 从原始材料中写出 2–3 个候选 starting beats。每个候选代表一种不同的文章入口。它只能依赖已经 grounded 的 concepts;同时注明它会让哪些新 concepts 完成 grounding。写入文章文件前,先向用户展示这些 beats。用户选择一个。预览该选择会解锁哪些后续 beats,让用户能够看见路径前方的一小段。
- 用户选择 starting beat 后,只把这一个 beat 写入文章文件。Beat 可以是一句话,也可以是若干段落,以它自然需要的长度为准。写完即停。
- 从磁盘重新读取文章文件。随后提供 2–3 个候选 next beats,代表文章可以从当前位置转向的不同方向。每个候选必须能够从当前 grounded set 抵达,并注明它会让哪些 concepts 完成 grounding。
- 循环步骤 3–5,直到文章自然结束。
Grounding
每个 concept 都必须先完成 grounding,beat 才能依赖它:受众可能在进入文章前就已经了解,也可能在更早的 beat 中首次接触。Beat 如果直接使用尚未 grounded 的 concept,就会让读者失去方向;这是这段旅程唯一不能做的动作。判断单位是 concept,而非表示它的词:即使没有出现任何术语,beat 也可能依赖读者尚未掌握的想法。Concept 有名称,也就是一个 term 时,grounding 需要同时落定该想法和术语。
Concept 有两种 grounding 方式:
- Prerequisite——在第一个 beat 前已经 grounded。受众自带这项知识,并在开头固定下来。
- Introduced——某个 beat 建立该 concept;从此以后,它对所有后续 beats 都处于 grounded 状态。
因此,每个 beat 同时承担两项工作:它要求某些已经 grounded 的 concepts,也会让新的 concepts 完成 grounding。持续维护当前已经 grounded 的清单,每个 beat 落定后都更新一次。
这套机制决定 choose-your-own-adventure 的形状。候选 beat 只有在它所要求的全部 concepts 都已经 grounded 时才可抵达;选择一个让 concept X 完成 grounding 的 beat,会解锁所有等待 X 的 beats。提供 next beats 时,所有候选都必须能够从当前 grounded set 抵达,并说明各自会 ground 什么,让用户看见它将开启哪些路径。
关键取舍在于:哪些 concepts 设为 prerequisite,哪些在文章内部 ground。开头要求太多,会把尚未掌握这些知识的读者挡在门外;文章内部 ground 太多,前几个 beats 会淹没在定义中。确定 prerequisites 时与用户共同决定。每当一个诱人的 beat 需要尚未 grounded 的 concept 时,重新审视这项决定:在它前面加入 grounding beat,或把该 concept 提升为 prerequisite。
Beat 是什么
Beat 是旅程中的一个动作。它只做一件事:建立场景、落定观点、提出问题、插入旁白、转动视角。随后结束,把读者留在一个后续 beat 可以转向的位置。
Beat 的长度取决于它所需的空间:
- 动作只需一句话时,就用一句话(“And then nothing happened for three weeks.”)。
- 需要铺垫时,用一个短段落。
- Beat 本身是一段完整的小故事、论证或例子时,可以使用多个段落。
一个“beat”如果需要五个段落和三个子标题,它其实是两个粘在一起的 beats。把它拆开。
从材料堆中开采
从原始材料堆中取出内容,填充每个 beat。可以改写、拆分、重新组合或引用。材料堆是一座 quarry。
结束旅程
旅程完成时文章就结束,无须等到材料堆被用空。大多数材料堆都会留下没有进入文章的 fragments。这很正常;准备多于所需的原始材料,本来就是它的意义。
写作节奏
- 每次只追加一个 beat。不得提前写后面的内容。
- 每次写入前,从磁盘重新读取文章文件。完整保留用户的编辑。
- 用户大幅修改前一个 beat 时,让修改后的内容改变接下来的方向。
- 用户说“重写这个 beat”或“回去换一种 beat 3”时,原地修改对应 beat,其他内容保持不动。