# 0 层回复呈现 ## meta ```meta name: 0层回复呈现 id: zero-layer-status artifact: 设计.0层回复呈现 declaration: > 定义持久 0 层卡实际启用的语义槽位、更新触发、更新方式、权威来源与内容要求;不决定 HTML 和排版。 when: | 本局选择 0 层模式,开场卡会在后续回合原地更新,而不是持续增加新的可见助手楼层时使用。 when_not: | 本局使用普通消息楼层 → 回复呈现。 只讨论 HTML、Tab、布局或具体渲染 → 0层正文组成。 boundary: | 本能力决定持久卡里有什么语义槽位,以及每轮怎样更新。 0层正文组成负责固定外壳、槽位位置和渲染;变量与拓扑仍由其权威产物维护。 feeds: gm,narrator ``` ## opening ```opening 这张持久卡需要保留哪些区域?逐项说明它在什么情况下更新、是替换当前内容、追加记录,还是由程序更新结构化数据。 ``` ## task ```task 为 0 层模式定义持久卡语义合同,写入 `设计.0层回复呈现`。只列本局实际启用的槽位;未启用的槽位直接省略。 每个可见槽位写清: - 用途、内容类型和用户能看到什么。 - 更新触发:每轮,或可由程序判断的条件。 - 更新方式只选一种:`replace` 替换当前内容、`append` 追加有界记录、`data` 更新结构化数据。 - 来源是模型生成还是程序权威投影,并引用稳定上游。 - 没有新内容时保持原值、显示空态还是清空。 正文同样是槽位。它可以替换为本轮正文,也可以追加到卡内日志,但不能同时使用两种语义。`append` 必须给记录上限或压缩规则,避免 0 层卡无限增长。 变量、拓扑和备忘录使用 `program_projection`,正文模型不重复生成。简单变量需要内联维护时,另列用户不可见的维护通道;程序优先使用 tool call,工具不可用时使用结构化 `state_ops`。副 Worker 维护不建立主回复维护通道。 材料足够便直接成稿;真正改变槽位合同的缺口交给 `self_score.gap`。产物正文不放评分、诊断、追问或开放问题。 ``` ## principles ```principles 1. 0 层是同一张卡持续更新,不是把普通回复列表藏起来。 2. 一个槽位只选一种更新方式;需要不同语义时拆成两个有明确用途的槽位。 3. `replace` 保留最新值;`append` 保留有界记录;`data` 由程序按结构化字段更新。 4. 程序已有的状态、拓扑和计算结果只投影,不让正文模型复述。 5. 槽位更新条件必须可判断;没有更新时默认保持原值,不用空内容覆盖。 6. 隐藏维护通道不是可见槽位,不进入 DOM。 7. 本能力只定义语义,不写 HTML、CSS、JS、Tab、SVG 或正则。 8. 每个可见槽位属于一种:抬头、正文、小故事、数据卡、结构、文字选项。抬头是页首一行短内容。隐藏维护通道不占这些区。 ``` ## probe ```probe 每轮 1~2 点。优先确认哪些内容必须持久可见、正文是替换还是追加、追加内容保留多久,以及某槽位应由模型还是程序更新。 ``` ## output ```output { "schema": "context-fragment.v1", "技能": "0层回复呈现", "brief": "一句话说明持久卡有哪些槽位及主要更新方式", "mount": ["world-simulator", "narrator"], "稳变": "stable", "正文": { "模式": "zero_layer", "语义槽位": [ { "id": "body", "名称": "正文", "用途": "承载当前场面或卡内叙事记录", "用户可见": true, "内容类型": "markdown", "区域种类": "正文", "更新": { "方式": "replace|append", "触发": "every_turn", "无新内容": "keep", "记录上限": "仅 append 时填写条数或压缩规则" }, "来源": { "方式": "model_generated", "ref": "设计.故事推进" }, "内容要求": [ "遵守故事推进与叙事指南", "只生成该槽位本次需要新增或替换的内容" ] }, { "id": "本局实际启用的其它槽位 id", "名称": "公司指令、监控表盘、地图、关系或其它本局名称", "用途": "该槽位持续帮助用户看到什么", "用户可见": true, "内容类型": "text|markdown|kv|list|table|topology", "区域种类": "小故事|数据卡|结构|文字选项", "更新": { "方式": "replace|append|data", "触发": "every_turn|conditional", "条件": "conditional 时填写可判断条件", "无新内容": "keep|empty_state|clear", "记录上限": "仅 append 时填写" }, "来源": { "方式": "model_generated|program_projection", "ref": "稳定上游或运行状态引用", "字段": ["程序投影时只选择实际展示字段"] }, "内容要求": ["正向说明这个槽位每次应提供什么"] } ], "隐藏维护通道": [ { "id": "简单变量内联维护时填写;否则省略", "内容类型": "state_ops", "投递": "runtime_selects_tool_or_structured", "用户可见": false } ] } } ``` 硬规则: 1. 输出合法 JSON;只列实际启用槽位,至少包含 `body`。 2. 每个槽位必须有稳定 id、区域种类、更新方式、触发、无新内容处理、来源和内容要求。可见槽位的区域种类只能是抬头、正文、小故事、数据卡、结构、文字选项。 3. `append` 必须有记录上限或压缩规则;`data` 必须来自程序权威投影。 4. 没有更新时保持原值;除非合同明确要求,不用空值清槽。 5. 隐藏维护通道用户不可见,不属于语义槽位。 6. 不写 HTML、CSS、JS、Tab、SVG、正则或槽位选择器。 7. 产物正文不含自评、追问或开放问题。 8. `mount` 固定为 `["world-simulator", "narrator"]`。 ## score ```score 槽位必要性: - 5:每个槽位都服务明确体验或运行需要,没有为了像应用而堆空 Tab。 - 3:主体必要,但有一个槽位可以合并或价值偏弱。 - 1:大量槽位没有稳定用途。 更新语义: - 5:每个槽位的 replace、append 或 data 选择准确,触发和无更新处理完整。 - 3:主体清楚,但有一个槽位的更新方式或触发略含糊。 - 1:只说“刷新”,无法判断怎样修改持久内容。 权威来源: - 5:模型内容与程序投影边界清楚,变量和拓扑没有被重复生成。 - 3:主要来源正确,但有一个字段存在双写风险。 - 1:权威状态由正文模型每轮重编。 长期负担: - 5:追加槽有上限或压缩规则,未更新槽保持原值,长期运行不会无限膨胀。 - 3:整体可控,但一个追加区缺少明确上限。 - 1:所有历史都无限追加或每轮重写整张卡。 职责边界: - 5:只定义语义槽位,把渲染、数据维护和篇幅交给正确节点。 - 3:主体正确,夹有少量布局描述。 - 1:在本步直接写前端代码或变量公式。 ``` ## checklist ```checklist - [ ] 只列实际启用槽位,且包含 body? - [ ] 每个槽位只选一种更新方式,触发与无更新处理完整? - [ ] append 有上限,data 有权威来源? - [ ] 隐藏维护通道未混入可见槽位? - [ ] 未写前端、正则或重复权威数据? ``` ## examples ```examples - 终端体验:正文 replace;公司指令 replace;操作日志 append 且只保留最近若干条;监控表盘 data。 - 固定学校:正文 replace;地图 data,读取权威拓扑;线索板 append 并按章节压缩。 - 不合适:每轮输出整张地图文本并覆盖权威图;所有槽位都 append 且没有上限。 ```