介绍
把出生时间算成一张完整的紫微斗数命盘,并一键转成大模型读得懂的文字。Rust 核心,供 Rust、Python、Go 调用,结果与 JS iztro 逐字段一致。
适合:开发者 · 命理爱好者 · 产品与决策者
把出生时间算成一张完整的紫微斗数命盘,并能一键转成大模型读得懂的文字 —— 排盘交给它算准,解读交给 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 逐字段零差异, 由约 71 万例金标测试守着。
核心用 Rust 实现,通过三套绑定暴露给上层编程语言:
它解决什么问题
紫微斗数排盘看似只是查表,实际上牵扯一连串容易出错的历法与流派细节:农历闰月的处理、 晚子时算今天还是明天、年干支按正月初一还是立春换年、虚岁怎么进位、不同流派的四化表差异。 任何一处取舍不同,排出的盘就不是同一张。
社区里最完整的开源实现是 JavaScript 的 iztro, 但它只能在 JS 运行时里用。x-iztro 把这套逻辑完整移植到 Rust, 让服务端、数据分析脚本、命令行工具、移动端也能用上同一套排盘结果。
与 iztro 的关系
x-iztro 是 iztro v2.5.8 的移植,不是重新发明。凡是 iztro 有的功能与数据, 两者结果必须逐字段一致 —— 这条由约 71 万例金标测试守着, 详见准确性保证。
特性
一键转成 AI 能读的文字
内置 Prompt 生成:把一张盘或一段运限转成上面那种结构化文本,直接交给大模型分析, 不必自己拼接命盘描述。见 AI Prompt 生成。
排盘与运限完整
本命盘、大限、小限、童限、流年、流月、流日、流时,六个层级的宫位、星耀、四化与 三方四正全部可取。年系杂耀、岁前十二神、将前十二神、博士十二神、长生十二神一应俱全。
流派与分界点可配置
Config 的六个开关覆盖了实践中会分歧的每一处:年分界点、运限分界点、虚岁分界点、
晚子时归属、算法派别(默认 / 中州派)、排盘视角(天盘 / 地盘 / 人盘),
另可整表替换四化表与亮度表。默认值与 JS iztro 一致,
细节见 Config 详解。
六种盘面语言
简体中文、繁体中文、英文、日文、韩文、越南文。同一张盘换盘面语言只是换一次翻译, 排盘结果不受影响。
中文盘、英文盘,判断结果一样
给开发者星名宫名在不同盘面语言下文本不同,但每个实体都额外带一个稳定的标识(key)。 Python 的枚举与 Go 的常量就建立在这些标识上, 所以「命宫有没有紫微星」这类判断,在任何盘面语言的盘上写法与结果都一样。 见 key 契约。
一分钟上手
from x_iztro import Astro
astro = Astro()
chart = astro.by_solar("2000-8-16", 2, "female") # 2 = 时辰索引,寅时 03:00-05:00
soul = chart.palace("soulPalace") # 命宫
print(chart.five_elements_class, chart.soul, chart.body)
print(soul.name, soul.heavenly_stem + soul.earthly_branch)
print([s.name for s in soul.major_stars])木三局 破军 文昌
命宫 壬午
['紫微']三种编程语言的完整安装与示例见快速开始。