奇门 → 力效 · 实时运行系统规格

Qimen-to-Effort Runtime Specification · v1 · 每场演出 = 一次起局 → 一份当场的九宫力效总谱

一句话:本系统是一个确定性查表函数。输入一个时间,输出一份谱,无随机、无临场发挥。同一时间永远得到同一谱。因此它可实时运行:演出现起一局,机器跑一遍即出谱。
1 · 架构(两段式)
2 · 接口 Schema
3 · 配置层 · 四张固定表
4 · 全局层 · 起局推导
5 · 运行时 · 每宫五步
6 · 边界与规则
7 · 验证夹具(0428 盘)
8 · 附录 · 64 格质感字典

1 · 架构(两段式)

关键决定:不要自己重写"起局"。从时间到盘面(四柱、节气、定局、超神接气置闰、飞星布门、寄宫)是被钻研了上千年、边界极多的成熟问题,交给现成的奇门排盘引擎/库。本系统唯一的新逻辑,是"盘 → 力效谱"那一层。

时间 + 地点 (演出当下) Stage A · 起局 现成排盘引擎/库 (勿重造) 原始盘 JSON(§2) Stage B · 力效运行时 本规格 §3–§5 (核心 IP) 力效谱 JSON

Stage A 候选:任何输出转盘法九宫的奇门库/API(神·星·门·天盘干·地盘干 + 值符值使 + 节气 + 局)。Stage B 仅消费其输出,不关心历法。若 Stage A 不提供天盘干/协克,Stage B 可自行推导(§4)。

2 · 接口 Schema

输入:原始盘(Stage A → Stage B)

RawChart = {
  meta: { 节气:"谷雨", 元:"中", 局:{遁:"阳", 数:2}, 符头:"辛",
          值符宫:7, 值使宫:2, 门盘伏吟:true, 星盘伏吟:false },
  palaces: {              // key = 洛书宫号 1..9
    7: { 神:"值符", 星:"天禽芮", 门:"惊", 天盘干:"辛", 地盘干:"癸", 是值符宫:true },
    ...
  }
}

天盘干、值符宫、值使宫、伏吟若 Stage A 已给则直接用;否则由 §4 推导。神用何体系(值符系/朱雀勾陈系)由 Stage A 决定,Stage B 的查表已两系兼容。

输出:九宫力效谱(Stage B → 渲染)

Score = {
  global: { 局, 节气, 音量令:"土", 值符宫, 值使宫, 路线:[7,6,8,1,2], 伏吟:[...] },
  palaces: {
    7: {
      和弦:[
        {声部:"神", 元素:"值符", 行:"漂浮", 列:"推压", 质感:"…", 动作:"…"},
        {声部:"人", 元素:"天禽芮", 行:"滑抹", 列:"推压", 质感:"…", 动作:"…", 音量:"旺"},
        {声部:"地", 元素:"惊", 行:"弹拂", 列:"劈砍", 质感:"…", 动作:"…", 时值:"突"},
        {声部:"天上", 元素:"辛", 行:"点拍", 列:"冲打", 质感:"…", 动作:"…"},
        {声部:"天下", 元素:"癸", 行:"冲打", 列:"滑抹", 质感:"…", 动作:"…"}
      ],
      音量:"旺", 时值:"突", 协克:{类型:"协和", 式:"金生水·天生地"}
    }, ...
  }
}

3 · 配置层 · 四张固定表

系统的字典,写死一次,任何盘共用。全部取自优化落位(质感优先版)。

表① 元素 → 力效列(掺入)

力效列八神九星八门天干
漂浮九地天蓬
滑抹太阴天任
弹拂六合天冲乙 / 甲
点拍玄武 / 朱雀天辅
拧绞螣蛇天英
推压值符天禽 / 天芮戊 / 己
劈砍白虎 / 勾陈天柱
冲打九天天心

两套八神体系兼容:朱雀≡玄武位(点拍)、勾陈≡白虎位(劈砍)。九星 9→8:天禽/天芮并列(推压)。天干 10→8:甲≈乙(弹拂)、己≈戊(推压)。

表② 流 → 力效行(本体/底)· 表③ 音量 · 表④ 时值

表② streamToBase = { 天盘神:漂浮, 天盘星:滑抹, 天盘门:弹拂, 天盘干:点拍, 地盘干:冲打 }
        // (七/八声部版另补:地盘星→推压, 地盘门→劈砍, 用洛书本位)

表③ 音量 = 九星五行 在 当令五行 下的旺相休囚死
        当令五行 W: 春木 · 夏火 · 秋金 · 冬水 · 四季月末(辰戌丑未)土王用事
        vitality(s, W): s==W→旺(4); W生s→相(3); s生W→休(2); s克W→囚(2); W克s→死(1)
        星五行 = {天蓬:水,天任:土,天冲:木,天辅:木,天英:火,天禽:土,天芮:土,天柱:金,天心:金}

表④ 时值 = 八门动静
        突(动) = {开,惊,伤,生}   绵(静) = {休,杜,景,死}

表① / 表② 机器可读(复制即用)

const elementToEffort = {
  神:{九地:"漂浮",太阴:"滑抹",六合:"弹拂",玄武:"点拍",螣蛇:"拧绞",值符:"推压",白虎:"劈砍",九天:"冲打",
      朱雀:"点拍",勾陈:"劈砍"},
  星:{天蓬:"漂浮",天任:"滑抹",天冲:"弹拂",天辅:"点拍",天英:"拧绞",天禽:"推压",天芮:"推压",天柱:"劈砍",天心:"冲打"},
  门:{休:"漂浮",生:"滑抹",伤:"弹拂",景:"点拍",杜:"拧绞",死:"推压",惊:"劈砍",开:"冲打"},
  干:{壬:"漂浮",癸:"滑抹",乙:"弹拂",甲:"弹拂",丁:"点拍",丙:"拧绞",戊:"推压",己:"推压",庚:"劈砍",辛:"冲打"}
};
const streamToBase = { 神:"漂浮", 星:"滑抹", 门:"弹拂", 天盘干:"点拍", 地盘干:"冲打" };

4 · 全局层 · 起局推导

开场算一次,定基调与路线。若 Stage A 已提供,可跳过。

4.1 地盘干(由局)

order = [戊,己,庚,辛,壬,癸,丁,丙,乙];  N = 局数
for i in 0..8:
  p = (遁=="阳") ? ((N-1+i) mod 9)+1 : ((N-1-i+9) mod 9)+1
  地盘干[p] = order[i]
// 阳2局 → {1:乙,2:戊,3:己,4:庚,5:辛,6:壬,7:癸,8:丁,9:丙}

4.2 天盘干(转盘法 · 由现盘星位)

starHome = {天蓬:1,天芮:2,天冲:3,天辅:4,天禽:5,天心:6,天柱:7,天任:8,天英:9}
for each palace p with star s:
  天盘干[p] = 地盘干[ starHome[s] ]     // 该星携它本位的地盘干飞上来
// 锚点校验:值符星天禽(本位5)携 地盘干[5]=符头,落值符宫。✔

4.3 符头 → 值符 / 值使

旬遁 = {甲子:戊,甲戌:己,甲申:庚,甲午:辛,甲辰:壬,甲寅:癸}
符头  = 旬遁[ 旬首(时柱) ]
符头宫 = palace where 地盘干 == 符头           // 入中(5)时寄坤2
值符星 = 本位星[符头宫]                          // = inverse(starHome)
值符宫 = palace where 地盘干 == 时干            // 值符星飞临时干之宫 → 路线起点
值使门 = 本位门[符头宫]                          // 中宫无门→寄2宫死门
值使宫 = 由旬内时辰序从符头宫沿门路飞临         // 路线终点(计数较繁,建议取自 Stage A)

4.4 协克(十干克应)· 4.5 音量令 · 4.6 伏吟

relation(天干, 地干):
  a=五行(天干); b=五行(地干)
  if a==b: {共振}
  elif 生(a,b): {协和, "天生地"}   elif 生(b,a): {协和, "地生天"}
  elif 克(a,b): {克战, "天克地"}   else: {克战, "地克天"}
  生cycle: 木→火→土→金→水→木 ;  克cycle: 木→土→水→火→金→木

音量令:由节气定 W(§表③);谷雨在辰月末土王用事窗口 → 默认 W=土(可配置切木令)。
伏吟:若 ∀门 在洛书本位 → 门盘伏吟=true(地·门声部全局冻结)。星盘同理。

5 · 运行时 · 每宫五步

function decodePalace(p, raw, 地盘干, 天盘干, W):
  voices = []
  for (声部, 元素, 流) in [
        ("神", raw.神, "神"), ("人", raw.星, "星"), ("地", raw.门, "门"),
        ("天上", 天盘干[p], "天盘干"), ("天下", 地盘干[p], "地盘干") ]:
    行 = streamToBase[流]
    列 = elementToEffort[ kind(流) ][ 元素 ]      // 表①
    cell = BLEND[行][列]                          // §8 字典 → {质感, 动作}
    v = {声部, 元素, 行, 列, 质感:cell.质感, 动作:cell.动作}
    if 声部=="人": v.音量 = vitality(星五行[raw.星], W)   // 表③
    if 声部=="地": v.时值 = doorMotion[raw.门]            // 表④
    voices.push(v)
  和弦 = {
    和弦: voices,
    音量: vitality(星五行[raw.星], W),
    时值: doorMotion[raw.门],
    协克: relation(天盘干[p], 地盘干[p])             // §4.4
  }
  return 和弦

// 主循环
for p in 1..9: Score.palaces[p] = decodePalace(p, raw.palaces[p], 地盘干, 天盘干, W)
Score.global.路线 = pathFrom(值符宫, 值使宫)        // 经三吉门(开/休/生)串接

"流→行"由 streamToBase 钉死,"元素→列"由表①查得,行列交点即去 §8 字典取该格 {质感,动作}。一个宫 = 五条声部的和弦 + 三个旋钮(音量/时值/协克)。

6 · 边界与规则

#情形规则
1值符宫天盘干歧义值符宫常见天禽(携符头)与天芮(携本位干)同坐。须明定:取值符星之干(默认,本盘=辛→协和)或取天芮之干(=戊→克战)。二者翻转该宫协克,必须在配置里写死一条。
2九星 9 ≠ 8天禽/天芮并入"推压"列(表①已合并)。
3天干 10 ≠ 8甲≈乙(弹拂)、己≈戊(推压),写死合并(表①)。
4八神两体系表①同时收录玄武/白虎与朱雀/勾陈,按 Stage A 实际出神查表即可。
5音量令开关四季月末(辰戌丑未,含谷雨/大暑等)有木令↔土令二义。默认从严取土王用事;暴露为配置项,因它会整体翻转响度分布。
6转盘 vs 飞盘 · 真太阳时§4.2 天盘推导仅适用转盘法;飞盘另写。临界时辰用真太阳时,以免跨时辰换盘。两者在 Stage A 锁定,Stage B 不管。

7 · 验证夹具(0428 盘)

输入:2026-04-28 卯时 · 谷雨中元 · 阳遁二局 · 符头辛 · 值符宫7 · 值使宫2 · 门盘伏吟 · 音量令=土。下表为期望输出(声部列=表①查得的力效列;实现后逐宫对拍即可验证正确性)。

神→列星→列门→列天上(干)→列天下(干)→列音量时值协克
7 兑值符值符→推压天禽芮→推压惊→劈砍辛→冲打癸→滑抹协和 金生水
2 坤 值使九天→冲打天英→拧绞死→推压丙→拧绞戊→推压协和 火生土
4 巽朱雀→点拍天冲→弹拂杜→拧绞己→推压庚→劈砍协和 土生金
9 离九地→漂浮天辅→点拍景→点拍庚→劈砍丙→拧绞克战 火克金
3 震勾陈→劈砍天任→滑抹伤→弹拂丁→点拍己→推压协和 火生土
5 中天禽(飞出)戊→推压辛→冲打协和 土生金
8 艮六合→弹拂天蓬→漂浮生→滑抹乙→弹拂丁→点拍协和 木生火
1 坎太阴→滑抹天心→冲打休→漂浮壬→漂浮乙→弹拂协和 水生木
6 乾螣蛇→拧绞天柱→劈砍开→冲打癸→滑抹壬→漂浮共振 水比和

地盘干(阳2局)= 1乙 2戊 3己 4庚 5辛 6壬 7癸 8丁 9丙;天盘干(§4.2 推得)= 1壬 2丙 3丁 4己 5戊 6癸 7辛 8乙 9庚。全局:七宫协和(皆天生地)· 乾6共振 · 离9唯一克战(戏眼)。路线 7→6→8→1→2。

8 · 附录 · 64 格质感字典(BLEND[行][列])

Stage B 的内容层。BLEND[本体行][掺入列][质感, 身体动作]。同 effort-qimen-overlay.html 的 B 对象,复制即用。



— 把 §3–§5 写成代码,接上任一 Stage A 排盘库,即为"一键起局 → 一键出谱"的实时运行系统。本规格手工产出的样例见 jiugong-score-0428-final.html(其每一格皆可由本规格复现)。