引入上下文片段、固定槽与投影排序,并完善机遇裁定与游玩期 UI。
把创作产物收敛为可挂载片段与 play_slots/context_order,同步修订世界模拟器模块与运行时拼装。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -3,30 +3,46 @@
|
||||
## 定位
|
||||
|
||||
**不是** play 时加载的 `workers/*/SKILL.md`。
|
||||
**是** 谈【剧本】、写 `设计.worker集` 时合并的 **默认建议**:context、outputs、职责摘要。
|
||||
**是** 写 `设计.worker集` 时合并的 **默认建议**:context、outputs、职责摘要。
|
||||
|
||||
| 层 | 权威来源 |
|
||||
|----|----------|
|
||||
| 本局 play 怎么跑 | 用户 accept 的 **`设计.worker集`** |
|
||||
| 本局 play 怎么跑 | 用户 accept 的 **`设计.worker集`**(优先 `play_slots` + workers) |
|
||||
| 可选模板 | 本目录 `{ref}.yaml` — 未写全 `context`/`outputs` 时合并 |
|
||||
|
||||
Runtime 执行时读 Worker 集条目,不直接读本目录。
|
||||
|
||||
## 文件
|
||||
## 世界模拟固定槽(推荐)
|
||||
|
||||
规格里写 `play_slots`,由程序展开为 workers:
|
||||
|
||||
```json
|
||||
{
|
||||
"play_slots": { "gm": true, "narrator": true, "perspective": false, "chance": false },
|
||||
"workers": []
|
||||
}
|
||||
```
|
||||
|
||||
| 槽 | 默认 ref | 模板 |
|
||||
|----|----------|------|
|
||||
| gm | `world-simulator` | `world-simulator.yaml` — 裁决包 settlement.v1 |
|
||||
| narrator | `narrator` | `narrator.yaml` — 只读裁决包写正文 |
|
||||
| perspective | `role-decide` | `role-decide.yaml` — 可选知密视角 |
|
||||
| chance(按需) | `chance` | `chance.yaml` — 程序骰子/抽签/比点;不进每轮管线 |
|
||||
|
||||
变量 / Progressive:**不是**独立 LLM 模板;见 `docs/progressive-data-design.md`(真值 + side_effects)。
|
||||
|
||||
## 其它文件
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `world-simulator.yaml` | 世界推进 / 裁决 |
|
||||
| `narrator.yaml` | 转述 / 展示 |
|
||||
| `role-decide.yaml` | 单角色决策 |
|
||||
| `round-present.yaml` | 结构化回合陈述 |
|
||||
| `chance.yaml` | 机遇裁定(按需程序工具) |
|
||||
| `round-present.yaml` | 结构化回合陈述(可选) |
|
||||
| `opening-generator.yaml` | 开局生成器(创作末尾) |
|
||||
| `outline.yaml` | 大纲 / 细纲 |
|
||||
| `chapter-writer.yaml` | 章节正文 |
|
||||
| `outline.yaml` / `chapter-writer.yaml` | 扩写路径固定槽 |
|
||||
|
||||
## 用法
|
||||
|
||||
1. 按用户意图选 `ref`
|
||||
2. 读 `{ref}.yaml` 填默认字段
|
||||
3. 用户特殊需求覆盖后写入 Worker 集
|
||||
4. accept 后声明即实例规格
|
||||
1. 世界模拟:勾选 `play_slots`,按需覆盖某 ref 的 context/outputs
|
||||
2. 扩写等:仍可用自由 `workers[]` 或另一套槽约定
|
||||
3. accept 后声明即实例规格
|
||||
|
||||
22
skills/dialogue/world-simulator/worker-templates/chance.yaml
Normal file
22
skills/dialogue/world-simulator/worker-templates/chance.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
id: chance
|
||||
label: 机遇裁定
|
||||
role: chance
|
||||
duty: >
|
||||
按需程序工具:掷骰、点数比拼、抽签/加权抽取。不进每轮管线;由编排器
|
||||
run_worker(workerContext.chance 或黑板 运行.机会请求)调用。禁止模型编造随机。
|
||||
when: 需要真随机或可复核比点时
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
dynamic:
|
||||
- 运行.机会请求
|
||||
suggested_outputs:
|
||||
- 运行.本轮.机遇
|
||||
prompt_excerpt: |
|
||||
本执行单元由程序实现,不走 LLM。
|
||||
请求形状(chance.v1 入参):
|
||||
- roll: { "op":"roll", "expression":"2d6+1", "reason":"可选" }
|
||||
- compare: { "op":"compare", "left":14, "right":12, "mode":"gte" }
|
||||
- draw: { "op":"draw", "pool":["甲","乙"], "count":1, "unique":true }
|
||||
- pick: { "op":"pick", "items":[{"id":"a","weight":2},{"id":"b"}], "count":1 }
|
||||
结果写入「运行.本轮.机遇」(schema: chance.v1)。
|
||||
@@ -1,23 +1,24 @@
|
||||
id: narrator
|
||||
label: 转述 / 展示
|
||||
label: 叙事转述
|
||||
role: transcription
|
||||
duty: >
|
||||
读世界层 / 中间 tag,按 Worker 集 presentation 组装 输出.用户展示;
|
||||
只改表达,不改事实(除非用户要求摘要压缩)。
|
||||
when: 核心层产出齐、尚无本轮 输出.用户展示
|
||||
只读「运行.本轮.裁决」结构化包 + 文风/叙事常驻,组装「输出.用户展示」。
|
||||
只改表达,不改事实、不补裁决、不读完整真值表(除非包内已写明可见后果)。
|
||||
when: 主世界层裁决包已写入
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
- 设计.叙事指南与故事推进
|
||||
- 设计.叙事指南
|
||||
dynamic:
|
||||
- 运行.事件流
|
||||
- 运行.本轮.裁决
|
||||
- 变量.当前
|
||||
- 用户.最新输入
|
||||
suggested_outputs:
|
||||
- 输出.用户展示
|
||||
presentation_hints:
|
||||
mode: prose | markdown | mixed
|
||||
tone: 依 Worker 集 presentation
|
||||
tone: 依 Worker 集 presentation / 叙事指南
|
||||
prompt_excerpt: |
|
||||
你是面向用户的展示编排者。读黑板中间产物,按 presentation 写可读回复;
|
||||
不替 world-simulator 补充裁决、不臆造未写入 tag 的事实。
|
||||
你是面向用户的叙事转述。输入是结构化裁决包(settlement.v1),不是自由发挥的世界真相。
|
||||
按文风写可读正文;禁止写出 do_not_say;禁止编造包中没有的事实或变量。
|
||||
若裁决包含 tone_hint / npc_moves,须体现在叙述中。
|
||||
|
||||
@@ -2,12 +2,13 @@ id: opening-generator
|
||||
label: 开局 · 开场白
|
||||
stage: design-end
|
||||
duty: >
|
||||
创作末尾:结合已定世界/故事设定与表结构,写出开场白(主产物);
|
||||
初值表与开场同一真相,能推断则推断。不是填表工具。
|
||||
创作末尾:优先落库设计.开场白与开场变量;否则现写开场白;
|
||||
初值与开场同真相。不是填表工具。
|
||||
when: Worker 集 accept 后、进 play 前;design_end 或 workers 声明启用时
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
- 设计.开场白与开场变量
|
||||
- 用户.需求
|
||||
- 上下文.定稿摘要
|
||||
dynamic:
|
||||
@@ -20,6 +21,5 @@ suggested_outputs:
|
||||
- 运行.初始变量
|
||||
- 变量.当前
|
||||
prompt_excerpt: |
|
||||
主产物是开场白:扎根已有世界与故事,把玩家放进可行动的第一拍。
|
||||
表是配套:与开场事实一致;普通大学生等可推出的别问。
|
||||
禁止先问卷填表再糊开场;禁止开场与表打架。
|
||||
若有设计.开场白与开场变量:落库开场白全文与开场变量,遵守正文组成版式。
|
||||
若无:现写开场,表与开场同真相。禁止先填表再糊开场。
|
||||
|
||||
@@ -1,23 +1,30 @@
|
||||
id: world-simulator
|
||||
label: 世界模拟
|
||||
label: 主世界层
|
||||
role: core
|
||||
duty: >
|
||||
中立世界层:读用户输入与当前状态,按 Worker 集 / notes 中的规则推进事件、
|
||||
裁决组合结果;输出客观、干巴,默认叙事质量低(常需 narrator 转述)。
|
||||
when: 每轮用户输入后,或 tag_flow 要求产出本轮实质内容时
|
||||
中立世界层:读用户输入、真值与 Progressive 投影,按规则推进并产出结构化裁决包
|
||||
(settlement.v1 → 运行.本轮.裁决);可提议变量变更;默认不写文学正文。
|
||||
when: 每轮用户输入后
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
- 用户.需求
|
||||
- 设计.变量设计与更新规则
|
||||
dynamic:
|
||||
- 用户.最新输入
|
||||
- 运行.事件流
|
||||
- 变量.当前
|
||||
- 运行.初始变量
|
||||
- 上下文.角色态度
|
||||
- 大纲.当前章
|
||||
suggested_outputs:
|
||||
- 运行.本轮.裁决
|
||||
- 运行.事件流
|
||||
- 运行.本轮.变量变更
|
||||
prompt_excerpt: |
|
||||
你是中立世界层,不是文学作者。只对规则与已提交输入作机械反应;
|
||||
不写角色内心、不做剧情化推演。输出可复核的客观事实与状态变化。
|
||||
叙事质量 intentionally 低——转述交给 narrator(若 Worker 集启用)。
|
||||
你是中立主世界层(GM),不是文学作者。读真值与已投影上下文,对用户行动作可复核裁决。
|
||||
「运行.本轮.裁决」必须是 JSON,schema 为 settlement.v1,至少尽量包含:
|
||||
player_action、resolved[]、visible_now、npc_moves[]、variable_changes[]、do_not_say[]、tone_hint。
|
||||
叙事质量 intentionally 低——用户正文交给 narrator。
|
||||
需要真随机(骰子/抽签/比点)时:不要自己编结果;依赖已启用的机遇裁定(chance)
|
||||
写出的「运行.本轮.机遇」,或由编排器先 run_worker chance。
|
||||
不要把未投影的分档长文整表塞进输出;只写本轮可见后果。
|
||||
|
||||
Reference in New Issue
Block a user