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

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

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,9 +1,5 @@
# 变量设计与更新规则
> 技能文档。程序只切割下方 **fence 块**;`##` 标题仅供人读。
> 方法:`docs/progressive-data-design.md`;外壳:`docs/context-fragment-design.md`。
> 与「正文组成」隐藏段、生成规则/具体实例的 Data 表、旁观汇总对齐。
## meta
```meta
@@ -11,78 +7,59 @@ name: 变量设计与更新规则
id: variable-design
artifact: 设计.变量设计与更新规则
declaration: >
体验必须跨轮记住少数状态时:钉真值、谁可写、如何变、维护语句,以及按值换文案的映射索引
定义必须跨轮保存的最少真值、合法更新条件、权限与派生映射,供程序选择简单状态工具或复杂维护副 Worker。
when: |
体验需要跨轮记住少数状态,否则会糊:必须可查询、门控、防重复,或到某值换一套态度/文案/章纲。
用户点名要好感/资源/阶段数字、分档换性格、进度门控时排。
某项状态若不持久保存,就会导致数值、阶段、资源、门控或已发生事实跨轮漂移时使用。
when_not: |
无状态纯对话,或状态只临场描写、从不程序化 → 不排。
只要大段设定不要门控 → 「舞台骨架」/「生成规则」。
只规定谁的提示词看见什么 → 「变量控制上下文」。
只规定每轮给用户看哪些(正文/字数/变量/日期)→ 「回复呈现」。
状态只需从最近正文理解、无需查询或门控 → 不使用。
节点与连接构成的地图、关系或路径 → 拓扑图谱。
大段设定或同类对象合同 → 舞台骨架 / 生成规则。
boundary: |
本技能:真值清单、更新规则、维护语句约定、Data 映射索引、side_effects 草案。
分档长文/性格切片正文:由生成规则定格式、具体实例填表;本步做索引与门控,不重写整表。
正文组成:隐藏段定界符——本步钉「维护语句写什么」;定界样式与之对齐。
随机范围整理:检定/掷骰取值范围汇总(程序插备用数)——不是变量表维护手段;本步不收随机表。
变量控制上下文:挂载对象与旁观汇总视野。
细化终稿:收成 tables.side_effects。
feeds: gm
本能力定义什么是真值、什么事实允许它改变,以及改变后的约束;不决定 API 投递方式。
少量简单变量由程序生成主世界层状态工具;复杂变量与拓扑等由维护合同编译工具汇总。
变量控制上下文负责详细可见范围;正文组成负责展示。本能力不写隐藏段、正则、maintain 包或界面格式。
feeds: gm,auditor
```
## opening
```opening
先说「玩的时候必须记住、否则体验会糊」的东西:
1. 数字/阶段?(好感、章节、资源…)一次性门?
2. 有没有「到了某值换一套态度/大纲」的表?(表正文可已在具体实例里)
3. 每轮如何声明变量变了?(旁观维护 maintain.v1 / 正文隐藏段键值 / 两者)
4. 旁观或主世界层是否需要一份「当前映射摘要」(如好感档→性格要点)?
说说哪些状态必须跨轮准确记住,以及什么已经发生的事实才能让它们改变。只列不保存就会出错的真值;临时描写不用变量化。
```
## task
```task
你正在执行「变量设计与更新规则」。产物必须是 **context-fragment.v1** JSON,写入「设计.变量设计与更新规则」。
为本局定义跨轮真值及其更新规则,写入 `设计.变量设计与更新规则`。先做必要性检验,再为每个真值写稳定 id、类型、初始化要求、公开性、允许写入者、允许操作、范围和基于事实的更新规则。
三分:
- **真值**:跨轮必须记住的少数字段(好感、章节…)
- **Data 映射**:阈值→切片大表(性格档、章纲、事件池)——格式归生成规则,行归具体实例;本步建索引并指向实例/规则 id
- **Progressive**:side_effects 按真值边沿投影当前切片;旁观/主世界层读投影或汇总,不整表常驻
区分两类判断:
- `deterministic`:程序能从明确指令、公式或工具结果直接计算。
- `narrative_inference`:必须结合本轮正文中已经成立的事实判断;须写证据要求,不能凭倾向猜测。
**维护语句**:规定如何声明变更(供程序拆进 `变量.当前`)。主路径是旁观维护 `maintain.v1`(读本轮正文推断 table_ops);可选正文隐藏段键值。主世界层不交 settlement 裁决包。
这不是掷骰;随机数走「随机范围整理」+ 程序插入的备用数。隐藏段定界与「正文组成」对齐。
若真值只用于选择分档文本或实例切片,保存真值并引用映射来源,不把派生结果建立成第二个可写真值。若跨越阈值会触发一次性或边沿效果,写成触发规则。
执行顺序:
1. 读美学/机制/生成规则/具体实例/正文组成;不重开体验。
2. 立真值(承重才建);写写入源与更新规则。
3. 建 Data 映射索引:每张表写清键依哪个真值、材料来自哪条 rule_id/batch、给旁观/投影用的摘要字段。
4. 写维护语句约定:形状、必填键、与隐藏段/旁观维护的关系、示例一句。
5. 写 side_effects(once/every_edge → replace_tag 等)。
6. 自评 + 追问;输出 JSON。
最后根据变量数量、相互依赖、判断方式和触发复杂度给出维护复杂度事实,供程序选择 `none / inline_tool / inline_structured / auditor_bundle`;这是建议,不绑定 API 能力。
summary:`变量设计 · …`(点题主真值 + 有无映射表)。
材料足够便直接成稿;真正会改变变量合同的缺口交给 `self_score.gap`。产物正文不放评分、诊断、追问或开放问题。
```
## principles
```principles
1. 承重才立真值;派生性格不落第二可写格。
2. 映射内容:具体实例生成 → 本步索引汇总 → side_effects/变量控制上下文供给旁观与主世界层。
3. 维护靠「声明 + 程序合并」,不靠模型直接改库:
- 主路径:旁观维护 maintain.v1(读本轮正文)和/或正文隐藏段(正则/定界)→ Runtime 合并进 变量.当前
- 边沿:side_effects 换投影 tag
- 用户手改;chance 只出随机数,不替代维护语句
4. 维护语句必须可生成、可校验:固定键名、短值、禁止散文糊弄。
5. 旁观要看的是「当前档摘要」,不是整份实例库;汇总句或投影 tag 即可。
6. 宁少勿多;与监控栏字段可交集但职责不同(监控=用户看见;真值=程序真相)。
1. 承重才立真值:必须可查询、计算、门控或防止重复;仅为描写方便的状态不落库。
2. 字段不多不少且互不重叠。余额与存款只留一个;由好感推得的态度档不另设可写字段。
3. 更新规则以已发生事实为证据,写清条件、操作和边界。模型可以判断事实,程序负责校验与提交。
4. 类型决定操作:number/integer 可 `set|delta`;enum/string/boolean 可 `set`;set 可 `add|remove`。不用散文值绕过类型。
5. 公开性只区分用户可见与隐藏;更细的主世界层、转述、旁观投影交给变量控制上下文。
6. 阈值映射只保存引用和选取条件;长文内容仍在生成规则/具体实例中。
7. 维护复杂度按实际依赖判断,不机械按数量:一个简单余额可走 inline tool;一个可扩展关系图不属于简单变量。
8. 不在正文中设计隐藏标签、正则或维护 JSON;投递方式由程序根据 API 能力选择。
```
## probe
```probe
每轮 1~2 点:主真值;连续数字还是阶段枚举;维护走旁观 maintain / 隐藏段 / 两者;映射表是否已有具体实例可索引;旁观要不要当前档摘要。
每轮 1~2 点。优先确认不保存会出什么错、变量类型与初值、哪些已成立事实允许更新,以及更新是程序可确定还是需要正文推断。
```
## output
@@ -91,136 +68,138 @@ summary:`变量设计 · …`(点题主真值 + 有无映射表)。
{
"schema": "context-fragment.v1",
"技能": "变量设计与更新规则",
"brief": "一句话:主真值 + 映射/维护方式",
"mount": ["world-simulator"],
"brief": "一句话说明必须记住哪些真值,以及更新判断的复杂度",
"mount": ["world-simulator", "auditor"],
"稳变": "stable",
"正文": {
"依据的体验": ["从机制/美学提取的状态化点"],
"真值": [
{
"名": "好感",
"类型": "number|enum|boolean|string|set",
"初值": 0,
"对用户可见": true,
"对主世界层可见": true,
"写入源": ["llm", "用户"],
"更新": {
"时机": "…",
"方式": "delta|绝对值|枚举切换",
"钳制": "0..100|未定",
"执行单元": "world-simulator"
"id": "稳定安全 id",
"名称": "用户可读名称",
"用途": "不保存它会造成什么跨轮错误",
"类型": "number|integer|enum|string|boolean|set",
"初始化": {
"默认值": 0,
"开场确定规则": "开场可覆盖默认值时写条件;否则写固定"
},
"备注": ""
"公开性": "public|hidden",
"允许写入者": ["从 program|gm_tool|auditor|user 中选择实际允许项"],
"允许操作": ["按类型从 set|delta|add|remove 中选择"],
"约束": {
"最小值": 0,
"最大值": 100,
"枚举值": [],
"其它不变量": []
},
"更新规则": [
{
"当": "什么已发生事实允许更新",
"判断方式": "deterministic|narrative_inference",
"证据要求": "程序输入或正文中必须能指出什么",
"操作": "set|delta|add|remove",
"值规则": "固定值、公式或允许的推断范围",
"时机": "pre_narrative|post_narrative"
}
]
}
],
"Data映射索引": [
"派生映射": [
{
"映射id": "affinity-personality",
"用途": "好感分档性格|章大纲|场景包|事件池|…",
"键依真值": "好感",
"键规则": "例:区间 [0,30)/[30,60)/[60,100]",
"结构摘要": "阈值 → 态度/行为切片字段…",
"生成规则rule_id": "来自设计.生成规则;无则待补",
"具体实例batch_id": "来自设计.具体实例;无则待补",
"旁观与投影要用的摘要键": ["档名", "态度要点", "禁触"],
"说明": "长文在实例表;本索引只为查表与汇总"
"id": "稳定映射 id",
"用途": "真值变化后选择什么只读切片",
"依据变量": ["变量 id"],
"选取规则": "区间、枚举匹配或组合条件",
"来源": {
"规则名": "设计.生成规则#中文规则名;无则省略",
"名称": "设计.具体实例#中文名;无则省略"
},
"读取字段": ["需要投影的摘要字段"]
}
],
"维护语句约定": {
"通道": ["旁观maintain.v1", "隐藏段", "二者都要"],
"与正文组成对齐": "隐藏段段id / 定界约定;无隐藏段则写「仅旁观维护」",
"语句形状": {
"格式": "maintain.v1 table_ops|隐藏段键值列表",
"必填键": ["key", "delta|to"],
"禁止": ["无键散文", "改未立真值", "主世界层交 settlement JSON"]
},
"生成要求": "旁观维护按本轮正文推断变更(多数轮可空);主世界层专注故事正文",
"示例": [
{ "key": "好感", "delta": 8, "reason": "送礼成功" }
],
"程序侧": "Runtime 合并 maintain.v1 → 变量.当前;再跑 side_effects;非 chance toolcall"
},
"side_effects": [
"触发规则": [
{
"id": "affinity-romance",
"field": "好感",
"op": "gte",
"value": 60,
"mode": "once",
"id": "稳定触发 id",
"条件": {
"变量": "变量 id",
"比较": "eq|neq|gte|lte|gt|lt|changed",
"值": 0
},
"模式": "once|every_edge",
"action": {
"type": "replace_tag",
"tag": "上下文.角色态度",
"content": "恋爱档要点或「按映射id查当前档摘要」"
"类型": "project_mapping|write_memo|queue_generation",
"目标": "映射 id、备忘录 id 或规则 id",
"要求": "触发后程序应做什么"
}
}
],
"旁观汇总意图": {
"需要": "是|否",
"汇总什么": "例:当前好感档性格要点 + 已触发 once 门",
"建议tag": "上下文.旁观.状态摘要",
"材料来自": ["Data映射索引", "投影tag", "真值字段"]
},
"不立变量的理由": ["…"]
},
"自评": {
"维度": [
{
"名": "承重度",
"分数": 8,
"说明": "真值是否只覆盖必须跨轮记住的状态"
},
{
"名": "可维护",
"分数": 8,
"说明": "维护语句是否可解析;映射索引是否接得上实例/规则"
},
{
"名": "克制度",
"分数": 8,
"说明": "无派生可写格膨胀;无用 chance 冒充改表"
}
],
"薄弱点": "一句话"
},
"追问": {
"导语": "为钉准变量与维护,还需确认:",
"题目": [
{
"问": "…",
"建议选项": ["选项A", "选项B", "其它(请写明)"],
"示例": "可选"
}
]
},
"开放问题": []
"维护复杂度": {
"建议": "inline_tool|auditor_bundle",
"依据": [
"变量数量、交叉依赖、narrative_inference、触发规则与其它可变产物"
],
"可合并更新": [
"必须原子提交的一组变量 id;无则空数组"
]
}
}
}
```
硬规则:
1. context-fragment.v1 外壳;自评承重度/可维护/克制度。
2. Data 映射索引可指向尚未生成的实例(标待补),但键与用途必须清。
3. 维护语句约定必填;须声明通道与示例。
4. side_effects 可 `[]`。禁止输出完整 workers[]。
5. summary:`变量设计 · {brief 缩略}`。
1. 输出合法 JSON;每个真值必须有稳定 `id`、用途、类型、初始化、权限、操作、约束和更新规则。
2. 类型与允许操作必须相容;number/integer 的边界、enum 的枚举值必须明确;不适用的约束字段省略。
3. `narrative_inference` 必须写证据要求;正文没有该证据时不更新。
4. 派生映射与触发规则可为空;存在时必须引用已声明变量,且派生结果不得成为第二个可写真值。
5. `维护复杂度.建议` 只在 `inline_tool|auditor_bundle` 中选择;程序仍按 API 能力决定具体投递方式。
6. 不输出隐藏段、正则、`maintain.v1/v2`、tool schema、Worker 提示或界面字段。
7. 产物正文不含自评、追问或开放问题。
8. `mount` 固定为 `["world-simulator", "auditor"]`。
## score
```score
真值必要性:
- 5:每个字段不保存都会造成明确跨轮错误,没有临时描写或可派生冗余。
- 3:主体必要,但夹有一个可从其它字段或最近正文推出的状态。
- 1:把人物感受、场景描述或大段设定全部变量化。
字段妥当性:
- 5:类型、初值、操作和约束彼此一致,字段数量恰当且不重叠。
- 3:基本可用,但有边界、枚举或初始化要求不够明确。
- 1:类型与操作冲突,或存在余额/存款一类重复真值。
更新可执行性:
- 5:每条规则都有已发生事实、判断方式、证据、操作、值规则和时机。
- 3:更新方向明确,但证据或值范围仍需猜测。
- 1:只说“随剧情变化”,无法生成或校验更新。
权限与公开性:
- 5:写入者与公开性符合用途,隐藏真值不会因显示或用户误改而泄露、漂移。
- 3:大体合理,但有一项写入者或公开边界含混。
- 1:任何执行单元都能任意改,或秘密状态被默认公开。
映射与触发一致性:
- 5:映射、阈值触发和原子更新都引用有效变量,且没有建立重复可写真值。
- 3:主体能接通,但有来源引用或边沿语义不清。
- 1:派生结果反向覆盖真值,或触发引用不存在字段。
```
## checklist
```checklist
- [ ] 真值有写入源与更新时机?
- [ ] 映射索引指向规则/实例或标待补?旁观摘要键清楚?
- [ ] 维护语句可解析且与正文组成/旁观维护对齐?
- [ ] 未把分档长文做成可写真值?未用 chance 当改表?
- [ ] 每个真值都通过“不保存会出错”的必要性检验?
- [ ] 类型、初值、允许操作、约束和写入者互相一致?
- [ ] 每条更新规则都有事实证据和可执行的值规则?
- [ ] 派生映射未被重复建成可写真值?
- [ ] 维护复杂度依据实际依赖,而不是只按变量数量?
- [ ] 未写隐藏标签、正则、维护包或界面格式?
```
## examples
```examples
好:
- 好感真值 + 映射索引指向 concrete batch「分档性格」+ side_effect 投影态度 + 维护语句走 variable_changes。
- 旁观汇总意图:只挂当前档「态度要点」,不挂整表。
坏:
- 每轮让模型重写「当前性格」长字符串当真值。
- 只写「好感会变」无维护语句形状。
- 用 run_worker chance 来改好感。
- 单个数值真值、只有 set/delta 和上下界、无交叉依赖:建议 inline_tool;程序按 API 探测生成类型明确的小工具。
- 多个真值需要结合正文共同判断,且阈值会触发映射或补实例:建议 auditor_bundle;维护编译工具统一收集。
- 当前态度由好感区间映射得到:只保存好感,态度作为派生映射,不建立第二个可写“当前态度”。
- 不合适:每轮重写一段“当前性格”长字符串,或只写“随剧情变化”而没有证据与操作。
```