Qimen-to-Effort Runtime Specification · v1 · 每场演出 = 一次起局 → 一份当场的九宫力效总谱
关键决定:不要自己重写"起局"。从时间到盘面(四柱、节气、定局、超神接气置闰、飞星布门、寄宫)是被钻研了上千年、边界极多的成熟问题,交给现成的奇门排盘引擎/库。本系统唯一的新逻辑,是"盘 → 力效谱"那一层。
Stage A 候选:任何输出转盘法九宫的奇门库/API(神·星·门·天盘干·地盘干 + 值符值使 + 节气 + 局)。Stage B 仅消费其输出,不关心历法。若 Stage A 不提供天盘干/协克,Stage B 可自行推导(§4)。
RawChart = {
meta: { 节气:"谷雨", 元:"中", 局:{遁:"阳", 数:2}, 符头:"辛",
值符宫:7, 值使宫:2, 门盘伏吟:true, 星盘伏吟:false },
palaces: { // key = 洛书宫号 1..9
7: { 神:"值符", 星:"天禽芮", 门:"惊", 天盘干:"辛", 地盘干:"癸", 是值符宫:true },
...
}
}
天盘干、值符宫、值使宫、伏吟若 Stage A 已给则直接用;否则由 §4 推导。神用何体系(值符系/朱雀勾陈系)由 Stage A 决定,Stage B 的查表已两系兼容。
Score = {
global: { 局, 节气, 音量令:"土", 值符宫, 值使宫, 路线:[7,6,8,1,2], 伏吟:[...] },
palaces: {
7: {
和弦:[
{声部:"神", 元素:"值符", 行:"漂浮", 列:"推压", 质感:"…", 动作:"…"},
{声部:"人", 元素:"天禽芮", 行:"滑抹", 列:"推压", 质感:"…", 动作:"…", 音量:"旺"},
{声部:"地", 元素:"惊", 行:"弹拂", 列:"劈砍", 质感:"…", 动作:"…", 时值:"突"},
{声部:"天上", 元素:"辛", 行:"点拍", 列:"冲打", 质感:"…", 动作:"…"},
{声部:"天下", 元素:"癸", 行:"冲打", 列:"滑抹", 质感:"…", 动作:"…"}
],
音量:"旺", 时值:"突", 协克:{类型:"协和", 式:"金生水·天生地"}
}, ...
}
}
系统的字典,写死一次,任何盘共用。全部取自优化落位(质感优先版)。
| 力效列 | 八神 | 九星 | 八门 | 天干 |
|---|---|---|---|---|
| 漂浮 | 九地 | 天蓬 | 休 | 壬 |
| 滑抹 | 太阴 | 天任 | 生 | 癸 |
| 弹拂 | 六合 | 天冲 | 伤 | 乙 / 甲 |
| 点拍 | 玄武 / 朱雀 | 天辅 | 景 | 丁 |
| 拧绞 | 螣蛇 | 天英 | 杜 | 丙 |
| 推压 | 值符 | 天禽 / 天芮 | 死 | 戊 / 己 |
| 劈砍 | 白虎 / 勾陈 | 天柱 | 惊 | 庚 |
| 冲打 | 九天 | 天心 | 开 | 辛 |
两套八神体系兼容:朱雀≡玄武位(点拍)、勾陈≡白虎位(劈砍)。九星 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 = { 神:"漂浮", 星:"滑抹", 门:"弹拂", 天盘干:"点拍", 地盘干:"冲打" };
开场算一次,定基调与路线。若 Stage A 已提供,可跳过。
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:丙}
starHome = {天蓬:1,天芮:2,天冲:3,天辅:4,天禽:5,天心:6,天柱:7,天任:8,天英:9}
for each palace p with star s:
天盘干[p] = 地盘干[ starHome[s] ] // 该星携它本位的地盘干飞上来
// 锚点校验:值符星天禽(本位5)携 地盘干[5]=符头,落值符宫。✔
旬遁 = {甲子:戊,甲戌:己,甲申:庚,甲午:辛,甲辰:壬,甲寅:癸}
符头 = 旬遁[ 旬首(时柱) ]
符头宫 = palace where 地盘干 == 符头 // 入中(5)时寄坤2
值符星 = 本位星[符头宫] // = inverse(starHome)
值符宫 = palace where 地盘干 == 时干 // 值符星飞临时干之宫 → 路线起点
值使门 = 本位门[符头宫] // 中宫无门→寄2宫死门
值使宫 = 由旬内时辰序从符头宫沿门路飞临 // 路线终点(计数较繁,建议取自 Stage A)
relation(天干, 地干):
a=五行(天干); b=五行(地干)
if a==b: {共振}
elif 生(a,b): {协和, "天生地"} elif 生(b,a): {协和, "地生天"}
elif 克(a,b): {克战, "天克地"} else: {克战, "地克天"}
生cycle: 木→火→土→金→水→木 ; 克cycle: 木→土→水→火→金→木
音量令:由节气定 W(§表③);谷雨在辰月末土王用事窗口 → 默认 W=土(可配置切木令)。
伏吟:若 ∀门 在洛书本位 → 门盘伏吟=true(地·门声部全局冻结)。星盘同理。
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 字典取该格 {质感,动作}。一个宫 = 五条声部的和弦 + 三个旋钮(音量/时值/协克)。
| # | 情形 | 规则 |
|---|---|---|
| 1 | 值符宫天盘干歧义 | 值符宫常见天禽(携符头)与天芮(携本位干)同坐。须明定:取值符星之干(默认,本盘=辛→协和)或取天芮之干(=戊→克战)。二者翻转该宫协克,必须在配置里写死一条。 |
| 2 | 九星 9 ≠ 8 | 天禽/天芮并入"推压"列(表①已合并)。 |
| 3 | 天干 10 ≠ 8 | 甲≈乙(弹拂)、己≈戊(推压),写死合并(表①)。 |
| 4 | 八神两体系 | 表①同时收录玄武/白虎与朱雀/勾陈,按 Stage A 实际出神查表即可。 |
| 5 | 音量令开关 | 四季月末(辰戌丑未,含谷雨/大暑等)有木令↔土令二义。默认从严取土王用事;暴露为配置项,因它会整体翻转响度分布。 |
| 6 | 转盘 vs 飞盘 · 真太阳时 | §4.2 天盘推导仅适用转盘法;飞盘另写。临界时辰用真太阳时,以免跨时辰换盘。两者在 Stage A 锁定,Stage B 不管。 |
输入: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。
Stage B 的内容层。BLEND[本体行][掺入列] → [质感, 身体动作]。同 effort-qimen-overlay.html 的 B 对象,复制即用。
— 把 §3–§5 写成代码,接上任一 Stage A 排盘库,即为"一键起局 → 一键出谱"的实时运行系统。本规格手工产出的样例见 jiugong-score-0428-final.html(其每一格皆可由本规格复现)。