紫微斗数概念

格局

什么是格局,x-iztro 按什么原则判定,本命与运限视角有何不同,以及 64 条格局的完整总表。

适合:所有人。64 条格局总表在页尾

什么是格局

一张盘上,某几颗星按特定方式凑在一起,传统上会给这个组合起一个名字—— 「紫府同宫」「杀破狼」「阳梁昌禄」都是这样的名字。这类有名字的星耀组合就是格局

格局不是另一套算法,它只是在已经排好的盘上做模式识别: 看某几颗星是不是落在了某几个宫,亮度够不够,带没带四化。 盘一旦排完,格局就已经确定了。

格局在传统上还附带吉凶断语(「主贵」「主孤」之类)。 x-iztro 只判定组合是否成立,不给任何评价——断语属于解读, 不同流派说法不一,交给你自己或你的模型。

x-iztro 怎么判

格局这件事在古籍与各家资料里口径并不统一,同一个名字常有宽严两种说法。 这套引擎的取舍原则是:

  1. 只做事实判定。输出是「这个组合成立,证据是这几颗星落在这几个宫」, 不含吉凶、强弱、评分。
  2. 每条规则注明来源。规则实现里逐条写了古籍引文与所采口径, 以及为什么在两种说法之间选了这一种。
  3. 多口径不设开关,用 variant 报出。同一个格局有几种成立形式时, 引擎把命中的那一种记在 variant 字段上,由你决定认不认。 比如「机巨同临」在酉宫成立的那种,variant"you", 因为另有资料称酉宫不算此格——引擎照报,标注清楚。
  4. 「破格」只标记不否决。资料里说的「加杀平常」「破格」这类条件触发时, 格局照样报出来,只把 broken 置为真。成立与否是事实,好坏是解读。
  5. 「身命」类格局命中哪宫记哪宫。古籍常写「身命居子午」, 意思是命宫或身宫任一成立即可。这类格局命宫、身宫各判一次, palace_index 记的是实际成格的那一宫,两宫都成立就报两次。
  6. 空宫借对宫。宫内没有主星时,按传统借对宫主星参与判定。 证据里记的仍是那颗星真正待的宫,不是借到的宫。
  7. 没有金标,自己造证据。iztro 本身没有格局 API, 所以这部分不像排盘那样有逐字段对照的金标数据。代之以四层测试: 每条规则的正反例单测(约 80 个)、来源页 32 张示例盘的真实盘复现、 tier1 那 1,560 张盘上的批量合理性与不变量检查(含每个格局的命中盘数统计), 以及 4 张盘 × 6 种语言的输出快照——快照由 Rust 写基线,Python 与 Go 读同一批文件比对, 三侧结果必须逐字节一致。

一次命中长什么样

一次命中就是一个 PatternHit,字段在三种编程语言里同名(大小写随语言习惯; 唯 Rust 结构体把 palace_indexpalace,序列化 DTO 的键统一是 palaceIndex):

字段说明
key语言无关的格局标识,如 zi_fu_tong_gong。判断逻辑用它
name格局名称,按排盘语言翻译
scope判定视角:本命为 origin,运限为该层(decadalyearly…)
palace_index成格所在的宫位索引(0-11,寅宫为 0)
palace_name / palace_name_key该宫在这个视角下的宫名与标识
variant命中的是哪种口径;单口径格局没有这个值
broken「破格」条件是否触发。成格照报,这里只作标记
stars参与成格的星与各自落宫,每颗带 keynamepalace_index,有则带亮度与四化

拿一张盘列出它的全部格局:

let zh = Language::ZhCN;
let chart = by_solar("1985-5-3", 9, Gender::Male, true, zh, Config::default())?;

for hit in chart.patterns() {
    println!("{} {}",
        translate_pattern(hit.key, zh),
        translate_palace(chart.palaces[hit.palace].name, zh));
}

输出

武贪同行 迁移
府相朝垣 命宫
杀破狼 迁移
禄马交驰 命宫
左右夹命 命宫
文贵文华 迁移
文星朝命 命宫
文星暗拱 命宫
文星暗拱 命宫

这张盘的身宫落在迁移宫,所以三条「身命」类格局(武贪同行、杀破狼、文贵文华) 记的是迁移宫而不是命宫。

variantbroken 也在同一批命中里:

for hit in chart.patterns():
    if hit.variant or hit.broken:
        print(f"{hit.name}: variant={hit.variant} broken={hit.broken}")
府相朝垣: variant=soul_empty broken=False
禄马交驰: variant=surround broken=False
文星朝命: variant=None broken=True
文星暗拱: variant=opposite broken=False
文星暗拱: variant=surround broken=False

府相朝垣的 soul_empty 表示这张盘的命宫确为空宫(古书「命无主星」那一支, x-iztro 不把它当成格条件,只标注);文星朝命的 broken 表示命宫三方四正见了煞忌; 禄马交驰的 surround 与文星暗拱的 opposite / surround 各是那条格局的一种成立口径, 逐条含义见页尾总表。

本命与运限是同一套规则

引擎内部把「本命十二宫」和「某个运限层的合成十二宫」抽象成同一种视图, 规则只面对视图。所谓运限视角,就是把这三件事换掉之后再跑一遍全部规则:

  • 命宫换成该层的命宫。大限走到哪一宫,那一宫就是这一层的命宫, 十二宫名以它为起点重排。
  • 合并该层的流曜。运禄、流禄、运昌、流昌这些流曜,在判定时等同于对应的本命辅星: 运限盘上见到流禄,规则就当见到禄存。
  • 四化换成该层的四化。本命视角读生年四化,大限视角读大限干引发的四化,以此类推。

因此资料里说的「本命有此组合,大限又走到即享其益」自然成立—— 在大限视角下重跑本命规则即可。运限视角没有身宫, 「身命」类格局在运限层只判该层命宫。

let h = chart.horoscope("2025-6-1", 0)?;
for hit in h.patterns(Scope::Decadal) {
    println!("{} {:?}", translate_pattern(hit.key, zh), hit.variant);
}

用 2000-8-16 寅时的女命盘,大限视角(Python 版):

杀破狼 decadal None
风云际会 decadal None
风云际会 decadal yearly

同一张盘的本命视角只有一条「府相朝垣」——大限走到之后, 命宫换了位置,杀破狼才在这一层成立。

Scope.ORIGIN 等同本命

运限对象上传 origin 层,结果与直接在星盘上调 patterns() 完全一致。

两条只在运限出现的格局

64 条里有两条是行运格:只在运限视角判定,本命盘上永远不报。

格局何时判说明
禄衰马困 lu_shuai_ma_kun任一运限层判定层级即当前视图那一层:大限视角判大限,流年视角判流年
风云际会 feng_yun_ji_hui只在大限视角它比较的是「两限同时逢禄马」,跨层,所以只在大限视角报一次

风云际会的 variant 同时记二限组合与「逢」的松紧:无 variant 或 same_palace 取「大限 + 小限」,yearlyyearly_same_palace 取「大限 + 流年」(另有流派取这一种); 带 same_palace 的是两限命宫皆本宫坐禄马的严口径,不带的是三方四正会照。 两种组合各报一条,最多两条,上面那张盘正是两种组合都成立。

日月的明暗按哪张表

「日月并明」「日月反背」「丹墀桂墀」这几条要看太阳、太阴的明暗, 而明暗的判法有两种传统,结论会不一样:

口径依据标识
亮度表(默认)星盘自带的亮度,庙旺为明,陷与「不」为暗table
传统位置太阳寅至午为明、酉至丑为暗;太阴酉至丑为明、卯至未为暗positional

默认与来源页示例不一致,这是有意的

x-iztro 的亮度表与 iztro 逐值一致,这是整个库的红线。 按这张表,太阴在酉宫是「不」(不算明)—— 而来源页《日月并明》的两张示例盘,太阴恰好都在酉。 所以按默认口径,那两张示例判为不成格

传统上多数亮度表把太阴酉记作旺,页面示例依据的是这一说。 想复现传统判法,把口径切到 positional:结论与页面示例一致, 且不用改动亮度表、不影响排盘与 iztro 的对齐。

from x_iztro import Astro, PatternConfig, BrightnessSource

chart = Astro().by_solar("1985-1-5", 11, "female")

print([h.name for h in chart.patterns()])
print([h.name for h in chart.patterns(
    PatternConfig(brightness_source=BrightnessSource.POSITIONAL))])
['禄马交驰', '左右夹命', '坐贵向贵']
['日月并明', '禄马交驰', '左右夹命', '坐贵向贵']

三个口径开关

PatternConfig 只有三个字段。凡是「多口径」的格局一律走 variant, 不在这里加开关;这里只放会改变事实判定本身的数据口径。

字段默认作用
brightness_sourcetable日月明暗的依据,见上一节
borrowtrue空宫是否借对宫主星参与判定
flow_starstrue运限视角下流曜是否等同对应本命辅星

关掉 borrow,空宫就是空宫,靠借宫成立的格局不再报; 关掉 flow_stars,运限视角只认本命辅星,流禄流马不参与。 两者都只影响格局判定,不影响排盘结果。

64 条格局总表

按来源页的条目顺序。「类别」一列里,行运表示只在运限视角判定, 其余在本命与运限两种视角下都会判。

判定条件一列写的是形式化条件的要点;每条规则的完整口径、古籍引文 与在两种说法间取舍的理由,写在实现的文档注释里(src/pattern/rules/)。

#名称key判定条件variantbroken类别
1君臣庆会jun_chen_qing_hui紫微或天府与辅佐诸星成四种会合之一(见 variant)zi_po_zuo_you_jia 紫微破军守命、左辅右弼分夹;zi_xiang_chang_qu_axis 紫微天相守命、昌曲分居命迁;tian_fu_ji_yin_tong_liang_jia 天府守命、机阴同梁四星俱全分布于命宫前后两宫(空侧借对宫主星补足);zi_zuo_you_tong_gong 紫微与左辅右弼同守命宫有(仅第四形式:三方四正见煞忌时标记;前三形式以无煞忌为成格前提)通用
2紫府同宫zi_fu_tong_gong紫微、天府同守命宫(只可能在寅、申)通用
3金舆扶驾jin_yu_fu_jia天府守命于丑或未,太阳、太阴分夹命宫通用
4紫府夹命zi_fu_jia_ming天机、太阴同守命宫,紫微、天府分夹(只可能在寅、申)通用
5极向离明ji_xiang_li_ming紫微守命于午,且命宫三方四正无煞忌通用
6极居卯酉ji_ju_mao_you紫微、贪狼同守命宫于卯或酉通用
7机月同梁ji_yue_tong_liang命宫在寅或申,宫内为天同天梁或天机太阴(空宫借对宫主星)surround 机月同梁四星齐见命宫三方四正(含借宫)的宽口径通用
8善荫朝纲shan_yin_chao_gang天机、天梁同守命宫或身宫(只可能在辰、戌)通用
9机巨同临ji_ju_tong_lin天机、巨门同守命宫(只可能在卯、酉)you 命宫在酉(另有资料称酉宫不算此格)通用
10机巨居卯ji_ju_ju_mao天机、巨门同守命宫于卯通用
11日月同宫ri_yue_tong_gong太阳、太阴同守命宫(只可能在丑、未)通用
12巨日同宫ju_ri_tong_gong太阳、巨门同守命宫(寅、申皆算)通用
13日照雷门ri_zhao_lei_men太阳、天梁同守卯宫,且该宫是命宫或官禄宫career 落官禄宫(古书「守官禄宫亦然」;无 variant 为命宫)通用
14日月并明ri_yue_bing_ming命宫三方四正内太阳、太阴皆明通用
15日月反背ri_yue_fan_bei命宫三方四正内太阳、太阴皆暗通用
16日月照璧ri_yue_zhao_bi太阳、太阴同守田宅宫通用
17金灿光辉jin_can_guang_hui太阳独坐命宫且命宫在午有(三方四正见煞忌)通用
18日月藏辉ri_yue_cang_hui日月反背,且命宫三方四正又见巨门通用
19丹墀桂墀dan_chi_gui_chi日月并明,且命宫本身坐着明的太阳或明的太阴通用
20日月夹命ri_yue_jia_ming太阳、太阴分居命宫前后邻宫,命宫不坐空亡星且宫内有吉星通用
21日月夹财ri_yue_jia_cai条件同日月夹命,把命宫换成财帛宫通用
22月朗天门yue_lang_tian_men太阴守命宫且命宫在亥通用
23月生沧海yue_sheng_cang_hai天同、太阴同坐子宫,且该宫是命宫或田宅宫soul 落命宫(页面别称「水澄桂萼」);property 落田宅宫(全书原文)通用
24明珠出海ming_zhu_chu_hai命宫为空宫且在未,对宫(迁移丑)坐天同、巨门通用
25武贪同行wu_tan_tong_xing武曲、贪狼同守命宫或身宫(只可能在丑、未)通用
26铃昌陀武ling_chang_tuo_wu铃星、文昌、陀罗、武曲四星齐会命宫三方四正通用
27刑囚夹印xing_qiu_jia_yin廉贞、天相与刑星(天刑或擎羊)同守命宫或身宫通用
28生不逢时sheng_bu_feng_shi命宫的空亡星与廉贞同宫pojun 与之同宫的是破军(另有资料所立的形态)通用
29雄宿朝元xiong_su_chao_yuan廉贞独坐寅或申守命有(三方四正见火铃羊陀空劫)通用
30府相朝垣fu_xiang_chao_yuan天府居官禄宫、天相居财帛宫,二宫朝拱命宫soul_empty 命宫确为空宫通用
31火贪huo_tan贪狼守命,火星同宫surround 火星只在三方四正会照通用
32铃贪ling_tan贪狼守命,铃星同宫surround 铃星只在三方四正会照通用
33石中隐玉shi_zhong_yin_yu巨门守命宫或身宫,且该宫在子或午通用
34梁马飘荡liang_ma_piao_dang天梁与天马同守命宫或身宫通用
35阳梁昌禄yang_liang_chang_lu太阳、天梁、文昌、禄存四星齐会命宫三方四正通用
36杀破狼sha_po_lang七杀、破军、贪狼三星之一坐命宫或身宫(三星恒成三合)通用
37七杀朝斗qi_sha_chao_dou七杀守命,且命宫在子、午、寅、申yang_dou 命宫在寅或子(仰斗);chao_dou 命宫在午或申(朝斗)通用
38禄衰马困lu_shuai_ma_kun运限命宫三方四正内,禄存与空曜或耗曜同宫,同时天马与煞忌同宫qisha 限命宫三方四正又见七杀(古书「限逢七杀」严口径同时满足)行运
39英星入庙ying_xing_ru_miao破军守命,且命宫在子或午通用
40众水朝东zhong_shui_chao_dong破军与文曲同守命宫,且命宫在寅或卯通用
41三奇加会san_qi_jia_hui化禄、化权、化科齐聚命宫三方四正ke_soul_lu_wealth_quan_career 化科在命宫、化禄在财帛、化权在官禄通用
42禄马交驰lu_ma_jiao_chi禄存与天马同宫(任一宫成立即报,可有多个命中)surround 命宫三方四正内禄存、天马俱见而不必同宫(成格宫记命宫)通用
43禄合鸳鸯lu_he_yuan_yang命宫的禄存与化禄成双:同宫,或一在命宫一在迁移宫对拱opposite 命迁对拱(无 variant 为同宫)通用
44明禄暗禄ming_lu_an_lu命宫有禄存(或化禄),暗合宫有化禄(或禄存)通用
45禄马佩印lu_ma_pei_yin禄存、天马、天相三星同宫(任一宫成立即报,成格宫记该宫)有(该宫见空亡星)通用
46两重华盖liang_chong_hua_gai命宫禄存与化禄双禄坐守,又见空曜kong_yao 空曜取天空、截空、旬空的宽口径(无 variant 为原文的地空、地劫)通用
47风云际会feng_yun_ji_hui大限与另一限的命宫三方四正各自见禄存、天马或化禄yearly / yearly_same_palace 取大限 + 流年(无 variant / same_palace 为大限 + 小限);带 same_palace 为两限命宫皆本宫坐禄马的严口径行运(只在大限视角)
48羊陀夹命yang_tuo_jia_ming陀罗、擎羊分居命宫前后邻宫;被夹的命宫必坐禄存,一并记入证据通用
49马头带箭ma_tou_dai_jian命宫在午,擎羊同宫,且天同、太阴同守命宫(空宫借对宫)tanlang_lu 午宫贪狼化禄与擎羊同宫(旁格)通用
50左右同宫zuo_you_tong_gong左辅、右弼同守命宫或身宫(仅三方会照不算)通用
51左右夹命zuo_you_jia_ming左辅、右弼分居命宫前后两宫通用
52辅弼拱主fu_bi_gong_zhu紫微守命,左辅、右弼来拱或来夹surround 两星皆在三方四正;jia 两星分居命宫前后通用
53魁钺夹命kui_yue_jia_ming天魁、天钺分居命宫前后两宫(同宫或会照不算)通用
54坐贵向贵zuo_gui_xiang_gui天魁、天钺分坐命宫与迁移宫通用
55劫空夹命jie_kong_jia_ming地劫、地空分居命宫前后两宫通用
56禄逢两杀lu_feng_liang_sha禄存与空亡星同守命宫,且命宫三方四正见地空或地劫通用
57文贵文华wen_gui_wen_hua文昌、文曲同守命宫、身宫或命宫三方四正之一宫通用
58文星朝命wen_xing_chao_ming文昌、文曲皆见于命宫三方四正(含与命宫同宫)有(三方四正见煞忌)通用
59昌曲夹命chang_qu_jia_ming文昌、文曲分居命宫前后两宫有(三方四正见煞忌)通用
60文星暗拱wen_xing_an_gong文昌、文曲以夹、迁移正照或三方会照之一拱照命宫(三种口径独立判定、命中即报)jia 两星分居命宫前后两宫;opposite 两星同坐迁移宫正照;surround 两星皆见于命宫三方四正通用
61权禄生逢quan_lu_sheng_feng化权星与化禄星同守命宫,且两星皆庙旺通用
62科明暗禄ke_ming_an_lu化科守命宫,命宫的暗合宫有禄存或化禄hua_lu 暗合宫为化禄(部分流派口径;无 variant 为禄存)通用
63科权禄夹ke_quan_lu_jia化禄、化权、化科中的两化分居命宫前后两宫通用
64甲第登庸jia_di_deng_yong化科守命宫,化权在迁移宫或两三合宫朝拱命宫complete 再会化禄或禄存通用

火贪与铃贪算两条

来源页把「火贪、铃贪」并作一个条目讲,x-iztro 拆成两个独立标识, 所以条目是 63 条、格局标识是 64 个。

几处容易误解的地方

API 参考

格局释义在知识包里

这一页与三个 API 参考页讲的是判定:哪几颗星怎么凑在一起才算成格。 成格之后「这条格局意味着什么」是解读,属于门派观点, 放在知识包里—— 内嵌的默认包给了 64 条格局各自的古籍引文、成立条件的文字描述与解读正文。

命中的 key 就是知识包 patterns 段的键,直接对上:

pack = KnowledgePack.builtin()

for hit in chart.patterns():
    print(hit.name, "|", pack.pattern(hit.key).quotes[0])

不认同其中的说法,写一份覆盖包换掉那几条,判定结果不变。

来源与署名

格局规则的条目、示例盘与古籍引文取自 iztro-docs《格局》页(MIT License,作者 Sylar Long), 引文本身出自《紫微斗数全书》。格局判定引擎、六语言格局名、 以及在多种说法之间的取舍与形式化,是 x-iztro 的实现—— iztro 本身没有对应的 API。

本页目录