Design-flow now sees leftover catalog skills and aesthetics-card commitments; reply-format injects present-shells/, and world-simulator prompts add random-range plus a tighter module set. Co-authored-by: Cursor <cursoragent@cursor.com>
16 KiB
16 KiB
生成规则
技能文档。程序只切割下方 fence 块;
##标题仅供人读。
产物外壳:docs/context-fragment-design.md;范例:aesthetics-interaction/mechanism。
正文高度自定义(描写文案、schema 字段、池条目随对象族而变);外壳与规则键必须严。
meta
name: 生成规则
id: generation-rules
artifact: 设计.生成规则
declaration: >
要精准格式,或本局原创听了会雾且故事里还要生成时:写出该对象族怎么生成(描写/格式/可选池);不填最终实例;可按对象反复
when: |
已有「美学纲领与交互范式」或等价整体感觉,且下面两条满足一条就排(可按对象族反复):
a. 生成物必须有精准格式。例:武功典籍要有名字、效果、阶层。
b. 本局原创、听了会一头雾水的东西,故事里还要随机/反复生成。例:人人能绽放的「心之彩」;当成本局原创的斩魄刀。
when_not: |
整体感觉未钉 → 先「美学纲领与交互范式」。
常识能推、也不需要精准格式(现实名车、西幻常见种族)→ 不排。
只要几张具名名片、不必按规则生成 → 不排;已有规则再要名片 → 「具体实例」。
跨轮记住什么 → 「变量设计与更新规则」。故事怎么往前写 → 「叙事指南与故事推进」。
boundary: |
本技能:一条规则=怎么描写/生成 + 单层 JSON 产物格式 + 可选多池(各绑一个顶层字段)。
具体实例:按规则填最终 records;本步不写最终实例(池条目≠实例)。
舞台骨架 / 实现机制:可引用,不重写百科、不重钉既成法则。
变量*:游玩期状态更新——本步只约束生成时的类型与合法初值范围。
随机范围整理:把本步(及其他上游)里需要的掷骰/检定范围收成插入表——本步可写合法区间,不代替那份汇总。
旁观维护:可读合同(rule_id、产物格式、何时可 need_generate);不依赖整份描写长文。
feeds: gm,auditor
opening
先认定本轮规则写哪一类内容:
- 若【本步对象】/【原型建议】已有对象提示,以此为起点;要改对象就在本步改。
- 若规划为空,先钉对象族,再谈规则。
然后谈:
1. 生成出来必须钉死哪些字段吗?(如武功典籍的名字、效果、阶层)没有就说没有。
2. 这是不是本局原创、听了会一头雾水、还要在故事里随机生成的东西?
3. 更需要:开局先钉一批、游玩中再随机补,还是只在游玩期动态生成?
4. 这类实例彼此有没有必须同场钉死的关系(如互为亲属、对立、同场搭档)?有 → 一次同批生成;彼此独立 → 一次一条。
5. 哪些产物字段需要「池」?(池挂在 JSON 字段上,如气质标签池→`气质`;可多个;没有就说没有)
想到什么写什么;完整规则在正式产物里钉。
task
你正在执行「生成规则」。产物必须是 **context-fragment.v1** JSON,写入「设计.生成规则」。
本步写出的最终物是**规则**,不是实例。一条规则必须说清两件事,并可附第三件:
1. **生成与描写**:应该怎么写、怎么生成(步骤、依据、语气/切面、约束)。
2. **产物格式**:生成结果必须遵循的可校验格式(schema)。
3. **池**(可选):每个池挂在产物格式里的某个字段(变量)上,供该字段抽取/组装/枚举;
一条规则可多个池;无则 `池: []`。
本步是〔先验产物〕:先定本轮对象族,再写规则。读【本步对象】与【原型建议】;在本步钉「写什么」。禁止顺手扩到其它族。
执行顺序:
1. 认定对象族:规划有 `target` 则采用(用户要改则以最新为准);规划为空则先钉对象。不要停下来让编排器补参。
2. 对照时机 a/b:必须有精准格式,或本局原创听了会雾且故事里还要生成。两条都不成立 → 结论「无需专门规则」,`rules: []`。
3. 两项成立时,生命周期三选一(规划里 `lifecycle_intent` 合理则采用):
- `runtime_only`:仅游玩期动态生成;不要求「具体实例」。
- `seed_only`:由「具体实例」预生成;规则用完可丢。
- `seed_and_runtime`:先种子实例;规则与实例都保留,游玩期仍可按同规则生成。
4. 钉「数量」与「一次生成」(两件不同的事):
- **数量**:这类对象总共要有几条(fixed / range / contextual)。
- **一次生成**:点一次「具体实例」交几条。彼此有必须同场对齐的关系 → `同批`(一次交出并对齐关系);彼此独立 → `单条`(一次只交 1 条,要更多就再点原型)。产物形状始终是 `records[]`,不因单条改成单对象。
5. 写满规则三块:生成与描写(可较长)+ 产物格式(**单层 JSON**:每条产物是一层键值,无嵌套对象)+ 池(需要才填;绑顶层字段)。
6. 逐字段过筛:每个属性都要能回答「对本对象族是否必要」。冗余字段删掉(如女主规则里的「性别」);对象族必需字段不得漏(如 D&D 怪物的等级、攻击骰)。
7. `rule_id`:规划已给则用;否则稳定 kebab-case。已有产物按 rule_id 增量。
若本步对象与规划不一致,以最新对象为准并重钉对应英文 rule_id,禁止沿用旧 id。
8. 按自评三维打分并填追问;输出 JSON。禁止夹带最终实例 records。
若程序已发默认问题:禁止重复开场;在首答上补洞。
summary:建立 → `生成规则 · {对象} · {仅动态|仅预生成|预生成并动态} · {单条|同批}`;跳过 → `生成规则 · {对象} · 无需专门规则`。
principles
1. 整条规则先问必要性:时机 a(精准格式)或时机 b(原创会雾且还要生成)是否成立?两条都不成立则跳过,勿硬造表。
2. 一调用一对象族;格式或用途不同则分次编排。
3. 规则 = 描写/生成方法 + 产物格式;池是可选附属(可多池),不是必填第三设计。
4. 属性逐个过筛:每个字段必须对本对象族有意义;禁塞通用名片字段,也禁漏掉玩法接口字段。
5. 产物格式 = **单层 JSON**:一条产物是一层扁平对象;值仅为标量或「标量数组」。
禁止嵌套 object、禁止 object 数组。此格式要对齐动态表格列、旁观者→主世界层生成、以及投影取字段。
类型/必填/枚举/上下界必须可校验;禁止只给示例让下游猜类型。
6. 池绑顶层字段名(如 `气质`、`攻击花招`);一条规则可多池。池条目是该字段材料,不是整条 record。
7. 生命周期先行;未定前不假装可执行「具体实例」。
8. **一次生成**看关系,不看「想不想一次多写」:有必须同场钉死的关系(亲属、对立、同场搭档等)→ `同批`;彼此独立 → `单条`。`同批` 至少 2 条,否则改 `单条`。不要把「总共要几个」(数量)和「这一次交几条」(一次生成)混成一件事。
9. 不写变量更新公式、不写剧情推进、不填最终实例。
probe
每轮 1~2 点。规划已钉且用户未改对象时,禁止重问 target / rule_id。规划为空或用户要换对象时,先问本轮生成什么。
优先:整条规则是否必要;实例彼此有无必须同场对齐的关系(一次生成:同批 vs 单条);某字段该不该进表(冗余 vs 漏接口);单层格式类型/枚举/边界;哪些字段要池。
若时机 a/b 都不成立 → 建议跳过,停追问字段与格式。
不追问:最终实例正文、变量增减公式、其它对象族、完整世界百科。
output
{
"schema": "context-fragment.v1",
"技能": "生成规则",
"brief": "一句话:对象族 + 建立规则|无需专门规则 + 生命周期(若建立)+ 有池|无池",
"mount": ["world-simulator", "auditor"],
"稳变": "stable",
"正文": {
"本步参数": {
"target": "与本步认定的对象一致(规划有则对齐,步内改则以最新为准)",
"rule_id": "已钉或本步拟定;跳过时可空字符串",
"lifecycle_intent": "规划原值、本步钉死值或空"
},
"必要性判断": {
"生成对象": "本轮对象族",
"对游玩的重要性": "时机 a:必须钉死哪些字段;无则写「不需精准格式」",
"基础生成的不足": "时机 b:为何听了会雾、现有常识推不出;能推则写清",
"结论": "建立专门规则|无需专门规则"
},
"rules": [
{
"rule_id": "英文 kebab-case",
"对象": "该规则生成什么",
"生命周期": "runtime_only|seed_only|seed_and_runtime",
"上下文策略": {
"预生成实例": true,
"保留规则到游玩期": false,
"保留实例到游玩期": true
},
"数量": {
"模式": "fixed|range|contextual",
"值": 1,
"最小": 1,
"最大": 1,
"决定规则": "contextual 时必填,可较长"
},
"一次生成": {
"模式": "单条|同批",
"关系": "同批必填:本批记录之间必须一起钉的联系;单条写「彼此独立」"
},
"生成与描写": {
"依据": ["可较长;引用上游产物或用户要求"],
"方法": ["可较长:生成顺序、如何组装、描写口径、语气/切面、如何用池"],
"硬约束": ["任何产物不得违反"],
"字段间约束": ["例:阵营=A 时权限≥3"],
"变化维度": ["允许随机或变化的部分;无则 []"],
"禁止项": ["不得出现的组合或内容"],
"去重规则": ["同批/跨批"],
"校验": ["类型、枚举、边界、世界与体验一致性;以及是否按方法生成"]
},
"产物格式": {
"格式": "单层JSON",
"批量时": "array of flat object(每条记录单层)|单条则一个 flat object",
"schema": {
"字段名": {
"type": "string|number|integer|boolean|enum|array",
"required": true,
"description": "语义 + 为何本对象族需要此字段;可较长",
"allowed_values": [
{ "value": "枚举值", "meaning": "含义" }
],
"minimum": 0,
"maximum": 100,
"items": { "type": "string|number|integer|boolean|enum" },
"min_items": 1,
"max_items": 3
}
},
"示例形状": {
"名称": "……",
"等级": 3,
"攻击骰": "2d6+2",
"气质": "阴郁"
}
},
"池": [
{
"pool_id": "英文 kebab-case;同规则内唯一",
"名称": "人话名",
"绑定字段": "单层 schema 的顶层字段名,例:气质 / 攻击花招",
"用途": "灵感组装|随机抽取|枚举生成|其它",
"说明": "该字段如何用本池;与「生成与描写.方法」如何配合;可较长",
"条目": [
{
"id": "可选稳定 id",
"内容": "材料正文或短标签;结构随池自定义,但同池宜一致",
"权重": 1,
"标签": ["可选分类标签"]
}
],
"抽取或组装规则": "可较长;无特殊则写「均匀随机」或「按方法写入绑定字段」"
}
]
}
],
"增量说明": "相对已有规则新增或修改了什么;首条可写「新建」"
},
"自评": {
"维度": [
{
"名": "必要性",
"分数": 8,
"说明": "时机 a 或 b 是否成立;跳过时理由是否充分"
},
{
"名": "属性妥当",
"分数": 8,
"说明": "逐字段:有无冗余(如女主规则的性别)或缺失(如 D&D 怪物缺等级/攻击骰);跳过时写 N/A"
},
{
"名": "格式准确",
"分数": 8,
"说明": "是否严格单层 JSON、类型/必填/枚举/边界可对接动态表格·旁观者生成·投影;跳过时写 N/A"
}
],
"薄弱点": "一句话"
},
"追问": {
"导语": "为钉准生成规则,还需确认:",
"题目": [
{
"问": "…",
"建议选项": ["选项A", "选项B", "其它(请写明)"],
"示例": "可选"
}
]
},
"开放问题": []
}
硬规则(公共三段 + 本技正文):
- 合法 JSON;必含
schema/技能/brief/正文/自评/追问(题目可[])。 - 公共三段:正文=规则主体;自评=必要性/属性妥当/格式准确(分数 0–10 十分制);追问=导语+建议选项。
- 正文键固定:本步参数、必要性判断、rules、增量说明。
- 每条 rule 必含:生成与描写、产物格式、数量、一次生成;池可空数组。有池时
绑定字段必须是单层 schema 的顶层键。一次生成.模式为同批时关系必填且本批至少 2 条;为单条时一次只交 1 条。 - 产物格式强制单层:
schema的type不得为object;array的items不得为 object。禁止外貌.发色这类嵌套路径。 - 结论为「无需专门规则」时:
rules必须[]。上下文策略布尔须与生命周期一致。 - 池条目≠最终实例;禁止输出具体实例
records、变量更新规则、执行单元列表。 mount默认主世界层 + 旁观维护(旁观只需合同键:rule_id/格式/必要性;描写长文可在投影时 summary);禁止写order。summary 见 task。
checklist
- [ ] 含 schema / brief / 正文 / 自评 / 追问?
- [ ] 自评为必要性 / 属性妥当 / 格式准确?
- [ ] 整条规则必要性有举证?不成立时 rules=[]?
- [ ] 建立时:逐字段无冗余无漏接口?产物为单层 JSON 且类型可校验?数量与一次生成已分清(总共几个 vs 这一次交几条)?同批有关系、单条写彼此独立?
- [ ] 池:无则 [];有则绑顶层字段、未写成最终实例表?
- [ ] 未夹带最终实例、变量公式、其它对象族、百科?
examples
好:
- 武功典籍:单层含 名字/效果/阶层(时机 a)。
- 「心之彩」:本局原创、听了会雾,故事里还要随机生成(时机 b)。
- D&D 怪物:单层含 名称/等级/攻击骰/……;池可绑 `气质`;自评属性妥当高(未漏战斗接口)。
- 女主规则:不设「性别」字段;关系切面进表;池可空。
- 互为仇敌的两名开局 NPC:一次生成=同批,关系写清对立如何对齐;数量=2。
- 可互换的酒馆路人:一次生成=单条,关系写「彼此独立」;要 5 个就点 5 次。
- 事件钩子:池绑顶层 `钩子`;方法写抽 1~2 条写入该字段。
- 现实名车、西幻常见种族 → 无需专门规则(常识能推且不需精准格式)。
坏:
- 产物写成 `{ "外貌": { "发色": "…" } }` → 非单层,前端表格/投影难对接。
- 女主规则塞「性别」;或怪物规则只有「名字+性格」没有等级/攻击骰。
- 有亲属关系的三人却标成单条,分三次各写一条,关系对不上。
- 把「总共要 5 个」写成一次生成=同批,但彼此并无必须同场的关系。
- 把写好的 NPC 整份塞进池当最终实例。