新建作品改为直接进入对话落盘,按本局创作方案写能力,并把楼层呈现和零层卡分开。

输入栏同时可以按分组切换模型。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-30 12:00:46 +08:00
co-authored by Cursor
parent 39fe2732fb
commit c2c9203fb0
87 changed files with 8413 additions and 3180 deletions
@@ -1,10 +1,5 @@
# 正文组成
> 技能文档。程序只切割下方 **fence 块**;`##` 标题仅供人读。
> **创作定位:把「回复呈现」已钉的内容展示给用户**(选壳、分区、用安全子集美化)。壳与【正文安全子集】由程序动态装载。
> 产物外壳:`docs/context-fragment-design.md`。
> 旧称:设计回复格式。
## meta
```meta
@@ -12,87 +7,62 @@ name: 正文组成
id: reply-format
artifact: 设计.正文组成
declaration: >
把「回复呈现」已钉的内容展示给用户:选壳、分区、按【正文安全子集】做折叠/表格等美化;有「随机范围整理」则把隐藏备用随机区接到消息;排在二者之后、开场白之前
把普通楼层「回复呈现」的语义区域落成每条消息使用的前端模板:
定义区域位置、HTML/CSS/JS、数据绑定与特殊渲染。
when: |
已有「回复呈现」(或等价:每轮终稿看什么已钉)后排。几乎每局都要。
若本局有随机需求:须已有「随机范围整理」(或确认无随机)后再排本步。
必须在「开场白与开场变量」之前。
已有普通楼层「回复呈现」,需要决定每个语义区域在气泡内如何显示时使用。
排在回复呈现之后、开场白与开场变量之前。
when_not: |
还不知道每轮给用户看什么 → 先「回复呈现」。
已定要检定/掷骰但范围表未收 → 先「随机范围整理」。
不要排在开场白之后。几乎不跳过。
只谈文风遣词 → 「叙事指南」(工序编排:「叙事指南与故事推进」)。只改呈现区域与内容规则(字数/选项槽/监控键)→ 「回复呈现」。
还不知道回复包含哪些语义内容 → 先回复呈现。
要设计持久 0 层卡、槽位更新或跨轮 Tab → 使用 0层正文组成,不在本节点兼顾。
boundary: |
本技能:前端展示——从【可选呈现壳】选壳、把回复呈现的各区域落到版式;正文语法以【正文安全子集】为准(折叠、表格等)。
回复呈现:必选/可选区域 + 各区简单内容规则——本步不重议清单与规则,只负责怎么显示。
随机范围整理:要插哪些数、范围是什么——本步不改范围表,只负责怎么藏进消息。
叙事指南:文风。变量设计:真值规则。开场白:第一屏——本步先定展示。
feeds: narrator
回复呈现决定“有什么、何时出现、来自哪里”;本能力决定“在前端哪里、如何渲染”。
状态和拓扑数据由程序投影,本能力只写绑定与渲染器;不得让正文模型重写权威数据。
隐藏维护区不进 DOM。随机数是变量表隐藏行,也与本能力无关。
壳参考库只提供布局与交互方法参考,不是必须照抄的固定产品模板。
feeds: gm,narrator
```
## opening
```opening
本局把「回复呈现」里已钉的内容展示给用户(选壳、分区、安全子集美化)。壳与安全子集由程序动态装载,不要背死。
1. 对照【可选呈现壳】:哪一个最适合放下已钉的那些东西?
2. 各项落到壳的哪一区?显示名叫什么?渲染提示用纯文本还是 Markdown?
3. 需要折叠/表格等时,对照【正文安全子集】(一般够用;html/css/js 默认空)。
4. 定稿时会用前面情节架空一幕灌进壳里,专供你看版式/美化(内容随便,不当正史)。
把回复呈现里已启用的语义区域做成普通消息气泡内的前端。先决定阅读主次和区域落点,再按需设计 Tab、表格、拓扑图等渲染;隐藏维护区不显示。
```
## task
```task
你正在执行「正文组成」。产物必须是 **context-fragment.v1** JSON,写入「设计.正文组成」。
本步 = **前端展示**:按「回复呈现」的清单,从【可选呈现壳】里选一个,把内容落到区域。
正文美化优先【正文安全子集】(用户开 Markdown 渲染时生效)。日常折叠、表格等走子集即可;「渲染」里 html/css/js 默认空字符串。
禁止重议「看什么、正文多少字」;禁止自造目录没有的 shell_id;禁止发明子集没有的语法。
为普通楼层生成一份可复用前端,写入 `设计.正文组成`。每条助手消息仍各自形成一个气泡;程序把当轮 `present.v1` 灌入同一模板。
执行顺序:
1. 读「回复呈现」与美学/叙事:清单是权威;不重开「看什么」问卷。
2. **选 shell_id**(必须是【可选呈现壳】里的 id);说明为何这个壳放得下清单里的项。
3. 可见块:把清单各项挂到该壳已有区域;写显示名与职责;渲染提示选「纯文本」或「Markdown」。
4. 「渲染」html/css/js:默认全空;仅当用户点名要超出安全子集的交互时再议(本步通常不写)。
5. 隐藏段(若清单要求):定界与用途。
6. 填「呈现壳.微调」;分区必须与壳一致。
7. **示例**:用前面已定情节架空一幕灌进 `present.v1`;body 可演示子集语法(如折叠/表格);字数以回复呈现为准。
8. 自评 + 追问;禁止写 context `order`。
1. 读取回复呈现,只处理其中实际启用的语义区域。
2. 从【壳参考库】选一只与本局已启用区域最接近的壳。按该壳备注改写样本里的名称、栏目、配色和内部小节。本局没有的区从样本骨架删除并重排,不留空位。
3. 为每个用户可见区域定义 block、位置、显示名和渲染方式。模型生成区读取对应 block;程序投影区直接绑定权威数据。
4. 隐藏 `state_ops` 等维护区列入非渲染处理,不创建 DOM 节点。
5. 写完整 HTML/CSS/JS,创作时一次生成并固定;游玩只灌数据,不再重写前端。美化用配色、字体层级、边框、间距,以及 CSS 或简单内联 SVG,按本次能写稳的程度完成。JS 通过 `present.onData(render)` 接收数据;地图所需的 SVG 从拓扑数据绘制,游玩模型不输出 SVG。
6. 给一份非正史 `present.v1` 预览数据,覆盖所有可见区域与空态。
summary:`正文组成 · 适配 {shell_id} · …`。
模板总量不超过 60 KB。材料足够便直接成稿;会改变阅读结构的缺口交给 `self_score.gap`。产物正文不放评分、诊断、追问或开放问题。
```
## principles
```principles
1. 创作 = 把「回复呈现」的清单展示出来
选壳、分区、显示名、安全子集语法都为那份清单服务。本步验收重点是「看起来对不对」。
「按意见修改」:以最新产物为底;用户要求按先后都有效,冲突时以较新的为准。用户说整体可以、或只提美化 → 不换 shell_id。换壳必须用户点名。
2. 清单权威在「回复呈现」
正文篇幅、要不要日期、展示哪些变量,以那份产物为准。本步只决定怎么显示。
3. 壳是底,子集是语法
从【可选呈现壳】选底;Markdown 区只使用【正文安全子集】。不要发明新后端协议、目录没有的壳、或子集没有的语法。
4. 隐藏段服务维护,不污染阅读
5. 与转述、变量分工
文风归叙事指南;真值归变量设计;看什么归回复呈现;本步只交展示契约。
6. 示例 = 壳与美化预览,非正史
用已定材料随便架空一幕,把各区域/监控/行动坞撑满,让用户看见版式。
禁止把示例当成开场白或游玩 canon;禁止为写好看而新造设定;文笔及格即可,勿打磨成章。
1. 语义区域必须全部有去处;未启用区域不补齐,隐藏维护区不渲染。
2. 正文是主阅读面。辅助状态、线索、地图和文字选项按用途确定层级,不平均分割注意力。
3. 程序投影区只消费权威 block:变量、拓扑和程序结果不要求模型重复填写。
4. HTML 只放稳定骨架;数据由 `present.onData` 注入。缺 block 时按合同省略或显示空态。
5. Tab、折叠、缩放等纯本地交互可以使用;不得联网、提交表单、弹窗、顶层导航或向宿主发送用户行动。
6. Markdown 使用宿主提供的安全渲染能力;动态文字使用安全 API 或转义后写入,不能拼接未清洗 HTML。
7. 地图/关系图由 JS 根据结构化拓扑绘制;显示坐标只属于布局,不回写世界真相。
8. 预览只用于验收前端,不写成开场白或正史。
9. 美化落在配色、字体层级、边框、间距和简单内联 SVG 上,写进 CSS,按本次能写稳的程度完成。
```
## probe
```probe
每轮 1~2 点。
优先:壳能否放下回复呈现的各项;分区与显示名;渲染提示纯文本还是 Markdown;要不要子集里的折叠/表格。
不追问:重议字数/变量清单、事件池 schema、文风遣词、示例文笔好坏、本局任意 CSS/JS。
每轮 1~2 点。优先确认阅读主面、辅助区域是否需要并列或折叠、拓扑采用何种可读形式。语义内容、篇幅、变量更新规则不在这里重议。
```
## output
@@ -101,168 +71,130 @@ summary:`正文组成 · 适配 {shell_id} · …`。
{
"schema": "context-fragment.v1",
"技能": "正文组成",
"brief": "一句话:选了哪壳、关键区怎么挂",
"mount": ["narrator"],
"brief": "一句话说明普通消息的阅读结构与特殊渲染",
"mount": ["world-simulator", "narrator"],
"稳变": "stable",
"正文": {
"依据的体验与呈现": {
"回复呈现要点": "从设计.监控栏摘:必选区 + 字数等",
"美学或叙事可映到版式的一句": "可空"
},
"呈现壳": {
"shell_id": "必须是【可选呈现壳】里的 id",
"为何选它": "对照回复呈现要同时看见什么",
"微调": {
"monitor_fields": [],
"block_labels": {},
"show_suggested_actions": true,
"tone_chrome": "default|messenger|book|terminal",
"empty_states": {}
}
},
"版式隐喻": "可空;一句气质,不是新壳",
"可见块": [
"参考壳": [
{
"块id": "与回复呈现一致的短名",
"挂到区域": "monitor|header|body|footer|aside",
"显示名": "可空",
"职责": "一句",
"来源提示": "转述填|程序填|混合"
"id": "壳参考库中的方法 id",
"采用": "借用什么布局、阅读节奏或局部交互方法",
"本局化": "为本局语义区域作了什么调整"
}
],
"监控栏锚点": {
"启用": true,
"字段": ["与回复呈现一致;无则 []"]
"阅读结构": {
"主阅读面": "body",
"辅助信息关系": "并列|折叠|标签页|正文前后|本局描述",
"响应式": "窄屏与宽屏如何保持正文优先"
},
"隐藏段": [
{
"段id": "variable-delta",
"用途": "变量维护语句,供程序拆进变量.当前",
"定界或正则约定": "例:<<<VARS>>>...<<<END>>>",
"用户界面": "默认隐藏|折叠可见|调试可见",
"模型必须输出": true,
"内容形状": "短键值/JSON行;非 chance toolcall",
"示例": "可选"
}
],
"前端拆分与美化": {
"需要前端分区": "是|否",
"区域": [
{
"区域id": "monitor|header|body|footer|aside",
"对应块id": ["…"],
"意图": "固定顶栏|主滚动|折叠文末|…",
"渲染提示": "纯文本|Markdown"
}
],
"渲染": {
"html": "",
"css": "",
"js": ""
},
"说明": "Markdown 区语法见【正文安全子集】;渲染三字段默认空。无分区则写「单流渲染」(通常 prose)"
},
"拼装与终稿": {
"终稿tag": "通常 输出.用户展示",
"拼装方": "叙事转述一次写出各块|程序按块拼接|混合",
"推荐灌数": "分块壳优先 present.v1;prose 可为纯 Markdown(安全子集)",
"单轮正文篇幅": "以回复呈现的字数为准,本步不重钉",
"与正文关系": "转述读主世界「输出.用户展示」再填各块;可补残稿与版式,不改剧情;隐藏段可供旁观解析维护语句"
},
"示例": {
"性质": "验收预览|非正史|仅看壳与美化",
"依据": ["前面已定情节/设定要点,一两句即可"],
"用来说明": "这幕只为撑开版式(分区、监控、行动坞、显示名…),内容可糙",
"灌数": {
"schema": "present.v1",
"shell": "与正文.呈现壳.shell_id 一致",
"blocks": {
"monitor": "若该壳有 monitor:短键值;否则省略",
"header": "若有则短字;无则省略",
"body": "架空主读文;需要时可演示 :::details / 表格(短段即可)",
"aside": "若有则短线索/备注;无则省略",
"footer": "若有则可空或一句"
"数据契约": {
"schema": "present.v1",
"blocks": {
"body": {
"类型": "markdown",
"来源": "model_generated",
"职责": "主读正文",
"空值": "error"
},
"meta": {
"suggested_actions": ["若该壳开建议行动则给 2~3 个占位选项;否则 []"]
"本局其它可见区域 id": {
"类型": "text|markdown|kv|list|table|topology",
"来源": "model_generated|program_projection",
"职责": "从回复呈现继承",
"空值": "omit|empty_state|error"
}
},
"不渲染": [
{
"id": "内联维护区 id;无则省略",
"交给": "运行时维护解析器"
}
]
},
"区域落点": [
{
"block_id": "与回复呈现一致",
"位置": "DOM 区域或 Tab id",
"显示名": "需要标题时填写;不需要则空字符串",
"渲染": "safe_markdown|text|kv|list|table|topology_svg",
"交互": "无|本地切换|折叠|缩放",
"空态": "省略或显示什么"
}
],
"frontend": {
"html": "<div id=\"app\">完整稳定骨架</div>",
"css": "完整样式;正文优先;含窄屏规则",
"js": "使用 present.onData(render) 的完整渲染代码"
},
"示例灌数": {
"schema": "present.v1",
"blocks": {
"body": "非正史短占位正文",
"本局其它可见区域 id": "与其类型相符的非正史数据"
}
}
},
"自评": {
"维度": [
{
"名": "可见完备",
"分数": 8,
"说明": "用户该看见的块是否齐、顺序是否服务体验"
},
{
"名": "清单落实",
"分数": 8,
"说明": "回复呈现的各项是否都落到壳区域"
},
{
"名": "可实现",
"分数": 8,
"说明": "shell_id 是否在【可选呈现壳】内;Markdown 是否只用【正文安全子集】"
},
{
"名": "版式可感",
"分数": 8,
"说明": "示例灌数是否按壳撑开各区,使人一眼能验收美化(不论文笔)"
}
],
"薄弱点": "一句话"
},
"追问": {
"导语": "为钉准用户看见的版式,还需确认:",
"题目": [
{
"问": "…",
"建议选项": ["选项A", "选项B", "其它(请写明)"],
"示例": "可选"
}
]
},
"开放问题": []
}
}
```
硬规则:
1. 合法 JSON;含公共三段外壳。
2. 正文须含 `呈现壳.shell_id`(须在【可选呈现壳】内)与 `微调`;可见块只挂壳已有区域。
3. `可见块` 至少 1 条(通常含 body);禁止自造区域 id / 目录没有的壳。
4. 正文须含 `示例`:`性质` 标明非正史;`灌数` 为 `present.v1`,`shell` 与本步 shell_id 一致;只填该壳已有区域。
5. 示例内容可糙:只为验收壳与美化;禁止当开场白/正史;禁止为示例新造设定。
6. 禁止程序 API schema、context `order`。Markdown 区只使用【正文安全子集】;渲染 html/css/js 默认空。
7. 自评:可见完备 / 清单落实 / 可实现 / 版式可感。
8. summary:`正文组成 · 适配 {shell_id} · {brief 缩略}`。
9. 兼容旧称产物 tag「设计.回复格式」。
1. 输出合法 JSON;`数据契约.blocks` 必须覆盖回复呈现的全部用户可见区域,id 保持一致。
2. 程序投影区不得改成模型生成;隐藏维护区只能进入 `不渲染`,不得出现在 DOM 或预览 blocks。
3. `frontend.html/css/js` 均须给出可执行内容;合计不超过 60 KB。JS 必须调用 `present.onData(render)`。
4. HTML 不嵌入本轮数据;动态文字安全渲染。禁止网络、表单、弹窗、顶层导航和宿主行动回传。
5. topology 渲染读取结构化节点与连接;不得要求游玩模型输出 SVG。
6. `示例灌数` 是非正史预览,schema 固定 `present.v1`,只含用户可见 blocks。
7. 不重定义语义区域、篇幅、文风、变量规则、随机数或 0 层槽位更新。
8. 产物正文不含自评、追问或开放问题。
9. `mount` 固定为 `["world-simulator", "narrator"]`;兼容旧称 tag `设计.回复格式`。
## score
```score
区域落实:
- 5:每个可见语义区域都有 block、落点和渲染器;隐藏区明确不渲染。
- 3:主体完整,但有一个辅助区落点或空态含糊。
- 1:漏区,或擅自添加回复呈现没有的内容。
阅读结构:
- 5:正文始终是主阅读面,辅助信息层级与响应式布局服务本局体验。
- 3:总体可读,但某个并列区略抢正文或窄屏处理不足。
- 1:区域平均堆叠,阅读焦点混乱。
权威绑定:
- 5:变量、拓扑和程序结果只读权威投影,模型生成区边界清楚。
- 3:主要绑定正确,但有一个权威字段仍可能被模型重复填写。
- 1:地图或状态每轮由模型重编。
实现完整:
- 5:HTML/CSS/JS 与 present.v1 合同闭合,空态、安全渲染和故障降级均可实现。
- 3:主体可运行,但有一处事件、空态或数据类型未闭合。
- 1:只有外观描述或空代码,无法执行。
本局化:
- 5:参考壳的方法被消化成本局布局,没有固定产品换皮感。
- 3:适配基本成立,但仍明显照搬单一参考。
- 1:只选一个壳名,没有根据语义区域设计。
```
## checklist
```checklist
- [ ] 是把「回复呈现」的清单展示出来,而不是重议看什么?
- [ ] shell_id 在【可选呈现壳】内?可见块未超出该壳分区?
- [ ] 清单各项已落到区域?字数未在本步另定一套?
- [ ] Markdown 区语法落在【正文安全子集】内?渲染三字段默认空?
- [ ] 有示例灌数(present.v1),壳一致、各区撑开,且标明非正史?
- [ ] 未把示例写成开场白或打磨成长文?
- [ ] 回复呈现的全部可见区域均有 block、落点与渲染方式?
- [ ] 隐藏维护区未进入 DOM 或预览?
- [ ] 程序投影的变量和拓扑没有要求模型重写?
- [ ] HTML/CSS/JS 完整,JS 使用 present.onData(render),总量不超 60 KB?
- [ ] 美化已用配色、字体层级、边框、间距或简单 SVG 写进 CSS,程度限于本次能写稳的部分?
- [ ] 本地交互不联网、不回传行动,动态内容安全渲染?
- [ ] present.v1 预览覆盖可见区域并明确非正史?
```
## examples
```examples
好:
- 回复呈现要正文+好感:选 chat_monitor,好感进 monitor,正文进 body;渲染提示 Markdown。
- 需要折叠说明:body 用 :::details 标题 … :::(见安全子集)。
- 需要对照表:body 用 Markdown 表格。
- 回复呈现只要正文:选 prose;渲染三字段空。
坏:
- 本步重钉「正文 300 字」而回复呈现已经写了 800~1500。
- 不写 shell_id,只写「要好看的 UI」。
- 示例写成第一章正史,或为写好看新造未定设定。
- 示例 shell 与呈现壳不一致,或灌了壳没有的区域。
- 写本局任意 CSS/JS,却只是要折叠或表格。
- 只有正文:生成克制的阅读模板,body 用安全 Markdown 渲染,不添加无用侧栏。
- 正文 + 状态:状态 block 绑定程序投影,可放正文上方或紧凑侧区;正文模型不输出状态副本。
- 正文 + 地图:JS 根据 topology block 绘制 SVG;节点名称安全转义,窄屏可切到列表降级。
- 多个辅助区:确有必要时使用本地 Tab;切换只改变当前气泡显示,不向宿主发送消息。
- 武侠阅读:纸色、墨色、细线框和一条简单 SVG 纹样;只保留本局启用的区。
- 不合适:把隐藏 state_ops 做成折叠面板;只写“机械风界面”却不给代码;让模型每轮输出地图 SVG。
```