引入游玩回合与开场收口,抽出可替换 agent 司机并支持运行中止;完善预设洞位、世界书拼装与试跑,并打磨会话运行时与 Web 交互。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-24 01:13:48 +08:00
co-authored by Cursor
parent ec474cb946
commit b82da4c5a5
95 changed files with 6781 additions and 1344 deletions
@@ -76,28 +76,15 @@ feeds: design_only
## probe
```probe
用户首句或黑板已有的直接采纳。一次只在产物「追问」写 1~2 点(建议选项 + 示例);顶层 askUser 留 null,不要同一问写两遍。
已有一轮追问答复或核心体验+权限边界已可执行:`追问.题目` 用 `[]`,让用户验收。禁止这轮问交互、下轮问美学地来回打转。
本步只钉三件:站位(代入 / 镜头看哪 / 爽从哪来)、核心感觉(反复感受到什么)、轮转边界(何时等用户)。
【默认问题已覆盖】变造(原型+变点)、代入与否、最想感受到的核心。首答后按缺口补,勿重问已答清的。
若开场已跳过(用户.需求已有首句):把首句当默认问题的答复,只补真正缺口。
用户首句或黑板已有的直接采纳。默认问题已覆盖变造、代入、核心感觉;开场若已跳过,把「用户.需求」首句当答复。已答清的不重问。
【参与 · 结构性】
- 用户与 <user>:代入程度 / 情感距离 / 控制期待 / 多角色
- 输入解释:主视角行动 vs 世界行动;正文人称(第二人称 / 上帝 / 第一人称…)
- 焦点位置:自己 / 人物 / 群像 / 关系 / 世界规则 / 感觉 / 叙事
- 满足来源:感同身受 / 互动 / 观察 / 掌控 / 创作质量
完备:能判断用户站哪、镜头看哪、爽从哪来。
缺其中一件:在产物「追问」写 1~2 点(建议选项 + 短场景);顶层 askUser 为 null。三件够验收:`追问.题目` 为 `[]`,内容维度等其余键写「未定」或省略。
【内容 · 深度随焦点】
核心感觉;人物与关系;身体与感官;背景与规则(宜短);意义与主题。
变造已定位的,只挖服务核心体验的部分。
用户讲人物、舞台、规则:只抽取能改这三件的一句写入正文,其余写入「开放问题」,本步不追问细节。
【轮转】
思考与抉择、言语:何时等、怎么等、例外、输入后怎么补(只确认/补细节/补心理/连带后果)。
【收成三块】
体验内核(含形状:过程/张力/层次/构成/循环);呈现要点;边界禁忌。
用两种站位或两种感觉的短场景让用户选或改,不追问开放式「你还想要什么」。
```
## output
@@ -4,8 +4,13 @@
# name = 固定中文名(流程 JSON 的 name;同能力可多次时靠 step.id 区分)
# declaration = catalog 短声明(可被 prompt.md ```meta 覆盖)
# artifact = 执行期产物 tag(程序映射;不写进流程 JSON)
# repeatable = true 时允许同能力多次编入增量 DAG(如生成规则、具体实例)
# params = 可选;编排进 DAG 时 steps[].params 的声明(required 须在执行前钉齐)
# repeatable = true 时允许同能力多次**新建**编入增量 DAG(如生成规则、具体实例)。
# 回头修改已完成节点不是 repeatable:DAG 用 mode=revise + revises,继承旧产物。
# closer = true 时为创作终节点:选定后程序落库、关 DAG、保存定稿
# auto = true 时为程序步:不抛默认问题、不经「同意并开始」,提案后直接执行(产物仍验收)
# kind = 节点特性。缺省=普通执行步。prior-artifact=先验产物(须先定写什么;params 是规划产物,不拦执行)
# params = 可选;普通节点=编排进 DAG 时 steps[].params 的声明(required 须在执行前钉齐)
# 〔先验产物〕=规划产物字段(可提前填,空则步内钉)
# opening = 可选;覆盖 prompt.md 里 ```opening 默认问题(一般只写在 prompt.md)
#
# 编排选型:程序会读取各 modules/{id}/prompt.md 的 meta
@@ -15,8 +20,10 @@
# 后来写能力:同结构 prompt.md(含默认问题)+ 本表一行索引
#
# 世界模拟器常用能力见下「体验→世界→机制→呈现→收成」;编排按需选用,勿默认全选。
# 流程是可变增量 DAG:勿一次排完全程;可反复调用标了 repeatable 的能力。
# 有编排参数的能力:DAG 步骤必须是带 params 的具体调用,禁止空壳进 design-step。
# 流程是可变增量 DAG:勿一次排完全程;可反复调用标了 repeatable 的能力(每次=彻底新建)。
# 已完成节点要改:编排 mode=revise(继承旧稿),不要再排一条 fresh。
# 有编排参数的普通能力:DAG 步骤必须是带 params 的具体调用,禁止空壳进 design-step。
# 〔先验产物〕例外:params 是规划产物,可空;「写什么」在步内钉。
modules:
# —— 体验契约 ——
@@ -37,6 +44,7 @@ modules:
- id: generation-rules
name: 生成规则
kind: prior-artifact
repeatable: true
declaration: >-
仅当某类内容既重要又无法凭基底稳定生成时:写出规则
@@ -45,19 +53,17 @@ modules:
params:
- key: target
label: 生成对象
required: true
hint: 本轮为哪一类内容建规则;编排时 askUser 给选项+其它;用户改对象时必须同步改 rule_id 与步骤 id
hint: 规划字段;编排器已知写哪一类就填。空则步内钉
- key: rule_id
label: 规则 id
required: false
hint: 英文 kebab-case,须与 target 对应(女租客→female-tenants,丧尸→zombies);改对象时禁止沿用旧 id
hint: 英文 kebab-case,须与 target 对应(女租客→female-tenants);改对象时禁止沿用旧 id
- key: lifecycle_intent
label: 生命周期意图
required: false
hint: runtime_only | seed_only | seed_and_runtime;不明则 askUser
hint: runtime_only | seed_only | seed_and_runtime;不明则步内钉
- id: concrete-instances
name: 具体实例
kind: prior-artifact
repeatable: true
declaration: >-
按预生成规则原样产出实际产物;不设计、不改合同;可按 rule_id/批次反复调用
@@ -65,15 +71,12 @@ modules:
params:
- key: rule_id
label: 调用规则
required: true
hint: 必须来自已验收生成规则中 seed_only/seed_and_runtime 的真实 rule_id;编排时给选项
hint: 规划字段;须来自已验收生成规则中 seed_only/seed_and_runtime 的 rule_id。空则步内钉
- key: batch_goal
label: 批次目标
required: false
hint: 本批要锚定什么(如开局重要NPC)
- key: count
label: 数量
required: false
hint: 数字或「按规则」;contextual 时写清规模依据
- id: narrative
@@ -127,9 +130,10 @@ modules:
# —— 开局(创作偏晚) ——
- id: opening-setup
name: 开场白与开场变量
closer: true
declaration: >-
写出遵循正文组成/叙事等契约的开场一小段,并钉同真相的开场变量初值;
开场为主、填表为辅;可与 opening-generator 落库
创作终节点:写出 1~多条开场白并钉同真相初值;
选定后程序落库、结束创作并保存定稿
artifact: 设计.开场白与开场变量
# —— 收成 / 钉声明(共用;世界模拟器按需) ——
@@ -144,9 +148,10 @@ modules:
- id: context-order
name: 上下文投影排序
repeatable: false
auto: true
declaration: >-
根据各上游上下文概括,为启用槽写出扁平投影序(含对话.历史与 projection);
挂谁已定、排第几在本步;不发明执行单元、不重写长文
先抄固定执行单元名册,再为每个已启用者写出扁平投影序
(含对话.历史与 projection);不发明槽、不重写长文、不演情节选择题
artifact: 设计.上下文投影排序
- id: refine
@@ -27,7 +27,11 @@ feeds: gm
## opening
```opening
规则已由【本步参数】rule_id 钉死。有批次目标或数量偏好可一句带过;否则直接「按规则生成」。
先认定本批按哪条规则生成:
- 若【规划产物】已有 rule_id,以此为起点;要换规则就在本步改(须仍是已验收的预生成规则)。
- 若规划为空,从已验收生成规则里选出一条预生成规则。
有批次目标或数量偏好可一句带过;否则直接「按规则生成」。
```
## task
@@ -37,9 +41,11 @@ feeds: gm
本步 = 规则执行器。禁止重议对象族、生命周期、schema 或描写方法。
本步是〔先验产物〕:先定调用哪条规则,再生成 records。读【规划产物】当起点;规划可空。
执行顺序:
1. 取出 `params.rule_id` 对应规则;非预生成生命周期或缺信息 → 停止并指出缺口。
2. 数量:`params.count` 有数字用数字,否则用规则「数量」;`batch_goal` 只作不违反规则的筛选。
1. 认定 `rule_id`:规划有则采用(用户要换则以最新为准,须仍是已验收的预生成规则);空则先从依赖产物里选出。不要停下来让编排器补参。非预生成生命周期或缺信息 → 停止并指出缺口。
2. 数量:规划 `count` 有数字用数字,否则用规则「数量」;`batch_goal` 只作不违反规则的筛选。
3. 完全按规则的「生成与描写」+「产物格式」+「池」生成 `records`(单层 JSON;键=schema 顶层字段)。
4. 按规则自检;不合格内部重做。已有产物则追加批次(除非用户要求替换)。
5. 输出 JSON;追问通常 `[]`。
@@ -72,9 +78,9 @@ summary:`具体实例 · {对象} · {n}条`
"mount": ["world-simulator"],
"稳变": "stable",
"正文": {
"rule_id": "与 params 一致",
"rule_id": "与本步认定一致(规划有则对齐)",
"本批数量": 3,
"批次条件": ["params.batch_goal 等;无则 []"],
"批次条件": ["规划 batch_goal 等;无则 []"],
"batch_id": "英文 kebab-case",
"records": [
{
@@ -111,7 +117,7 @@ summary:`具体实例 · {对象} · {n}条`
## checklist
```checklist
- [ ] 按 params.rule_id 的预生成规则执行?
- [ ] 按本步认定的 rule_id(规划或步内钉)的预生成规则执行?
- [ ] records 单层、键值符合产物格式与全部约束?
- [ ] 自评为合规模?未改合同?
```
@@ -1,8 +1,9 @@
# 上下文投影排序
> 技能文档。程序只切割下方 **fence 块**;`##` 标题仅供人读。
> **本步只排出扁平投影序,不发明执行单元,不重写设定长文。**
> 「对话.历史」也是可投影标签(改 projection 裁剪长度);见 `docs/context-fragment-design.md`。
> **先抄程序钉死的执行单元名册,再给每个已启用者分配上下文与顺序。**
> 不发明执行单元,不重写设定长文,不演游玩选项。
> 「对话.历史」也是可投影标签;见 `docs/context-fragment-design.md`。
## meta
@@ -11,36 +12,32 @@ name: 上下文投影排序
id: context-order
artifact: 设计.上下文投影排序
declaration: >
根据各上游上下文的概括,为每个启用槽写出扁平投影序
(含对话.历史标签与 projection);不发明槽、不重写正文
先列出本局固定执行单元(程序名册),再为每个已启用者写出扁平投影序
(含对话.历史与 projection);不发明槽、不重写正文、不演情节选择题
when: |
游玩槽已确认(或可按默认),且主要上下文块已有可摘要产物,
需要决定插入顺序与投影级别、再收成运行规格时。
需要决定各执行单元看见什么、以何顺序插入时。
when_not: |
体验/站位仍混沌 → 先美学纲领与交互范式。
槽位未定且用户拒绝默认 → 先游玩拓扑。
上游上下文仍大量空洞、无法判断稳/变 → 先补缺口,勿空排。
只需勾选槽 → 游玩拓扑;只需合并终稿 → 细化终稿。
boundary: |
本技能:读各块概括 → 产出每槽 inserts[](order / ref / projection / 可选 note);须含对话.历史。
无「历史前/后」硬分区;对话.历史本身是可排序的一项。
游玩拓扑:槽位权威;本步不增白名单外 ref(含按需 chance 不进每轮序)。
中段技能:可带 mount 与稳/变信号,最终 order 以本步为准。
本技能:抄名册 → 凭各块 brief/挂载/稳变 给每槽 inserts[]。
名册权威在程序(及已勾选的游玩拓扑);本步不增白名单外 id。
中段技能可带 mount 与稳/变;最终 order 以本步为准。
细化终稿:把本步排序表收进运行规格 context_order;本步不输出完整 设计.worker集。
禁止把依赖产物里的游玩示例(迎上去/推开/反客为主 等)当成当前要问的题。
feeds: design_only
```
## opening
```opening
准备排出各游玩槽的扁平投影序(只排序,不改设定正文)。
按已验收产物的概括,给每个固定执行单元分配上下文顺序(只排序,不改设定、不演游玩)。
请确认或补充:
1. 启用槽是否仍是默认?(世界模拟:主世界层 + 叙事转述;角色视角默认关)
2. 「对话.历史」希望夹在哪、投影多狠?(默认 summary)
3. 有没有「几乎永不改」或「每轮必变」的块要特别强调?
若前面产物够用,可直接回复「按已有概括排序」。
名册由程序钉死:旁观维护(表格)/ 主世界层 / 叙事转述 / 可选角色视角 / 按需机遇。
若前面产物够用,直接回复「按已有概括排序」。
```
## task
@@ -48,40 +45,45 @@ feeds: design_only
```task
你正在执行「上下文投影排序」。产物写入「设计.上下文投影排序」。
输入:已启用槽;各上游上下文的短摘要(及 mount / 稳变信号,若有)。
输出:按槽分组的格式化排序表——Runtime/终稿据此把投影插到固定位置。
执行顺序(必须按此,禁止颠倒):
1. **抄名册**:以程序注入的【本局固定执行单元】为准列出 agents[](id / label / enabled / when / duty)。
启用与否跟已勾选游玩拓扑走;未勾选则按默认:旁观+主世界层+转述开,角色视角关,机遇关。
2. **再分配**:只对 enabled 的每轮槽写 inserts(order / ref / projection / 可选 note)。
凭上游 **brief、挂载、稳变** 排序,禁止把百科全文再读一遍当创作。
规则:
1. 禁止发明执行单元或白名单外 ref。
2. 禁止重写上游长文;只写 order、ref、projection 与一句 note(勿再写硬锚点分区)。
3. 每槽扁平数字序:order 0=该槽固定人设;其后按「稳→对话.历史→易变」软排。
4. 必须包含一项 ref=`对话.历史`(默认 projection=summary);历史由程序维护,本步只决定夹在哪、投影多狠。
5. 常见块名用新 artifact:设计.舞台骨架 / 设计.叙事指南与故事推进 / 设计.正文组成 / 设计.监控栏 等。
1. 禁止发明白名单外 id(含画图等未入册槽)。
2. 禁止重写上游长文;只写顺序与投影。
3. 每轮槽:order 0=该槽固定人设;其后按「稳→对话.历史→易变」软排。
4. 主世界层与转述必须含 ref=`对话.历史`(默认 projection=summary);旁观维护默认不含历史。
5. 按需槽(机遇)enabled 时 inserts 可空。
6. 越稳越靠前;本轮输入/真值/裁决通常在历史之后。
7. 同一内容可挂多槽;chance 为按需槽,不必排进每轮 inserts。
8. summary:如 `投影排序 · 主世界层 N 条 · 含历史`。
7. 同一内容可挂多槽;chance 不必排进每轮 inserts。
8. summary:如 `投影排序 · 旁观+主世界层+转述`。
若程序已发默认问题:禁止重复同一开场;在首答上产出表。
若程序已发默认问题:禁止重复同一开场;用户说「按已有概括排序」或等价同意 → **立刻产出表**,禁止再问情节内选项。
禁止 askUser 出游玩选择题(迎上去/推开她/反客为主 等)。材料已齐则顶层 askUser 为 null。
```
## principles
```principles
1. 晚排序:此时才能区分常变与重要;勿回退去发明新槽。
2. 概括驱动:凭摘要与稳变信号排序,不把百科全文再读一遍当创作。
3. 历史是标签:用投影裁剪,不要假装「整段历史永远在中间锚点」。
4. 缓存优先:少变块靠前;高频变块靠后。
5. 投影分级:full / summary / fields / fixed——历史默认 summary。
6. 可修订已有排序表;用户改稳变判断时只改序,不改上游产物 id。
1. 名册先行:先有哪些执行单元,再谈每单元看什么。
2. 晚排序:此时才能区分常变与重要;勿回退去发明新槽。
3. 概括驱动:凭摘要与稳变信号排序,不把设定长文再当创作。
4. 历史是标签:用投影裁剪;旁观维护默认不进对话.历史。
5. 缓存优先:少变块靠前;高频变块靠后。
6. 投影分级:full / summary / fields / fixed——历史默认 summary。
7. 可修订已有排序表;用户改稳变判断时只改序,不改上游产物 id。
```
## probe
```probe
一次 askUser 1~2 点,优先 options:
- 某块稳/变判断冲突时,问用户更偏「少改利缓存」还是「每轮必须看见」。
一次 askUser 1~2 点,且必须关于「挂哪槽 / 稳还是变 / 投影级别」:
- 某块稳/变判断冲突时,问更偏「少改利缓存」还是「每轮必须看见」。
- 角色视角若开启,问哪些块禁止进主世界层。
已齐则直接产出,勿为凑问题而问。
已齐则直接产出,勿为凑问题而问。禁止问剧情里发生什么、谁敲门、玩家选哪一招。
```
## output
@@ -89,29 +91,64 @@ feeds: design_only
```output
{
"schema": "context-order.v1",
"brief": "一句话:本局扁平投影序(含对话.历史)",
"play_slots": { "gm": true, "narrator": true, "perspective": false },
"slots": [
"brief": "一句话:本局有哪些执行单元、各自上下文怎么排",
"agents": [
{
"ref": "world-simulator",
"label": "主世界层",
"id": "auditor",
"label": "旁观维护",
"enabled": true,
"when": "every_turn",
"duty": "查表/补规则,不写正文、不写真相",
"inserts": [
{ "order": 0, "ref": "worker.persona", "projection": "fixed", "note": "槽位人设" },
{ "order": 1, "ref": "设计.实现机制", "projection": "summary", "note": "承重规则摘要" },
{ "order": 2, "ref": "对话.历史", "projection": "summary", "note": "按投影裁剪" },
{ "order": 3, "ref": "变量.当前", "projection": "fields", "note": "真值" },
{ "order": 4, "ref": "用户.最新输入", "projection": "full", "note": "本轮" }
{ "order": 0, "ref": "worker.persona", "projection": "fixed", "note": "人设" },
{ "order": 1, "ref": "设计.变量设计与更新规则", "projection": "summary" },
{ "order": 2, "ref": "设计.生成规则", "projection": "summary" },
{ "order": 3, "ref": "变量.当前", "projection": "fields" },
{ "order": 4, "ref": "用户.最新输入", "projection": "full" }
]
},
{
"ref": "narrator",
"label": "叙事转述",
"id": "gm",
"label": "主世界层",
"enabled": true,
"when": "every_turn",
"duty": "读真值与规则,出裁决包",
"inserts": [
{ "order": 0, "ref": "worker.persona", "projection": "fixed", "note": "转述人设" },
{ "order": 0, "ref": "worker.persona", "projection": "fixed" },
{ "order": 1, "ref": "设计.舞台骨架", "projection": "summary" },
{ "order": 2, "ref": "对话.历史", "projection": "summary" },
{ "order": 3, "ref": "变量.当前", "projection": "fields" },
{ "order": 4, "ref": "用户.最新输入", "projection": "full" }
]
},
{
"id": "narrator",
"label": "叙事转述",
"enabled": true,
"when": "every_turn",
"duty": "只把裁决写成用户可见正文",
"inserts": [
{ "order": 0, "ref": "worker.persona", "projection": "fixed" },
{ "order": 1, "ref": "设计.叙事指南与故事推进", "projection": "summary" },
{ "order": 2, "ref": "对话.历史", "projection": "summary" },
{ "order": 3, "ref": "运行.本轮.裁决", "projection": "full", "note": "settlement" }
{ "order": 3, "ref": "运行.本轮.裁决", "projection": "full" }
]
},
{
"id": "perspective",
"label": "角色视角",
"enabled": false,
"when": "every_turn",
"duty": "强信息隔离时出反应建议",
"inserts": []
},
{
"id": "chance",
"label": "机遇裁定",
"enabled": false,
"when": "on_demand",
"duty": "骰子/抽签;按需调用,不进每轮",
"inserts": []
}
]
}
@@ -120,10 +157,12 @@ feeds: design_only
## checklist
```checklist
- [ ] agents 只使用程序名册 id(auditor / gm / narrator / perspective / chance)
- [ ] 未发明白名单外执行单元
- [ ] 未重写上游长文,只有排序/投影
- [ ] 每启用槽有 order 0 人设位
- [ ] 每槽含「对话.历史」且有合理 projection
- [ ] 未把游玩选项示例当成当前提问
- [ ] 已启用的每轮槽有 order 0 人设位
- [ ] 主世界层与转述含「对话.历史」;旁观维护默认无历史
- [ ] 少变块整体靠前、本轮/真值靠后(软规则)
- [ ] 与游玩拓扑勾选一致
```
@@ -36,8 +36,11 @@ feeds: gm,auditor
## opening
```opening
本轮生成对象已由编排参数钉死(见【本步参数】target)。请直接谈该类内容:
先认定本轮规则写哪一类内容:
- 若【规划产物】已有对象,以此为起点;要改对象就在本步改。
- 若规划为空,先钉对象族,再谈规则。
然后谈:
1. 若不做专门规则、只靠世界设定临场写,最怕出现什么不可接受的结果?
2. 更需要:开局先钉一批、游玩中再随机补,还是只在游玩期动态生成?
3. 哪些产物字段需要「池」?(池挂在 JSON 字段上,如气质标签池→`气质`;可多个;没有就说没有)
@@ -56,19 +59,19 @@ feeds: gm,auditor
3. **池**(可选):每个池挂在产物格式里的某个字段(变量)上,供该字段抽取/组装/枚举;
一条规则可多个池;无则 `池: []`。
对象族已由【本步参数】`target` 钉死;禁止再问「这一步生成什么」,禁止顺手扩到其它族。
本步是〔先验产物〕:先定本轮对象族,再写规则。读【规划产物】当起点;规划可空。禁止顺手扩到其它族。
执行顺序:
1. 读 params 与依赖。缺 `target` → 停止并提示补参。
1. 认定对象族:规划有 `target` 则采用(用户要改则以最新为准);规划为空则先钉对象。不要停下来让编排器补参。
2. 双门槛:重要性 + 基础上下文不足。任一项不成立 → 结论「无需专门规则」,`rules: []`。
3. 两项成立时,生命周期三选一(params.lifecycle_intent 合理则采用):
3. 两项成立时,生命周期三选一(规划里 `lifecycle_intent` 合理则采用):
- `runtime_only`:仅游玩期动态生成;不要求「具体实例」。
- `seed_only`:由「具体实例」预生成;规则用完可丢。
- `seed_and_runtime`:先种子实例;规则与实例都保留,游玩期仍可按同规则生成。
4. 写满规则三块:生成与描写(可较长)+ 产物格式(**单层 JSON**:每条产物是一层键值,无嵌套对象)+ 池(需要才填;绑顶层字段)。
5. 逐字段过筛:每个属性都要能回答「对本对象族是否必要」。冗余字段删掉(如女主规则里的「性别」);对象族必需字段不得漏(如 D&D 怪物的等级、攻击骰)。
6. `rule_id`:params 已给则用;否则稳定 kebab-case。已有产物按 rule_id 增量。
若本步对象与 params 不一致(用户中途改了对象),以最新对象为准并重钉对应英文 rule_id,禁止沿用旧 id。
6. `rule_id`:规划已给则用;否则稳定 kebab-case。已有产物按 rule_id 增量。
若本步对象与规划不一致,以最新对象为准并重钉对应英文 rule_id,禁止沿用旧 id。
7. 按自评三维打分并填追问;输出 JSON。禁止夹带最终实例 records。
若程序已发默认问题:禁止重复开场;在首答上补洞。
@@ -93,7 +96,7 @@ summary:建立 → `生成规则 · {对象} · {仅动态|仅预生成|预生
## probe
```probe
每轮 1~2 点。禁止重问 params 已钉的 target / rule_id。
每轮 1~2 点。规划已钉且用户未改对象时,禁止重问 target / rule_id。规划为空或用户要换对象时,先问本轮生成什么。
优先:整条规则是否必要;某字段该不该进表(冗余 vs 漏接口);单层格式类型/枚举/边界;哪些字段要池。
若双门槛不成立 → 建议跳过,停追问字段与格式。
@@ -111,9 +114,9 @@ summary:建立 → `生成规则 · {对象} · {仅动态|仅预生成|预生
"稳变": "stable",
"正文": {
"本步参数": {
"target": "与 params 一致",
"target": "与本步认定的对象一致(规划有则对齐,步内改则以最新为准)",
"rule_id": "已钉或本步拟定;跳过时可空字符串",
"lifecycle_intent": "params 原值或空"
"lifecycle_intent": "规划原值、本步钉死值或空"
},
"必要性判断": {
"生成对象": "本轮对象族",
@@ -32,7 +32,7 @@ feeds: narrator,gm
美学里的感觉已有方向时,请谈「正文怎么写、故事怎么往前」(想到什么写什么):
1. 像什么文风?遣词什么味道?笔墨花在谁身上?有什么绝对不能写?
2. 故事怎么推进?要不要跟好感/进度挂钩?有没有情境要换一套写法?
2. 故事往前靠什么:场面自己推、等用户决策,还是无专门推进?正文若有几种写法档要切换(官能 / 爽文 / 恐怖 / 情色这类),点名即可;没有就说没有。
```
## task
@@ -45,9 +45,10 @@ mount:`narrator` 与 `world-simulator` 都挂同一份全文——不要为省
执行顺序:
1. 继承美学体验与禁忌,改写成做法向句子。
2. 写纲领、遣词(含示范)、笔墨焦点、禁忌/不偏好;需要时写情境备用。
3. 写推进与决策(可写「无专门推进」);变量只写钩子。
4. 自评 + 追问。
2. 写纲领、遣词(含示范)、笔墨焦点、禁忌/不偏好。
3. 情境备用 = 写法档(体裁/调性容器),不是具体桥段。有切换则每条写:名字=档名(如「官能小说」「网文爽文」「展示恐怖」「展示情色」),用法=该档怎么遣词、笔墨落哪、何时切进来。无切换则 `[]`。用户若报出「当众折辱」「独处一室」这类场合,升一档写进对应写法档,场合本身不单列。
4. 写推进与决策(可写「无专门推进」);变量只写钩子。
5. 自评 + 追问。
summary:`叙事指南与故事推进 · …`
```
@@ -58,14 +59,21 @@ summary:`叙事指南与故事推进 · …`
1. 感觉 vs 做法:美学写要什么爽;本步写怎么遣词、笔墨落哪、故事怎么推。
2. 遣词与禁忌要可执行;绝对禁忌 ≠ 不偏好。
3. 推进可轻可无;表规格交给变量/生成规则。
4. 整份双挂即可;禁止拆成两个技能。
4. 情境备用是写法档:名字用「官能小说」「网文爽文」「展示恐怖」「展示情色」同级;用法写该档遣词与何时切入。无切换则空数组。
5. 整份双挂即可;禁止拆成两个技能。
```
## probe
```probe
每轮 1~2 点。已在美学写清的感觉勿重问。
优先:体裁遣词、笔墨详谁、禁忌、推进门控。
本步只钉四件:遣词可执行、笔墨落点、绝对禁忌、推进方式(场面推进 / 用户决策 / 无专门推进)。
已在美学写清的感觉改写成做法向句子,不重问「想感受到什么」。
缺其中一件:在产物「追问」写 1~2 点(建议选项 + 短句示例)。四件够验收:`追问.题目` 为 `[]`。推进方式不明则正文写「无专门推进」,不问好感公式、进度表或事件池。
用户谈到变量增减、生成规则、舞台百科:只抽取能改遣词 / 禁忌 / 推进方式的一句,其余写入「开放问题」。
用户提到要换写法:收成写法档写入「情境备用」(官能 / 爽文 / 恐怖 / 情色这类),不追问具体场合怎么摆;没提则 `[]`。
```
## output
@@ -99,7 +107,16 @@ summary:`叙事指南与故事推进 · …`
"绝对禁忌": ["…"],
"不偏好": ["…"]
},
"情境备用": [],
"情境备用": [
{
"名字": "展示情色",
"用法": "切到身体与权力交换时:感官词加重、节奏放慢、对话变短;切回日常则收。"
},
{
"名字": "网文爽文",
"用法": "打脸/反转时:可复述对方原话、结果写满、过程可略。"
}
],
"推进与决策": {
"有无专门推进": "有|无",
"驱动力来源": "…",
@@ -126,18 +143,20 @@ summary:`叙事指南与故事推进 · …`
```
硬规则:合法 JSON;示范至少 1 段;禁忌与不偏好都要有;双挂;禁止 order;summary 见 task。
情境备用若有:名字必须是写法档(官能小说 / 网文爽文 / 展示恐怖 / 展示情色 同级),用法写该档的遣词与切入口;不是「当众折辱」「物资告急」这类具体桥段。无切换则 `[]`。
## checklist
```checklist
- [ ] 一份产物同时服务转述与主世界层?
- [ ] 遣词+示范+禁忌够用?推进清楚或明确无?
- [ ] 情境备用若有,是否是写法档(官能/爽文/恐怖/情色同级)而非具体桥段?无切换是否为 `[]`?
- [ ] 未为省 token 拆两套投影?
```
## examples
```examples
好:一次问清爽文遣词 + 好感门控倒追,整份挂两边。
坏:拆成「文风技能」和「推进技能」两步;或为省 token 给两边裁成两套残缺稿。
好:一次钉清遣词 + 笔墨落点 + 禁忌;推进写「等用户决策」或「无专门推进」;情境备用是「展示情色」「网文爽文」两档及切换时笔墨。
坏:拆成「文风技能」和「推进技能」两步;追问好感公式 / 事件池;或把「当众折辱」「独处一室」当成情境备用。
```
@@ -2,8 +2,8 @@
> 技能文档。程序只切割下方 **fence 块**;`##` 标题仅供人读。
> 产物外壳:`docs/context-fragment-design.md`。
> 创作偏晚:规格与呈现契约已齐,写「迈进世界的第一拍」并钉开场真值。
> 磁盘 worker `opening-generator` 可执行/落库本产物到 `输出.开场白` 与 `运行.初始变量`。
> **创作终节点**:规格与呈现契约已齐。写出 1~多条开场白供选定;选定后程序落库、关闭工作流、保存定稿。
> 不必再调磁盘 worker `opening-generator`(无本步时它仍可作兜底落库)。
## meta
@@ -12,20 +12,21 @@ name: 开场白与开场变量
id: opening-setup
artifact: 设计.开场白与开场变量
declaration: >
写出遵循正文组成/叙事/监控栏等契约的开场一小段,并钉与之同真相的开场变量初值;
开场为主、填表为辅
创作终节点:写出 1~多条遵循正文组成/叙事/监控栏契约的开场白,并钉与之同真相的开场变量初值;
选定后程序落库、结束创作并保存定稿
when: |
体验、舞台、叙事、变量(若有)、正文组成等已大致可引用,
需要可开玩的第一段剧情与初始真值快照时;通常在细化终稿前后、进游玩前。
体验、舞台、叙事、变量(若有)、正文组成、细化终稿等已大致可引用,
需要可开玩的第一段剧情与初始真值快照时;排在收成链之后,作为最后一步。
when_not: |
体验/呈现仍混沌 → 先美学与正文组成等。
只要改文风不要开场 → 叙事指南。
只要改真值规则不要开场文 → 变量设计。
尚未细化终稿、Worker 集未齐 → 先收成。
boundary: |
本技能:开场正文(按正文组成块序拼出用户可见第一屏)+ 开场变量初值 + 可选监控栏初值示意。
本技能是创作终节点:1~多条开场正文(按正文组成块序)+ 开场变量初值 + 可选监控栏初值示意。
必须遵守已验收的叙事指南、正文组成、监控栏、变量设计;不重做这些契约。
具体实例:开场可引用已有实例名片,不在本步新造百科。
opening-generator:可将本产物写入 输出.开场白 / 运行.初始变量 / 变量.当前。
选定后由程序写入 输出.开场白 / 运行.初始变量 / 变量.当前,关闭 DAG 并保存定稿;不要在本步之后再排其它能力。
feeds: narrator
```
@@ -42,19 +43,20 @@ feeds: narrator
## task
```task
你正在执行「开场白与开场变量」。产物必须是 **context-fragment.v1** JSON,写入「设计.开场白与开场变量」。
你正在执行「开场白与开场变量」。这是**创作最后一步**。产物必须是 **context-fragment.v1** JSON,写入「设计.开场白与开场变量」。
主产物是**开场一小段剧情**(用户第一屏),不是填表工具。
主产物是 **1~多条开场剧情**(用户第一屏),不是填表工具。用户将选定其中一条;选定后程序结束创作并保存。
必须遵循:叙事指南与故事推进、正文组成(可见块序、隐藏段若开场就要写)、监控栏字段(若启用)、变量真值名单。
执行顺序:
1. 读依赖:worker 集/美学/叙事/正文组成/监控栏/变量设计/舞台与实例。
2. 按正文组成的可见块写出开场各块内容(至少正文块);隐藏段仅当开场即需声明初值变更时使用(通常初值走「开场变量」字段,隐藏段可空)。
3. 钉开场变量:与开场事实同一真相;能从设定推断的填上;冲突则以开场叙述为准并改表。
4. 若有监控栏:给出开场时监控栏展示快照(短)。
5. 自评 + 追问;输出 JSON。
2. 写出 **1~3 条**可开玩的开场白候选(角度/第一拍可不同,设定必须同一真相)。推荐那条写入 `开场白全文`,全部写入 `开场白候选`。
3. 按正文组成的可见块写出开场各块内容(至少正文块);隐藏段仅当开场即需声明初值变更时使用(通常初值走「开场变量」字段,隐藏段可空)。
4. 钉开场变量:与开场事实同一真相;能从设定推断的填上;冲突则以开场叙述为准并改表。
5. 若有监控栏:给出开场时监控栏展示快照(短)。
6. 自评 + 追问;输出 JSON。
禁止:先问卷填表再糊开场;禁止开场与初值打架;禁止重写 Worker 集。
禁止:先问卷填表再糊开场;禁止开场与初值打架;禁止重写 Worker 集;禁止只交空壳等下一节点。
summary:`开场白与开场变量 · …`(点题场景)。
```
@@ -95,7 +97,12 @@ summary:`开场白与开场变量 · …`(点题场景)。
"内容": "该块开场文本;可空块写空字符串并说明为何首轮空"
}
],
"开场白全文": "按块序拼好的用户可见开场(主阅读件)",
"开场白全文": "推荐那条:按块序拼好的用户可见开场(主阅读件)",
"开场白候选": [
"推荐那条(与开场白全文相同)",
"可选第二条:同一真相、不同第一拍/角度",
"可选第三条"
],
"开场变量": [
{
"名": "与变量设计真值名一致",
@@ -153,13 +160,14 @@ summary:`开场白与开场变量 · …`(点题场景)。
硬规则:
1. context-fragment.v1;自评契约符合/同真相/可开玩。
2. `开场白全文` 与 `开场变量` 必填;监控栏快照无监控栏则为 `[]`。
2. `开场白全文` 与 `开场变量` 必填;`开场白候选` 1~3 条(含推荐);监控栏快照无监控栏则为 `[]`。
3. 不输出完整 worker 集;不发明新真值名(须来自变量设计,若无变量设计则可极少数字段并标明临时)。
4. summary:`开场白与开场变量 · {brief 缩略}`。
## checklist
```checklist
- [ ] 写出 1~3 条开场候选,推荐条与 `开场白全文` 一致?
- [ ] 开场遵循正文组成块序与叙事口径?
- [ ] 变量与开场同真相?可行动空间清楚?
- [ ] 未剧透隐藏档?未写成第一章全文?
@@ -45,7 +45,8 @@ feeds: narrator
1. 要微调什么?(监控字段、块称呼、要不要建议行动、tone_chrome…)
2. 有没有隐藏段给模型/程序维护变量?
3. 不要谈「再发明一种全新布局」。
3. 定稿时会用前面情节架空一幕灌进壳里,专供你看版式/美化(内容随便,不当正史)。
4. 不要谈「再发明一种全新布局」。
```
## task
@@ -64,7 +65,8 @@ feeds: narrator
4. 监控栏:字段意图(细则可交「设计监控栏」);无 monitor 的壳写「不启用」。
5. 隐藏段(若有):定界与用途。
6. 填「呈现壳.微调」;前端拆分区域必须与壳一致。
7. 自评 + 追问;禁止写 context `order`。
7. **示例**:用前面已定情节架空一幕,按本步壳与可见块灌进 `present.v1` 形状,专供验收版式/美化;示例文可短,游玩正文字数不在本步打磨。
8. 自评 + 追问;禁止写 context `order`。
summary:`正文组成 · 适配 {shell_id} · …`。
```
@@ -73,7 +75,8 @@ summary:`正文组成 · 适配 {shell_id} · …`。
```principles
1. 创作 = 选壳 + 适配微调
不是 UI 创意;布局骨架只读。
不是 UI 创意;布局骨架只读。本步验收重点是「看起来对不对」,不是故事写得好不好。
「按意见修改」:以最新产物为底;用户要求按先后都有效,冲突时以较新的为准。用户说整体可以、或只提美化/行距/显示名 → 不换 shell_id。换壳必须用户点名。
2. 只改微调轴
字段、显示名、开关、tone_chrome、空态;不改分区、不增区域、不自造壳。
@@ -85,6 +88,11 @@ summary:`正文组成 · 适配 {shell_id} · …`。
5. 与转述、变量分工
文风归叙事指南;真值归变量设计;本步只交壳适配契约。
游玩单轮用户主读正文默认 500~2000 字,写进「拼装与终稿.单轮正文篇幅」,供转述遵守。
6. 示例 = 壳与美化预览,非正史
用已定材料随便架空一幕,把各区域/监控/行动坞撑满,让用户看见版式。
禁止把示例当成开场白或游玩 canon;禁止为写好看而新造设定;文笔及格即可,勿打磨成章。
```
## probe
@@ -92,8 +100,8 @@ summary:`正文组成 · 适配 {shell_id} · …`。
```probe
每轮 1~2 点。
优先:选哪个壳;微调哪些字段/显示名;隐藏段要不要。
不追问:新布局、完整 CSS、事件池 schema、文风遣词。
优先:选哪个壳;微调哪些字段/显示名;隐藏段要不要;示例灌数是否让版式看得清。
不追问:新布局、完整 CSS、事件池 schema、文风遣词、示例文笔好坏。
```
## output
@@ -130,7 +138,7 @@ summary:`正文组成 · 适配 {shell_id} · …`。
"可空": true,
"填充方": "叙事转述|程序拼装|监控栏|其它",
"内容形态": "散文|短列表|键值行|其它",
"示例": "可选一句/三行示意"
"示例": "可选:该块一句占位(总预览见正文.示例)"
}
],
"监控栏锚点": {
@@ -172,7 +180,27 @@ summary:`正文组成 · 适配 {shell_id} · …`。
"终稿tag": "通常 输出.用户展示",
"拼装方": "叙事转述一次写出各块|程序按块拼接|混合",
"推荐灌数": "分块壳优先 present.v1;prose 可为纯 Markdown",
"单轮正文篇幅": "默认 500~2000 字(汉字,写入 body);短于 500 仅当用户明确要求极短",
"与裁决包关系": "转述读 settlement 再填各块;隐藏段可含 variable_changes 镜像"
},
"示例": {
"性质": "验收预览|非正史|仅看壳与美化",
"依据": ["前面已定情节/设定要点,一两句即可"],
"用来说明": "这幕只为撑开版式(分区、监控、行动坞、显示名…),内容可糙",
"灌数": {
"schema": "present.v1",
"shell": "与正文.呈现壳.shell_id 一致",
"blocks": {
"monitor": "若该壳有 monitor:短键值;否则省略",
"header": "若有则短字;无则省略",
"body": "架空主读文(短段即可,勿写成章)",
"aside": "若有则短线索/备注;无则省略",
"footer": "若有则可空或一句"
},
"meta": {
"suggested_actions": ["若该壳开建议行动则给 2~3 个占位选项;否则 []"]
}
}
}
},
"自评": {
@@ -191,6 +219,11 @@ summary:`正文组成 · 适配 {shell_id} · …`。
"名": "可实现",
"分数": 8,
"说明": "shell_id 是否在七种壳内;分区与隐藏段是否可交给转述/程序"
},
{
"名": "版式可感",
"分数": 8,
"说明": "示例灌数是否按壳撑开各区,使人一眼能验收美化(不论文笔)"
}
],
"薄弱点": "一句话"
@@ -213,10 +246,12 @@ summary:`正文组成 · 适配 {shell_id} · …`。
1. 合法 JSON;含公共三段外壳。
2. 正文须含 `呈现壳.shell_id`(七种之一)与 `微调`;可见块只挂壳已有区域。
3. `可见块` 至少 1 条(通常含 body);禁止自造区域 id / 第五种壳。
4. 禁止程序 API schema、context `order`、完整 CSS。
5. 自评:可见完备 / 监控克制 / 可实现(=壳适配是否可执行)。
6. summary:`正文组成 · 适配 {shell_id} · {brief 缩略}`。
7. 兼容旧称产物 tag「设计.回复格式」。
4. 正文须含 `示例`:`性质` 标明非正史;`灌数` 为 `present.v1`,`shell` 与本步 shell_id 一致;只填该壳已有区域。
5. 示例内容可糙:只为验收壳与美化;禁止当开场白/正史;禁止为示例新造设定。
6. 禁止程序 API schema、context `order`、完整 CSS。
7. 自评:可见完备 / 监控克制 / 可实现 / 版式可感。
8. summary:`正文组成 · 适配 {shell_id} · {brief 缩略}`。
9. 兼容旧称产物 tag「设计.回复格式」。
## checklist
@@ -225,18 +260,22 @@ summary:`正文组成 · 适配 {shell_id} · …`。
- [ ] shell_id 在七种壳内?可见块未超出该壳分区?
- [ ] 微调轴已填或明确默认?监控栏未塞死名片字段?
- [ ] 隐藏段(若有)定界清楚?未写 CSS 工程?
- [ ] 有示例灌数(present.v1),壳一致、各区撑开,且标明非正史?
- [ ] 未把示例写成开场白或打磨成长文?
```
## examples
```examples
好:
- 适配 chat_monitor:微调监控字段=好感/今日话题;body 显示名=「短信」。
- 适配 chapter_reader:只开 header+body;aside 关。
- 适配 turn_panel:开 suggested_actions;监控只盯体力/好感。
- 适配 chat_monitor:微调监控字段=好感/今日话题;body 显示名=「短信」;示例灌数把气泡区+监控撑开,文笔随便。
- 适配 chapter_reader:只开 header+body;aside 关;示例给短章头+一段 body。
- 适配 turn_panel:开 suggested_actions;监控只盯体力/好感;示例 meta 带 2~3 个占位行动。
坏:
- 「我们自定义一种左右分栏新界面」。
- 不写 shell_id,只写「要好看的 UI」。
- 监控栏列出姓名、性别等死设定。
- 示例写成第一章正史,或为写好看新造未定设定。
- 示例 shell 与呈现壳不一致,或灌了壳没有的区域。
```