语义化文本(to_text)
把一张盘、一段运限或一个宫位投影成自然语言文本,喂大模型或直接给人读。
适合:所有人。这是这个库最直接的用法
一张盘在 x-iztro 里有三种投影:to_json / DTO 是给机器的结构化形态,
译文字段是给界面的展示形态,to_text 是给语言和人的自然语言形态 ——
盘面事实的完整文字描述,喂给大模型是它最常见的用途之一,但它本身不是提示词,
不含任何指令。手工拼接这段描述既繁琐又容易漏字段,所以每个可解读的对象都自带 to_text。
| 入口 | 内容 |
|---|---|
星盘 to_text | 本命盘:基本信息 + 十二宫的干支、大限、小限虚岁、四组十二神、三组星耀 + 格局命中 |
运限 to_text | 运限:大限、小限、流年、流月、流日、流时,各层四化、流耀与格局 |
宫位 to_text | 单个宫位,与本命盘文本中该宫的段落一致 |
三方四正 to_text | 本宫、对宫、财帛位、官禄位四宫合看 |
patterns_to_text | 格局命中列表单独成文,本命与运限视角皆可 |
全部按盘面语言生成:中文盘出中文,英文盘出英文。
用法
chart = astro.by_solar("2000-8-16", 2, "female")
h = chart.horoscope("2025-1-1", 0)
text = f"{chart.to_text()}\n{h.to_text()}" # str(chart) / str(h) 等价let chart = by_solar("2000-8-16", 2, Gender::Female, true, Language::ZhCN, Config::default())?;
let h = chart.horoscope("2025-1-1", 0)?;
let text = format!("{}\n{}", chart.to_text(), h.to_text());chart, _ := iztro.BySolar("2000-8-16", 2, iztro.GenderFemale, true, iztro.LanguageZhCN, nil)
h, _ := chart.Horoscope("2025-1-1", 0)
natal, _ := chart.ToText()
fortune, _ := h.ToText()更细粒度的入口:
chart.palace("命宫").to_text() # 单宫
chart.surrounded_palaces("命宫").to_text() # 三方四正
chart.patterns_to_text() # 本命格局
h.patterns_to_text("yearly") # 流年视角格局chart.PalaceToText(iztro.PalaceTarget{Key: iztro.PalaceSoul})
chart.SurroundedPalacesToText(iztro.PalaceTarget{Key: iztro.PalaceSoul})
chart.PatternsToText(nil)
h.PatternsToText(iztro.ScopeYearly, nil)Rust 侧对应 PalaceRef::to_text()、SurroundedPalaces::to_text(lang) 与
text 模块的自由函数(astrolabe_to_text / horoscope_to_text /
palace_to_text / surrounded_palaces_to_text / patterns_to_text),
便捷方法按排盘语言输出,自由函数可指定语言。三语言输出逐字一致。
本命盘文本长什么样
下面是 2000-8-16 寅时 女这张盘的完整开头、前三宫与结尾的格局节:
=== 基本信息 ===
性别: 女
阳历: 2000-8-16
农历: 二〇〇〇年七月十七
干支: 庚辰 甲申 丙午 庚寅
时辰: 寅时 (03:00~05:00)
星座: 狮子座
生肖: 龙
命宫地支: 午
身宫地支: 戌
命主: 破军
身主: 文昌
五行局: 木三局
生年四化: 太阳禄, 武曲权, 太阴科, 天同忌
=== 十二宫 ===
--- 财帛 ---
天干地支: 戊寅
大限: 43-52
小限虚岁: 9, 21, 33, 45, 57, 69, 81, 93, 105, 117
十二神: 绝, 飞廉, 吊客, 岁驿
主星: 武曲(得)[权], 天相(庙)
辅星: 天马
杂耀: 解神, 三台, 天寿, 天巫, 天厨, 阴煞, 天哭
--- 夫妻 [来因] ---
天干地支: 庚辰
大限: 23-32
小限虚岁: 7, 19, 31, 43, 55, 67, 79, 91, 103, 115
十二神: 死, 将军, 岁建, 华盖
主星: 七杀(庙)
辅星: 右弼, 火星(陷)
杂耀: 封诰, 华盖
--- 官禄 [身宫] ---
天干地支: 丙戌
大限: 83-92
小限虚岁: 1, 13, 25, 37, 49, 61, 73, 85, 97, 109
十二神: 沐浴, 伏兵, 大耗, 月煞
主星: 廉贞(利), 天府(庙)
辅星: 左辅
杂耀: 天才, 天虚
(中间八宫从略)
=== 格局 ===
- 府相朝垣(命宫): 天府(庙), 天相(庙)十二宫按盘上位置顺序输出,不是按宫名顺序。末尾的「格局」节列出 格局引擎在本命盘上的全部命中, 每条一行:格局名、命中宫、构成星耀。
运限文本长什么样
目标日期 2025-1-1 早子时:
=== 运限 ===
目标日期: 2025-1-1 / 二〇二四年腊月初二
--- 大限 ---
大限命宫: 本命夫妻 (庚辰)
大限四化: 太阳禄, 武曲权, 太阴科, 天同忌
大限格局: 杀破狼(命宫), 风云际会(命宫)
夫妻 (财帛):
主星: 武曲(得)[权], 天相(庙)
辅星: 天马
流耀: 运马
兄弟 (子女):
主星: 太阳(庙)[禄], 天梁(庙)
流耀: 运曲
...
小限命宫: 本命官禄 (虚岁 25)
小限宫名: 官禄, 仆役, 迁移, 疾厄, 财帛, 子女, 夫妻, 兄弟, 命宫, 父母, 福德, 田宅
小限四化: 天同禄, 天机权, 文昌科, 廉贞忌
主星: 廉贞(利), 天府(庙)
辅星: 左辅
杂耀: 天才, 天虚
--- 流年 ---
流年命宫: 本命夫妻 (甲辰)
流年四化: 廉贞禄, 破军权, 武曲科, 太阳忌
流年格局: 杀破狼(命宫), 禄马交驰(夫妻), 禄马佩印(夫妻), 昌曲夹命(命宫) [破格], 文星暗拱(命宫)
夫妻 (财帛):
主星: 武曲(得)[权], 天相(庙)
辅星: 天马
流耀: 流禄, 流马
十二神: 吊客, 岁驿
...
流月命宫: 本命仆役 (丁丑)
流月宫名: 田宅, 官禄, 仆役, 迁移, 疾厄, 财帛, 子女, 夫妻, 兄弟, 命宫, 父母, 福德
流月四化: 太阴禄, 天同权, 天机科, 巨门忌
流月流耀: 月鸾(田宅), 月曲(迁移), 月陀(迁移), 月禄(疾厄), 月羊(财帛), 月喜(子女), 月钺(夫妻), 月昌(夫妻), 月魁(命宫), 月马(命宫)
流月格局: 机月同梁(命宫), 日照雷门(官禄), 日月并明(命宫), ...
流日命宫: 本命迁移 (庚午)
流日宫名: 福德, 田宅, 官禄, 仆役, 迁移, 疾厄, 财帛, 子女, 夫妻, 兄弟, 命宫, 父母
流日四化: 太阳禄, 武曲权, 太阴科, 天同忌
流日流耀: 日曲(田宅), 日喜(田宅), 日钺(疾厄), 日陀(疾厄), 日禄(财帛), 日马(财帛), 日羊(子女), 日鸾(子女), 日昌(兄弟), 日魁(父母)
流日格局: 火贪(命宫), 铃贪(命宫), 杀破狼(命宫), ...
流时命宫: 本命迁移 (丙子)
流时宫名: 福德, 田宅, 官禄, 仆役, 迁移, 疾厄, 财帛, 子女, 夫妻, 兄弟, 命宫, 父母
流时四化: 天同禄, 天机权, 文昌科, 廉贞忌
流时流耀: 时马(福德), 时鸾(田宅), 时陀(官禄), 时禄(仆役), 时曲(迁移), 时羊(迁移), 时昌(财帛), 时钺(子女), 时喜(子女), 时魁(兄弟)
流时格局: 火贪(命宫), 铃贪(命宫), 杀破狼(命宫), ...大限与流年及以下各层都带该层视角的格局行,宫名按该层重排后的宫名书写; 小限不设格局视角,只带重排宫名与四化。命主尚未起运时,大限段的标题与各行标签 全部写「童限」而非「大限」——童限与大限是不同的解盘语义。
格式约定
| 记号 | 含义 |
|---|---|
天同(利) | 括号内是亮度 |
太阳(旺)[权] | 方括号内是四化 |
--- 官禄 [身宫] --- | 方括号标记该宫同时是身宫 |
--- 夫妻 [来因] --- | 方括号标记该宫是来因宫 |
- 府相朝垣(命宫): 天府(庙), 天相(庙) | 格局行:格局名、命中宫(紧跟名称)、构成星耀 |
昌曲夹命(命宫) [破格] | [破格] 标记该格局构成但被冲破 |
大限命宫: 本命夫妻 (庚辰) | 这一层的命宫落在本命的哪个宫,括号内是该层干支 |
小限命宫: 本命官禄 (虚岁 25) | 小限落宫,括号内是虚岁 |
夫妻 (财帛): | 运限段中,前面是这一层重排后的宫名,括号内是本命宫名 |
十二神: 绝, 飞廉, 吊客, 岁驿 | 本命宫内固定为长生12、博士12、岁前12、将前12 四组各一位的顺序;流年逐宫的「十二神」行只有岁前、将前两组 |
小限宫名: …、流月宫名: … | 该层重排后的十二宫名,按本命宫位索引(寅宫起)排列 |
月鸾(田宅) | 流月及以下层级的流耀行,括号内是该流耀落在这一层的哪个宫 |
括号里是本命宫名,别读反
夫妻 (财帛): 说的是「这一格在本大限里叫夫妻宫,它在本命盘上是财帛宫」。
运限解读要以前面那个名字为准,括号里的名字是为了让你能对回本命盘。
见运限。
日期字段原样回显入参,不补零:传 "2000-8-16" 输出就是 阳历: 2000-8-16。
篇幅
中文盘的本命文本约 1,810 字符,运限段约 2,490 字符,两段合起来约 4,300 字符。 英文盘更长(星名是单词而非两字),本命约 3,570、运限约 5,990 字符。 任何主流模型的上下文窗口都装得下,通常不必裁剪。
接入大模型
生成的文本是纯描述,不含指令。实际使用时在前面加上你的分析要求:
system = "你是紫微斗数分析师。基于给定命盘作答,不要编造盘上没有的信息。"
user = f"""{chart.to_text()}
{chart.horoscope("2025-1-1", 0).to_text()}
请分析这个人 2025 年的事业运势。"""更完整的接法(工具调用、别让模型自己排盘)见让 AI 解读命盘。
用中文盘还是英文盘
优先用中文盘。英文盘的星名走 iztro 的意译词表(紫微是 emperor、七杀是 marshal),
亮度退化成 [+3] 这类记号,四化写成 A/B/C/D ——
这套写法与英文命理界的通行译法不同,模型未必认得。
主流模型的中文命理术语能力都不差,直接喂中文文本效果更好。 确实需要英文时,建议附上一份星名对照表。
需要更细的控制
to_text 覆盖的是通用场景。如果要自定义文本结构(比如只描述特定几个宫、 或者输出 JSON 而非文本),直接遍历星盘数据自己拼即可 —— 所有字段都是公开的,见数据结构字典。