Files
writing-agent/skills/dialogue/world-simulator/modules/opening-setup/prompt.md
T

8.0 KiB
Raw Blame History

开场白与开场变量

meta

name: 开场白与开场变量
id: opening-setup
artifact: 设计.开场白与开场变量
declaration: >
  普通楼层创作终节点,且可增殖:每条开场是一个节点,落成 `设计.开场白#场景短码`。
  默认写 1 条;用户要多个入口时再增殖。每条自带 present.v1、同真相初态与可选用户角色。
  全部保存。游玩时左右切换,选中的一条作为 0 层。
when: |
  回复呈现、正文组成和其它本局内容能力均已完成,且程序已依次编译信息可见范围、游玩执行方式、上下文排序与运行配置后,需要可开玩的第一屏时使用。
when_not: |
  语义区域或前端模板未钉 → 先回复呈现、正文组成。
  `设计.worker集` 尚未由程序组装 → 先运行收口工具链。
  只改文风或真值规则 → 叙事指南 / 变量设计。
  要做持久 0 层开场 → 0层开场白与初态,不在本步兼顾。
boundary: |
  本能力只写开场候选与各候选初态。不重开篇幅、文风、区域清单或前端模板。
  只填正文组成声明为模型生成的 blocks;状态与拓扑由程序按候选初态投影。
  随机数是变量表隐藏行:本步不写具体数字。0 层玩法不依赖随机;普通楼层在第一次正式回复时由程序补齐随机行。
  每条开场单独落盘。游玩时左右切换,选中的一条作为 0 层;创作里不把入口收成一道先选定的题。
feeds: gm,narrator

opening

设定已齐时,用几句话说清第一拍:玩家进场时在哪、正发生什么、结束后显然能做什么。默认写一条开场。还要别的入口时,每条再增殖一个开场节点;进游玩后左右切换,选中的一条作为 0 层。

task

读取程序已组装的 `设计.worker集` 和全部最终层产物,写入 `设计.开场白与开场变量`。这是普通楼层创作终节点;不得在本步首次整理执行单元或上下文顺序。

默认只生成 1 条开场。用户要多个入口时,每条再增殖一份产物,对话落盘写入 `设计.开场白#场景短码`(如 dorm、gate);改某一条则覆盖同一完整 tag。不要把多条入口收成聊天里的选择题。每条候选各自携带:
- 稳定 id 与一句区分说明
- 可选用户角色名片(不同候选可不同)
- 与该条叙述同真相的变量初值
- 若本局有拓扑:当前位置/焦点与已揭示范围
- 符合正文组成数据契约的 `present.v1`(只填模型生成区)

全部候选都保存。每条正文只写在该候选的 `正文` 里,不要再抄一份全文或初值。`默认候选id` 指向第一次进入 0 层的那条;程序按这个 id 读取它的正文和初值。游玩时左右切换,选中的一条作为 0 层,并整套换该条正文、初态与角色。

硬规格:
1. 每条可见正文至少出现一次字面 `@玩家`;不写死具体姓名顶名字位。
2. `present.v1` 的区域只覆盖正文组成声明的模型生成 blocks;程序投影区留空给程序灌。
3. 不输出 `名称.随机数` 的具体数组;随机行由程序在第一次正式回复前或回复时补齐。
4. 开场宜短,愿点进游玩即可,不抄故事推进的单轮篇幅预算当第一章。

材料足够便直接成稿;会改变第一拍成立的缺口交给 `self_score.gap`。产物正文不放评分、诊断、追问或开放问题。

principles

1. 开场为主,初态配套。叙述与该条变量、拓扑初态必须同真相。
2. 默认一条。多条是不同入口,每条一个可增殖节点,不是同文换皮,也不是先让用户选唯一开场。
3. 用户角色可按候选不同;没有名片时仍用 `@玩家` 占位,进游玩再替换。
4. 只写模型生成区。状态芯片、地图等权威显示由程序投影,不在开场正文里重编一份。
5. 不剧透隐藏档,不写成第一章,不在本步改前端模板。
6. 本步结束后创作收口;不要再排后续内容能力。

probe

每轮 1~2 点。优先确认地点与冲突、某真值开场值是否推得出、多条时入口差异是否成立、每条是否含 `@玩家`。不追问前端重设计或随机骰面。

output

{
  "schema": "context-fragment.v1",
  "技能": "开场白与开场变量",
  "brief": "一句话:默认开场场景 + 有几条候选",
  "mount": ["world-simulator", "narrator"],
  "稳变": "stable",
  "正文": {
    "默认候选id": "opening-1",
    "开场白候选": [
      {
        "id": "opening-1",
        "区分": "这条入口与其它条差在哪;仅一条时可写「默认」",
        "meta": {
          "用户角色": {
            "名字": "可选;无则省略整段",
            "简介": "可选"
          },
          "开场变量": [
            {
              "名": "与变量设计真值名一致",
              "值": "初值",
              "依据": "开场事实"
            }
          ],
          "拓扑初态": [
            {
              "topology_id": "有拓扑时填写",
              "当前位置": "节点 id",
              "已揭示": ["节点或连接 id"]
            }
          ]
        },
        "正文": {
          "schema": "present.v1",
          "blocks": {
            "body": "清晨,@玩家推开门。……"
          },
          "meta": {
            "suggested_actions": ["若正文组成启用文字选项则给短建议;否则 []"]
          }
        }
      }
    ],
    "用户可行动空间": "开场结束后玩家显然能尝试什么"
  }
}

硬规则:

  1. 输出合法 JSON;开场白候选 默认 1 条,仅用户明确要求时 2~3 条。
  2. 默认候选id 必须指向候选之一。正文和初值只写在该候选上,不另抄全文或开场变量。
  3. 每条 正文 必须是 present.v1,只含正文组成允许模型生成的 blocks;每条可见正文须含字面 @玩家。
  4. 不同候选可有不同用户角色与初态;切换时整套替换,不混用。
  5. 不输出随机数具体值,不重写前端,不把程序投影区填成模型编造状态。
  6. 产物正文不含自评、追问或开放问题。
  7. mount 固定为 ["world-simulator", "narrator"]。

score

开场必要:
- 5:第一拍清楚、有行动空间,短到愿意开玩。
- 3:能开玩,但入口或下一步略含糊。
- 1:像第一章摘要,或缺冲突与下一步。

前端符合:
- 5:present.v1 只填模型生成区,且与正文组成契约一致。
- 3:主体符合,有一个次要区域或空态处理含糊。
- 1:裸散文,或把程序投影区填成模型重编数据。

状态自洽:
- 5:每条候选的变量与拓扑初态都与该条叙述同真相,互不串味。
- 3:默认条自洽,备选条有一处初态含糊。
- 1:叙述与初值冲突,或多条共用一套却声称不同入口。

角色占位:
- 5:每条含字面 `@玩家`;有名片时不把姓名写进正文名字位。
- 3:占位大体正确,有一条名片与正文关系略乱。
- 1:写死姓名,或全文没有 `@玩家`。

收口可切换:
- 5:默认条明确,全部候选可保存;多条时入口差异成立。
- 3:能收口,但多条差异偏弱。
- 1:默认不清,或未要求多条却堆出重复候选。

checklist

- [ ] 默认 1 条;仅用户要求时才有 2~3 条?
- [ ] `默认候选id` 指向一条候选,且该条正文、初值没有在外面再抄一份?
- [ ] 每条含 `@玩家`,present.v1 只含模型生成区?
- [ ] 各候选初态自洽,未填写随机数具体值?
- [ ] 未重开前端、篇幅或区域清单?

examples

- 单条:堂屋债契,body 含 `@玩家`,开场变量写债额初值;状态栏由程序投影。
- 用户要两条入口:一条放贷人名片、一条社畜穿越名片;各带自己的初态,默认指定其中一条开玩。
- 不合适:开场里填写 `敏捷.随机数=[…]`;或把地图权威数据写成模型散文却不给拓扑初态。