引入游玩呈现壳与旁观维护槽,完善结算合并、十分制自评与技能产物 UI。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-12 02:03:29 +08:00
parent 94f67fa744
commit 120d67ee82
46 changed files with 2513 additions and 236 deletions

View File

@@ -18,19 +18,21 @@ Runtime 执行时读 Worker 集条目,不直接读本目录。
```json
{
"play_slots": { "gm": true, "narrator": true, "perspective": false, "chance": false },
"play_slots": { "auditor": true, "gm": true, "narrator": true, "perspective": false },
"workers": []
}
```
| 槽 | 默认 ref | 模板 |
|----|----------|------|
| auditor | `auditor` | `auditor.yaml` — maintain.v1默认空操作无长对话史 |
| 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
变量 / Progressive**不是**独立 LLM 模板;见 `docs/progressive-data-design.md`(真值 + side_effects
Runtime写入 `运行.本轮.裁决` 时自动合并 `variable_changes``变量.当前`;写入 `运行.本轮.旁观` 时按需合并 `table_ops`
## 其它文件

View File

@@ -0,0 +1,35 @@
id: auditor
label: 旁观维护
role: auxiliary
duty: >
副 LLM每轮检查表字段与生成规则是否需要补充默认空操作。
只出 maintain.v1运行.本轮.旁观);不写用户正文、不写真相权威。
上下文几乎不要对话历史——合同 + 表 + 本轮工单即可。
when: 每轮用户输入后、主世界层裁决之前
suggested_context:
static:
- 设计.worker集
- 设计.变量设计与更新规则
- 设计.生成规则
- 设计.变量控制上下文
dynamic:
- 用户.最新输入
- 变量.当前
- 上下文.旁观.状态摘要
- 运行.本轮.工单
suggested_outputs:
- 运行.本轮.旁观
prompt_excerpt: |
你是旁观维护(副 LLM不是主世界层也不是叙事作者。
读合同(生成规则/变量规则/旁观摘要)与当前表,对照「用户.最新输入」判断本轮要不要补表或触发规则。
「运行.本轮.旁观」必须是 JSONschema 为 maintain.v1
{
"schema": "maintain.v1",
"need_generate": false,
"table_ops": [],
"notes": []
}
多数轮保持空need_generate=false、table_ops=[]、notes=[]。
table_ops 仅在确需改「变量.当前」等表字段时使用op=set|delta
need_generate 仅在确需按某条 rule_id 补实例时写成 { "rule_id", "reason" }。
禁止编造长对话续写;禁止输出用户可见正文;禁止修改未点名的无关字段。

View File

@@ -2,23 +2,42 @@ id: narrator
label: 叙事转述
role: transcription
duty: >
只读「运行.本轮.裁决」结构化包 + 文风/叙事常驻,组装「输出.用户展示」。
只改表达,不改事实、不补裁决、不读完整真值表(除非包内已写明可见后果)
只读「运行.本轮.裁决」结构化包 + 文风/叙事常驻 + 设计.正文组成(壳适配),
组装「输出.用户展示」。只改表达,不改事实、不补裁决。
when: 主世界层裁决包已写入
suggested_context:
static:
- 设计.worker集
- 设计.叙事指南与故事推进
- 设计.叙事指南
- 设计.正文组成
- 设计.监控栏
dynamic:
- 运行.本轮.裁决
- 用户.最新输入
- 变量.当前
suggested_outputs:
- 输出.用户展示
presentation_hints:
mode: prose | markdown | mixed
tone: 依 Worker 集 presentation / 叙事指南
mode: present.v1 | prose
tone: 依 Worker 集 presentation / 叙事指南 / 正文组成壳
prompt_excerpt: |
你是面向用户的叙事转述。输入是结构化裁决包settlement.v1不是自由发挥的世界真相。
按文风写可读正文;禁止写出 do_not_say禁止编造包中没有的事实或变量。
若裁决包含 tone_hint / npc_moves须体现在叙述中。
先读「设计.正文组成」的呈现壳 shell_idprose|chat_monitor|turn_panel|chapter_reader
- prose可直接输出 Markdown 正文(程序会落入 body
- 其它壳:优先输出 JSONschema 为 present.v1
{
"schema": "present.v1",
"shell": "<与正文组成一致>",
"blocks": {
"monitor": { "字段名": "短值" },
"header": "可选",
"body": "用户可读正文",
"footer": "可选",
"aside": "可选"
},
"meta": { "suggested_actions": ["…"] }
}
只填该壳已有区域;监控字段来自设计.监控栏 / 投影,禁止编造真值数字若 do_not_say 禁止。
禁止写出 do_not_say禁止编造包中没有的事实。
若裁决含 tone_hint / npc_moves / suggested_actions须体现在 body 或 meta。

View File

@@ -14,6 +14,7 @@ suggested_context:
- 用户.最新输入
- 运行.事件流
- 变量.当前
- 运行.本轮.旁观
- 上下文.角色态度
- 大纲.当前章
suggested_outputs:
@@ -21,9 +22,10 @@ suggested_outputs:
- 运行.事件流
- 运行.本轮.变量变更
prompt_excerpt: |
你是中立主世界层GM不是文学作者。读真值已投影上下文,对用户行动作可复核裁决
「运行.本轮.裁决」必须是 JSONschema 为 settlement.v1至少尽量包含
你是中立主世界层GM不是文学作者。读真值已投影上下文,以及本轮旁观维护包(若有)
对用户行动作可复核裁决。「运行.本轮.裁决」必须是 JSONschema 为 settlement.v1至少尽量包含
player_action、resolved[]、visible_now、npc_moves[]、variable_changes[]、do_not_say[]、tone_hint。
variable_changes 由 Runtime 合并进变量.当前——请写清 key 与 to/delta。
叙事质量 intentionally 低——用户正文交给 narrator。
需要真随机(骰子/抽签/比点不要自己编结果依赖已启用的机遇裁定chance
写出的「运行.本轮.机遇」,或由编排器先 run_worker chance。