使用指南

语义化文本(to_text)

把一张盘、一段运限或一个宫位投影成 Markdown 文本,喂大模型或直接给人读。

适合:所有人。这是这个库最直接的用法

一张盘在 x-iztro 里有三种投影:to_json / DTO 是给机器的结构化形态, 译文字段是给界面的展示形态,to_text 是给语言和人的自然语言形态 —— 盘面事实的完整文字描述,喂给大模型是它最常见的用途之一,但它本身不是提示词, 不含任何指令。手工拼接这段描述既繁琐又容易漏字段,所以每个可解读的对象都自带 to_text。

输出是 Markdown 子集:只用 #/##/### 三级标题、- 标签: 值 列表、**粗体** 与一张窄表。渲染成页面是文档,不渲染时源码同样可读,直接贴进对话框也不损失结构。

入口内容
星盘 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.flanking_palaces("命宫").to_text()        # 夹宫
chart.decadal_list_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.FlankingPalacesToText(iztro.PalaceTarget{Key: iztro.PalaceSoul})
chart.DecadalListToText()
chart.PatternsToText(nil)
h.PatternsToText(iztro.ScopeYearly, nil)

Rust 侧对应 PalaceRef::to_text()、SurroundedPalaces::to_text()、 FlankingPalaces::to_text()、Astrolabe::decadal_list_to_text() 与 text 模块的自由函数(astrolabe_to_text / horoscope_to_text / palace_to_text / surrounded_palaces_to_text / flanking_palaces_to_text / decadal_list_to_text / patterns_to_text), 便捷方法按排盘语言输出,自由函数可指定语言,见 Rust — TextOptions。 三语言输出逐字节一致。

结构总览

本命盘文本的骨架,从上到下:

# 命盘 <阳历> <时辰> <性别>
## 基本信息          四行合并字段 + 生年四化(带落宫)
## 十二宫总览        宫位 | 主星 | 辅星 | 大限 的窄表,命宫起
## 格局              命中列表;无命中时整节省略
## 十二宫            从命宫起顺排:命兄夫子财疾迁仆官田福父
### 命宫 (壬午) · 大限 3-12   每宫一段:主星、辅星、杂耀、三方四正、宫干飞化、十二神、小限虚岁
### 兄弟 (辛巳) · 大限 13-22
…

运限文本:

# 运限 <阳历> (<农历>)
## 大限 · 命宫: 本命X (干支)     四化、格局 + 十二宫表(大限宫 | 本命 | 主星 | 辅星 | 流耀);未起运写「童限」
## 小限 · 命宫: 本命X · 虚岁 N   宫名、四化、该宫三组星
## 流年 · 命宫: 本命X (干支)     四化、格局 + 十二宫表(另加十二神列)
## 流月 · 命宫: 本命X (干支)     宫名、四化、流耀(带落宫)、格局
## 流日 · …                      同流月
## 流时 · …                      同流月

本命盘文本长什么样

下面是 2000-8-16 寅时 女这张盘的完整开头(基本信息、总览表、格局)与前两宫, 其余十宫同款列全:

# 命盘 2000-8-16 寅时 女

## 基本信息
- 阳历: 2000-8-16 · 农历: 二〇〇〇年七月十七 · 时辰: 寅时 (03:00~05:00)
- 四柱: 庚辰 甲申 丙午 庚寅 · 生肖: 龙 · 星座: 狮子座
- 五行局: 木三局 · 命主: 破军 · 身主: 文昌
- 命宫: 午 · 身宫: 戌 (官禄) · 来因宫: 辰 (夫妻)
- 生年四化: 太阳化禄→子女, 武曲化权→财帛, 太阴化科→仆役, 天同化忌→疾厄

## 十二宫总览
| 宫位 | 主星 | 辅星 | 大限 |
|---|---|---|---|
| **命宫** 午 | 紫微(庙) | 文曲(陷) | 3-12 |
| 兄弟 巳 | 天机(平) | — | 13-22 |
| 夫妻 辰 [来因宫] | 七杀(庙) | 右弼, 火星(陷) | 23-32 |
| 子女 卯 | 太阳(庙)化禄, 天梁(庙) | — | 33-42 |
| 财帛 寅 | 武曲(得)化权, 天相(庙) | 天马 | 43-52 |
| 疾厄 丑 | 天同(不)化忌, 巨门(不) | 天魁, 地劫 | 53-62 |
| 迁移 子 | 贪狼(旺) | 铃星(陷) | 63-72 |
| 仆役 亥 | 太阴(庙)化科 | — | 73-82 |
| 官禄 戌 [身宫] | 廉贞(利), 天府(庙) | 左辅 | 83-92 |
| 田宅 酉 | — | 地空, 擎羊(陷) | 93-102 |
| 福德 申 | 破军(得) | 文昌(得), 禄存 | 103-112 |
| 父母 未 | — | 天钺, 陀罗(庙) | 113-122 |

## 格局
- **府相朝垣** (命宫): 天府(庙), 天相(庙)

## 十二宫

### 命宫 (壬午) · 大限 3-12
- 主星: 紫微(庙)
- 辅星: 文曲(陷)
- 杂耀: 凤阁, 天福, 截路, 蜚廉, 年解
- 三方四正: 对宫 迁移 · 三合 财帛, 官禄
- 宫干壬飞化: 天梁化禄→子女, 紫微化权→命宫, 左辅化科→官禄, 武曲化忌→财帛
- 十二神: 长生·衰, 博士·青龙, 岁前·丧门, 将前·灾煞
- 小限虚岁: 5, 17, 29, 41, 53, 65, 77, 89, 101, 113

### 兄弟 (辛巳) · 大限 13-22
- 主星: 天机(平)
- 杂耀: 天喜, 天空, 孤辰
- 三方四正: 对宫 仆役 · 三合 疾厄, 田宅
- 宫干辛飞化: 巨门化禄→疾厄, 太阳化权→子女, 文曲化科→命宫, 文昌化忌→福德
- 十二神: 长生·病, 博士·小耗, 岁前·晦气, 将前·劫煞
- 小限虚岁: 6, 18, 30, 42, 54, 66, 78, 90, 102, 114

(其余十宫同款)

总览表与详解都从命宫起、按宫位索引递减排列(命、兄、夫、子、财、疾、迁、仆、官、田、福、父), 不是按盘上格子位置。「格局」节列出格局引擎在本命盘上的全部命中, 每条一行:格局名、命中宫、构成星耀;无命中时整节省略。

运限文本长什么样

目标日期 2025-1-1 早子时。大限与流年展开十二宫表,小限只写落宫与该宫星, 流月及以下只写落宫、重排宫名、四化、流耀与格局:

# 运限 2025-1-1 (二〇二四年腊月初二)

## 大限 · 命宫: 本命夫妻 (庚辰)
- 四化: 太阳化禄→本命子女, 武曲化权→本命财帛, 太阴化科→本命仆役, 天同化忌→本命疾厄
- 格局: 杀破狼 (命宫), 风云际会 (命宫)

| 大限 | 本命 | 主星 | 辅星 | 流耀 |
|---|---|---|---|---|
| 命宫 | 夫妻 | 七杀(庙) | 右弼, 火星(陷) | — |
| 兄弟 | 子女 | 太阳(庙)化禄, 天梁(庙) | — | 运曲 |
| 夫妻 | 财帛 | 武曲(得)化权, 天相(庙) | 天马 | 运马 |
| 子女 | 疾厄 | 天同(不)化忌, 巨门(不) | 天魁, 地劫 | 运魁 |
| 财帛 | 迁移 | 贪狼(旺) | 铃星(陷) | — |
| 疾厄 | 仆役 | 太阴(庙)化科 | — | 运昌, 运鸾 |
| 迁移 | 官禄 | 廉贞(利), 天府(庙) | 左辅 | — |
| 仆役 | 田宅 | — | 地空, 擎羊(陷) | 运羊 |
| 官禄 | 福德 | 破军(得) | 文昌(得), 禄存 | 运禄 |
| 田宅 | 父母 | — | 天钺, 陀罗(庙) | 运钺, 运陀 |
| 福德 | 命宫 | 紫微(庙) | 文曲(陷) | — |
| 父母 | 兄弟 | 天机(平) | — | 运喜 |

## 小限 · 命宫: 本命官禄 · 虚岁 25
- 宫名: 命宫→本命官禄, 兄弟→本命田宅, 夫妻→本命福德, 子女→本命父母, 财帛→本命命宫, 疾厄→本命兄弟, 迁移→本命夫妻, 仆役→本命子女, 官禄→本命财帛, 田宅→本命疾厄, 福德→本命迁移, 父母→本命仆役
- 四化: 天同化禄→本命疾厄, 天机化权→本命兄弟, 文昌化科→本命福德, 廉贞化忌→本命官禄
- 主星: 廉贞(利), 天府(庙)
- 辅星: 左辅
- 杂耀: 天才, 天虚

## 流年 · 命宫: 本命夫妻 (甲辰)
- 四化: 廉贞化禄→本命官禄, 破军化权→本命福德, 武曲化科→本命财帛, 太阳化忌→本命子女
- 格局: 杀破狼 (命宫), 禄马交驰 (夫妻), 禄马佩印 (夫妻), 昌曲夹命 (命宫, 破格), 文星暗拱 (命宫)

| 流年 | 本命 | 主星 | 辅星 | 流耀 | 十二神 |
|---|---|---|---|---|---|
| 命宫 | 夫妻 | 七杀(庙) | 右弼, 火星(陷) | — | 岁前·岁建, 将前·华盖 |
| 兄弟 | 子女 | 太阳(庙)化禄, 天梁(庙) | — | 流羊 | 岁前·病符, 将前·息神 |
| 夫妻 | 财帛 | 武曲(得)化权, 天相(庙) | 天马 | 流禄, 流马 | 岁前·吊客, 将前·岁驿 |
(其余九行同款)

## 流月 · 命宫: 本命仆役 (丁丑)
- 宫名: 命宫→本命仆役, 兄弟→本命官禄, 夫妻→本命田宅, 子女→本命福德, 财帛→本命父母, 疾厄→本命命宫, 迁移→本命兄弟, 仆役→本命夫妻, 官禄→本命子女, 田宅→本命财帛, 福德→本命疾厄, 父母→本命迁移
- 四化: 太阴化禄→本命仆役, 天同化权→本命疾厄, 天机化科→本命兄弟, 巨门化忌→本命疾厄
- 流耀: 月鸾→田宅, 月曲→迁移, 月陀→迁移, 月禄→疾厄, 月羊→财帛, 月喜→子女, 月钺→夫妻, 月昌→夫妻, 月魁→命宫, 月马→命宫
- 格局: 机月同梁 (命宫), 日照雷门 (官禄), 日月并明 (命宫), 丹墀桂墀 (命宫), 月朗天门 (命宫), 禄马交驰 (田宅), 明禄暗禄 (命宫), 禄马佩印 (田宅), 文星朝命 (命宫, 破格), 文星暗拱 (命宫)

## 流日 · 命宫: 本命迁移 (庚午)
- 宫名: 命宫→本命迁移, 兄弟→本命仆役, 夫妻→本命官禄, 子女→本命田宅, 财帛→本命福德, 疾厄→本命父母, 迁移→本命命宫, 仆役→本命兄弟, 官禄→本命夫妻, 田宅→本命子女, 福德→本命财帛, 父母→本命疾厄
- 四化: 太阳化禄→本命子女, 武曲化权→本命财帛, 太阴化科→本命仆役, 天同化忌→本命疾厄
- 流耀: 日曲→田宅, 日喜→田宅, 日钺→疾厄, 日陀→疾厄, 日禄→财帛, 日马→财帛, 日羊→子女, 日鸾→子女, 日昌→兄弟, 日魁→父母
- 格局: 火贪 (命宫), 铃贪 (命宫), 杀破狼 (命宫), 禄马交驰 (福德), 禄马佩印 (福德), 文星朝命 (命宫, 破格), 文星暗拱 (命宫)

## 流时 · 命宫: 本命迁移 (丙子)
(同流日的写法)

大限与流年及以下各层都带该层视角的格局行,格局后括号里的宫名按该层重排后的宫名书写; 小限不设格局视角。各层的「四化」行箭头指向的是本命盘的宫(四化星安在本命盘上,不随层级重排), 所以落宫写作「本命仆役」;流耀行与十二宫表用的才是该层重排后的宫名。 命主尚未起运时,大限节的标题与表头写「童限」而非「大限」——童限与大限是不同的解盘语义。

格式约定

记号含义
# 命盘 2000-8-16 寅时 女、# 运限 2025-1-1 (…)文档标题:本命盘带阳历、时辰、性别;运限带目标日期的阳历与农历
## 基本信息、## 十二宫总览、## 格局、## 十二宫、## 四化释义本命盘的节;## 大限、## 小限、## 流年、## 流月、## 流日、## 流时 是运限的节
### 命宫 (壬午) · 大限 3-12一宫一段:宫名、宫干支、这一宫作大限时的虚岁区间
### 官禄 (丙戌) · 大限 83-92 [身宫]方括号标记该宫同时是身宫;[来因宫] 标记来因宫。总览表的宫位列同样标记
- 标签: 值事实行;同一行多个字段用 · 分隔,列表项用 , 分隔
| 宫位 | 主星 | 辅星 | 大限 |十二宫总览的窄表,命宫加粗;空单元格写 —
紫微(庙)括号内是亮度,无亮度的星不带括号
太阳(庙)化禄四化写全称「化禄 / 化权 / 化科 / 化忌」,紧跟在星名(与亮度)之后;英文盘写 [A]/[B]/[C]/[D]
太阴化禄→疾厄箭头指向该四化星在本命盘上落的宫。生年四化与宫干飞化这样写;星不在盘上时不写箭头
- 四化: 太阴化禄→本命仆役, …运限各层的四化行:落宫同样是本命盘的宫,但该层段落里的宫名默认指该层重排宫名,故加「本命」前缀标明参照系
月鸾→田宅流月及以下层级的流耀行:箭头指向该流耀落在这一层重排后的哪个宫
- 主星: 空宫无主星的宫写「空宫」;辅星、杂耀为空时整行省略
- 三方四正: 对宫 迁移 · 三合 财帛, 官禄本宫的对宫,与三合的另外两宫,固定按财帛位、官禄位的顺序(三方四正)
### 本宫 · 命宫 (壬午) · 大限 3-12三方四正文本的宫段标题:宫名前多一个角色——本宫、对宫、财帛位、官禄位
### 前宫 · 兄弟 (辛巳) · 大限 13-22夹宫文本的宫段标题:角色是 前宫、后宫,事实行与三方四正逐字同构
| 序 | 本命宫 | 虚岁 | 年份 | 干支 | 四化 |大限一览的表头:十二行一行一限,按起运先后排;四化列的箭头指向本命宫
- 宫干壬飞化: 天梁化禄→子女, …以本宫宫干起的飞星四化:四化星与各自落宫
- 十二神: 长生·衰, 博士·青龙, 岁前·丧门, 将前·灾煞四组各一位,写「组名·神名」,固定顺序长生 12、博士 12、岁前 12、将前 12;流年表的十二神列只有岁前、将前两组
- 小限虚岁: 5, 17, 29, …小限落在本宫的虚岁
- **府相朝垣** (命宫): 天府(庙), 天相(庙)格局行:格局名加粗,括号内是命中宫,冒号后是构成星耀
昌曲夹命 (命宫, 破格)括号里追加「破格」:格局构成但被冲破
## 大限 · 命宫: 本命夫妻 (庚辰)这一层的命宫落在本命的哪个宫,括号内是该层干支
## 小限 · 命宫: 本命官禄 · 虚岁 25小限落宫与虚岁
| 大限 | 本命 | 主星 | 辅星 | 流耀 |运限层十二宫表:第一列是这一层重排后的宫名,第二列是本命宫名,主星辅星是本命盘的,流耀是这一层的
- 宫名: 命宫→本命官禄, …小限、流月及以下层级不展开十二宫表,改用这一行给出对应:从该层命宫起顺排,箭头左边是该层重排宫名、右边是本命宫名
**紫微(庙)**: 正文释义条目(带知识包时才有):标题是星、格局或四化的写法,正文是知识包原文
**紫微 × 天府 (同宫)**: 正文同宫主星的组合解读
成立条件: …格局释义正文末尾的成格条件

运限表第一列是这一层的宫名,别读反

| 夫妻 | 财帛 | … 说的是「这一格在本大限里叫夫妻宫,它在本命盘上是财帛宫」。 运限解读要以第一列为准,第二列是为了让你能对回本命盘。 见运限。

日期字段原样回显入参,不补零:传 "2000-8-16" 输出就是 阳历: 2000-8-16。

七个入口

入口输出
星盘上面的完整本命盘文本
运限上面的完整运限文本;本命信息不重复,两段拼起来就是一份完整上下文
宫位本命详解里该宫的那一段(### 宫名 … 起的一段),逐字一致,可从本命文本里 contains 到
三方四正## 命宫 三方四正 标题 + 本宫、对宫、财帛位、官禄位四宫各一段;每段标题带角色前缀(### 本宫 · 命宫 …),事实行与单宫文本逐字一致
夹宫## 夹宫 标题 + 前后两宫各一段,与三方四正同构,角色前缀是 前宫 / 后宫
大限一览# 大限一览 标题 + 十二行的表,一行一限
patterns_to_text只有格局行,每条一行;本命视角与运限各层视角皆可

八个 bridge kind 与之对应:patterns_to_text 的本命视角与运限视角是两个 kind (patternsToText / horoscopePatternsToText),其余六个入口一个入口一个 kind。

单宫与三方四正:

## 命宫 三方四正

### 本宫 · 命宫 (壬午) · 大限 3-12
- 主星: 紫微(庙)
- 辅星: 文曲(陷)
- 杂耀: 凤阁, 天福, 截路, 蜚廉, 年解
- 三方四正: 对宫 迁移 · 三合 财帛, 官禄
- 宫干壬飞化: 天梁化禄→子女, 紫微化权→命宫, 左辅化科→官禄, 武曲化忌→财帛
- 十二神: 长生·衰, 博士·青龙, 岁前·丧门, 将前·灾煞
- 小限虚岁: 5, 17, 29, 41, 53, 65, 77, 89, 101, 113

### 对宫 · 迁移 (戊子) · 大限 63-72
- 主星: 贪狼(旺)
- 辅星: 铃星(陷)
- 杂耀: 八座
- 三方四正: 对宫 命宫 · 三合 福德, 夫妻
- 宫干戊飞化: 贪狼化禄→迁移, 太阴化权→仆役, 右弼化科→夫妻, 天机化忌→兄弟
- 十二神: 长生·养, 博士·病符, 岁前·白虎, 将前·将星
- 小限虚岁: 11, 23, 35, 47, 59, 71, 83, 95, 107, 119

### 财帛位 · 财帛 (戊寅) · 大限 43-52
(事实行同单宫)

### 官禄位 · 官禄 (丙戌) · 大限 83-92 [身宫]
(事实行同单宫)

单宫文本就是去掉角色前缀的其中一段(### 命宫 (壬午) · 大限 3-12 起)。

命宫的夹宫 —— 兄弟宫与父母宫,事实行与单宫文本同款:

## 夹宫

### 前宫 · 兄弟 (辛巳) · 大限 13-22
- 主星: 天机(平)
- 杂耀: 天喜, 天空, 孤辰
- 三方四正: 对宫 仆役 · 三合 疾厄, 田宅
- 宫干辛飞化: 巨门化禄→疾厄, 太阳化权→子女, 文曲化科→命宫, 文昌化忌→福德
- 十二神: 长生·病, 博士·小耗, 岁前·晦气, 将前·劫煞
- 小限虚岁: 6, 18, 30, 42, 54, 66, 78, 90, 102, 114

### 后宫 · 父母 (癸未) · 大限 113-122
- 主星: 空宫
- 辅星: 天钺, 陀罗(庙)
- 杂耀: 天姚, 空亡
- 三方四正: 对宫 疾厄 · 三合 子女, 仆役
- 宫干癸飞化: 破军化禄→福德, 巨门化权→疾厄, 太阴化科→仆役, 贪狼化忌→迁移
- 十二神: 长生·帝旺, 博士·力士, 岁前·贯索, 将前·天煞
- 小限虚岁: 4, 16, 28, 40, 52, 64, 76, 88, 100, 112

大限一览是一张十二行的表,一行一限(截前三行,其余九行同款):

# 大限一览

| 序 | 本命宫 | 虚岁 | 年份 | 干支 | 四化 |
|---|---|---|---|---|---|
| 1 | 命宫 | 3-12 | 2002-2011 | 壬午 | 天梁化禄→本命子女, 紫微化权→本命命宫, 左辅化科→本命官禄, 武曲化忌→本命财帛 |
| 2 | 兄弟 | 13-22 | 2012-2021 | 辛巳 | 巨门化禄→本命疾厄, 太阳化权→本命子女, 文曲化科→本命命宫, 文昌化忌→本命福德 |
| 3 | 夫妻 | 23-32 | 2022-2031 | 庚辰 | 太阳化禄→本命子女, 武曲化权→本命财帛, 太阴化科→本命仆役, 天同化忌→本命疾厄 |

这张表不展开每限的流年 —— 十二限各十年会撑到一百二十行,它要做的是一眼看完一生的 十二个十年。某一限的流年用 yearly_list 单取。

格局文本:

# 格局

- **府相朝垣** (命宫): 天府(庙), 天相(庙)

带释义的文本

上面的文本只有事实。每个 to_text 都有一个带知识包参数的形态: 释义内联在对应的事实旁——每宫事实之后紧跟该宫星耀的释义,格局列表之后紧跟格局释义, 文末附四化释义。材料按盘从知识包里取,原文照录。内核只做「按盘取材 + 装配」, 不内置任何解读观点:传内嵌默认包就是 iztro-docs 的说法,传合并覆盖包之后的自定义包就是你的说法。 by_solar 与 DTO 输出不变。

chart.to_text(knowledge=True)          # True 取盘语言的内嵌默认包
chart.to_text(knowledge=my_pack)       # 或任意 KnowledgePack
h.to_text(knowledge=True)
chart.palace("命宫").to_text(knowledge=True)
chart.surrounded_palaces("命宫").to_text(knowledge=True)
chart.flanking_palaces("命宫").to_text(knowledge=True)
chart.decadal_list_to_text(knowledge=True)
chart.patterns_to_text(knowledge=True)
h.patterns_to_text("yearly", knowledge=True)

chart.to_text(knowledge=True, config=PatternConfig(borrow=False))   # 五处 to_text 都收 config
let pack = KnowledgePack::builtin(Language::ZhCN).unwrap();
let opts = TextOptions::new().knowledge(&pack);

chart.to_text_with(&opts);
h.to_text_with(&opts);
chart.palace(Palace::Soul).unwrap().to_text_with(&opts);
chart.surrounded_palaces(Palace::Soul).unwrap().to_text_with(&opts);
chart.flanking_palaces(Palace::Soul).unwrap().to_text_with(&opts);
chart.decadal_list_to_text_with(&opts);
text::patterns_to_text_with(&hits, &names, &opts, chart.language);

let cfg = PatternConfig { borrow: false, ..PatternConfig::default() };
chart.to_text_with(&TextOptions::new().knowledge(&pack).pattern_config(&cfg));
opts := iztro.TextOptions{Knowledge: iztro.BuiltinKnowledge()}   // 或 iztro.KnowledgeFrom(pack)

chart.ToTextWith(opts)
h.ToTextWith(opts)
chart.PalaceToTextWith(iztro.PalaceTarget{Key: iztro.PalaceSoul}, opts)
chart.SurroundedPalacesToTextWith(iztro.PalaceTarget{Key: iztro.PalaceSoul}, opts)
chart.FlankingPalacesToTextWith(iztro.PalaceTarget{Key: iztro.PalaceSoul}, opts)
chart.DecadalListToTextWith(opts)
chart.PatternsToTextWith(opts)
h.PatternsToTextWith(iztro.ScopeYearly, opts)

cfg := iztro.PatternConfig{Borrow: iztro.Bool(false)}
chart.ToTextWith(iztro.TextOptions{Knowledge: iztro.BuiltinKnowledge(), PatternConfig: &cfg})

格局判定口径(config / pattern_config / PatternConfig)与 patterns(config) 同一入参, 同时作用于文本里的格局节与格局释义:口径变了,命中的格局与紧跟其后的释义一起变。 不传取默认口径。大限一览没有格局节,故不收这个入参。

插入位置与去重

入口释义放在哪
星盘## 格局 的命中列表之后:每个格局一条;每宫 ### 段的事实行之后:该宫每颗星一条;文末 ## 四化释义:禄权科忌四条
运限大限与流年的十二宫表之后、流月及以下各层的事实行之后:该层流耀各一条、该层命中格局各一条
宫位该宫事实行之后:该宫每颗星一条
三方四正四宫各自的事实行之后
夹宫前后两宫各自的事实行之后
大限一览表之后 ## 星耀释义:各限四化星每颗一条,同一颗星在多限重复出现时只出一次
patterns_to_text格局列表之后
  • 释义条目写作 **标题**: 正文,标题就是事实行里那颗星的写法(**紫微(庙)**、**太阳(庙)化禄**), 正文是知识包里的 intro 原文(Markdown,一字不裁),条目之间空一行。
  • 同宫主星之间的组合解读(知识包 combinations)写作 **紫微 × 天府 (同宫)**: …, 放在该宫释义的最前面;两个方向都查,组合解读只写在其中一方名下同样会出,每对只出一次。
  • 每宫按主星、辅星、杂耀的顺序逐星释义;十二神不释义。
  • 格局释义是 intro 正文,末尾另起一段 成立条件: …。
  • 运限文本里只释义流耀与各层格局,本命星耀不重复(本命盘的释义在本命盘文本里); 同一颗流耀、同一个格局在多层出现时只在第一次出现的层释义(跨层去重)。
  • 知识包里没有条目的星或格局,不写条目也不留占位。

下面是 2000-8-16 寅时 女这张盘命宫段带释义的样子(正文截断):

### 命宫 (壬午) · 大限 3-12
- 主星: 紫微(庙)
- 辅星: 文曲(陷)
- 杂耀: 凤阁, 天福, 截路, 蜚廉, 年解
- 三方四正: 对宫 迁移 · 三合 财帛, 官禄
- 宫干壬飞化: 天梁化禄→子女, 紫微化权→命宫, 左辅化科→官禄, 武曲化忌→财帛
- 十二神: 长生·衰, 博士·青龙, 岁前·丧门, 将前·灾煞
- 小限虚岁: 5, 17, 29, 41, 53, 65, 77, 89, 101, 113

**紫微(庙)**: 紫微星号称 `帝王星`,并非指紫微坐命者能成帝王,而是指其个性带有“王者”特质……

**文曲(陷)**: 文曲星是紫微斗数里第一文艺之星,代表艺术修养与浪漫……

**凤阁**: 凤阁星会增加比较柔和的技能天赋,比如音乐、舞蹈……

(天福、截路、蜚廉、年解各一条)

格局节带释义:

# 格局

- **府相朝垣** (命宫): 天府(庙), 天相(庙)

**府相朝垣**: “食禄千锺”的断语使此格备受欢迎,但成格并不必然富足。……

成立条件: 此格指 天府星 在官禄宫、天相星 在财帛宫会照命宫。……

节标题与条目标题按盘面语言翻译:英文盘上是 ## Mutagen Notes 与 **emperor([+3])**, 正文仍是包里的语言。

篇幅

释义给全文,裁剪归应用层。同一张盘的实测字符数(中文盘,默认包):

入口只有事实带释义
本命盘3,38920,765
运限2,6978,698
单宫(命宫)2221,141
三方四正(命宫)9246,312
夹宫(命宫)4361,874
大限一览1,0456,447
格局36328

英文盘更长(星名是单词而非两字,且多一套结构标签):本命 6,757、运限 6,378、单宫 464、 三方四正 1,911、夹宫 895、大限一览 1,893、格局 95。 任何主流模型的上下文窗口都装得下,通常不必裁剪。本命盘的释义占大头是因为盘上每颗主星、辅星、杂耀都有条目。 只要某几个宫的释义,用宫位或三方四正的入口;要自己排版,用 for_astrolabe 取出这张盘的子包自己拼。

自定义包

包是参数,合并覆盖包之后的结果照样传:

pack = KnowledgePack.builtin().merged(KnowledgePack.from_json(open("my-school.json").read()))
chart.to_text(knowledge=pack)

同一张盘传不同的包,事实部分逐字节相同,只有释义条目随包变。

英文盘没有内嵌包

内嵌默认包只有 zh-CN。英文(及其他四种语言)盘上 knowledge=True / BuiltinKnowledge() / KnowledgePack::builtin(Language::EnUS) 报 invalid_argument,不会静默退回到无释义。 显式传一份包即可——包的语言不受盘语言限制,英文盘配中文包得到英文标题、中文正文。

六种语言

结构标签(「基本信息」「主星」「三方四正」「大限」……)有 zh-CN、zh-TW、en-US、ja-JP、ko-KR、vi-VN 六套;星名、宫名、干支、亮度、四化、格局名按盘面语言现翻。同一张盘六种语言的骨架逐行对应, 只有词不同。农历日期在任何语言下都是汉字数字(二〇〇〇年七月十七)。

四化标记随语言:中文写 化禄、日文 化祿,英文写 [A]([A]/[B]/[C]/[D] 依次是禄权科忌), 韩文 화록,越南文 hóa Lộc。分词也随语言:拉丁字母语言里星名与四化标记之间、干支之间以空格分开 (英文 sun [A]、### soul (ren woo),越南文 Thái Dương hóa Lộc、(Nhâm Ngọ)), 复合标签同理(Natal spouse);中文与日文直接相连(太阳化禄、(壬午)、本命夫妻)。

Rust 自由函数收显式语言:中文盘按 en-US 渲染,与原生英文盘的渲染逐字节一致—— 星名按 key 现翻,不是拿盘上固化的译名,所以不会出现混排。

用中文盘还是英文盘

优先用中文盘。英文盘的星名走 iztro 的意译词表(紫微是 emperor、七杀是 marshal), 亮度退化成 [+3] 这类记号,四化写成 [A]/[B]/[C]/[D], 流耀的英文名自带层级后缀(运曲是 artist(D)、流禄是 money(Y)), 年解的英文名 considery(Y) 里的 (Y) 也是星名的一部分—— 这套写法与英文命理界的通行译法不同,模型未必认得。

主流模型的中文命理术语能力都不差,直接喂中文文本效果更好。 确实需要英文时,建议附上一份星名对照表。

接入大模型

生成的文本是纯描述,不含指令。实际使用时在前面加上你的分析要求:

system = "你是紫微斗数分析师。基于给定命盘作答,不要编造盘上没有的信息。"
user = f"""{chart.to_text()}

{chart.horoscope("2025-1-1", 0).to_text()}

请分析这个人 2025 年的事业运势。"""

要让模型按某一家的说法解读而不是自由发挥,把 chart.to_text() 换成 chart.to_text(knowledge=True)(或传你的包),释义随盘一起进上下文。 文本是 Markdown,模型能直接把「十二宫总览」当表读、把 ### 当宫段边界, 要求它「引用宫段」时也有稳定的锚点。 更完整的接法(工具调用、别让模型自己排盘)见让 AI 解读命盘。

需要更细的控制

to_text 覆盖的是通用场景。如果要自定义文本结构(比如只描述特定几个宫、 或者输出 JSON 而非文本),直接遍历星盘数据自己拼即可 —— 所有字段都是公开的,见数据结构字典。

本页目录