Files
writing-agent/skills/dialogue/world-simulator/modules/zero-layer-status/prompt.md
T

7.8 KiB

0 层回复呈现

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

这张持久卡需要保留哪些区域?逐项说明它在什么情况下更新、是替换当前内容、追加记录,还是由程序更新结构化数据。

task

为 0 层模式定义持久卡语义合同,写入 `设计.0层回复呈现`。只列本局实际启用的槽位;未启用的槽位直接省略。

每个可见槽位写清:
- 用途、内容类型和用户能看到什么。
- 更新触发:每轮,或可由程序判断的条件。
- 更新方式只选一种:`replace` 替换当前内容、`append` 追加有界记录、`data` 更新结构化数据。
- 来源是模型生成还是程序权威投影,并引用稳定上游。
- 没有新内容时保持原值、显示空态还是清空。

正文同样是槽位。它可以替换为本轮正文,也可以追加到卡内日志,但不能同时使用两种语义。`append` 必须给记录上限或压缩规则,避免 0 层卡无限增长。

变量、拓扑和备忘录使用 `program_projection`,正文模型不重复生成。简单变量需要内联维护时,另列用户不可见的维护通道;程序优先使用 tool call,工具不可用时使用结构化 `state_ops`。副 Worker 维护不建立主回复维护通道。

材料足够便直接成稿;真正改变槽位合同的缺口交给 `self_score.gap`。产物正文不放评分、诊断、追问或开放问题。

principles

1. 0 层是同一张卡持续更新,不是把普通回复列表藏起来。
2. 一个槽位只选一种更新方式;需要不同语义时拆成两个有明确用途的槽位。
3. `replace` 保留最新值;`append` 保留有界记录;`data` 由程序按结构化字段更新。
4. 程序已有的状态、拓扑和计算结果只投影,不让正文模型复述。
5. 槽位更新条件必须可判断;没有更新时默认保持原值,不用空内容覆盖。
6. 隐藏维护通道不是可见槽位,不进入 DOM。
7. 本能力只定义语义,不写 HTML、CSS、JS、Tab、SVG 或正则。
8. 每个可见槽位属于一种:抬头、正文、小故事、数据卡、结构、文字选项。抬头是页首一行短内容。隐藏维护通道不占这些区。

probe

每轮 1~2 点。优先确认哪些内容必须持久可见、正文是替换还是追加、追加内容保留多久,以及某槽位应由模型还是程序更新。

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

槽位必要性:
- 5:每个槽位都服务明确体验或运行需要,没有为了像应用而堆空 Tab。
- 3:主体必要,但有一个槽位可以合并或价值偏弱。
- 1:大量槽位没有稳定用途。

更新语义:
- 5:每个槽位的 replace、append 或 data 选择准确,触发和无更新处理完整。
- 3:主体清楚,但有一个槽位的更新方式或触发略含糊。
- 1:只说“刷新”,无法判断怎样修改持久内容。

权威来源:
- 5:模型内容与程序投影边界清楚,变量和拓扑没有被重复生成。
- 3:主要来源正确,但有一个字段存在双写风险。
- 1:权威状态由正文模型每轮重编。

长期负担:
- 5:追加槽有上限或压缩规则,未更新槽保持原值,长期运行不会无限膨胀。
- 3:整体可控,但一个追加区缺少明确上限。
- 1:所有历史都无限追加或每轮重写整张卡。

职责边界:
- 5:只定义语义槽位,把渲染、数据维护和篇幅交给正确节点。
- 3:主体正确,夹有少量布局描述。
- 1:在本步直接写前端代码或变量公式。

checklist

- [ ] 只列实际启用槽位,且包含 body?
- [ ] 每个槽位只选一种更新方式,触发与无更新处理完整?
- [ ] append 有上限,data 有权威来源?
- [ ] 隐藏维护通道未混入可见槽位?
- [ ] 未写前端、正则或重复权威数据?

examples

- 终端体验:正文 replace;公司指令 replace;操作日志 append 且只保留最近若干条;监控表盘 data。
- 固定学校:正文 replace;地图 data,读取权威拓扑;线索板 append 并按章节压缩。
- 不合适:每轮输出整张地图文本并覆盖权威图;所有槽位都 append 且没有上限。