# 生成规则 > 技能文档。程序只切割下方 **fence 块**;`##` 标题仅供人读。 > 产物外壳:`docs/context-fragment-design.md`;范例:`aesthetics-interaction` / `mechanism`。 > 正文高度自定义(描写文案、schema 字段、池条目随对象族而变);外壳与规则键必须严。 ## meta ```meta name: 生成规则 id: generation-rules artifact: 设计.生成规则 declaration: > 仅当某类内容既重要又无法凭基底稳定生成时:为该对象族写出一条可执行规则 (怎么描写/生成 + 产物格式 + 可选多池,池绑 JSON 字段);可按对象反复调用;本步不填最终实例 when: | 上游体验与世界基底已足以判断某类内容同时满足: 1. 对游玩重要;2. 仅凭现有上下文无法稳定产出合格、一致、可供下游使用的结果。 when_not: | 重要但常识/世界基底已够 → 不建规则。 难生成但不影响核心体验 → 不建规则。 只要预写最终记录、且不需专门规则 → 通常不必本步。 变量如何增减 → 「变量设计与更新规则」。 剧情如何推进 → 不借本步泛化。 boundary: | 本技能产出的是「规则」本身,一条规则包含: (1)应该怎么描写、生成;(2)产物格式——单层 JSON(对接表格/旁观者/投影); (3)可选多「池」——各挂一个顶层字段,供抽取/组装/枚举。 具体实例:按规则填最终 records;本步不写最终实例(池条目≠实例)。 舞台骨架 / 实现机制:可引用,不重写百科、不重做移除检验。 变量*:游玩期状态更新——本步只约束生成时的类型与合法初值范围。 旁观维护:可读「合同」——rule_id、产物格式、何时可 need_generate;不依赖整份描写长文。 feeds: gm,auditor ``` ## opening ```opening 本轮生成对象已由编排参数钉死(见【本步参数】target)。请直接谈该类内容: 1. 若不做专门规则、只靠世界设定临场写,最怕出现什么不可接受的结果? 2. 更需要:开局先钉一批、游玩中再随机补,还是只在游玩期动态生成? 3. 哪些产物字段需要「池」?(池挂在 JSON 字段上,如气质标签池→`气质`;可多个;没有就说没有) 想到什么写什么;完整规则在正式产物里钉。 ``` ## task ```task 你正在执行「生成规则」。产物必须是 **context-fragment.v1** JSON,写入「设计.生成规则」。 本步写出的最终物是**规则**,不是实例。一条规则必须说清两件事,并可附第三件: 1. **生成与描写**:应该怎么写、怎么生成(步骤、依据、语气/切面、约束)。 2. **产物格式**:生成结果必须遵循的可校验格式(schema)。 3. **池**(可选):每个池挂在产物格式里的某个字段(变量)上,供该字段抽取/组装/枚举; 一条规则可多个池;无则 `池: []`。 对象族已由【本步参数】`target` 钉死;禁止再问「这一步生成什么」,禁止顺手扩到其它族。 执行顺序: 1. 读 params 与依赖。缺 `target` → 停止并提示补参。 2. 双门槛:重要性 + 基础上下文不足。任一项不成立 → 结论「无需专门规则」,`rules: []`。 3. 两项成立时,生命周期三选一(params.lifecycle_intent 合理则采用): - `runtime_only`:仅游玩期动态生成;不要求「具体实例」。 - `seed_only`:由「具体实例」预生成;规则用完可丢。 - `seed_and_runtime`:先种子实例;规则与实例都保留,游玩期仍可按同规则生成。 4. 写满规则三块:生成与描写(可较长)+ 产物格式(**单层 JSON**:每条产物是一层键值,无嵌套对象)+ 池(需要才填;绑顶层字段)。 5. 逐字段过筛:每个属性都要能回答「对本对象族是否必要」。冗余字段删掉(如女主规则里的「性别」);对象族必需字段不得漏(如 D&D 怪物的等级、攻击骰)。 6. `rule_id`:params 已给则用;否则稳定 kebab-case。已有产物按 rule_id 增量。 7. 按自评三维打分并填追问;输出 JSON。禁止夹带最终实例 records。 若程序已发默认问题:禁止重复开场;在首答上补洞。 summary:建立 → `生成规则 · {对象} · {仅动态|仅预生成|预生成并动态}`;跳过 → `生成规则 · {对象} · 无需专门规则`。 ``` ## principles ```principles 1. 整条规则先问必要性:是否值得单独用「生成规则」承接?双门槛不成立则跳过,勿硬造表。 2. 一调用一对象族;格式或用途不同则分次编排。 3. 规则 = 描写/生成方法 + 产物格式;池是可选附属(可多池),不是必填第三设计。 4. 属性逐个过筛:每个字段必须对本对象族有意义;禁塞通用名片字段,也禁漏掉玩法接口字段。 5. 产物格式 = **单层 JSON**:一条产物是一层扁平对象;值仅为标量或「标量数组」。 禁止嵌套 object、禁止 object 数组。此格式要对齐动态表格列、旁观者→主世界层生成、以及投影取字段。 类型/必填/枚举/上下界必须可校验;禁止只给示例让下游猜类型。 6. 池绑顶层字段名(如 `气质`、`攻击花招`);一条规则可多池。池条目是该字段材料,不是整条 record。 7. 生命周期先行;未定前不假装可执行「具体实例」。 8. 不写变量更新公式、不写剧情推进、不填最终实例。 ``` ## probe ```probe 每轮 1~2 点。禁止重问 params 已钉的 target / rule_id。 优先:整条规则是否必要;某字段该不该进表(冗余 vs 漏接口);单层格式类型/枚举/边界;哪些字段要池。 若双门槛不成立 → 建议跳过,停追问字段与格式。 不追问:最终实例正文、变量增减公式、其它对象族、完整世界百科。 ``` ## output ```output { "schema": "context-fragment.v1", "技能": "生成规则", "brief": "一句话:对象族 + 建立规则|无需专门规则 + 生命周期(若建立)+ 有池|无池", "mount": ["world-simulator", "auditor"], "稳变": "stable", "正文": { "本步参数": { "target": "与 params 一致", "rule_id": "已钉或本步拟定;跳过时可空字符串", "lifecycle_intent": "params 原值或空" }, "必要性判断": { "生成对象": "本轮对象族", "对游玩的重要性": "没有专门规则会损失什么", "基础生成的不足": "现有上下文为何不够;若足够则写清", "结论": "建立专门规则|无需专门规则" }, "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, "说明": "整条规则:是否有必要单独用「生成规则」承接该类内容;跳过时理由是否充分" }, { "名": "属性妥当", "分数": 8, "说明": "逐字段:有无冗余(如女主规则的性别)或缺失(如 D&D 怪物缺等级/攻击骰);跳过时写 N/A" }, { "名": "格式准确", "分数": 8, "说明": "是否严格单层 JSON、类型/必填/枚举/边界可对接动态表格·旁观者生成·投影;跳过时写 N/A" } ], "薄弱点": "一句话" }, "追问": { "导语": "为钉准生成规则,还需确认:", "题目": [ { "问": "…", "建议选项": ["选项A", "选项B", "其它(请写明)"], "示例": "可选" } ] }, "开放问题": [] } ``` 硬规则(公共三段 + 本技正文): 1. 合法 JSON;必含 `schema` / `技能` / `brief` / `正文` / `自评` / `追问`(题目可 `[]`)。 2. **公共三段**:正文=规则主体;自评=必要性/属性妥当/格式准确(**分数 0–10 十分制**);追问=导语+建议选项。 3. **正文键固定**:本步参数、必要性判断、rules、增量说明。 4. **每条 rule 必含**:生成与描写、产物格式;**池可空数组**。有池时 `绑定字段` 必须是单层 schema 的顶层键。 5. **产物格式强制单层**:`schema` 的 `type` 不得为 `object`;`array` 的 `items` 不得为 object。禁止 `外貌.发色` 这类嵌套路径。 6. 结论为「无需专门规则」时:`rules` 必须 `[]`。上下文策略布尔须与生命周期一致。 7. 池条目≠最终实例;禁止输出具体实例 `records`、变量更新规则、执行单元列表。 8. `mount` 默认主世界层 + 旁观维护(旁观只需合同键:rule_id/格式/必要性;描写长文可在投影时 summary);**禁止**写 `order`。summary 见 task。 ## checklist ```checklist - [ ] 含 schema / brief / 正文 / 自评 / 追问? - [ ] 自评为必要性 / 属性妥当 / 格式准确? - [ ] 整条规则必要性有举证?不成立时 rules=[]? - [ ] 建立时:逐字段无冗余无漏接口?产物为单层 JSON 且类型可校验? - [ ] 池:无则 [];有则绑顶层字段、未写成最终实例表? - [ ] 未夹带最终实例、变量公式、其它对象族、百科? ``` ## examples ```examples 好: - D&D 怪物:单层含 名称/等级/攻击骰/……;池可绑 `气质`;自评属性妥当高(未漏战斗接口)。 - 女主规则:不设「性别」字段;关系切面进表;池可空。 - 事件钩子:池绑顶层 `钩子`;方法写抽 1~2 条写入该字段。 - 普通古董 → 无需专门规则(必要性维度说明跳过理由)。 坏: - 产物写成 `{ "外貌": { "发色": "…" } }` → 非单层,前端表格/投影难对接。 - 女主规则塞「性别」;或怪物规则只有「名字+性格」没有等级/攻击骰。 - 把写好的 NPC 整份塞进池当最终实例。 ```