This commit is contained in:
2026-04-28 20:25:37 +08:00
parent f0471a4f8d
commit 0f013b6eee
45 changed files with 1117 additions and 1047 deletions

View File

@@ -74,7 +74,7 @@
新系统必须满足:
1. 可解释:玩家能理解“为什么这个角色擅长这个”“为什么这个 NPC 会喜欢这种行为”“为什么这个怪物在这个世界里是这种威胁”。
2. 可生成:自定义世界可以稳定生成新属性名称与定义
2. 可生成:自定义世界可以稳定生成新属性名称。
3. 可校验AI 输出不能直接裸写进运行时,必须经过本地验证。
4. 可复用:同一套属性 schema 能进入角色、怪物、技能、Build、物品、对话 prompt。
5. 可迁移:能从当前四维属性 / 标签 / 怪物 preset 平滑过渡。
@@ -165,12 +165,6 @@ type WorldAttributeSchema = {
slots: Array<{
slotId: string;
name: string;
definition: string;
positiveSignals: string[];
negativeSignals: string[];
combatUseText: string;
socialUseText: string;
explorationUseText: string;
}>;
};
```
@@ -178,12 +172,9 @@ type WorldAttributeSchema = {
### 关键原则
1. `slotId` 是稳定技术标识,例如 `axis_a` ~ `axis_f`
2. `name` 是世界内真实显示名称,例如武侠里可能不是“力量”,而是“骨势”“身法”
3. `definition` 必须描述角色本质倾向,而不是派生战斗数值
4. 每个属性都必须能解释:
- 战斗中的体现
- 对话中的体现
- 探索中的体现
2. 本世界六维名称在创作、提示词输出、解析后保存的数据中只保留 `name`;其他定义、信号和用途说明字段不再进入 schema
3. `name` 是世界内真实显示名称,例如武侠里可能不是“力量”,而是“骨势”“身法”
4. 六个名称需要能支撑战斗、对话、探索的叙事理解,但这些说明由下游运行时按场景生成,不写入 schema。
### 禁止项
@@ -247,16 +238,9 @@ type AttributeSchemaGenerationInput = {
```ts
type AttributeSchemaGenerationOutput = {
schemaName: string;
slots: Array<{
slotId: string;
name: string;
definition: string;
positiveSignals: string[];
negativeSignals: string[];
combatUseText: string;
socialUseText: string;
explorationUseText: string;
}>;
};
```
@@ -267,13 +251,9 @@ AI 输出后必须通过本地校验:
1. 属性数量必须等于 6。
2. `name` 需唯一,长度建议 `2~4` 个中文字符。
3. `definition` 不得出现“提升攻击 / 提升防御力 / 提升生命值”这类派生描述
4. 每个属性都必须同时具备:
- 一个战斗说明
- 一个社交说明
- 一个探索说明
5. 任意两条属性定义关键词重叠度不能过高。
6. 若校验失败:
3. `name` 不得出现“生命 / 法力 / 护甲 / 攻击 / 防御 / 力量 / 敏捷 / 智力 / 精神”这类旧四维或派生资源词
4. 任意两个属性名称不能重复,也不能只做同义换皮。
5. 若校验失败:
- 预设世界回退到固化 schema
- 自定义世界回退到模板世界 schema并记录失败日志
@@ -283,25 +263,25 @@ AI 输出后必须通过本地校验:
### 武侠世界示例
| 属性名 | 定义 |
| 槽位 | 属性名 |
| --- | --- |
| 骨势 | 扛压、顶冲、硬吃风险也不退的势头 |
| 身法 | 腾挪、抢位、换线、把握出手节奏的能力 |
| 眼脉 | 看破破绽、拆招、识局、看穿人心的能力 |
| 心焰 | 决断、压迫、胆气、在局面中立住自身意志的能力 |
| 尘缘 | 与人事、情面、承诺、牵引关系打交道的能力 |
| 玄息 | 调息、稳态、久战、把自身维持在可用状态的能力 |
| axis_a | 骨势 |
| axis_b | 身法 |
| axis_c | 眼脉 |
| axis_d | 心焰 |
| axis_e | 尘缘 |
| axis_f | 玄息 |
### 仙侠世界示例
| 属性名 | 定义 |
| 槽位 | 属性名 |
| --- | --- |
| 道骨 | 承载道压与高强度冲击的底子 |
| 灵行 | 位移、御空、转场、抢占天时地利的能力 |
| 识海 | 解析禁制、洞察因果、识破虚实的能力 |
| 心契 | 与他者、器物、灵兽、誓约建立共鸣的能力 |
| 劫纹 | 在高危变化中强行推进、改写局势的能力 |
| 玄息 | 循环灵息、稳住心神、让自身持续在线的能力 |
| axis_a | 道骨 |
| axis_b | 灵行 |
| axis_c | 识海 |
| axis_d | 心契 |
| axis_e | 劫纹 |
| axis_f | 玄息 |
关键点:
@@ -692,10 +672,8 @@ AI 不可以直接生成:
```ts
type PromptAttributeSummary = {
schemaName: string;
slots: Array<{
name: string;
definition: string;
}>;
actorTopAttributes: string[];
targetTopAttributes?: string[];
@@ -726,12 +704,6 @@ export type AttributeVector = Record<string, number>;
export interface WorldAttributeSlot {
slotId: string;
name: string;
definition: string;
positiveSignals: string[];
negativeSignals: string[];
combatUseText: string;
socialUseText: string;
explorationUseText: string;
}
export interface WorldAttributeSchema {
@@ -1017,8 +989,8 @@ behaviorVectors: Array<{
对策:
1. 增加本地定义重叠校验
2. 强制每个属性都写战斗 / 社交 / 探索三种说明
1. 增加本地名称重复、旧词和同义换皮校验
2. 提示词要求六个名称覆盖不同叙事气质,避免全部落在同一种行动倾向上
3. 首版预设世界采用固化 schema不在运行时漂移
### 风险 2过度抽象策划难以配置
@@ -1029,8 +1001,8 @@ behaviorVectors: Array<{
对策:
1. 每个属性附带定义、正反信号、示例行为
2. 编辑器永远显示 `name + definition`
1. 编辑器只显示并编辑六个属性名称
2. 解释文本由技能 / 标签 / 物品等下游按具体场景生成
3. 所有技能 / 标签 / 物品的属性向量都显示人类可读解释
### 风险 3旧系统迁移期间双轨并存混乱