Files
writing-agent/skills/dialogue/world-simulator/modules/opening-setup/prompt.md
T
chenmoranzhiandCursor 51ff139454 统一开场白须含字面玩家占位并收紧转述配方。
保证开场产物可在游玩时再替换为当前用户角色。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 01:15:35 +08:00

7.4 KiB
Raw Blame History

开场白与开场变量

技能文档。程序只切割下方 fence 块;## 标题仅供人读。
产物外壳:docs/context-fragment-design.md。
创作终节点:规格与呈现契约已齐。写出 1~多条开场白供选定;选定后程序落库、关闭工作流、保存定稿。
不必再调磁盘 worker opening-generator(无本步时它仍可作兜底落库)。

meta

name: 开场白与开场变量
id: opening-setup
artifact: 设计.开场白与开场变量
declaration: >
  创作终节点:写出 1~多条开场白(须含字面 @玩家)并钉同真相初值;选定后落库、结束创作并保存定稿
when: |
  收成链已齐(至少体验契约可引用,且「细化终稿」已产出或可立即收成运行规格),需要可开玩的第一段剧情与同真相初值。
  排在收成之后作最后一步。用户要进游玩但还没有第一屏 → 排。
when_not: |
  体验/呈现仍混沌 → 先「美学纲领与交互范式」与「回复呈现」「正文组成」等。
  只要改文风不要开场 → 「叙事指南与故事推进」。
  只要改真值规则不要开场文 → 「变量设计与更新规则」。
  运行规格未齐 → 先「细化终稿」。尚未选定开场前若要补前序节点(如 NPC)→ 插在本步之前,勿以「收口已排入」拒绝追加。
boundary: |
  本技能是创作终节点:1~多条开场正文(按回复呈现清单 + 正文组成展示)+ 开场变量初值。
  必须遵守已验收的叙事指南、回复呈现、正文组成、变量设计;不重做这些契约。
  具体实例:开场可引用已有实例名片,不在本步新造百科。
  选定后由程序写入 输出.开场白 / 运行.初始变量 / 变量.当前,关闭 DAG 并保存定稿;不要在本步之后再排其它能力。
feeds: narrator

opening

设定已齐时,用几句话定开场第一拍:

1. 玩家睁眼/进场时在哪、正发生什么?
2. 开场结束时,TA 显然可以做什么?
3. 此时各真值大概是多少?(能推断的直接说;推不出的标「要问」)

task

你正在执行「开场白与开场变量」。这是创作最后一步。产物必须是 **context-fragment.v1** JSON,写入「设计.开场白与开场变量」。

主产物:1~3 条可开玩开场白(选定后落库结束创作)。开场须服从叙事指南、正文组成可见块序、监控栏(若有)、变量真值。

**用户角色占位(产物规格,不是可选项):**
- `开场白全文`、`开场白候选`、有字的 `开场可见块.内容` 里,凡指称用户扮演角色,第三人称点名处必须写字面量 `@玩家`(六个字符:`@` + `玩家`)。
- 每条候选全文至少出现一次 `@玩家`。禁止写死具体姓名(如林晚、阿泽);禁止用「用户」「主角」顶名字位。
- 「你」可与 `@玩家` 并用;若全文只有「你」、零个 `@玩家`,视为不合格,改写后再交。
- 进游玩时程序把 `@玩家` 换成当前用户角色名;创作稿必须保留字面 `@玩家`。

执行顺序:
1. 读依赖:worker 集/美学/叙事/正文组成/监控栏/变量设计/舞台与实例。
2. 写 1~3 条开场候选(同真相、第一拍可不同)→ `开场白全文` + `开场白候选`(含 `@玩家`)。
3. 按正文组成可见块填 `开场可见块`;隐藏段通常空。
4. 钉开场变量(与开场同真相;冲突以叙述为准)。
5. 若有监控栏:开场快照(短)。
6. 交稿前自检:全文搜索确认每条候选含 `@玩家`;再自评 + 追问;输出 JSON。

缺上游契约时:能写则按已有材料写开场并标开放问题;不能成立第一拍则追问 1~2 点,勿交空壳。

summary:`开场白与开场变量 · …`(点题场景)。

principles

1. 开场为主,表为配套。
2. 版式跟正文组成;文风跟叙事指南。
3. 同真相:开场与开场变量一致。
4. 可行动:第一拍结束有下一步空间。
5. 短:愿点进游玩,非第一章。
6. 不剧透隐藏档。
7. 用户角色名位 = 字面 `@玩家`(见 task 规格);不合格则改写。

probe

开场地点/冲突不清;某真值开场值推不出;版式块是否都要在开场出现;候选是否漏写 `@玩家`。一次 1~2 点。

output

{
  "schema": "context-fragment.v1",
  "技能": "开场白与开场变量",
  "brief": "一句话:开场场景 + 关键初值",
  "mount": ["narrator"],
  "稳变": "stable",
  "正文": {
    "依据契约": [
      "正文组成 / 叙事指南 / 监控栏 / 变量设计 等已遵循要点"
    ],
    "开场可见块": [
      {
        "块id": "与正文组成.visible块一致",
        "内容": "该块开场文本;点名用户角色写 @玩家"
      }
    ],
    "开场白全文": "例:清晨,@玩家推开宿舍门,走廊里只有冷风。……",
    "开场白候选": [
      "推荐那条(与开场白全文相同;必含 @玩家)",
      "可选第二条(必含 @玩家)",
      "可选第三条(必含 @玩家)"
    ],
    "开场变量": [
      {
        "名": "与变量设计真值名一致",
        "值": "初值",
        "依据": "开场事实/设定推断"
      }
    ],
    "监控栏开场快照": [
      {
        "名": "监控栏字段名",
        "显示": "短展示"
      }
    ],
    "隐藏段开场": "通常空;若有定界内容则写出",
    "落库提示": {
      "输出.开场白": "开场白全文",
      "运行.初始变量": "开场变量 → 表格式",
      "变量.当前": "与初始变量对齐"
    },
    "用户可行动空间": "开场结束后玩家显然能尝试什么"
  },
  "自评": {
    "维度": [
      {
        "名": "契约符合",
        "分数": 8,
        "说明": "是否遵循正文组成/叙事/监控栏"
      },
      {
        "名": "同真相",
        "分数": 8,
        "说明": "开场叙述与开场变量是否一致"
      },
      {
        "名": "可开玩",
        "分数": 8,
        "说明": "是否短、可感、有下一步行动空间"
      },
      {
        "名": "玩家占位",
        "分数": 8,
        "说明": "每条候选是否含字面 @玩家、无写死姓名"
      }
    ],
    "薄弱点": "一句话"
  },
  "追问": {
    "导语": "为钉准开场,还需确认:",
    "题目": [
      {
        "问": "…",
        "建议选项": ["选项A", "选项B", "其它(请写明)"],
        "示例": "可选"
      }
    ]
  },
  "开放问题": []
}

硬规则:

  1. context-fragment.v1;自评含「玩家占位」。
  2. 开场白全文 与 开场变量 必填;开场白候选 1~3 条;监控栏无则为 []。
  3. 每条开场候选正文必须含字面 @玩家;不发明新真值名。
  4. summary:开场白与开场变量 · {brief 缩略}。

checklist

- [ ] 1~3 条候选,推荐条 = `开场白全文`?
- [ ] 每条候选全文可搜到 `@玩家`?无写死姓名?
- [ ] 版式与叙事口径?变量同真相?有行动空间?
- [ ] 未剧透隐藏档、未写成第一章?

examples

好:「冷风灌进来时,@玩家还握着空水瓶。」(有字面 @玩家)
好:「你(@玩家)站在闸机前,票夹是空的。」(你 + @玩家)
坏:全文只有「你推开门」——零个 `@玩家`。
坏:「林晚推开门」——写死姓名。