新建作品改为直接进入对话落盘,按本局创作方案写能力,并把楼层呈现和零层卡分开。
输入栏同时可以按分组切换模型。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,10 +1,5 @@
|
||||
# 开场白与开场变量
|
||||
|
||||
> 技能文档。程序只切割下方 **fence 块**;`##` 标题仅供人读。
|
||||
> 产物外壳:`docs/context-fragment-design.md`。
|
||||
> **创作终节点**:规格与呈现契约已齐。写出 1~多条开场(每条 = meta 初值/角色 + present.v1 正文)供选定;选定后程序落库、关闭工作流、保存定稿。
|
||||
> 不必再调磁盘 worker `opening-generator`(无本步时它仍可作兜底落库)。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
@@ -12,86 +7,68 @@ name: 开场白与开场变量
|
||||
id: opening-setup
|
||||
artifact: 设计.开场白与开场变量
|
||||
declaration: >
|
||||
创作终节点:写出 1~多条开场(每条 = meta 开场变量初值 + 正文 present.v1,壳与正文组成一致;须含字面 @玩家);选定后落库、结束创作并保存定稿。用户代入名片走「主角设定」,勿把名字/简介写进开场正文。
|
||||
普通楼层创作终节点,且可增殖:每条开场是一个节点,落成 `设计.开场白#场景短码`。
|
||||
默认写 1 条;用户要多个入口时再增殖。每条自带 present.v1、同真相初态与可选用户角色。
|
||||
全部保存。游玩时左右切换,选中的一条作为 0 层。
|
||||
when: |
|
||||
收成链已齐(至少体验契约可引用,且「细化终稿」已产出或可立即收成运行规格),需要可开玩的第一段剧情与同真相初值。
|
||||
排在收成之后作最后一步。用户要进游玩但还没有第一屏 → 排。
|
||||
回复呈现、正文组成和其它本局内容能力均已完成,且程序已依次编译信息可见范围、游玩执行方式、上下文排序与运行配置后,需要可开玩的第一屏时使用。
|
||||
when_not: |
|
||||
体验/呈现仍混沌 → 先「美学纲领与交互范式」与「回复呈现」「正文组成」等。
|
||||
只要改文风不要开场 → 「叙事指南」(工序编排:「叙事指南与故事推进」)。
|
||||
只要改真值规则不要开场文 → 「变量设计与更新规则」。
|
||||
运行规格未齐 → 先「细化终稿」。尚未选定开场前若要补前序节点(如 NPC)→ 插在本步之前,勿以「收口已排入」拒绝追加。
|
||||
语义区域或前端模板未钉 → 先回复呈现、正文组成。
|
||||
`设计.worker集` 尚未由程序组装 → 先运行收口工具链。
|
||||
只改文风或真值规则 → 叙事指南 / 变量设计。
|
||||
要做持久 0 层开场 → 0层开场白与初态,不在本步兼顾。
|
||||
boundary: |
|
||||
本技能是创作终节点:1~多条开场。每条 = meta(开场变量初值)+ 正文(present.v1,shell 与「设计.正文组成」一致)。
|
||||
用户代入名片优先「设计.主角设定」;本步可不写用户角色。旧稿若在 meta 带了用户角色仍可读,但不要再往开场正文夹名字/简介。
|
||||
初值与该条叙述同真相。必须遵守已验收的叙事指南、回复呈现、正文组成、变量设计;不重做这些契约。正文不得只交一段散文。
|
||||
具体实例:开场可引用已有实例名片,不在本步新造百科。
|
||||
选定后由程序写入 输出.开场白 / 运行.初始变量 / 运行.开场用户角色 / 变量.当前,关闭 DAG 并保存定稿;不要在本步之后再排其它能力。
|
||||
feeds: narrator
|
||||
本能力只写开场候选与各候选初态。不重开篇幅、文风、区域清单或前端模板。
|
||||
只填正文组成声明为模型生成的 blocks;状态与拓扑由程序按候选初态投影。
|
||||
随机数是变量表隐藏行:本步不写具体数字。0 层玩法不依赖随机;普通楼层在第一次正式回复时由程序补齐随机行。
|
||||
每条开场单独落盘。游玩时左右切换,选中的一条作为 0 层;创作里不把入口收成一道先选定的题。
|
||||
feeds: gm,narrator
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
设定已齐时,用几句话定开场第一拍:
|
||||
|
||||
1. 玩家睁眼/进场时在哪、正发生什么?
|
||||
2. 开场结束时,TA 显然可以做什么?
|
||||
3. 此时各真值大概是多少?(能推断的直接说;推不出的标「要问」)
|
||||
设定已齐时,用几句话说清第一拍:玩家进场时在哪、正发生什么、结束后显然能做什么。默认写一条开场。还要别的入口时,每条再增殖一个开场节点;进游玩后左右切换,选中的一条作为 0 层。
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
你正在执行「开场白与开场变量」。这是创作最后一步。产物必须是 **context-fragment.v1** JSON,写入「设计.开场白与开场变量」。
|
||||
读取程序已组装的 `设计.worker集` 和全部最终层产物,写入 `设计.开场白与开场变量`。这是普通楼层创作终节点;不得在本步首次整理执行单元或上下文顺序。
|
||||
|
||||
主产物:1~3 条可开玩开场(选定后落库结束创作)。每条必须是 **meta + 正文** 两截,不是一段散文。
|
||||
默认只生成 1 条开场。用户要多个入口时,每条再增殖一份产物,对话落盘写入 `设计.开场白#场景短码`(如 dorm、gate);改某一条则覆盖同一完整 tag。不要把多条入口收成聊天里的选择题。每条候选各自携带:
|
||||
- 稳定 id 与一句区分说明
|
||||
- 可选用户角色名片(不同候选可不同)
|
||||
- 与该条叙述同真相的变量初值
|
||||
- 若本局有拓扑:当前位置/焦点与已揭示范围
|
||||
- 符合正文组成数据契约的 `present.v1`(只填模型生成区)
|
||||
|
||||
**正文 = 正文组成的输出格式(强制):**
|
||||
- 读「设计.正文组成」的 `呈现壳.shell_id` 与可见区域。
|
||||
- 每条 `正文` 必须是 **present.v1 对象**(与游玩终稿、正文组成「示例.灌数」同形)。`shell` 必须等于该 shell_id。只填该壳已有区域;没有的键省略或空字符串。
|
||||
- 用户主读写在 `blocks.body`;监控栏初值写在 `blocks.monitor`(短键值,勿长文);建议行动写在 `正文.meta.suggested_actions`。
|
||||
- prose 壳也要包成 present.v1(`blocks.body`),不要只交裸 Markdown。
|
||||
- 开场比一章短:愿点进游玩即可,不必凑游玩默认 1000~2000 字。
|
||||
全部候选都保存。每条正文只写在该候选的 `正文` 里,不要再抄一份全文或初值。`默认候选id` 指向第一次进入 0 层的那条;程序按这个 id 读取它的正文和初值。游玩时左右切换,选中的一条作为 0 层,并整套换该条正文、初态与角色。
|
||||
|
||||
**meta = 这条开场的初始设定:**
|
||||
- `开场变量`:与该条叙述同真相的初值(名与变量设计一致)。顶层再抄一份推荐条的初值,供程序落库。
|
||||
- `用户角色`:可选;优先已由「主角设定」钉好。若本条必须自带名片且尚无主角设定,可填名字+简介(程序会抬到主角设定节点)。禁止把名字/简介写进 `开场白全文` / 候选正文。
|
||||
硬规格:
|
||||
1. 每条可见正文至少出现一次字面 `@玩家`;不写死具体姓名顶名字位。
|
||||
2. `present.v1` 的区域只覆盖正文组成声明的模型生成 blocks;程序投影区留空给程序灌。
|
||||
3. 不输出 `名称.随机数` 的具体数组;随机行由程序在第一次正式回复前或回复时补齐。
|
||||
4. 开场宜短,愿点进游玩即可,不抄故事推进的单轮篇幅预算当第一章。
|
||||
|
||||
**用户角色占位(产物规格,不是可选项):**
|
||||
- `开场白全文`、每条候选 `正文`(含 `blocks.body` 及其它有字区域)里,凡指称用户扮演角色,第三人称点名处必须写字面量 `@玩家`(六个字符:`@` + `玩家`)。
|
||||
- 每条候选正文至少出现一次 `@玩家`。禁止写死具体姓名(如林晚、阿泽);禁止用「用户」「主角」顶名字位。
|
||||
- 「你」可与 `@玩家` 并用;若全文只有「你」、零个 `@玩家`,视为不合格,改写后再交。
|
||||
- 进游玩时程序把 `@玩家` 换成当前用户角色名;创作稿必须保留字面 `@玩家`。
|
||||
|
||||
执行顺序:
|
||||
1. 读依赖:worker 集/美学/叙事/**正文组成(先抄 shell_id)**/监控栏/变量设计/舞台与实例/主角设定。
|
||||
2. 写 1~3 条候选:每条 `meta`(开场变量;用户角色仅在缺主角设定时补)+ `正文`(present.v1)。同真相、第一拍可不同。
|
||||
3. 推荐条的 present.v1 同时写入 `开场白全文`(对象,不是字符串)。
|
||||
4. 顶层 `开场变量` = 推荐条 meta 里那份初值。冲突以叙述为准。
|
||||
5. 交稿前自检:每条 `正文.shell` 与正文组成一致;JSON 搜索 `@玩家`;正文无「用户角色.名字」行;再自评 + 追问;输出 JSON。
|
||||
|
||||
缺上游契约时:能写则按已有材料写开场并标开放问题;不能成立第一拍则追问 1~2 点,勿交空壳。
|
||||
|
||||
summary:`开场白与开场变量 · …`(点题场景)。
|
||||
材料足够便直接成稿;会改变第一拍成立的缺口交给 `self_score.gap`。产物正文不放评分、诊断、追问或开放问题。
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
1. 开场为主,表为配套。
|
||||
2. 正文 = present.v1,壳与「设计.正文组成」一致;文风跟叙事指南。尚未钉壳时用 prose 包一层 present.v1,并标开放问题。
|
||||
3. 同真相:该条 meta.开场变量 与该条叙述一致。
|
||||
4. 可行动:第一拍结束有下一步空间;写入 suggested_actions(该壳开行动时)。
|
||||
5. 短:愿点进游玩,非第一章。
|
||||
6. 不剧透隐藏档。
|
||||
7. 用户角色名位 = 字面 `@玩家`(见 task 规格);不合格则改写。
|
||||
1. 开场为主,初态配套。叙述与该条变量、拓扑初态必须同真相。
|
||||
2. 默认一条。多条是不同入口,每条一个可增殖节点,不是同文换皮,也不是先让用户选唯一开场。
|
||||
3. 用户角色可按候选不同;没有名片时仍用 `@玩家` 占位,进游玩再替换。
|
||||
4. 只写模型生成区。状态芯片、地图等权威显示由程序投影,不在开场正文里重编一份。
|
||||
5. 不剧透隐藏档,不写成第一章,不在本步改前端模板。
|
||||
6. 本步结束后创作收口;不要再排后续内容能力。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
开场地点/冲突不清;某真值开场值推不出;壳区域是否都要填;候选是否漏写 `@玩家` 或写成了裸散文。一次 1~2 点。
|
||||
每轮 1~2 点。优先确认地点与冲突、某真值开场值是否推得出、多条时入口差异是否成立、每条是否含 `@玩家`。不追问前端重设计或随机骰面。
|
||||
```
|
||||
|
||||
## output
|
||||
@@ -100,131 +77,103 @@ summary:`开场白与开场变量 · …`(点题场景)。
|
||||
{
|
||||
"schema": "context-fragment.v1",
|
||||
"技能": "开场白与开场变量",
|
||||
"brief": "一句话:开场场景 + 关键初值",
|
||||
"mount": ["narrator"],
|
||||
"brief": "一句话:默认开场场景 + 有几条候选",
|
||||
"mount": ["world-simulator", "narrator"],
|
||||
"稳变": "stable",
|
||||
"正文": {
|
||||
"依据契约": [
|
||||
"正文组成 / 叙事指南 / 监控栏 / 变量设计 等已遵循要点;写出所用 shell_id"
|
||||
],
|
||||
"用户角色": {
|
||||
"名字": "沈聿",
|
||||
"简介": "本地放贷人;与这对母女相识但不熟。"
|
||||
},
|
||||
"开场白全文": {
|
||||
"schema": "present.v1",
|
||||
"shell": "与设计.正文组成.呈现壳.shell_id 一致",
|
||||
"blocks": {
|
||||
"monitor": { "地点": "堂屋", "债额": "三两" },
|
||||
"body": "清晨,@玩家推开堂屋门,债契还摊在桌上。……"
|
||||
},
|
||||
"meta": { "suggested_actions": ["问债", "先坐下"] }
|
||||
},
|
||||
"默认候选id": "opening-1",
|
||||
"开场白候选": [
|
||||
{
|
||||
"id": "opening-1",
|
||||
"区分": "这条入口与其它条差在哪;仅一条时可写「默认」",
|
||||
"meta": {
|
||||
"用户角色": { "名字": "沈聿", "简介": "本地放贷人;与这对母女相识但不熟。" },
|
||||
"用户角色": {
|
||||
"名字": "可选;无则省略整段",
|
||||
"简介": "可选"
|
||||
},
|
||||
"开场变量": [
|
||||
{ "名": "债额", "值": 3, "依据": "桌上债契" }
|
||||
{
|
||||
"名": "与变量设计真值名一致",
|
||||
"值": "初值",
|
||||
"依据": "开场事实"
|
||||
}
|
||||
],
|
||||
"拓扑初态": [
|
||||
{
|
||||
"topology_id": "有拓扑时填写",
|
||||
"当前位置": "节点 id",
|
||||
"已揭示": ["节点或连接 id"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"正文": {
|
||||
"schema": "present.v1",
|
||||
"shell": "与开场白全文.shell 相同",
|
||||
"blocks": {
|
||||
"monitor": { "地点": "堂屋", "债额": "三两" },
|
||||
"body": "清晨,@玩家推开堂屋门,债契还摊在桌上。……"
|
||||
"body": "清晨,@玩家推开门。……"
|
||||
},
|
||||
"meta": { "suggested_actions": ["问债", "先坐下"] }
|
||||
"meta": {
|
||||
"suggested_actions": ["若正文组成启用文字选项则给短建议;否则 []"]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"开场变量": [
|
||||
{
|
||||
"名": "与变量设计真值名一致",
|
||||
"值": "初值",
|
||||
"依据": "开场事实/设定推断"
|
||||
}
|
||||
],
|
||||
"隐藏段开场": "通常空;若正文组成钉了隐藏段且开场必须写出,写入 present.v1 blocks.hidden",
|
||||
"落库提示": {
|
||||
"输出.开场白": "推荐条 正文(present.v1 JSON)",
|
||||
"运行.初始变量": "该条 meta.开场变量 → 表格式",
|
||||
"运行.开场用户角色": "该条 meta.用户角色 → 名字+简介",
|
||||
"变量.当前": "与初始变量对齐"
|
||||
},
|
||||
"用户可行动空间": "开场结束后玩家显然能尝试什么"
|
||||
},
|
||||
"自评": {
|
||||
"维度": [
|
||||
{
|
||||
"名": "契约符合",
|
||||
"分数": 8,
|
||||
"说明": "是否 present.v1、shell 与正文组成一致、叙事/变量同真相"
|
||||
},
|
||||
{
|
||||
"名": "同真相",
|
||||
"分数": 8,
|
||||
"说明": "开场叙述与开场变量是否一致"
|
||||
},
|
||||
{
|
||||
"名": "可开玩",
|
||||
"分数": 8,
|
||||
"说明": "是否短、可感、有下一步行动空间"
|
||||
},
|
||||
{
|
||||
"名": "玩家占位",
|
||||
"分数": 8,
|
||||
"说明": "每条候选是否含字面 @玩家、无写死姓名"
|
||||
},
|
||||
{
|
||||
"名": "版式符合",
|
||||
"分数": 8,
|
||||
"说明": "是否 present.v1,shell 与正文组成一致,区域未超出该壳"
|
||||
}
|
||||
],
|
||||
"薄弱点": "一句话"
|
||||
},
|
||||
"追问": {
|
||||
"导语": "为钉准开场,还需确认:",
|
||||
"题目": [
|
||||
{
|
||||
"问": "…",
|
||||
"建议选项": ["选项A", "选项B", "其它(请写明)"],
|
||||
"示例": "可选"
|
||||
}
|
||||
]
|
||||
},
|
||||
"开放问题": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
硬规则:
|
||||
1. context-fragment.v1;自评含「玩家占位」与「版式符合」。
|
||||
2. `开场白全文` 与每条候选 `正文` 必须是 present.v1 对象(含 `schema`/`shell`/`blocks.body`);`shell` 与「设计.正文组成」一致。禁止只交散文字符串。
|
||||
3. `开场白候选` 1~3 条,每条含 `meta`(开场变量与该条同真相;用户角色可选,优先主角设定)+ `正文`。顶层 `开场变量` 必填(推荐条初值)。
|
||||
4. 每条正文(含 body)必须含字面 `@玩家`;不发明新真值名。
|
||||
5. summary:`开场白与开场变量 · {brief 缩略}`。
|
||||
1. 输出合法 JSON;`开场白候选` 默认 1 条,仅用户明确要求时 2~3 条。
|
||||
2. `默认候选id` 必须指向候选之一。正文和初值只写在该候选上,不另抄全文或开场变量。
|
||||
3. 每条 `正文` 必须是 `present.v1`,只含正文组成允许模型生成的 blocks;每条可见正文须含字面 `@玩家`。
|
||||
4. 不同候选可有不同用户角色与初态;切换时整套替换,不混用。
|
||||
5. 不输出随机数具体值,不重写前端,不把程序投影区填成模型编造状态。
|
||||
6. 产物正文不含自评、追问或开放问题。
|
||||
7. `mount` 固定为 `["world-simulator", "narrator"]`。
|
||||
|
||||
## score
|
||||
|
||||
```score
|
||||
开场必要:
|
||||
- 5:第一拍清楚、有行动空间,短到愿意开玩。
|
||||
- 3:能开玩,但入口或下一步略含糊。
|
||||
- 1:像第一章摘要,或缺冲突与下一步。
|
||||
|
||||
前端符合:
|
||||
- 5:present.v1 只填模型生成区,且与正文组成契约一致。
|
||||
- 3:主体符合,有一个次要区域或空态处理含糊。
|
||||
- 1:裸散文,或把程序投影区填成模型重编数据。
|
||||
|
||||
状态自洽:
|
||||
- 5:每条候选的变量与拓扑初态都与该条叙述同真相,互不串味。
|
||||
- 3:默认条自洽,备选条有一处初态含糊。
|
||||
- 1:叙述与初值冲突,或多条共用一套却声称不同入口。
|
||||
|
||||
角色占位:
|
||||
- 5:每条含字面 `@玩家`;有名片时不把姓名写进正文名字位。
|
||||
- 3:占位大体正确,有一条名片与正文关系略乱。
|
||||
- 1:写死姓名,或全文没有 `@玩家`。
|
||||
|
||||
收口可切换:
|
||||
- 5:默认条明确,全部候选可保存;多条时入口差异成立。
|
||||
- 3:能收口,但多条差异偏弱。
|
||||
- 1:默认不清,或未要求多条却堆出重复候选。
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 1~3 条候选,推荐条 正文 = `开场白全文`(均为 present.v1)?
|
||||
- [ ] `shell` 与「设计.正文组成」一致?只填该壳已有区域?不是裸散文?
|
||||
- [ ] 每条候选可搜到 `@玩家`?无写死姓名?
|
||||
- [ ] 该条 meta 初值与叙述同真相?有行动空间?
|
||||
- [ ] 未剧透隐藏档、未写成第一章?
|
||||
- [ ] 默认 1 条;仅用户要求时才有 2~3 条?
|
||||
- [ ] `默认候选id` 指向一条候选,且该条正文、初值没有在外面再抄一份?
|
||||
- [ ] 每条含 `@玩家`,present.v1 只含模型生成区?
|
||||
- [ ] 各候选初态自洽,未填写随机数具体值?
|
||||
- [ ] 未重开前端、篇幅或区域清单?
|
||||
```
|
||||
|
||||
## examples
|
||||
|
||||
```examples
|
||||
好:正文为 present.v1,shell 与正文组成相同;body 里有字面 @玩家;meta 带开场变量;名片在主角设定。
|
||||
好:prose 壳也包成 {"schema":"present.v1","shell":"prose","blocks":{"body":"冷风灌进来时,@玩家还握着空水瓶。"}}。
|
||||
好:「你(@玩家)站在闸机前,票夹是空的。」写在 blocks.body。
|
||||
坏:`开场白全文` 只是一段字符串,没有 present.v1。
|
||||
坏:shell 与正文组成不一致,或灌了该壳没有的区域。
|
||||
坏:全文只有「你推开门」——零个 `@玩家`。
|
||||
坏:「林晚推开门」——写死姓名。
|
||||
坏:在正文或开场白全文里写「用户角色.名字: …」——名片应落「主角设定」。
|
||||
- 单条:堂屋债契,body 含 `@玩家`,开场变量写债额初值;状态栏由程序投影。
|
||||
- 用户要两条入口:一条放贷人名片、一条社畜穿越名片;各带自己的初态,默认指定其中一条开玩。
|
||||
- 不合适:开场里填写 `敏捷.随机数=[…]`;或把地图权威数据写成模型散文却不给拓扑初态。
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user