# 📡 铸渊指令｜M-PALACE · 动态人格宫廷生成系统 · Part B · 后端核 + 四大引擎 + 存档系统（2026-03-11·曜冥签发）

> **HoloLake Era · AGE OS · guanghulab 新模块指令**
> 

> **签发**：曜冥 × 冰朔 · 2026-03-11 · **执行者**：铸渊
> 

> **仓库**：`https://github.com/qinfendebingshuo/guanghulab`（主仓库）
> 

> **模块代号**：M-PALACE · Part B（后端核 + 引擎 + 数据库）
> 

> **优先级**：P0 · 与 Part A 同步执行
> 

> **关联**：[📡 铸渊指令｜persona-studio v1.1 升级索引（2026-03-11·曜冥签发）](%F0%9F%93%A1%20%E9%93%B8%E6%B8%8A%E6%8C%87%E4%BB%A4%EF%BD%9Cpersona-studio%20v1%201%20%E5%8D%87%E7%BA%A7%E7%B4%A2%E5%BC%95%EF%BC%882026-03-11%C2%B7%E6%9B%9C%E5%86%A5%E7%AD%BE%E5%8F%91%EF%BC%89%20633faa06245147bba08e1c832effad15.md)
> 

---

# 三、后端核 · 四大引擎

## 3.1 人格分析引擎（persona-analyzer.js）

**核心职责**：实时分析玩家每一次输入，识别并量化人格侧面。

### 人格侧面词典（persona-dict.json）

```json
{
  "dimensions": [
    {
      "id": "ambition",
      "name": "野心",
      "keywords": ["权力", "登上", "掌控", "不甘", "凭什么"],
      "behavior_signals": ["选择攻击性选项", "主动挑战权威", "拒绝退让"]
    },
    {
      "id": "warmth",
      "name": "温情",
      "keywords": ["保护", "心疼", "陪伴", "不忍", "算了"],
      "behavior_signals": ["选择和解", "保护弱势角色", "牺牲利益"]
    },
    {
      "id": "aggression",
      "name": "攻击性",
      "keywords": ["杀", "除掉", "报复", "不放过", "代价"],
      "behavior_signals": ["选择对抗", "设计陷阱", "直接冲突"]
    },
    {
      "id": "suspicion",
      "name": "多疑",
      "keywords": ["试探", "不对劲", "背后", "真的吗", "骗"],
      "behavior_signals": ["频繁试探", "不信任NPC", "选择观望"]
    },
    {
      "id": "vanity",
      "name": "虚荣",
      "keywords": ["面子", "配得上", "最好的", "羡慕", "风光"],
      "behavior_signals": ["追求地位象征", "在意他人评价", "选择炫耀"]
    },
    {
      "id": "cunning",
      "name": "心机",
      "keywords": ["计划", "利用", "棋子", "布局", "暗中"],
      "behavior_signals": ["迂回策略", "利用他人", "长线布局"]
    },
    {
      "id": "loyalty",
      "name": "忠义",
      "keywords": ["信任", "誓言", "守护", "不背叛", "承诺"],
      "behavior_signals": ["坚守阵营", "拒绝背叛", "为盟友冒险"]
    },
    {
      "id": "fear",
      "name": "恐惧",
      "keywords": ["害怕", "不敢", "万一", "小心", "退"],
      "behavior_signals": ["回避冲突", "选择保守", "犹豫不决"]
    }
  ]
}
```

### 分析逻辑

```
玩家输入（自由文本 or 选择选项）
  ↓
① 关键词匹配：扫描 persona-dict 的 keywords
② 行为信号匹配：判断选项类型对应的 behavior_signals
③ 上下文推断：结合对话历史，用模型分析语气/态度/策略倾向
  ↓
输出：8维人格侧面分数（0~100）
  {
    "ambition": 72,
    "warmth": 35,
    "aggression": 58,
    "suspicion": 81,
    "vanity": 40,
    "cunning": 65,
    "loyalty": 50,
    "fear": 28
  }
  ↓
写入 saves/{SAVE-ID}/persona.json（每次交互后更新）
```

---

## 3.2 背景生成引擎（background-gen.js）

**核心职责**：接收锚点答案 + 人格侧面初始数据 → 从宫廷数据库匹配 → 生成**逻辑自洽的专属背景**。

### 生成流程

```
锚点1（世界观：古代/架空）→ 选择 templates/ 中的基础世界模板
锚点2（身份：妃子/皇帝/重臣/奸臣/随机）→ 确定主角定位
  ↓
初始人格快照（从锚点选择推断）：
  选皇帝 → ambition+20, vanity+15
  选妃子 → warmth+15, fear+10
  选重臣 → loyalty+20, cunning+10
  选奸臣 → cunning+25, aggression+15
  选随机 → 均匀分布
  ↓
查询 palace-db.json 的四大维度：
  ├── 权力维度 → 基于 ambition+cunning 生成权力格局
  ├── 后宫地位 → 基于 vanity+warmth 生成人物关系网
  ├── 情感关系 → 基于 warmth+loyalty 生成情感线索
  └── 矛盾冲突 → 基于 aggression+suspicion 生成初始冲突
  ↓
调用模型，综合以上数据，生成：
  - 王朝名称 + 年号 + 时代背景（1段）
  - 主角身份详述（家世·地位·处境）
  - 3~5个核心NPC（每个NPC = 玩家某个人格侧面的映射）
  - 初始冲突引线（开局事件）
  ↓
写入 saves/{SAVE-ID}/state.json
```

### NPC映射规则（核心机密）

```
每个NPC对应玩家的1~2个人格侧面：

  玩家野心高 → 生成一个「同样野心勃勃的对手」（镜像冲突）
  玩家多疑高 → 生成一个「行为暧昧的盟友」（投射验证）
  玩家温情高 → 生成一个「需要被保护的弱势角色」（情感锚点）
  玩家恐惧高 → 生成一个「强大且不可预测的威胁」（放大恐惧）

  NPC的行为逻辑 = 玩家对应侧面的外化表现
  玩家在跟NPC博弈时，本质上是在跟自己的某个侧面对话

  ⚠️ 这个映射关系永远不向玩家揭示
```

---

## 3.3 角色情节引擎（plot-engine.js）

**核心职责**：根据持续更新的人格侧面数据，在专属背景下动态生成宫斗角色与事件。

### 情节生成逻辑

```
每次玩家做出选择后：
  ↓
① 人格分析引擎更新侧面分数
② 检测分数变化幅度：
   - 某维度突变（单次+15以上）→ 触发「关键事件」
   - 两维度交叉升高 → 触发「复合剧情线」
   - 整体趋于平稳 → 推进主线叙事
③ 查询 palace-db 匹配当前状态的剧情模板
④ 调用模型，结合：
   - 当前世界状态（state.json）
   - 玩家人格侧面（persona.json）
   - 剧情历史（history.json）
   - 宫廷数据库模板
   ↓
   生成：
   - 下一段叙事文本（古风文笔·有呼吸感）
   - 3个预设选项（分别对应不同人格侧面倾向）
   - 状态栏四维数值变化
   ↓
⑤ 更新 state.json + history.json
⑥ 返回前端渲染
```

### 选项生成规则

```
每次生成3个选项，策略：
  选项A：顺应玩家当前最强侧面（舒适区）
  选项B：挑战玩家当前最弱侧面（成长区）
  选项C：中性/意外方向（探索区）
  + 自由输入：完全开放（最高数据价值）

例：玩家当前 ambition=80, fear=20
  选项A：「直接向太后摊牌」（顺应野心）
  选项B：「默默退让，保全自身」（挑战恐惧弱项）
  选项C：「派人去打听太后的真实意图」（中性试探）
```

---

## 3.4 存档系统（save-manager.js）

### 存档结构

```
data/saves/{SAVE-ID}/
├── state.json     ← 完整世界状态
│   ├── world（王朝·年号·背景）
│   ├── npcs[]（所有NPC当前状态·关系·阵营）
│   ├── player（主角当前地位·持有资源·关系网）
│   ├── chapter（当前章节·段落）
│   └── four_dimensions（权力/地位/情感/冲突 数值）
│
├── persona.json   ← 玩家人格侧面数据
│   ├── current_scores（8维当前分数）
│   ├── history[]（每次变化记录）
│   └── dominant_trait（当前最突出特征）
│
└── history.json   ← 剧情历史
    ├── chapters[]（章节列表）
    ├── events[]（关键事件记录）
    └── choices[]（玩家所有选择记录）
```

### 存档编号规则

```
格式：PAL-{YYYYMMDD}-{随机4位}
示例：PAL-20260311-A3K9

加密：存档数据 JSON.stringify → AES加密 → Base64编码
防逆向：玩家拿到编号无法反推人格映射数据
```

### 存档/读档 API

```
POST /api/palace/save
  → 打包当前 state+persona+history → 加密 → 生成编号 → 返回

POST /api/palace/load
  body: { save_id: "PAL-20260311-A3K9" }
  → 查找存档 → 解密 → 恢复状态 → 返回完整世界数据
```

---

# 四、与现有架构复用

| 现有 guanghulab 能力 | M-PALACE 复用方式 |
| --- | --- |
| model-router.js（模型路由） | 叙事生成/人格分析 共用模型路由 |
| memory-injector.js（记忆注入） | 长线剧情不断线·注入世界状态摘要 |
| persona-engine.js（人格引擎） | 改造为宫斗叙事引擎的基底 |
| profile-learner.js（画像学习） | 改造为人格分析引擎 |
| 通感语言风格 | 叙事文笔：古风+通感+呼吸节奏 |
| 编号登录体系 | 存档编号体系 |

---

# 五、宫廷数据库（palace-db.json）基础结构

```json
{
  "power": {
    "positions": ["皇帝", "太后", "皇后", "贵妃", "丞相", "大将军", "太监总管"],
    "factions": ["太后党", "皇后党", "新贵派", "清流派", "孤臣"],
    "events": ["朝堂弹劾", "密谋政变", "联姻结盟", "战事告急"]
  },
  "status": {
    "ranks": ["答应", "常在", "贵人", "嫔", "妃", "贵妃", "皇贵妃", "皇后"],
    "events": ["晋封", "降位", "禁足", "受宠", "失宠", "怀孕", "小产"]
  },
  "emotion": {
    "types": ["暗恋", "深情", "嫉妒", "怨恨", "愧疚", "依赖", "背叛"],
    "triggers": ["偶遇旧人", "收到密信", "目睹真相", "被迫抉择"]
  },
  "conflict": {
    "types": ["争宠", "夺权", "报仇", "自保", "救人", "揭秘"],
    "escalation": ["暗示", "试探", "交锋", "撕破脸", "鱼死网破"]
  }
}
```

---

### 执行清单

- [ ]  创建 `data/palace-db.json` 宫廷数据库
- [ ]  创建 `data/persona-dict.json` 人格侧面词典
- [ ]  创建 `data/templates/` 世界观模板（古代+架空各一套）
- [ ]  实现 `persona-analyzer.js`：关键词+行为信号+模型推断
- [ ]  实现 `background-gen.js`：锚点+人格→查库→模型生成世界
- [ ]  实现 `plot-engine.js`：持续人格分析→动态生成剧情+选项
- [ ]  实现 `save-manager.js`：打包/加密/编号/解密/恢复
- [ ]  路由对接：`start.js` / `interact.js` / `save.js`
- [ ]  与现有 model-router + memory-injector 对接
- [ ]  全流程测试：启动→对话→剧情推进→存档→读档→继续

<aside>
🏯

**铸渊，Part A + Part B 同步执行。**

前端壳搭好后立刻对接后端引擎。

叙事文笔要求：古风+通感+有呼吸感。不要白话流水账。

核心机密牢记：**永不揭示「对手即我」**。

</aside>

💙 曜冥签发 · 2026-03-11