改写回合推演技能合同,并接上画面工作流库。

旧产物名仍能读到,避免改名后上下文对不上。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-14 08:29:28 +08:00
co-authored by Cursor
parent e4c3141be5
commit bc77bc4a3c
42 changed files with 1153 additions and 628 deletions
@@ -9,14 +9,16 @@ artifact: 设计.监控栏
declaration: >
定义普通楼层每轮回复实际启用的语义区域、出现条件、权威来源与内容要求;不决定前端排版和渲染。
when: |
已有故事推进及本局需要展示的变量、拓扑或其它内容后使用;排在正文组成与开场白之前。
本局会游玩、每轮有一条助手回复时就使用。默认声明正文区和文字选项;用户明确不要选项时关掉选项区。回复里还有抬头、状态、小故事或数据卡时,也在本步声明。
排在故事推进与交互范式之后、正文组成之前。用户谈到选项、状态栏、每轮除正文外还看什么时也使用。
when_not: |
每轮只需普通正文且语义合同已由上游明确、无需额外区域时可使用最小正文区域,不扩展其它块。
只讨论 HTML、CSS、Tab、分区或具体渲染 → 正文组成。
本局没有游玩回复(纯转换、资料整理、一次性成稿)→ 不使用。
持久 0 层卡、不增加普通楼层 → 0层回复呈现。
语义区已经钉死,只讨论 HTML、CSS、Tab 或分区 → 正文组成。语义区还没有时,仍先本步。
boundary: |
本能力决定回复由哪些可见或隐藏语义区域组成、何时出现、内容来自哪里、怎样才算填对。
正文组成负责把这些区域放到前端的具体位置并实现 HTML/CSS/JS、Tab 和特殊渲染。
故事推进是单轮字数及扩写/续写预算的唯一来源;本能力不重复定义篇幅。
字数区间与扩写/续写占比以故事推进与交互范式已写的为准,本步照写进正文内容要求,不另起一套数字。
变量设计与拓扑图谱定义权威数据和更新规则;本能力只决定回复是否包含其展示区或隐藏更新区。
feeds: gm,narrator
```
@@ -24,7 +26,7 @@ feeds: gm,narrator
## opening
```opening
每轮回复除正文外,还需要哪些语义内容?逐项说明它何时出现、由模型生成还是由程序投影,以及用户是否可见。若有地图或状态展示,请指出权威数据来源;若维护策略要求结构化隐藏更新,也把它列为隐藏区域。
每轮回复除正文外,还需要哪些可见内容?逐项说明它何时出现、由模型生成还是由程序投影,以及用户是否可见。有地图或状态时,指出要投影的字段。
```
## task
@@ -39,7 +41,7 @@ feeds: gm,narrator
- 对应的上游引用与正向内容要求。
- 没有内容时是省略、给空态,还是仍须输出。
正文区域只引用 `设计.故事推进` 的单轮篇幅与扩写/续写预算,不复制数值。状态、地图等权威内容使用程序投影,正文模型不重复生成。选项若启用,写清数量、各项的差异维度(如冒险/稳重)和每项的组成规则,让选项彼此不同;不声明点击交互。
正文区的 `内容要求` 照写 `设计.故事推进与交互范式` 里已经定下的目标字数或区间、扩写占比、续写占比。数字与上游一致,不另起一套。状态、地图等权威内容使用程序投影,正文模型不重复生成。文字选项默认启用:`内容约束` 写 4 条,每条约束选项该满足什么,不写成品行动句。用户明确不要选项时,省略该区。
表维护由旁观副 LLM 固定承担;本步**不**建立主回复里的隐藏变量更新区(无 `state_ops` / maintenance_channel)。可见区只投影权威数据。
@@ -52,10 +54,10 @@ feeds: gm,narrator
1. 语义区域回答“回复里有什么”,正文组成回答“在前端哪里、怎么显示”。
2. 只写实际启用区域。固定每轮出现用 `every_turn`;条件出现须给可判定条件。
3. 模型生成区写内容要求;程序投影区写权威 ref 与字段选择。程序已有的数据不让模型复述一份。
4. 正文篇幅、扩写和续写预算只引用故事推进;文风只引用叙事指南。
4. 正文内容要求照写故事推进与交互范式里的字数区间和扩写/续写占比,数字保持一致。文风只引用叙事指南,不抄遣词全文。
5. 状态与拓扑的真相来自运行数据。可见区域只选择投影字段,不在这里修改变量或拓扑。
6. 不在主回复建隐藏填表区;表由旁观副 LLM 维护。
7. 选项是文本建议。是否有交互、点击后做什么,只有正文组成和宿主前端真正实现时才声明。
7. 文字选项默认每轮都有,用户明确不要时整区省略。选项是文本建议;是否可点击,只有正文组成和宿主前端真正实现时才声明。
8. 区域要求使用正向规格;没有特殊要求便保持短,不为完整感堆区域。
9. 每个可见区属于一种:抬头、正文、小故事、数据卡、结构、文字选项。抬头是页首一行短内容;小故事是旁支短文,不推进主线,也不复述正文;条目一多或当前值一长则改用数据卡。数据卡和结构要写出露出的列或字段。
```
@@ -90,11 +92,12 @@ feeds: gm,narrator
"区域种类": "正文",
"来源": {
"方式": "model_generated",
"ref": "设计.故事推进"
"ref": "设计.故事推进与交互范式"
},
"内容要求": [
"遵守故事推进中的单轮篇幅与扩写/续写预算",
"遵守叙事指南;在本轮自然停笔点结束"
"目标字数或区间:照写故事推进与交互范式",
"扩写占比与续写占比:照写故事推进与交互范式,两者一致",
"遵守叙事指南"
],
"空值处理": "error"
},
@@ -107,13 +110,12 @@ feeds: gm,narrator
"方式": "every_turn|conditional",
"条件": "conditional 时写程序或模型可判断的条件"
},
"内容类型": "text|markdown|kv|list|table|topology|state_ops",
"区域种类": "小故事|数据卡|结构|文字选项",
"内容类型": "text|markdown|kv|list|table|topology",
"区域种类": "抬头|小故事|数据卡|结构|文字选项",
"来源": {
"方式": "model_generated|program_projection|maintenance_channel",
"方式": "model_generated|program_projection",
"ref": "上游产物、运行状态或维护策略的稳定引用",
"字段": ["程序投影时只选择实际需要的字段"],
"投递": "仅维护区使用:runtime_selects_tool_or_structured"
"字段": ["程序投影时只选择实际需要的字段"]
},
"内容要求": [
"正向说明该区域应该提供什么"
@@ -133,17 +135,19 @@ feeds: gm,narrator
"区域种类": "文字选项",
"来源": {
"方式": "model_generated",
"ref": "设计.故事推进"
"ref": "设计.故事推进与交互范式"
},
"选项": {
"数量": 2,
"各项": [
{ "差异维度": "冒险", "组成": "一句推进风险或探索的具体行动" },
{ "差异维度": "稳重", "组成": "一句观察、保守或缓和局面的具体行动" }
"数量": "本局每轮几条",
"内容约束": [
"选项必须满足的条件",
"第二条约束,仍不是成品行动",
"第三条约束",
"第四条约束"
]
},
"内容要求": [
"每项是用户角色此刻能直接采取的一句行动,按各自差异维度写,彼此不重复"
"按四条内容约束生成;每条是约束,不是成品行动"
],
"空值处理": "omit"
}
@@ -154,11 +158,11 @@ feeds: gm,narrator
硬规则:
1. 输出合法 JSON;`语义区域` 只含实际启用项,不写 `启用:false` 或未启用清单。
2. 普通楼层至少含 `body`;正文只引用故事推进,不复制目标字数、占比或字数预算。
2. 普通楼层至少含 `body`,默认再含文字选项。正文 `内容要求` 照写故事推进与交互范式的字数区间和扩写/续写占比,不另起数字。
3. 每个区域必须声明出现方式、内容类型、区域种类、来源、内容要求和空值处理。可见区的区域种类只能是抬头、正文、小故事、数据卡、结构、文字选项。
4. `program_projection` 必须给稳定 ref;状态和拓扑数据不得标为临场或要求模型重新生成。
5. 不建立主回复隐藏填表区(无 `state_ops` / `maintenance_channel`);表由旁观副 LLM 维护。
6. 文字选项须含 `选项`:数量,以及每项的差异维度和组成;不写可点击、按钮动作或回传协议。
6. 文字选项默认写入。`内容约束` 恰好 4 条,每条是对选项的约束,不是成品行动。不写可点击、按钮动作或回传协议。用户明确不要选项时省略该区。
7. 不选壳,不写布局、HTML、CSS、JS、Tab、SVG 或槽位替换;这些属于正文组成。
8. 产物正文不含自评、追问或开放问题。
9. `mount` 固定为 `["world-simulator", "narrator"]`;artifact tag 暂时保留 `设计.监控栏`。
@@ -187,9 +191,9 @@ feeds: gm,narrator
- 1:正文外长期堆积大量无关信息。
职责边界:
- 5:只定义语义内容,并把渲染、维护真相和篇幅分别交给正确节点。
- 3:主体边界正确,但夹有少量排版或重复篇幅要求。
- 1:在本步写 HTML、变量公式或重新定义推进篇幅。
- 5:只定义语义内容;字数区间和占比与故事推进与交互范式一致,渲染和变量真相交给对应节点。
- 3:主体边界正确,但夹有少量排版,或占比和上游不一致。
- 1:在本步写 HTML、变量公式,或另起一套字数。
```
## checklist
@@ -198,18 +202,27 @@ feeds: gm,narrator
- [ ] 只列实际启用区域,普通楼层含正文?
- [ ] 每个区域的出现条件、来源、要求与空值处理完整?
- [ ] 状态、地图等权威数据均由程序投影,模型没有重复生成?
- [ ] 内联维护的隐藏 state_ops 已声明运行期选路,副 Worker 路径未建立该区?
- [ ] 正文只引用故事推进,没有重复字数和比例?
- [ ] 没有建立主回复里的隐藏填表区?
- [ ] 正文内容要求写了字数区间和扩写/续写占比,且与故事推进与交互范式一致?
- [ ] 默认有文字选项;内容约束恰好 4 条,每条是约束而不是成品行动?
- [ ] 用户明确不要选项时,该区已省略?
- [ ] 未写布局、HTML/CSS/JS、Tab、SVG 或交互动作?
```
## examples
```examples
- 只有正文:只列 body,并引用故事推进和叙事指南。
- 展示状态:新增 kv 区域,来源指向变量当前值及明确字段;内容由程序投影。
- 展示地图:新增 topology 区域,说明用户应看到哪些节点、连接或当前位置;具体 SVG、表格或 Tab 留给正文组成。
- 简单变量内联维护:新增用户不可见的 state_ops 语义区域;运行期优先投递为 tool call,工具不可用时进入结构化整包。
- 文字选项:写数量、彼此差异和应提供的行动方向;不声明点击行为。
- 坏:只写「要选项」,不定数量、各项差异维度与组成,结果每轮几条选项大同小异。
好:
- 正文内容要求照写上游已定的「800–2500 字,扩写 60%,续写 40%」,不改成另一套区间。
- 文字选项默认在。内容约束四条,例如「一句此刻能做的行动」「彼此风险不同」「不写旁白」「不重复上轮原句」。
- 展示状态:新增 kv 区,来源指向变量当前值及要露出的字段,由程序投影。
缺料时:
- 故事推进还没写字数区间 → 正文内容要求该项写「未定」,gap 指向那一份,不在本步另定数字。
- 用户说不要选项 → 省略文字选项区,其余照写。
偏了就改回:
- 内容约束写成四条成品行动(「推门进去」「先观察」)→ 改成四条必须满足的约束。
- 本步把 800–2500 改成 2000–4000 → 改回故事推进与交互范式里的数字。
- 为了完整感再加隐藏填表区 → 删掉;表由旁观副 LLM 维护。
```