文档
紫微斗数排盘引擎:与 JS iztro 逐字段零差异,附格局判定、知识包与生辰反推,一次调用转成大模型可读文本。Rust 核心,Rust / Python / Go 直接调用。
把出生时间算成一张完整的紫微斗数命盘,并能一键转成大模型读得懂的文字 —— 排盘归它算,解读归 AI。
一次调用得到的就是这样一段文字——下面是完整的基本信息与第一宫, 其余十一宫同款列全,直接贴进任何大模型就能开始问:
=== 基本信息 ===
性别: 女
阳历: 2000-8-16
农历: 二〇〇〇年七月十七
干支: 庚辰 甲申 丙午 庚寅
时辰: 寅时 (03:00~05:00)
星座: 狮子座
生肖: 龙
命宫地支: 午
身宫地支: 戌
命主: 破军
身主: 文昌
五行局: 木三局
生年四化: 太阳禄, 武曲权, 太阴科, 天同忌
=== 十二宫 ===
--- 财帛 ---
天干地支: 戊寅
大限: 43-52
小限虚岁: 9, 21, 33, 45, 57, 69, 81, 93, 105, 117
十二神: 绝, 飞廉, 吊客, 岁驿
主星: 武曲(得)[权], 天相(庙)
辅星: 天马
杂耀: 解神, 三台, 天寿, 天巫, 天厨, 阴煞, 天哭
…(其余十一宫依次列全)排盘结果对不对,有一条可验证的硬标准:与 JS iztro v2.5.8 逐字段零差异——这是复现口径,不是流派裁决——由 716,314 例金标测试守着, 见准确性保证。默认口径与 iztro 一致, 中州派与各分界点可切换。
从哪开始
x-iztro 指南
安装、第一张盘、紫微斗数概念、配置与数据结构。不分编程语言的通用内容。
不写代码怎么用它
能做什么、典型场景、要跟工程师交代哪几件事。
Rust API 参考
核心库。Python 与 Go 绑定都调用它。
Python API 参考
dataclass 与 StrEnum 构成的类型化 API,零外部依赖。
Go API 参考
内嵌 WebAssembly,纯 Go 运行时,无 cgo。
语义化文本(to_text)
上面那段文字怎么生成、格式约定、怎么接进大模型。
iztro 没有的三件事
排盘之上的语义层,也是 AI 管线真正要用的部分——上游 iztro 没有对应 API:
格局判定(64 条)
本命与运限共用一套规则,命中带成格宫位、口径与证据星,可审计。
知识包
解读文本与门派属性外置成可替换 JSON,内嵌默认包,可当 RAG 语料。
生辰反推
由八字四柱或盘面特征反查候选生辰,每个候选经正排验证。
按身份找路
三种编程语言,同一套结果
三套绑定调用同一份 Rust 核心,因此排盘结果逐字段相同。 判断方法基于语言无关标识,同一条分析规则用三种编程语言写出来,结果也一致。
use x_iztro::*;
let chart = by_solar("2000-8-16", 2, Gender::Female, true, Language::ZhCN, Config::default())?;
let soul = chart.palace(Palace::Soul).unwrap();
println!("{}", soul.has(&[StarKey::ZiweiMaj]));三段代码给出同一个判断:这张盘的命宫里有紫微星(Python 打印 True,
Rust 与 Go 打印 true)。三段用的都是语言无关标识 ziweiMaj——
就算把盘换成英文或日文输出,判断结果也不变。