# 📡 铸渊指令|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 对接 - [ ] 全流程测试:启动→对话→剧情推进→存档→读档→继续 💙 曜冥签发 · 2026-03-11