dsh-metaphysics 0.22.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,279 +1,309 @@
1
- # dsh-metaphysics · 命理排盘
2
-
3
- Chinese metaphysics (玄学 / xuanxue) for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): BaZi (Four Pillars), Zi Wei Dou Shu, LiuYao, MeiHua YiShu, Da Liu Ren, Qi Men Dun Jia, relationship compatibility, Tarot, plus quick-reference tools — almanac, date selection, bone-weight fortune, Xiao Liu Ren, horoscope, numerology, life-curve, feng shui and name analysis.
4
-
5
- 给 DeepSeek Harness 用的**玄学命理**插件:**四柱八字、紫微斗数、六爻纳甲、梅花易数、大六壬、奇门遁甲、合盘、塔罗牌**八大排盘体系,外加**黄历、农历(公农历互转)、择日、称骨、小六壬、星座、生命数字、人生K线、风水、起名**十套速查,同时提供 Agent 工具与 Web 面板。
6
-
7
- > 传统命理与占卜属文化娱乐用途,不构成医疗、投资、法律或生死判断的依据。
8
-
9
- ## 插件市场备注
10
-
11
- **命理排盘(玄学)· 八字 / 紫微 / 六爻 / 梅花 / 六壬 / 奇门 / 合盘 / 塔罗 + 黄历 / 农历 / 择日 / 称骨 / 小六壬 / 星座 / 生命数字 / 人生K线 / 风水 / 起名** —— 一个插件把十八套体系装进 Harness:对话里说一句就排盘,侧栏还有可视化面板。
12
-
13
- - **八字**:42 颗神煞(分吉凶七类,天干星双查年干与日干、三合星双查年支与日支,悬停看查法)、日主旺衰量化并给出依据、格局与用神(月令取格 + 化气/专旺/从格 + 十神组合,每条附判定依据)、大运流年按喜忌五行与十神打分(大吉/吉/平/忌/大忌,可看逐项理由)
14
- - **紫微**:十四主星与 49 星曜(主星带**庙旺得利平不陷**亮度标注)、四层十二神、生年四化与宫干自化、34 条格局(标吉/忌倾向与依据)、大限一览、流年四化落宫;本命/大限/流年三视图一键切换,命宫红框、三方四正浅底标出;竖屏与窄侧栏保持 4×4 宫盘(宫位相对位置不丢)
15
- - **六爻**:摇卦或手动爻值、纳甲、六亲、六神、世应;本卦/变卦并列、真爻线渲染(阳爻整条、阴爻断开、动爻描红)
16
- - **梅花**:时间/数字起卦、体用生克分档、互变错综四卦齐出,本卦上下卦分块标体用
17
- - **大六壬**:天地盘 4×4 方盘(天盘大字、地盘小字、天将右下)、四课、九宗门三传、格局(贼克/元首/重审/伏吟/返吟/八专等)
18
- - **奇门遁甲**:时家转盘,拆补 / 超神接气 / 置闰三流派取局;九宫、值符值使、空亡驿马、门迫与宫制门严格区分
19
- - **合盘**:八字或紫微双盘对照(日主、夫妻宫、五行互补 / 互落宫、四化引动)
20
- - **塔罗**:78 张全牌、1/3/5 张牌阵,逐牌牌位义 + 整体解读,体系与逆位口径写明
21
- - **速查十件**:黄历(四柱/建除/宜忌/冲煞/节气 + 值日十二神/时辰吉凶/二十八宿/胎神/吉神方位/纳音/六合三合)、农历(公农历互转)、择日(27 类事项、按五组归类、冲属相排除)、称骨(骨重 + 称骨歌原文 + 释义)、
22
- 小六壬(时间/报数起课)、星座(档案 + 当日基调)、生命数字(生命路径/生日/态度数)、人生 K 线(逐年分与形态)、
23
- 风水(八宅命卦/大游年/流年紫白/门主灶)、起名(391 字库、逐字判定与可换字)——口径与边界各自写明
24
- - 全部本地计算,不收集数据;结果供文化娱乐参考,不作医疗、投资、法律或生死判断
25
-
26
- ### 报告化与可核验(0.16 / 0.17 / 0.18 / 0.20 新增)
27
-
28
- - **一页读懂 + 三张表**:整体/事业/财富/感情/节奏五条摘要;大运表、流年表、触发事件表(紫微是大限/流年/触发)
29
- - **证据卡 + 置信度**:每条维度结论可展开到逐条盘面事实与所用技法,置信度按证据条数分强/中/弱
30
- - **追问**:工具参数 `ask`,围绕已算好的盘回答「2027 年事业怎么样」这类问题;不重排、不猜测,找不到会明说
31
- - **八字 × 紫微 交叉验证**:工具参数 `cross`,五项并列对照,标注同向 / 有张力 / 互补
32
- - **晚子时开关**:23:00 后算次日还是当日,面板与独立页都能切;奇门另有「归当日 / 归次日」
33
- - **验前事**:列出过去几年流年信号,自评准/不准/不确定后算贴合度;只读,不改盘
34
- - **生时校正**:给定过去 2–3 件大事,对候选时辰逐一排盘打分排序;只缩小范围,不替代出生记录
35
- - **导出**:`.md`(盘面 + 解析)与 PNG 摘要长图(Canvas 直出,零依赖);独立页支持打印/存 PDF
36
- - **调候解释**:解释层新增「寒暖燥湿」一节,文本摘要加「寒暖:」一行
37
- - **《穷通宝鉴》120 格**:十天干 × 十二月令逐格录入用神顺序与原文摘句(「十二月乙木,木寒宜丙」这类原句照录),调候卡里直接给出「这一格书上取什么」与出处章号
38
- - **方法与验证页**:独立页内置静态页,写明对拍数据、测试与闸门、口径与已知边界
39
-
40
- ## 功能
41
-
42
- ### 四柱八字(bazi)
43
- - 四柱、藏干、十神、纳音、空亡(**逐柱**)
44
- - **十二长生**:地势(日干对各支)、自坐(各柱干对本支)
45
- - **神煞(42 星,7 类)**:贵人(天乙、太极、天德、月德、月德合、福星、天官、国印、天厨、天医)、文星(文昌、德秀)、婚姻(桃花、红鸾、天喜、孤辰、寡宿、金舆)、性情(华盖、羊刃、飞刃、魁罡、童子煞、六秀日、日德、日贵)、事业(禄神、将星、驿马)、凶煞(劫煞、灾煞、亡神、空亡、十恶大败、阴差阳错、四废日、流霞、天罗、地网)、格局(天赦日、金神、三奇贵人)。天干类双查年干与日干,三合类双查年支与日支;每颗星附查法依据,界面悬停可见
46
- - **日主旺衰**:月令权重 + 通根 + 天干帮扶,量化分档,并给出依据(季节权重、通根地支、帮扶/耗泄明细)
47
- - **寒暖燥湿(调候优先)**:月令温度 + 全局火水比例 + 湿土燥土判定气候,给出调候所取(寒湿取丙火、燥热取壬水)与所忌、温度/燥湿标尺、按日主五行的体感白话;流年大运评分接入调候(寒局再逢水加重扣权);面板在「用神」下有寒暖卡
48
- - **《穷通宝鉴》120 格**:按「日主 + 月令」查到该格用神顺序(如乙木丑月取丙),附原文摘句与章号;寒暖卡里与调候判定并列显示,两者不同向时以调候为先(「书里的取用」与「这一盘的气候」各自摆出来,不悄悄合并)
49
- - **格局与用神**:月令取格(建禄/阳刃/月劫/十神格)+特格(化气、专旺、从格)+十神组合(官印、杀印、食伤生财、财官、伤官配印、伤官见官、羊刃驾杀),每条附判定依据;用神按「调候优先 + 扶抑校验」:先判寒暖燥湿(寒/寒湿/寒燥/湿滞/平/燥/燥热/温热,附温度与燥湿量化值与依据),调候所需与扶抑冲突时显式仲裁并说明理由,不冲突时注明同向;再列喜忌十神
50
- - **行运吉凶**:大运、流年按喜忌五行与十神加权评分,分大吉/吉/平/忌/大忌五档,悬停可看逐项理由
51
- - **干支关系**:五合、相冲、相克;六合、三合半合、三会半会拱会、冲、害、破、刑
52
- - 大运、流年(含与原局地支的关系)、真太阳时(按出生地经度修正)
53
- - **四柱表版式**:按专业排盘习惯——年/月/日/时四柱并排固定成四列,左侧一列窄行名,列间不画竖线、只用极淡横线分行;天干地支作大字并随五行着色,日柱表头单独标红;藏干按「干·五行」逐行列出,十神按比劫/食伤/财/官杀/印五类分组着色;末行给**五行旺相休囚死**(以月令当令五行为基准,依次推出 旺/相/休/囚/死 五态)
54
-
55
- ### 紫微斗数(ziwei)
56
- - 农历(定朔 + 冬至置闰)、命宫、身宫、五行局
57
- - 紫微/天府、十四主星、六吉六煞、禄存天马、**49 颗星曜**
58
- - **十四主星庙旺得利平不陷**:按《紫微斗数全书》系通行表标注(各家在太阳/太阴少数宫位有出入,只标主星、不硬标辅星),庙旺标绿、得利平标灰、不陷标红
59
- - 四层十二神:长生、博士、将前、岁前
60
- - 生年四化、宫干自化、大限、小限、流年(命宫、三方四正、流禄流羊流陀)、斗君
61
- - **格局识别(34 条,附判定依据与吉/忌倾向)**:紫府同宫、紫府朝垣、君臣庆会、极向离明、七杀朝斗、英星入庙、石中隐玉、巨日同宫、日月夹命、日月对照、左右/昌曲/魁钺夹命、三奇嘉会、双禄朝垣、机月同梁、府相朝垣、禄马交驰、月朗天门、日出扶桑、武贪同行、火贪铃贪;忌格:火铃夹命、羊陀夹命、羊陀夹忌、铃昌陀武、命里逢空、马头带箭、天罗地网、刑囚夹印、泛水桃花
62
- - **大限一览**:十二限排序列出宫位、年龄区间、宫干四化落宫、三方主星;**流年四化**:逐年给出四化星落宫与命宫三方主星
63
- - **流月 / 流日 / 流时**:由流年斗君逐级下推——斗君起正月顺行至该农历月,流月命宫起初一顺行至该农历日,流日命宫起子时顺行至该时辰;每层给落宫、宫干四化落宫与三方四正。基准时刻默认取本机当前时刻(可用 `asOf` 指定以便复现)
64
- - **宫位点击展开详情**:点任一宫摊开该宫完整星曜(含亮度、四化)、宫干四化、四层十二神、大限/小限,并把三方四正(三合两宫 + 对宫)一起列出、在盘上同步描边;空宫标注「借对宫 XX」;再点一次收起
65
- - 昌曲专论:与丑未的关系、是否入命三方、吸收面清杂
66
-
67
- ### 六爻(liuyao)
68
- - 摇卦或手动爻值、本卦/变卦、纳甲、六亲、六神、世应
69
- - 面板:本卦与变卦并列对照,真爻线渲染(阳整、阴断、动描红),世应与动爻一目了然
70
- - 只需起卦时刻(取日辰定六神、月建定旺衰),与出生时间无关
71
-
72
- ### 梅花易数(meihua)
73
- - 时间起卦(年月日时数)或数字起卦(两数取余、可手动指定动爻)
74
- - 本卦 / 互卦 / 变卦 / 错卦 / 综卦五盘齐出;本卦上下卦分块并标「体」「用」
75
- - 体用生克按五行判吉凶:用生体大吉、比和吉、体克用吉、体生用耗、用克体凶
76
-
77
- ### 大六壬(daliuren)
78
- - 月将加时起天地盘(4×4 方盘:天盘大字、地盘小字、天将右下)
79
- - 四课(干上/支上递推,标注生克与天将)、九宗门发三传(贼克·元首·重审·比用·涉害·遥克·昴星·别责·八专·伏吟·返吟)
80
- - 昼夜贵人(以天盘临方定顺逆)、旬空标注、格局名与断语
81
-
82
- ### 塔罗(tarot)
83
- - 78 张全牌、正逆位、1/3/5 张牌阵(面板可直接选牌阵,换张数自动重抽)
84
- - 每张牌给编号、牌阶级、核心义与牌阵位义;解读 6–8 段(逐牌、大阿卡纳占比、五行分布、宫廷牌、正逆位比例、关键牌、建议)
85
- - 明确标注体系:RWS 编号、黄金黎明元素归属、逆位取「弱化/未顺/内化」而非凶断
86
-
87
- ### 速查十件(almanac / convert / zeri / chenggu / xiaoliuren / star / numerology / trend / fengshui / name)
88
-
89
- 十套轻量体系,输入都只要一到几个字段,结果走同一套面板与独立页(tab 由 8 个扩到 18 个),
90
- 速查结果用等宽文本卡渲染,不套命盘模板。**全部本地确定性计算**:同一天、同一输入永远同一结果。
91
-
92
- - **黄历 `almanac`**:农历、四柱干支(年柱按立春、月柱按节)、建除十二神、宜忌简表、冲煞、上一/下一节气、每日一卦,以及**值日十二神(黄道/黑道)、十二时辰吉凶(五鼠遁干支 + 时家十二神)、二十八宿、胎神、财神/喜神/福神/阳贵/阴贵方位、日柱纳音、六合三合吉配生肖**;值日神/二十八宿/胎神/吉神方位与 lunar-javascript 逐日对拍。`scope` 明写未收录逐日全量吉凶神煞与彭祖百忌
93
- - **择日 `zeri`**:27 类事项(婚嫁类领证/提亲/收送聘金/满月酒,生活类旅行/访亲友/入学,建造类动土/装修建造/试车买车,工商类交易/投资/签订合同/纳财/赴任等)按「常用 / 婚嫁 / 生活 / 建造 / 工商」五组归类 × 建除适配逐日打分,分「推荐 / 可用 / 回避」,当事人属相冲煞日直接排除且每条回避带理由;这是**排序引导**,不是吉凶断语
94
- - **公农历互转 `convert`**:公历 → 农历(农历年月日、是否闰月、干支四柱、生肖)与农历 → 公历(需显式指定闰月,小月无三十会报错),往返自洽;只知道农历生日时可先转公历再排盘
95
- - **称骨 `chenggu`**:年/月/日/时四项骨重求和,按总重查**通行本《称骨歌》原文**(二两一钱…七两二钱共 52 首),并给白话释义与分档批语(如 1990-08-15 巳时 = 五两六钱,歌诀「此格推来礼义通…」);骨重表对拍公开黄历页,不采信其他插件的表
96
- - **小六壬 `xiaoliuren`**:时间起课(农历月/日/时三掐)与报数起课(三个 1–99),六宫吉凶与白话断语;缺时辰会明确要求补,不默认某个时辰
97
- - **星座 `star`**:太阳星座档案(四象、守护星、关键词、契合星座)+ 当日四维基调;基调由日期哈希确定性生成,明写「不是随机数」,纯娱乐向
98
- - **生命数字 `numerology`**:生命路径数 / 生日数 / 态度数,11/22/33 主数保留;与八字口径不同,混问时会说明两套不可互相印证
99
- - **人生 K 线 `trend`**:复用八字的旺衰、大运与流年十神,按固定计分表给出 1–100 岁逐年分与最佳/最差年份;面板与独立页画的是**蜡烛图**(实体=相对上一岁的涨跌、影线=±4 分,叠 5/10 年均线并在右缘标末端值、大运条纹带与分界虚线、最高/最低岁标记),图下再给全段均值 / 最好大运 / 最差大运 / 波动幅度,并直接嵌在八字结果底部,与「人生运势曲线」(大运阶梯 + 流年折线)互补:曲线看趋势,K 线看逐年涨跌。旺衰正好落在换档阈值(±0.3)时只提示、不给顺位结论
100
- - **风水 `fengshui`**:八宅命卦(1900s/2000s 男女公式、立春界)、大游年四吉四凶、流年九宫飞白、24 山门主灶布局倾向、命宅配调停文案;`scope` 明写**不含**玄空各运盘与现场勘舆
101
- - **起名 `name`**:391 字自建字库(常用名用字,按五行分段),评估时**逐字**给五行、释义、来源与是否合喜用,未收录的字不猜五行但给**同喜用五行的可换字**(也可用 `charElements` 自行指定);生成候选名按「两字异行优先 + 字库顺序打散 + 三轮去重」避免清一色同字;**不做五格剖象**(需康熙字典笔画)与音韵判断
102
-
103
- ### 解析与详解(interpret)
104
- 每个体系的排盘结果下方都会跟一个「解析与详解」模块,帮你把盘面翻译成能看懂、能照着做的事。对话工具里加 `withInterpret: true` 即可一并返回。
105
-
106
- - **结构化输出**:`{ moduleType, system, title, lead, dimensions[], sections[], disclaimer }`;`moduleType` 为 `natal`(命盘)/ `divination`(卦象)/ `card`(牌阵),`dimensions` 固定五个维度
107
- - **五个维度**:整体运势、工作与职业选择、事业发展、爱情与感情、健康状况——每项给「解读 + 行动建议」
108
- - **依据可核对**:每个维度都附一行「依据」,列出这条结论引用的事实——命盘类(八字/紫微)给日主旺衰、月令、喜忌、大运流年、宫位主星与煞星;卦象类(六爻/梅花/六壬)给本卦互卦变卦、世应、动爻、三传四课与神将;塔罗给牌阵、主轴、正逆位与元素分布。面板与文本两条输出路径都会显示
109
- - **报告化阅读**:解析区顶部有「一页读懂」(整体/事业/财富/感情/节奏五条摘要)、目录锚点,以及三张表——八字是「大运表 / 流年表 / 触发事件表」,紫微是「大限表 / 流年表 / 触发事件表」。表格只把已有字段摊平,不新增判断;打印时表格不撕页、目录自动隐藏
110
- - **证据卡与置信度**:每个维度的依据收进可展开的 `<details>`,点开可见逐条盘面事实与所用技法;维度旁标注「置信度 强/中/弱」(按证据条数分档,不引新算法)。文本输出同样带「置信度:…」
111
- - **看示例**:面板与独立页都有「看示例」按钮,用固定的示例盘(1990-05-12 14:30 男 石家庄)走与真实排盘相同的渲染路径
112
- - **追问**:工具参数 `ask`、面板与独立页的追问输入框——围绕**已算好的盘**回答「2027 年事业怎么样」「财运如何」这类问题;只取盘面已有字段(流年/大运/宫位/分节),不重排、不猜测;年份超出已排范围或没识别到方面时,明确说找不到并给出可问范围
113
- - **八字 × 紫微 交叉验证**:工具参数 `cross`(或面板勾选)会用同一份出生信息再排另一套盘,对事业/财富/感情/身体/节奏五项并列对照,标注「同向 / 有张力 / 互补」;只作对照,不把两套体系折算成同一个分数
114
- - **量化口径**:只量化引擎已有数据(十神权重、大运/流年档位、宫位与四化计数),**不换算金额、不给健康诊断**;报告里有「量化口径」分节写明这条边界
115
- - **方法与验证**:独立页内置同页「方法与验证」(体系、128 条卦例对拍、63 个测试文件/1784 条断言、七道闸、口径与已知边界),离线可开
116
- - **夏令时校正(0.18 新增)**:1986–1991 年中国夏令时期间的钟面时间在排盘前自动减 1 小时(跨日回退),八字/紫微/合盘/验前事/生时校正统一生效;出生证已是真实太阳口径时可用 `dst: false` 关闭
117
- - **合婚明细层(0.18 新增)**:合盘新增属相六合/三合/六冲/相害/相刑、天干五合、双向十神、跨盘地支、年命纳音与吉凶象计数分档;只作明细,不改原总分
118
- - **晚子时开关**:面板与独立页都能切「23:00 后算次日/当日」;奇门另可切「归当日/归次日」——这是排盘口径,不是结果重算
119
- - **验前事**:八字报告下方列出过去 6 年流年信号,用户自评「准/不准/不确定」,算一个贴合度提示;只读、不改盘
120
- - **生时校正**:输入过去 2–3 件大事(年份 + 类别),对候选时辰逐一排盘并按固定规则打分,返回候选排序——用于缩小时辰范围,不替代出生记录
121
- - **导出**:面板与独立页都能「导出 .md」(盘面 + 一页读懂 + 三张表 + 交叉验证 + 追问);独立页另有打印/存 PDF
122
- - **推导可复核**:八字/紫微另有「看盘顺序」「时间窗」「交叉校验」「未纳入」四段——先看什么后看什么、未来几步大运与近五年流年、喜忌分量与运年是否同向、以及这套算法**没有**计算什么;六爻/六壬对应给「看卦/看课顺序」与「未纳入」。这些都从盘面数据推出,不新增断语
123
- - **卦象**(六爻/梅花/大六壬)额外给:卦名与卦辞大意、爻辞与动爻、体用关系、互卦与变卦、落到生活里
124
- - **塔罗**额外给:整盘连贯解读(把几张牌串成一条线,避免各张互相矛盾)与牌面结构(大阿卡纳占比、元素分布、正逆位)
125
- - **文案口径**:第二人称、温和、只给倾向与建议,不作绝对判断;底部保留理性参考的免责提示
126
- - **解读区可折叠**:内容较长(五维度 + 体系模块),点标题栏或箭头即可展开/收起;宽屏默认展开、窄屏默认收起,手动切过之后按你的选择来
127
-
128
- ### 所问之事与询问方向(六爻 / 梅花 / 大六壬 / 塔罗)
129
-
130
- 问事的体系要先说清问什么,解读才有落点:
131
-
132
- - **所问之事**:必填,支持多行,占位示例「用一句话描述所问之事,例如:今年是否适合换工作?」;不填就起卦会给提示,不会给一份没有落点的解读
133
- - **询问方向**:下拉选择——综合(默认)、财运、事业、感情、健康、学业、出行。选项表 `DIRECTIONS` 由 `engine/interpret.js` 导出,界面与解析层共用一份,不两处维护
134
- - **联动方式**:`interpret(result, { question, direction })`。所选方向对应的维度会被提到最前并标注「最贴近你的问题」,正文点明你所问的事,引语也会回显;解读开头固定一行「问题:xxx | 询问方向:xxx」供你确认
135
- - **不重摇卦**:改问题或方向只重出解读,卦象本身不动
136
- - 命盘类(八字 / 紫微)不问事,不显示这两项,也不会出现回显行
137
-
138
- ## 安装
139
-
140
- ### 从 npm
141
-
142
- ```bash
143
- dsh plugin install dsh-metaphysics
144
- ```
145
-
146
- 或在 Harness 的「插件」面板里搜索 `dsh-metaphysics`。
147
-
148
- ### 从本地目录
149
-
150
- ```bash
151
- dsh plugin install /path/to/dsh-metaphysics
152
- ```
153
-
154
- ### 从 tgz
155
-
156
- ```bash
157
- dsh plugin install ./dsh-metaphysics-0.17.0.tgz
158
- ```
159
-
160
- ## 使用
161
-
162
- ### 对话里
163
-
164
- 直接说:
165
-
166
- - 「排个八字:1990-05-12 14:30,女,河北石家庄」
167
- - 「排紫微盘:1996-01-19 07:40,男,新疆喀什」
168
- - 「帮我起一卦,问这个项目能不能成」
169
- - 「梅花易数,报两个数 17 和 29」
170
- - 「起个六壬课,问这周谈判顺利吗」
171
- - 「抽三张塔罗,问这份工作要不要接」
172
-
173
- 模型会调用 `metaphysics_chart` 工具,参数 `system` 取 `bazi` / `ziwei` / `liuyao` / `meihua` / `daliuren` / `tarot`。
174
- 注意:八字与紫微要**出生时间**;六爻、梅花、六壬只要**起卦时刻**(通常就是当下),与出生时间无关。
175
-
176
- ### 面板
177
-
178
- 重启后侧栏出现**太极图标**,点开是排盘面板:紫微 / 八字 / 六爻 / 梅花 / 六壬 / 奇门 / 合盘 / 塔罗八个排盘 tab,另有黄历 / 农历 / 择日 / 称骨 / 小六壬 / 星座 / 生命数字 / 人生K线 / 风水 / 起名十个速查 tab。奇门 tab 里「换局规则」可选拆补、超神接气、置闰;盘面下方用键值表列出局数、值符值使、空亡驿马等事实,与解读区的结论分开。
179
-
180
- > 独立页(`命理排盘.html`)同样是这十八个 tab:速查 tab 在左侧展开对应小表单(择日的起算日/事项/天数/属相、农历的转换方向/农历日期/闰月、小六壬的时间或报数、风水的命卦或坐向、起名的评估或生成);合盘要填双方出生信息、可选八字/紫微两种合盘;奇门用「换局规则」单选组(拆补/超神接气/置闰)与「询问方向」定用神。两份文件是**各自生成**的:重新构建后要单独同步你在用的那份拷贝(见「开发」里的 `--out`)。
181
-
182
- ### 深色与导出
183
-
184
- - **深色主题**:跟随系统(`prefers-color-scheme`),盘面与页面同时切换,只换一套 CSS 变量,元素规则一行不改
185
- - **打印永远是浅色**:深色主题下直接打印会得到一整页耗墨的深底 PDF,所以深色规则用 `@media screen` 限定
186
- - **存为 PDF / 打印**:结果下方有按钮,走浏览器原生打印(不引第三方库);A4 纵向、隐藏输入区与按钮、盘面与解读不被撕页、四化色块保留颜色。折叠着的「解析与详解」在打印时会自动展开,不会只印出一个标题栏
187
-
188
- ## 精度与口径
189
-
190
- - **节气**:VSOP87B 截断级数(105 项)+ 岁差 + 章动 + 光行差;与日本国立天文台《暦要項》对拍,2024/2025 共 48 个节气最大偏差 **0.6 分钟**;出生时刻距「节」不足 20 分钟时会提示复核。**1929-01-01 之前按北京地方平时(UTC+7.7611)**推算,之后按东八区——与农历共用同一套换算,避免 14 分钟错位
191
- - **农历**:定朔(Meeus 第 49 章,误差约 1 分钟)+ 冬至所在月为十一月 + 无中气置闰
192
- - **真太阳时**:经度差 + 均时差;内置 34 个省会 + 200 个地级市坐标(±0.2°),地址更细时可开「联网精确到区县」(Nominatim)。**单盘与合盘用的是同一套修正**(合盘双方各按自己出生地算)。只按经度修正,**未含历史时区与夏令时**:海外出生请先把当地钟表时间换算成东八区标准时再输入;没给经度时摘要首行会出 ⚠
193
- - **晚子时**:八字/大六壬默认 23:00 后换日,奇门默认归当日;`lateZi` 与 `lateZiHourMode` 是同一个开关的两个名字。各体系摘要都会写明本次采用的口径,不改默认值、不偷偷改盘
194
- - **可复现**:塔罗/六爻给 `seed` 即得同一次抽牌/摇卦;紫微流月流日流时、塔罗的抽牌时刻、八字的流年基准年都可传 `asOf` 钉死
195
- - **紫微四化**:中州派常用表(庚干作太阳禄、武曲权、太阴科、天同忌)
196
- - **日主旺衰**:量化算法,非唯一流派
197
- - **入参**:日期按月份天数与闰年校验(`1990-02-30` 直接报错,不滚到下个月);八字/紫微/合盘的性别必填(性别决定大运大限顺逆,不做默认);六爻爻值必须正好 6 个,留空才随机摇卦。非法入参带错误码返回(`E_INPUT` / `E_LINES` / `E_COUNT` / `E_ASOF` / `E_PARTNER`),不静默改成另一个盘
198
- - **对拍**:历法对 NAOJ 历要项与 ICU 抽样的农历;流派规则对典籍通例——六爻八宫卦序与世应(京房)、六壬日干寄宫与中气换将(《大六壬指南》)、紫微纳音定五行局与紫微天府相照(《紫微斗数全书》);另有《增删卜易》9 条与《卜筮正宗》**128 条**原文卦例(93 条本卦→变卦 + 35 条静卦)。期望值在 `test/fixtures/classics.json`,出处见其 `meta.sources`,卦例原始数据与排除理由在 `tools/data-boshizhengzong.mjs`。卦例只取原文能稳定读出的字段:卦名、卦宫、缺爻(伏神)、动爻**个数**(与原文 x/○ 标记数核对过)、有日期的旬空;**动爻在哪一爻**不录——卦象表在 PDF/DOCX 里串行,硬解析等于造数据
199
-
200
- ## 数据与隐私
201
-
202
- - 全部计算在本地完成
203
- - **默认不联网**:地址只查内置坐标表(最细到地级市,足够真太阳时)。只有把 `geocode` 设为 `online`(面板上勾「联网精确到区县」)才会把出生地原文发给 OpenStreetMap Nominatim,用于精确到区县/路名;失败即回退内置表,同一地址 6 小时内不重复请求
204
- - 不收集、不上传任何其他数据
205
-
206
- ## 开发
207
-
208
- ```bash
209
- npm run build # 生成 client.js(浏览器端产物)
210
- npm run build:html # 生成独立的 命理排盘.html(可离线双击使用),默认写到工作区根目录
211
- # 想同时更新别处的拷贝(例如桌面那份):node tools/build-html.mjs --out "C:\Users\<你>\Desktop\命理排盘.html"
212
- npm test # 顺序跑完 test/ 下全部 *.test.mjs 并汇总
213
- npm run test:ci # 构建 + 产物自检 + 回归 + 断言基线 + 测试自检 + HTML 注入面 + 工程约定(CI 跑的就是这条)
214
- npm run test:baseline # 断言数确实要减少时,显式重建基线
215
- npm run check:html # 单独跑 HTML 注入面扫描
216
- npm run check:patterns # 单独跑工程约定检查
217
- npm run release # 测试 → 构建 → 校验产物 → 发 npm(token 从 NPM_TOKEN 读)
218
- ```
219
-
220
- 也可以直接调脚本:`node tools/build-client.mjs`、`node tools/build-html.mjs`、`node tools/check-bundle.mjs`、`node tools/test-all.mjs`、`node tools/check-assertions.mjs`、`node tools/verify-tests-can-fail.mjs`、`node tools/check-html-sinks.mjs`、`node tools/check-patterns.mjs`、`node tools/release.mjs`。
221
-
222
- **测试的七道闸**:
223
-
224
- 1. `test/_harness.mjs`——任何一条 `ok()` 失败都让进程非零退出(此前 9 个文件只打印不失败,全量"全绿"没有意义)
225
- 2. `test/assertion-baseline.json`——每个文件的 PASS 条数低于基线即失败,防止"删断言让测试变绿"
226
- 3. `tools/verify-tests-can-fail.mjs`——故意写错一条断言,必须真的变红,防止第 1 条被改回去
227
- 4. `tools/check-html-sinks.mjs`——`innerHTML` 里拼接的量必须经过白名单转义函数,否则 CI 直接红
228
- 5. `tools/check-patterns.mjs`——engine 不得引用浏览器/Node API 与 `console`,不得用 `var`/`debugger`,`new Date()` 与 `Math.random` 只允许出现在白名单文件
229
- 6. `test/fuzz.test.mjs`——固定种子的随机生日扫射八个排盘体系,覆盖边界日期、参数矩阵与"同参数必得同结果"
230
- 7. `tools/check-bundle.mjs`——产物必须在**宿主形态**下能编译能跑:读 `client.js` 原文逐模块编译、模拟 `__ModuleLoader__` 执行 factory、校验 IIFE 收口与不可见分隔符,并要求产物与源码重构建逐字节一致(2026-10-25 的启动崩溃就是 Node 侧全绿、Chromium 侧语法错,这道闸专门守这个缝)
231
-
232
- `client.js` 是构建产物,不要手改;改动记录见 [CHANGELOG.md](CHANGELOG.md)。
233
-
234
- ### 发版
235
-
236
- ```bash
237
- # 先在 npm 生成 Granular Token:Read and write + 勾 Bypass 2FA
238
- NPM_TOKEN=npm_xxx npm run release # 正式发布(会先跑测试与构建校验)
239
- NPM_TOKEN=npm_xxx npm run release -- --dry-run # 只校验不发布
240
- NPM_CLI=/path/to/npm-cli.js NPM_TOKEN=... npm run release # 本机没有 npm CLI 时
241
- ```
242
-
243
- 脚本会拦下:工作区不干净、`client.js` 未随源码重建、registry 上已有同版本;发布后自动核对新版本与 `dist-tags`,并提示补 `git tag`。
244
-
245
- ### 样式命名约定
246
-
247
- 面板的 CSS 是以 `<style>` 注入到宿主页面的,**没有 shadow DOM 隔离**,所以每个类名都带命名空间前缀,避免和宿主页面的同名元素互相染色:
248
-
249
- | 前缀 | 归属 |
250
- |---|---|
251
- | `pp-` | 紫微盘骨架(宫格、宫位选中、三方四正、身宫) |
252
- | `bz-` | 四柱八字表(干支大字、藏干、十神、五行旺衰) |
253
- | `dt-` | 宫位详情面板 |
254
- | `flow-` | 流月 / 流日 / 流时 |
255
- | `ct-` / `ft-` | 盘心 / 盘脚 |
256
- | `mp-` | 各模块根容器:`mp-it`(解析)、`mp-dl`(六壬)、`mp-hy`(六爻)、`mp-mh`(梅花)、`mp-tt`(塔罗)、`mp-hex`(爻线)、`mp-trib`(体用) |
257
- | `hb-` / `tritag-` | 卦盒 / 体用标签 |
258
- | `dl-` / `ss-` / `ssx-` / `ssg-` | 六壬盘块 / 神煞族 |
259
- | `ask-` | 所问之事回显 |
260
-
261
- 两条硬规矩:
262
-
263
- - **不用泛词做类名**(`.body`、`.big`、`.s`、`.p`、`.on`、`.it` 这类)。名字越泛,越容易在同一个文件里被两处语义共用——本项目已经栽过两次:`.pp-body` 同时是「整块视图容器」和「身宫格」,一次导致身宫整格消失,另一次的 `::after` 残骸在页面左上角飘出一个孤立的「身」方块。
264
- - **模块根类名必须带前缀**。裸用的 `.it` / `.dl` / `.hy` 一旦注入全局,宿主页面的同名元素会被一起改写。
265
-
266
- *2026-10 做过一轮全量整改:199 个类名按语义分组补齐前缀(约 540 处替换),计算逻辑一行未动,20 组断言与全量视口扫描全绿。*
267
-
268
-
269
- ## 致谢
270
-
271
- 本插件的十套速查体系(农历互转为自有实现)在**能力范围**上参考了同生态的 [dsh-xuanji(玄机阁)](https://github.com/huangziyuan-general/dsh-xuanji)(MIT):黄历、择日、称骨、小六壬、星座、生命数字、人生 K 线、风水、起名。
272
- **实现是独立的**:没有拷贝对方源码,也没有引入它的依赖(iztro / lunar-javascript),全部按行为规格用本项目的 calendar / lunar / dst 模块重写,并逐项与公开通行表或 lunar-javascript 对拍(称骨表的初版错误就是这样查出来的)。特此致谢。
273
-
274
- 《穷通宝鉴》120 格的原文摘句取自 [luckclub.cn](https://www.luckclub.cn/bazi/004/)(古籍,public domain),用神顺序参考 [knowyourbazi.com](https://knowyourbazi.com/zh-hans/qiongtong/) 的整理表;两者逐格对读,原文全章未见某个用神字时(如八月丁火的「丙」),数据里直接标了 note 说明「按整理表录入、待以善本核对」,没有替它圆场。
275
-
276
- ## License
277
-
278
- MIT
279
-
1
+ # dsh-metaphysics · 命理排盘
2
+
3
+ Chinese metaphysics (玄学 / xuanxue) for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): BaZi (Four Pillars), Zi Wei Dou Shu, LiuYao, MeiHua YiShu, Da Liu Ren, Qi Men Dun Jia, relationship compatibility, Tarot, plus quick-reference tools — almanac, date selection, bone-weight fortune, Xiao Liu Ren, horoscope, numerology, an MBTI-style 16-type questionnaire, life-curve, feng shui and name analysis.
4
+
5
+ 给 DeepSeek Harness 用的**玄学命理**插件:**四柱八字、紫微斗数、六爻纳甲、梅花易数、大六壬、奇门遁甲、合盘、塔罗牌**八大排盘体系,外加**黄历、农历(公农历互转)、择日、称骨、小六壬、星座、生命数字、人生K线、风水、起名、十六型人格**十一套速查,同时提供 Agent 工具与 Web 面板。
6
+
7
+ > 传统命理与占卜属文化娱乐用途,不构成医疗、投资、法律或生死判断的依据。
8
+
9
+ ## 插件市场备注
10
+
11
+ **命理排盘(玄学)· 八字 / 紫微 / 六爻 / 梅花 / 六壬 / 奇门 / 合盘 / 塔罗 + 黄历 / 农历 / 择日 / 称骨 / 小六壬 / 星座 / 生命数字 / 人生K线 / 风水 / 起名 / 十六型人格** —— 一个插件把十九套体系装进 Harness:对话里说一句就排盘,侧栏还有可视化面板。
12
+
13
+ - **八字**:42 颗神煞(分吉凶七类,天干星双查年干与日干、三合星双查年支与日支,悬停看查法)、日主旺衰量化并给出依据、格局与用神(月令取格 + 化气/专旺/从格 + 十神组合,每条附判定依据)、大运流年按喜忌五行与十神打分(大吉/吉/平/忌/大忌,可看逐项理由),大运另有**交运时刻**(日/时辰级,三日折一年放大)与每步起止日期
14
+ - **紫微**:十四主星与 49 星曜(主星带**庙旺得利平不陷**亮度标注)、四层十二神、生年四化与宫干自化、**四化飞星串连**(宫干化星 → 星定落宫 → 顺同一支化逐宫追到成环)、34 条格局(标吉/忌倾向与依据)、大限一览、流年四化落宫;本命/大限/流年三视图一键切换,命宫红框、三方四正浅底标出;竖屏与窄侧栏保持 4×4 宫盘(宫位相对位置不丢)
15
+ - **六爻**:摇卦或手动爻值、纳甲、六亲、六神、世应;本卦/变卦并列、真爻线渲染(阳爻整条、阴爻断开、动爻描红);卦体关系(六冲/六合/伏吟/反吟/化进神/化退神)按纳甲地支推导并标注;**用神落位与卦体联动**(七档取六亲、不上卦取伏神并标飞伏生克、用神与卦体/动变/旬空串起来看)、**用神旺衰**(月建五态 + 日辰五关系,月破/暗动/冲空分开标)
16
+ - **梅花**:时间/数字起卦、体用生克分档、互变错综四卦齐出,本卦上下卦分块标体用
17
+ - **大六壬**:天地盘 4×4 方盘(天盘大字、地盘小字、天将右下)、四课、九宗门三传、格局(贼克/元首/重审/伏吟/返吟/八专等)
18
+ - **奇门遁甲**:时家转盘,拆补 / 超神接气 / 置闰三流派取局;九宫、值符值使、空亡驿马、门迫与宫制门严格区分;六仪击刑(按地支相刑定宫)与三奇入墓(按五行墓库定宫)逐宫标出;八门、九星与天盘干按月令分旺相休囚死;天盘干与所落宫另论干宫生克(干克宫/宫克干/干生宫/宫生干/比和)
19
+ - **合盘**:八字或紫微双盘对照(日主、夫妻宫、五行互补 / 互落宫、四化引动)
20
+ - **塔罗**:78 张全牌、1/3/5 张牌阵,逐牌牌位义 + 整体解读,体系与逆位口径写明
21
+ - **速查十件**:黄历(四柱/建除/宜忌/冲煞/节气 + 值日十二神/时辰吉凶/二十八宿/胎神/吉神方位/纳音/六合三合)、农历(公农历互转)、择日(27 类事项、按五组归类、冲属相排除)、称骨(骨重 + 称骨歌原文 + 释义)、
22
+ 小六壬(时间/报数起课)、星座(档案 + 当日基调)、生命数字(生命路径/生日/态度数)、人生 K 线(逐年分与形态)、
23
+ 风水(八宅命卦/大游年/流年紫白/门主灶)、起名(391 字库、逐字判定与可换字)——口径与边界各自写明
24
+ - 全部本地计算,不收集数据;结果供文化娱乐参考,不作医疗、投资、法律或生死判断
25
+
26
+ ### 报告化与可核验(0.16 / 0.17 / 0.18 / 0.20 新增)
27
+
28
+ - **一页读懂 + 三张表**:整体/事业/财富/感情/节奏五条摘要;大运表、流年表、触发事件表(紫微是大限/流年/触发)
29
+ - **证据卡 + 置信度**:每条维度结论可展开到逐条盘面事实与所用技法,置信度按证据条数分强/中/弱
30
+ - **追问**:工具参数 `ask`,围绕已算好的盘回答「2027 年事业怎么样」这类问题;不重排、不猜测,找不到会明说
31
+ - **八字 × 紫微 交叉验证**:工具参数 `cross`,五项并列对照,标注同向 / 有张力 / 互补
32
+ - **晚子时开关**:23:00 后算次日还是当日,面板与独立页都能切;奇门另有「归当日 / 归次日」
33
+ - **验前事**:列出过去几年流年信号,自评准/不准/不确定后算贴合度;只读,不改盘
34
+ - **生时校正**:给定过去 2–3 件大事,对候选时辰逐一排盘打分排序;只缩小范围,不替代出生记录
35
+ - **导出**:`.md`(盘面 + 解析)与 PNG 摘要长图(Canvas 直出,零依赖);独立页支持打印/存 PDF
36
+ - **调候解释**:解释层新增「寒暖燥湿」一节,文本摘要加「寒暖:」一行
37
+ - **古籍原文**:《子平真诠》论用神/正官/财/印/食神/偏官/伤官/阳刃/建禄月劫等 10 章 + 《滴天髓》通神论寒暖/燥湿/衰旺/中和/官杀/伤官/月令/体用/精神 9 条,按格局与气候匹配后附在结果里(原句照录、白话释义、出处章号)
38
+ - **《穷通宝鉴》120 格**:十天干 × 十二月令逐格录入用神顺序与原文摘句(「十二月乙木,木寒宜丙」这类原句照录),调候卡里直接给出「这一格书上取什么」与出处章号
39
+ - **方法与验证页**:独立页内置静态页,写明对拍数据、测试与闸门、口径与已知边界
40
+ - **离线单文件页(随包分发)**:`命理排盘.html` 一份文件、零依赖、双击即开,十九个 tab 全在里头,断网可用;它随 npm 包发布,装完插件就有(路径见下)
41
+
42
+ ### 离线单文件页 `命理排盘.html`
43
+
44
+ 订阅(`npm i dsh-metaphysics` 或 `dsh plugin add dsh-metaphysics`)之后,这份页面就在包里:
45
+
46
+ - `node_modules/dsh-metaphysics/命理排盘.html` —— 复制到任意位置双击打开,或用浏览器「打开文件」;不需要装依赖、不需要起服务、不需要联网
47
+ - 也可以用 `require.resolve('dsh-metaphysics/命理排盘.html')` 拿到绝对路径(`package.json` 的 `exports` 已登记)
48
+ - 它是**同源生成物**:与侧栏面板、Agent 工具共用同一份 `engine/`,所以版本一致——包里是 0.28.0,页面就是 0.28.0
49
+ - 与联网无关的部分全部本地算:历法、排盘、古籍摘句、对拍数据都在文件里;只有两处例外,点了才生效——典籍出处的外部链接、以及地理编码选「在线」时的 OpenStreetMap 查询
50
+ - 想重新生成(改了源码之后):`npm run build:html`,默认写到仓库根 `命理排盘.html`;`-- --out <路径>` 可另存(例如同步到桌面那份拷贝)
51
+
52
+ ## 功能
53
+
54
+ ### 四柱八字(bazi)
55
+ - 四柱、藏干、十神、纳音、空亡(**逐柱**)
56
+ - **十二长生**:地势(日干对各支)、自坐(各柱干对本支)
57
+ - **神煞(42 星,7 类)**:贵人(天乙、太极、天德、月德、月德合、福星、天官、国印、天厨、天医)、文星(文昌、德秀)、婚姻(桃花、红鸾、天喜、孤辰、寡宿、金舆)、性情(华盖、羊刃、飞刃、魁罡、童子煞、六秀日、日德、日贵)、事业(禄神、将星、驿马)、凶煞(劫煞、灾煞、亡神、空亡、十恶大败、阴差阳错、四废日、流霞、天罗、地网)、格局(天赦日、金神、三奇贵人)。天干类双查年干与日干,三合类双查年支与日支;每颗星附查法依据,界面悬停可见
58
+ - **日主旺衰**:月令权重 + 通根 + 天干帮扶,量化分档,并给出依据(季节权重、通根地支、帮扶/耗泄明细)
59
+ - **寒暖燥湿(调候优先)**:月令温度 + 全局火水比例 + 湿土燥土判定气候,给出调候所取(寒湿取丙火、燥热取壬水)与所忌、温度/燥湿标尺、按日主五行的体感白话;流年大运评分接入调候(寒局再逢水加重扣权);面板在「用神」下有寒暖卡
60
+ - **《穷通宝鉴》120 格**:按「日主 + 月令」查到该格用神顺序(如乙木丑月取丙),附原文摘句与章号;寒暖卡里与调候判定并列显示,两者不同向时以调候为先(「书里的取用」与「这一盘的气候」各自摆出来,不悄悄合并)
61
+ - **格局与用神**:月令取格(建禄/阳刃/月劫/十神格)+特格(化气、专旺、从格)+十神组合(官印、杀印、食伤生财、财官、伤官配印、伤官见官、羊刃驾杀),每条附判定依据;用神按「调候优先 + 扶抑校验」:先判寒暖燥湿(寒/寒湿/寒燥/湿滞/平/燥/燥热/温热,附温度与燥湿量化值与依据),调候所需与扶抑冲突时显式仲裁并说明理由,不冲突时注明同向;再列喜忌十神
62
+ - **行运吉凶**:大运、流年按喜忌五行与十神加权评分,分大吉/吉/平/忌/大忌五档,悬停可看逐项理由
63
+ - **大运交运日**:按「三日折一年」把出生到节令的间隔放大,算出**交运时刻(日/时辰级)**与每步大运的起止日期(同月同日同时刻换,闰日退到 2 月 28 日);大运表的「交运」列、面板曲线与 chip 悬停都能看到
64
+ - **干支关系**:五合、相冲、相克;六合、三合半合、三会半会拱会、冲、害、破、刑
65
+ - 大运、流年(含与原局地支的关系)、真太阳时(按出生地经度修正)
66
+ - **四柱表版式**:按专业排盘习惯——年/月/日/时四柱并排固定成四列,左侧一列窄行名,列间不画竖线、只用极淡横线分行;天干地支作大字并随五行着色,日柱表头单独标红;藏干按「干·五行」逐行列出,十神按比劫/食伤/财/官杀/印五类分组着色;末行给**五行旺相休囚死**(以月令当令五行为基准,依次推出 旺/相/休/囚/死 五态)
67
+
68
+ ### 紫微斗数(ziwei)
69
+ - 农历(定朔 + 冬至置闰)、命宫、身宫、五行局
70
+ - 紫微/天府、十四主星、六吉六煞、禄存天马、**49 颗星曜**
71
+ - **十四主星庙旺得利平不陷**:按《紫微斗数全书》系通行表标注(各家在太阳/太阴少数宫位有出入,只标主星、不硬标辅星),庙旺标绿、得利平标灰、不陷标红
72
+ - 四层十二神:长生、博士、将前、岁前
73
+ - 生年四化、宫干自化、大限、小限、流年(命宫、三方四正、流禄流羊流陀)、斗君
74
+ - **格局识别(34 条,附判定依据与吉/忌倾向)**:紫府同宫、紫府朝垣、君臣庆会、极向离明、七杀朝斗、英星入庙、石中隐玉、巨日同宫、日月夹命、日月对照、左右/昌曲/魁钺夹命、三奇嘉会、双禄朝垣、机月同梁、府相朝垣、禄马交驰、月朗天门、日出扶桑、武贪同行、火贪铃贪;忌格:火铃夹命、羊陀夹命、羊陀夹忌、铃昌陀武、命里逢空、马头带箭、天罗地网、刑囚夹印、泛水桃花
75
+ - **大限一览**:十二限排序列出宫位、年龄区间、宫干四化落宫、三方主星;**流年四化**:逐年给出四化星落宫与命宫三方主星
76
+ - **四化飞星串连**:宫干定四化、四化定落宫,再顺同一支化从落宫接着飞,最多 12 步、回到走过的宫即记「成环」。盘面给 12 宫 × 四化 = 48 条飞化与自化标记;摘要/解析/面板都按四支(禄权科忌)列出 `命宫→官禄→父母→命宫` 这样的整条链,解释层只写方向与牵引、不断吉凶
77
+ - **流月 / 流日 / 流时**:由流年斗君逐级下推——斗君起正月顺行至该农历月,流月命宫起初一顺行至该农历日,流日命宫起子时顺行至该时辰;每层给落宫、宫干四化落宫与三方四正。基准时刻默认取本机当前时刻(可用 `asOf` 指定以便复现)
78
+ - **宫位点击展开详情**:点任一宫摊开该宫完整星曜(含亮度、四化)、宫干四化、四层十二神、大限/小限,并把三方四正(三合两宫 + 对宫)一起列出、在盘上同步描边;空宫标注「借对宫 XX」;再点一次收起
79
+ - 昌曲专论:与丑未的关系、是否入命三方、吸收面清杂
80
+
81
+ ### 六爻(liuyao)
82
+ - 摇卦或手动爻值、本卦/变卦、纳甲、六亲、六神、世应
83
+ - 卦体关系按纳甲地支实配推导:六冲卦(10 支,八纯 + 天雷无妄 + 雷天大壮)、六合卦(8 支)、卦伏吟 / 卦反吟(地支全冲、八卦正对两路)、爻伏吟 / 爻反吟
84
+ - 化进神 / 化退神:动爻变出同五行顺次之支(寅→卯、巳→午、申→酉、亥→子,土丑→辰→未→戌→丑),进者标「化进神 N」、退者标「化退神 N」,并写明本支→变支
85
+ - 用神落位:按所问之事取六亲——求财看妻财、工作职位看官鬼、文书考试看父母、健康以官鬼为病(子孙为医药)、出行以世爻为用、感情男看妻财女看官鬼;用神不上卦时回到本宫首卦取伏神,标出飞伏生克(飞生伏 / 伏生飞 / 飞克伏 / 伏克飞 / 比和),首卦两现时列候选**不代选**;再叠月建与日辰:月令五态(旺相休囚死)看这一段时令,日辰五关系(日生/日克/比和/泄/耗)看当天扶克,月建冲爻标月破、日辰冲静爻标暗动、冲旬空标冲空,只报状态不折成分数
86
+ - 用神与卦体联动:把用神所处的卦体一并标出——用神在六冲卦(主散)/ 六合卦(主成)/ 逢变六冲 / 逢变六合 / 在内卦伏吟 / 在外卦反吟(注明地支全冲还是八卦正对)/ 化进神 / 化退神 / 爻伏吟 / 爻反吟 / 旬空 / 持世 / 临应 / 发动
87
+ - 面板:本卦与变卦并列对照,真爻线渲染(阳整、阴断、动描红),世应与动爻一目了然;卦体标签与用神标签各以 chip 行列出
88
+ - 只需起卦时刻(取日辰定六神、月建定旺衰),与出生时间无关
89
+
90
+ ### 梅花易数(meihua)
91
+ - 时间起卦(年月日时数)或数字起卦(两数取余、可手动指定动爻)
92
+ - 本卦 / 互卦 / 变卦 / 错卦 / 综卦五盘齐出;本卦上下卦分块并标「体」「用」
93
+ - 体用生克按五行判吉凶:用生体大吉、比和吉、体克用吉、体生用耗、用克体凶
94
+
95
+ ### 大六壬(daliuren)
96
+ - 月将加时起天地盘(4×4 方盘:天盘大字、地盘小字、天将右下)
97
+ - 四课(干上/支上递推,标注生克与天将)、九宗门发三传(贼克·元首·重审·比用·涉害·遥克·昴星·别责·八专·伏吟·返吟)
98
+ - 昼夜贵人(以天盘临方定顺逆)、旬空标注、格局名与断语
99
+
100
+ ### 塔罗(tarot)
101
+ - 78 张全牌、正逆位、1/3/5 张牌阵(面板可直接选牌阵,换张数自动重抽)
102
+ - 每张牌给编号、牌阶级、核心义与牌阵位义;解读 6–8 段(逐牌、大阿卡纳占比、五行分布、宫廷牌、正逆位比例、关键牌、建议)
103
+ - 明确标注体系:RWS 编号、黄金黎明元素归属、逆位取「弱化/未顺/内化」而非凶断
104
+
105
+ ### 速查十一件(almanac / convert / zeri / chenggu / xiaoliuren / star / numerology / mbti / trend / fengshui / name)
106
+
107
+ 十一套轻量体系,输入都只要一到几个字段,结果走同一套面板与独立页(tab 由 8 个扩到 19 个),
108
+ 速查结果用等宽文本卡渲染,不套命盘模板。**全部本地确定性计算**:同一天、同一输入永远同一结果。
109
+
110
+ - **黄历 `almanac`**:农历、四柱干支(年柱按立春、月柱按节)、建除十二神、宜忌简表、冲煞、上一/下一节气、每日一卦,以及**值日十二神(黄道/黑道)、十二时辰吉凶(五鼠遁干支 + 时家十二神)、二十八宿、胎神、财神/喜神/福神/阳贵/阴贵方位、日柱纳音、六合三合吉配生肖**;值日神/二十八宿/胎神/吉神方位与 lunar-javascript 逐日对拍。`scope` 明写未收录逐日全量吉凶神煞与彭祖百忌
111
+ - **择日 `zeri`**:27 类事项(婚嫁类领证/提亲/收送聘金/满月酒,生活类旅行/访亲友/入学,建造类动土/装修建造/试车买车,工商类交易/投资/签订合同/纳财/赴任等)按「常用 / 婚嫁 / 生活 / 建造 / 工商」五组归类 × 建除适配逐日打分,分「推荐 / 可用 / 回避」,当事人属相冲煞日直接排除且每条回避带理由;这是**排序引导**,不是吉凶断语
112
+ - **公农历互转 `convert`**:公历 → 农历(农历年月日、是否闰月、干支四柱、生肖)与农历 → 公历(需显式指定闰月,小月无三十会报错),往返自洽;只知道农历生日时可先转公历再排盘
113
+ - **称骨 `chenggu`**:年/月/日/时四项骨重求和,按总重查**通行本《称骨歌》原文**(二两一钱…七两二钱共 52 首),并给白话释义与分档批语(如 1990-08-15 巳时 = 五两六钱,歌诀「此格推来礼义通…」);骨重表对拍公开黄历页,不采信其他插件的表
114
+ - **小六壬 `xiaoliuren`**:时间起课(农历月/日/时三掐)与报数起课(三个 1–99),六宫吉凶与白话断语;缺时辰会明确要求补,不默认某个时辰
115
+ - **星座 `star`**:太阳星座档案(四象、守护星、关键词、契合星座)+ 当日四维基调;基调由日期哈希确定性生成,明写「不是随机数」,纯娱乐向
116
+ - **生命数字 `numerology`**:生命路径数 / 生日数 / 态度数,11/22/33 主数保留;与八字口径不同,混问时会说明两套不可互相印证
117
+ - **人生 K 线 `trend`**:复用八字的旺衰、大运与流年十神,按固定计分表给出 1–100 岁逐年分与最佳/最差年份;面板与独立页画的是**蜡烛图**(实体=相对上一岁的涨跌、影线=±4 分,叠 5/10 年均线并在右缘标末端值、大运条纹带与分界虚线、最高/最低岁标记),图下再给全段均值 / 最好大运 / 最差大运 / 波动幅度,并直接嵌在八字结果底部,与「人生运势曲线」(大运阶梯 + 流年折线)互补:曲线看趋势,K 线看逐年涨跌。旺衰正好落在换档阈值(±0.3)时只提示、不给顺位结论
118
+ - **风水 `fengshui`**:八宅命卦(1900s/2000s 男女公式、立春界)、大游年四吉四凶、流年九宫飞白、24 山门主灶布局倾向、命宅配调停文案;`scope` 明写**不含**玄空各运盘与现场勘舆
119
+ - **十六型人格 `mbti`**:一份 **MBTI 风格**的 24 题问卷(四维度各 6 题,李克特 1–5 计分,按维度净分取字母、平手取 I/N/F/P 并标「临界」),先不带 `answers` 调一次拿到题目,再把 24 个分数按顺序传回来;结果给四维强度(临界/轻微/明显/很强)、类型称号与关键词、优势与留意、认知功能栈(主导 → 辅助 → 第三 → 劣势)、工作/关系/学习/课题四段白话。**不是官方 MBTI 量表**(未用其题目、常模与评鉴许可),只作自我参照,不用于招聘、晋升或诊断;跳过某题传 `null`,答满 12 题即可出口径
120
+ - **起名 `name`**:391 字自建字库(常用名用字,按五行分段),评估时**逐字**给五行、释义、来源与是否合喜用,未收录的字不猜五行但给**同喜用五行的可换字**(也可用 `charElements` 自行指定);生成候选名按「两字异行优先 + 字库顺序打散 + 三轮去重」避免清一色同字;**不做五格剖象**(需康熙字典笔画)与音韵判断
121
+
122
+ ### 解析与详解(interpret)
123
+ 每个体系的排盘结果下方都会跟一个「解析与详解」模块,帮你把盘面翻译成能看懂、能照着做的事。对话工具里加 `withInterpret: true` 即可一并返回。
124
+
125
+ - **结构化输出**:`{ moduleType, system, title, lead, dimensions[], sections[], disclaimer }`;`moduleType` 为 `natal`(命盘)/ `divination`(卦象)/ `card`(牌阵),`dimensions` 固定五个维度
126
+ - **五个维度**:整体运势、工作与职业选择、事业发展、爱情与感情、健康状况——每项给「解读 + 行动建议」
127
+ - **依据可核对**:每个维度都附一行「依据」,列出这条结论引用的事实——命盘类(八字/紫微)给日主旺衰、月令、喜忌、大运流年、宫位主星与煞星;卦象类(六爻/梅花/六壬)给本卦互卦变卦、世应、动爻、三传四课与神将;塔罗给牌阵、主轴、正逆位与元素分布。面板与文本两条输出路径都会显示
128
+ - **报告化阅读**:解析区顶部有「一页读懂」(整体/事业/财富/感情/节奏五条摘要)、目录锚点,以及三张表——八字是「大运表 / 流年表 / 触发事件表」,紫微是「大限表 / 流年表 / 触发事件表」。表格只把已有字段摊平,不新增判断;打印时表格不撕页、目录自动隐藏
129
+ - **证据卡与置信度**:每个维度的依据收进可展开的 `<details>`,点开可见逐条盘面事实与所用技法;维度旁标注「置信度 强/中/弱」(按证据条数分档,不引新算法)。文本输出同样带「置信度:…」
130
+ - **看示例**:面板与独立页都有「看示例」按钮,用固定的示例盘(1990-05-12 14:30 男 石家庄)走与真实排盘相同的渲染路径
131
+ - **追问**:工具参数 `ask`、面板与独立页的追问输入框——围绕**已算好的盘**回答「2027 年事业怎么样」「财运如何」这类问题;只取盘面已有字段(流年/大运/宫位/分节),不重排、不猜测;年份超出已排范围或没识别到方面时,明确说找不到并给出可问范围
132
+ - **八字 × 紫微 交叉验证**:工具参数 `cross`(或面板勾选)会用同一份出生信息再排另一套盘,对事业/财富/感情/身体/节奏五项并列对照,标注「同向 / 有张力 / 互补」;只作对照,不把两套体系折算成同一个分数
133
+ - **量化口径**:只量化引擎已有数据(十神权重、大运/流年档位、宫位与四化计数),**不换算金额、不给健康诊断**;报告里有「量化口径」分节写明这条边界
134
+ - **方法与验证**:独立页内置同页「方法与验证」(体系、128 条卦例对拍、74 个测试文件/2344 条断言、七道闸、口径与已知边界),离线可开
135
+ - **夏令时校正(0.18 新增)**:1986–1991 年中国夏令时期间的钟面时间在排盘前自动减 1 小时(跨日回退),八字/紫微/合盘/验前事/生时校正统一生效;出生证已是真实太阳口径时可用 `dst: false` 关闭
136
+ - **合婚明细层(0.18 新增)**:合盘新增属相六合/三合/六冲/相害/相刑、天干五合、双向十神、跨盘地支、年命纳音与吉凶象计数分档;只作明细,不改原总分
137
+ - **晚子时开关**:面板与独立页都能切「23:00 后算次日/当日」;奇门另可切「归当日/归次日」——这是排盘口径,不是结果重算
138
+ - **验前事**:八字报告下方列出过去 6 年流年信号,用户自评「准/不准/不确定」,算一个贴合度提示;只读、不改盘
139
+ - **生时校正**:输入过去 2–3 件大事(年份 + 类别),对候选时辰逐一排盘并按固定规则打分,返回候选排序——用于缩小时辰范围,不替代出生记录
140
+ - **导出**:面板与独立页都能「导出 .md」(盘面 + 一页读懂 + 三张表 + 交叉验证 + 追问);独立页另有打印/存 PDF
141
+ - **推导可复核**:八字/紫微另有「看盘顺序」「时间窗」「交叉校验」「未纳入」四段——先看什么后看什么、未来几步大运与近五年流年、喜忌分量与运年是否同向、以及这套算法**没有**计算什么;六爻/六壬对应给「看卦/看课顺序」与「未纳入」。这些都从盘面数据推出,不新增断语
142
+ - **卦象**(六爻/梅花/大六壬)额外给:卦名与卦辞大意、爻辞与动爻、体用关系、互卦与变卦、落到生活里
143
+ - **塔罗**额外给:整盘连贯解读(把几张牌串成一条线,避免各张互相矛盾)与牌面结构(大阿卡纳占比、元素分布、正逆位)
144
+ - **文案口径**:第二人称、温和、只给倾向与建议,不作绝对判断;底部保留理性参考的免责提示
145
+ - **解读区可折叠**:内容较长(五维度 + 体系模块),点标题栏或箭头即可展开/收起;宽屏默认展开、窄屏默认收起,手动切过之后按你的选择来
146
+
147
+ ### 所问之事与询问方向(六爻 / 梅花 / 大六壬 / 塔罗)
148
+
149
+ 问事的体系要先说清问什么,解读才有落点:
150
+
151
+ - **所问之事**:必填,支持多行,占位示例「用一句话描述所问之事,例如:今年是否适合换工作?」;不填就起卦会给提示,不会给一份没有落点的解读
152
+ - **询问方向**:下拉选择——综合(默认)、财运、事业、感情、健康、学业、出行。选项表 `DIRECTIONS` 由 `engine/interpret.js` 导出,界面与解析层共用一份,不两处维护
153
+ - **联动方式**:`interpret(result, { question, direction })`。所选方向对应的维度会被提到最前并标注「最贴近你的问题」,正文点明你所问的事,引语也会回显;解读开头固定一行「问题:xxx | 询问方向:xxx」供你确认
154
+ - **不重摇卦**:改问题或方向只重出解读,卦象本身不动
155
+ - 命盘类(八字 / 紫微)不问事,不显示这两项,也不会出现回显行
156
+
157
+ ## 安装
158
+
159
+ ### 从 npm
160
+
161
+ ```bash
162
+ dsh plugin install dsh-metaphysics
163
+ ```
164
+
165
+ 或在 Harness 的「插件」面板里搜索 `dsh-metaphysics`。
166
+
167
+ ### 从本地目录
168
+
169
+ ```bash
170
+ dsh plugin install /path/to/dsh-metaphysics
171
+ ```
172
+
173
+ ### 从 tgz
174
+
175
+ ```bash
176
+ dsh plugin install ./dsh-metaphysics-0.17.0.tgz
177
+ ```
178
+
179
+ ## 使用
180
+
181
+ ### 对话里
182
+
183
+ 直接说:
184
+
185
+ - 「排个八字:1990-05-12 14:30,女,河北石家庄」
186
+ - 「排紫微盘:1996-01-19 07:40,男,新疆喀什」
187
+ - 「帮我起一卦,问这个项目能不能成」
188
+ - 「梅花易数,报两个数 17 和 29」
189
+ - 「起个六壬课,问这周谈判顺利吗」
190
+ - 「抽三张塔罗,问这份工作要不要接」
191
+
192
+ 模型会调用 `metaphysics_chart` 工具,参数 `system` 取 `bazi` / `ziwei` / `liuyao` / `meihua` / `daliuren` / `tarot`。
193
+ 注意:八字与紫微要**出生时间**;六爻、梅花、六壬只要**起卦时刻**(通常就是当下),与出生时间无关。
194
+
195
+ ### 面板
196
+
197
+ 重启后侧栏出现**太极图标**,点开是排盘面板:紫微 / 八字 / 六爻 / 梅花 / 六壬 / 奇门 / 合盘 / 塔罗八个排盘 tab,另有黄历 / 农历 / 择日 / 称骨 / 小六壬 / 星座 / 生命数字 / 人生K线 / 风水 / 起名 / 十六型人格十一个速查 tab。奇门 tab 里「换局规则」可选拆补、超神接气、置闰;盘面下方用键值表列出局数、值符值使、空亡驿马、击刑与入墓、月令与门星干旺衰、干宫生克等事实,与解读区的结论分开。
198
+
199
+ > 独立页(`命理排盘.html`)同样是这十九个 tab:速查 tab 在左侧展开对应小表单(择日的起算日/事项/天数/属相、农历的转换方向/农历日期/闰月、小六壬的时间或报数、风水的命卦或坐向、起名的评估或生成、十六型人格的 24 个分数);合盘要填双方出生信息、可选八字/紫微两种合盘;奇门用「换局规则」单选组(拆补/超神接气/置闰)与「询问方向」定用神。这份文件与侧栏面板是**各自生成**的两份产物(同一份 `engine/`),随包发布的是仓库根这一份;你自己另存过一份的话,重新构建后要单独再同步过去(见「开发」里的 `--out`)。
200
+
201
+ ### 深色与导出
202
+
203
+ - **深色主题**:跟随系统(`prefers-color-scheme`),盘面与页面同时切换,只换一套 CSS 变量,元素规则一行不改
204
+ - **打印永远是浅色**:深色主题下直接打印会得到一整页耗墨的深底 PDF,所以深色规则用 `@media screen` 限定
205
+ - **存为 PDF / 打印**:结果下方有按钮,走浏览器原生打印(不引第三方库);A4 纵向、隐藏输入区与按钮、盘面与解读不被撕页、四化色块保留颜色。折叠着的「解析与详解」在打印时会自动展开,不会只印出一个标题栏
206
+
207
+ ## 精度与口径
208
+
209
+ - **节气**:VSOP87B 截断级数(105 项)+ 岁差 + 章动 + 光行差;与日本国立天文台《暦要項》对拍,2024/2025 共 48 个节气最大偏差 **0.6 分钟**;出生时刻距「节」不足 20 分钟时会提示复核。**1929-01-01 之前按北京地方平时(UTC+7.7611)**推算,之后按东八区——与农历共用同一套换算,避免 14 分钟错位
210
+ - **农历**:定朔(Meeus 第 49 章,误差约 1 分钟)+ 冬至所在月为十一月 + 无中气置闰
211
+ - **真太阳时**:经度差 + 均时差;内置 34 个省会 + 200 个地级市坐标(±0.2°),地址更细时可开「联网精确到区县」(Nominatim)。**单盘与合盘用的是同一套修正**(合盘双方各按自己出生地算)。只按经度修正,**未含历史时区与夏令时**:海外出生请先把当地钟表时间换算成东八区标准时再输入;没给经度时摘要首行会出 ⚠
212
+ - **晚子时**:八字/大六壬默认 23:00 后换日,奇门默认归当日;`lateZi` 与 `lateZiHourMode` 是同一个开关的两个名字。各体系摘要都会写明本次采用的口径,不改默认值、不偷偷改盘
213
+ - **可复现**:塔罗/六爻给 `seed` 即得同一次抽牌/摇卦;紫微流月流日流时、塔罗的抽牌时刻、八字的流年基准年都可传 `asOf` 钉死
214
+ - **紫微四化**:中州派常用表(庚干作太阳禄、武曲权、太阴科、天同忌)
215
+ - **紫微飞星串连**:只认宫干四化表、星落哪宫就是哪宫之力,串连只跟**同一支化**逐宫跳(不混支、不借对宫),满 12 步或回到走过的宫即停;宫干四化在 12 宫上是「一个宫 → 一个宫」的函数映射,所以完整盘上每条链必然成环(实测 1/3/4/5/6 步),「断点」只可能来自星未上盘。这一层只描方向与牵引,不断吉凶,也不叠大限流年算力重
216
+ - **日主旺衰**:量化算法,非唯一流派
217
+ - **奇门宫位条件**:门迫只认同宫内「门五行克宫五行」,宫克门是「宫制门」不为迫;六仪击刑按月支相刑定宫(甲子戊震三、甲戌己坤二、甲申庚艮八、甲午辛离九、甲辰壬巽四、甲寅癸巽四),三奇入墓按五行墓库定宫(乙木墓未→坤二、丙丁火墓戌→乾六)。这三项只判**天盘**、只作宫位条件,不自动断用神受制,也不打分排序
218
+ - **奇门旺衰**:八门、九星与天盘干(三奇六仪)按月支五行判旺相休囚死(同气旺、月令所生相、生月令休、克月令囚、被月令克死),只报力量强弱不折吉凶;门旺而宫克门仍受宫制。
219
+ - **六爻用神旺衰**:月建按月支五行定五态(同气旺、月令所生相、生月令休、克月令囚、被月令克死),日辰定五关系(日生/日克/比和/泄/耗),月建冲爻标月破、日辰冲静爻标暗动、冲旬空标冲空;只报状态标签,不折成分数,全卦逐爻旺衰仍未做
220
+ - **奇门干宫生克**:天盘干(三奇六仪)与所落宫五行的关系另算一层——干克宫/宫克干/干生宫/宫生干/比和,与门宫关系并列各说各的、不折成一个分数;十干克应(天盘干加地盘干的 100 组)仍未做
221
+ - **六爻化进化退**:只按「同五行地支顺次」定方向(木 寅→卯、火 巳→午、金 申→酉、水 亥→子,土 丑→辰→未→戌→丑 成环),同五行不相邻不算;只说这一爻的向外趋势,不叠月建日辰算力重,也不据此断吉凶。土的进退次序各家说法不完全一致
222
+ - **八字交运日**:交运时刻 = 出生时刻 + 「出生到起运侧节令」的真实天数 × 365.2422/3,顺排数到下一节、逆排数到上一节;同一条比例即古法「三日折一年、一日折四月、一时辰折十日」。每步大运在同月同日同时刻换,闰日退位。一年取回归年 365.2422 日——按 360 日折算的流派会差一两天,`dayun.jiao.yearDays` 把这个口径写进了结果
223
+ - **六爻用神**:只落到「哪一爻是用神、它与卦体/动变/旬空什么关系」这一层——不叠月建日辰判旺衰力重,用神两现时把候选都列出来而不代选,伏神只写出伏于何爻与飞伏生克,不出出伏的具体日期与应期
224
+ - **十六型人格**:MBTI **风格**的自建问卷,不是官方 MBTI 量表——题目、计分与常模都是本插件自己的,不与任何商业量表对齐;四维净分 =(分数 − 3)× 侧向求和,平手按 I / N / F / P 取并标「临界」,强度是按「净分 / (答数 × 2)」分的四档,不代表任何总体分布。结果只作自我参照,不用来评价他人能力、做招聘或临床判断
225
+ - **入参**:日期按月份天数与闰年校验(`1990-02-30` 直接报错,不滚到下个月);八字/紫微/合盘的性别必填(性别决定大运大限顺逆,不做默认);六爻爻值必须正好 6 个,留空才随机摇卦。非法入参带错误码返回(`E_INPUT` / `E_LINES` / `E_COUNT` / `E_ASOF` / `E_PARTNER`),不静默改成另一个盘
226
+ - **对拍**:历法对 NAOJ 历要项与 ICU 抽样的农历;流派规则对典籍通例——六爻八宫卦序与世应(京房)、六壬日干寄宫与中气换将(《大六壬指南》)、紫微纳音定五行局与紫微天府相照(《紫微斗数全书》);另有《增删卜易》9 条与《卜筮正宗》**128 条**原文卦例(93 条本卦→变卦 + 35 条静卦)。期望值在 `test/fixtures/classics.json`,出处见其 `meta.sources`,卦例原始数据与排除理由在 `tools/data-boshizhengzong.mjs`。卦例只取原文能稳定读出的字段:卦名、卦宫、缺爻(伏神)、动爻**个数**(与原文 x/○ 标记数核对过)、有日期的旬空;**动爻在哪一爻**不录——卦象表在 PDF/DOCX 里串行,硬解析等于造数据
227
+
228
+ ## 数据与隐私
229
+
230
+ - 全部计算在本地完成
231
+ - **默认不联网**:地址只查内置坐标表(最细到地级市,足够真太阳时)。只有把 `geocode` 设为 `online`(面板上勾「联网精确到区县」)才会把出生地原文发给 OpenStreetMap Nominatim,用于精确到区县/路名;失败即回退内置表,同一地址 6 小时内不重复请求
232
+ - 不收集、不上传任何其他数据
233
+
234
+ ## 开发
235
+
236
+ ```bash
237
+ npm run build # 生成 client.js(浏览器端产物)
238
+ npm run build:html # 生成独立的 命理排盘.html(可离线双击使用),默认写到工作区根目录
239
+ # 想同时更新别处的拷贝(例如桌面那份):node tools/build-html.mjs --out "C:\Users\<你>\Desktop\命理排盘.html"
240
+ npm test # 顺序跑完 test/ 下全部 *.test.mjs 并汇总
241
+ npm run test:ci # 构建 + 产物自检 + 回归 + 断言基线 + 测试自检 + HTML 注入面 + 工程约定(CI 跑的就是这条)
242
+ npm run test:baseline # 断言数确实要减少时,显式重建基线
243
+ npm run check:html # 单独跑 HTML 注入面扫描
244
+ npm run check:patterns # 单独跑工程约定检查
245
+ npm run release # 测试 → 构建 → 校验产物 → 发 npm(token 从 NPM_TOKEN 读)
246
+ ```
247
+
248
+ 也可以直接调脚本:`node tools/build-client.mjs`、`node tools/build-html.mjs`、`node tools/check-bundle.mjs`、`node tools/test-all.mjs`、`node tools/check-assertions.mjs`、`node tools/verify-tests-can-fail.mjs`、`node tools/check-html-sinks.mjs`、`node tools/check-patterns.mjs`、`node tools/release.mjs`。
249
+
250
+ **测试的七道闸**:
251
+
252
+ 1. `test/_harness.mjs`——任何一条 `ok()` 失败都让进程非零退出(此前 9 个文件只打印不失败,全量"全绿"没有意义)
253
+ 2. `test/assertion-baseline.json`——每个文件的 PASS 条数低于基线即失败,防止"删断言让测试变绿"
254
+ 3. `tools/verify-tests-can-fail.mjs`——故意写错一条断言,必须真的变红,防止第 1 条被改回去
255
+ 4. `tools/check-html-sinks.mjs`——`innerHTML` 里拼接的量必须经过白名单转义函数,否则 CI 直接红
256
+ 5. `tools/check-patterns.mjs`——engine 不得引用浏览器/Node API 与 `console`,不得用 `var`/`debugger`,`new Date()` 与 `Math.random` 只允许出现在白名单文件
257
+ 6. `test/fuzz.test.mjs`——固定种子的随机生日扫射八个排盘体系,覆盖边界日期、参数矩阵与"同参数必得同结果"
258
+ 7. `tools/check-bundle.mjs`——产物必须在**宿主形态**下能编译能跑:读 `client.js` 原文逐模块编译、模拟 `__ModuleLoader__` 执行 factory、校验 IIFE 收口与不可见分隔符,并要求产物与源码重构建逐字节一致(2026-10-25 的启动崩溃就是 Node 侧全绿、Chromium 侧语法错,这道闸专门守这个缝)
259
+
260
+ `client.js` 是构建产物,不要手改;改动记录见 [CHANGELOG.md](CHANGELOG.md)。
261
+
262
+ ### 发版
263
+
264
+ ```bash
265
+ # 先在 npm 生成 Granular Token:Read and write + 勾 Bypass 2FA
266
+ NPM_TOKEN=npm_xxx npm run release # 正式发布(会先跑测试与构建校验)
267
+ NPM_TOKEN=npm_xxx npm run release -- --dry-run # 只校验不发布
268
+ NPM_CLI=/path/to/npm-cli.js NPM_TOKEN=... npm run release # 本机没有 npm CLI 时
269
+ ```
270
+
271
+ 脚本会拦下:工作区不干净、`client.js` 未随源码重建、registry 上已有同版本;发布后自动核对新版本与 `dist-tags`,并提示补 `git tag`。
272
+
273
+ ### 样式命名约定
274
+
275
+ 面板的 CSS 是以 `<style>` 注入到宿主页面的,**没有 shadow DOM 隔离**,所以每个类名都带命名空间前缀,避免和宿主页面的同名元素互相染色:
276
+
277
+ | 前缀 | 归属 |
278
+ |---|---|
279
+ | `pp-` | 紫微盘骨架(宫格、宫位选中、三方四正、身宫) |
280
+ | `bz-` | 四柱八字表(干支大字、藏干、十神、五行旺衰) |
281
+ | `dt-` | 宫位详情面板 |
282
+ | `flow-` | 流月 / 流日 / 流时 |
283
+ | `ct-` / `ft-` | 盘心 / 盘脚 |
284
+ | `mp-` | 各模块根容器:`mp-it`(解析)、`mp-dl`(六壬)、`mp-hy`(六爻)、`mp-mh`(梅花)、`mp-tt`(塔罗)、`mp-hex`(爻线)、`mp-trib`(体用) |
285
+ | `hb-` / `tritag-` | 卦盒 / 体用标签 |
286
+ | `dl-` / `ss-` / `ssx-` / `ssg-` | 六壬盘块 / 神煞族 |
287
+ | `ask-` | 所问之事回显 |
288
+
289
+ 两条硬规矩:
290
+
291
+ - **不用泛词做类名**(`.body`、`.big`、`.s`、`.p`、`.on`、`.it` 这类)。名字越泛,越容易在同一个文件里被两处语义共用——本项目已经栽过两次:`.pp-body` 同时是「整块视图容器」和「身宫格」,一次导致身宫整格消失,另一次的 `::after` 残骸在页面左上角飘出一个孤立的「身」方块。
292
+ - **模块根类名必须带前缀**。裸用的 `.it` / `.dl` / `.hy` 一旦注入全局,宿主页面的同名元素会被一起改写。
293
+
294
+ *2026-10 做过一轮全量整改:199 个类名按语义分组补齐前缀(约 540 处替换),计算逻辑一行未动,20 组断言与全量视口扫描全绿。*
295
+
296
+
297
+ ## 致谢
298
+
299
+ 本插件的十套速查体系(农历互转为自有实现)在**能力范围**上参考了同生态的 [dsh-xuanji(玄机阁)](https://github.com/huangziyuan-general/dsh-xuanji)(MIT):黄历、择日、称骨、小六壬、星座、生命数字、人生 K 线、风水、起名。
300
+ **实现是独立的**:没有拷贝对方源码,也没有引入它的依赖(iztro / lunar-javascript),全部按行为规格用本项目的 calendar / lunar / dst 模块重写,并逐项与公开通行表或 lunar-javascript 对拍(称骨表的初版错误就是这样查出来的)。特此致谢。
301
+
302
+ 《子平真诠》《滴天髓》的原文摘句取自 [中华典藏网](https://www.diancang.xyz/)(古籍,public domain),照录通行本、附章名与链接;释义为白话自撰。
303
+
304
+ 《穷通宝鉴》120 格的原文摘句取自 [luckclub.cn](https://www.luckclub.cn/bazi/004/)(古籍,public domain),用神顺序参考 [knowyourbazi.com](https://knowyourbazi.com/zh-hans/qiongtong/) 的整理表;两者逐格对读,原文全章未见某个用神字时(如八月丁火的「丙」),数据里直接标了 note 说明「按整理表录入、待以善本核对」,没有替它圆场。
305
+
306
+ ## License
307
+
308
+ MIT
309
+