dsh-metaphysics 0.68.0 → 0.70.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/CHANGELOG.md CHANGED
@@ -1,5 +1,71 @@
1
+ ## 0.70.0(2026-11-12,已发布)
2
+
3
+ > 本段主题:太乙补齐五层
4
+
5
+ - **太乙神数:四计 + 格局全解 + 古法吉凶**(`engine/taiyi.js`、`engine/index.js`、`engine/plain-summary.js`、`src/panel-kit.js`、`src/app.js`、`test/taiyi.test.mjs`):
6
+
7
+ > 上一版做到「太乙、八门、文昌、计神、始击、主客算与四将」。这一版按《太乙金镜式经》(四库全书本)卷一补齐月计、日计、时计,并把格局判据按《淘金歌》改正;另加一层「古法吉凶」,只照卷一《推太公考时法》的位置判据说话。
8
+
9
+ ### 新增
10
+ - 月计:积月 = ⌊积年 × 章月 8726 ÷ 章岁 657⌋;太乙按积月取 24 局余推宫(三年一宫、不入中五),天目按积月 mod 18 起武德顺行十六神,计神按积月 mod 60 从寅逆数。
11
+ - 日计:积日 = ⌊积月 × 月法 2447 ÷ 日法 49⌋,太乙、天目、计神同上换成积日。
12
+ - 时计:以上年冬至为天正,时实 =(冬至积日 − 1)× 12 + 时辰序;阳遁计神起寅逆、阴遁起申逆。用现代节气定冬夏至,不用唐代气法常数,与卷一古历口径差几日,文案里写明。
13
+ - 卦象吉凶:用卷一《推太公考时法》的原词分四档——**大吉**(阴阳和顺、八种相犯全无,且八门值开/休/生,即卷一所谓「吉道」)、**吉**(和顺、无相犯,八门不在开休生)、**不和**(无相犯但有一算落重阳/重阴)、**凶**(命中掩、击、格、对、提、迫、囚、关任何一犯)。只报符号与一句依据,不写「成 / 不成」,也不解释现实结果。卷一另有「大利」「利以行兵」「先吉后凶」,要五将与神将同参,这一层没有做,卡片上写明。
14
+ - 定目:「为客最难详定计,便以合神加太岁」——把与太岁六合的那一支搬到太岁宫,天目(文昌)随盘整体位移,落点即定目。
15
+ - 三基:君基三十年一移、臣基三年一移,都从午起;民基一年一移,从戌起,顺行十二支。
16
+ - 五福:四十五年移一位,上元甲子起一宫,次序 乾一 → 艮三 → 巽九 → 坤七 → 中五。
17
+ - 大游:三十六年移一位,上元甲子起七宫,逆数 七 → 六 → 四 → 三 → 二 → 一 → 九 → 八。
18
+ - 十精其余五位:天乙、地乙、直符、四神(九宫接绛宫、明堂、玉堂共十二位)、小游,都三年一移。
19
+ - 阴阳数和:八、三、四、九为阳宫,二、七、六、一为阴宫;阳宫得奇数为重阳、阴宫得偶数为重阴,都属不和;另判上和(14、18)、次和(23、29、32)、下和(12、16、27、34、38)。
20
+ - 格局由五种扩到八种:掩、击、格、对、提、迫、囚、关;「关」只判主客之间相犯。
21
+ - 盘面多四行——定目与三基、五福与大游与十精、数和、月日时三计与吉凶判定。
22
+ - 盘面正下方加白话总解:一句主句(太乙在哪、值什么门、判什么档)+ 三句读法(太乙是主的位置、门管三十年、为什么判这一档),落宫/八门/四计等术语细目收进 `<details>`,默认折叠;八种格局各配一句白话。
23
+ - `panel-kit` 的 `PP.CSS` 补齐 `mp-ty` / `mp-wl` / `mp-cs` 三套结果卡样式(此前只写在面板的 `CSS` 里,独立页拿到的是无样式的竖排文本)。
24
+ - 神将层:《推太乙当时法》借六壬十二神看四将落位,按日干起贵人(甲戊庚丑未、乙己子申、丙丁亥酉、壬癸巳卯、辛午寅),卯至申用昼贵、酉至寅用夜贵,贵人临亥子丑寅卯辰顺行、临巳午未申酉戌逆行;四将与文昌、始击按后天八卦取生支查神,再与位置层合成原书判辞——凶 / 不和 / 吉 / 大吉 / 大利 / 先吉后凶。
25
+ - 阴阳遁改按交节判:冬至到次年夏至为阳遁,夏至到冬至为阴遁。此前固定阳遁,夏至之后半年的落宫与文昌都会错。。
26
+
27
+ ### 修正
28
+ - 「迫」改为「文昌或四将在太乙前后」(原实现按始击在太乙下一宫,那其实是「击」)。
29
+ - 「格」改为「太乙与始击相望」(对宫),不再按客参将落对宫判。
30
+ - 新增「对」(文昌冲太乙宫)与「提」(客大将与文昌同宫)。
31
+ - 古例对拍口径统一到本引擎积年(604 年 = 10154521),两套积年差 8217360,能被 18 / 24 / 60 / 72 / 360 整除,同余。
32
+
33
+ ### 测试
34
+ - `test/taiyi.test.mjs`(168 → 264 条):月计积月与落宫、日计积日与天目、时计阳阴遁、四计不落中五、吉凶四档(凶 / 不和 / 吉 / 大吉,皆为卷一原词)与文案不含成败断语、定目六合表、三基位移、五福与大游次序、十精五位、阴阳数与三张数表、八种格局构造用例、渲染层四行、引擎文案六行。
35
+
36
+ ### 已知
37
+ - 按冬至夏至交节判,冬至 / 夏至交节判遁没做(`dunOf` 仍返回 `'yang'`)。
38
+ - 时计用现代节气定冬夏至,不用卷一的气法常数(33193 / 辰法 3682),与古历口径有几天差。
39
+ - 四神只给位次,没有拆成本身与绛宫、明堂、玉堂的十二位全序。
40
+ - 胜负断辞、三旗五将不做;吉凶按卷一位置判据给原词四档(凶 / 不和 / 吉 / 大吉),不是预测,也不写成成败断语;「大利」「利以行兵」「先吉后凶」要五将与神将同参,未做。
41
+ - 将落中五时只标数、不加宫名(中五无对宫)。
42
+
43
+ ## 0.69.0(2026-11-12)
44
+
45
+ > 本段主题:首屏做减法——二十二套还在,但分组只推荐 20 个,每组只露 4 个
46
+
47
+ - **首屏减法:分组 20 个、每组露 4 个**(`src/groups.mjs`、`src/app.js`、`tools/build-html.mjs`、`README.md`):
48
+
49
+ > 本段主题:卡越铺越多,第一次来的人反而更不知道点哪个。这版把「分组」当精选入口收紧到 20 个,每组只露前 4 项,其余折进「还有 N 个」——宽屏窄屏同一口径,折叠不再是手机专利。星座与生命数字退出分组(它们和干支五行不同源),但平铺视图 22 个 tab 一个不少。
50
+
51
+ ### 改动
52
+ - 分组从 22 项收到 20 项,三组重新配平:问一件事 6(六爻 / 梅花 / 塔罗 / 奇门 / 六壬 / 小六壬)、看一个人 7(八字 / 紫微 / 合盘 / 人格 / 体质 / 称骨 / 人生K)、查日子 7(黄历 / 择日 / 农历 / 运气 / 太乙 / 风水 / 起名)。
53
+ - 折叠从「只在窄屏(容器 ≤560px)」改成全局:每组第 5 项起默认收起,「还有 N 个」常驻可见;面板与独立页两套样式同步。
54
+ - 星座 `star` 与生命数字 `numerology` 只从分组下线,TABS、平铺视图、工具 schema 与引擎一概不动——想用随时切「平铺」,不删功能只减噪音。
55
+ - 人生K `trend` 保留在「看一个人」:它和大运流年同属干支主干,不是另一套体系硬塞进来的。
56
+
57
+ ### 测试
58
+ - `test/first-screen.test.mjs`(46 条)与 `test/panel-first-screen.test.mjs`(41 条)改成按新口径断言:三组、20 项、分组是平铺的真子集、分组刻意不含 `numerology`/`star`、第 5 项起隐藏是全局规则、桌面端也折叠。
59
+ - `tools/e2e-dom.mjs` 的 `openTab` 改成三级兜底(可见项 → 展开所属分组的「还有 N 个」→ 切平铺再点),修掉"被折叠的 tab 点不到"导致的 TimeoutError;`tools/e2e-panel.mjs` 加 `openTool()` 统一处理同一件事。
60
+ - 断言基线 9879 → 9881(177 文件不变);e2e-dom 152 项、e2e-panel 150 项全绿。
61
+
62
+ ### 已知
63
+ - 「分组 / 平铺」的选择仍记在本机;换浏览器或清缓存会回到分组视图。分组只影响首屏推荐,不影响任何体系能不能用。
64
+
1
65
  ## 0.68.0(2026-11-12,已发布)
2
66
 
67
+ > 本段主题:三个新体系(中医体质 / 五运六气 / 太乙神数)+ 面板一键起卦 + 结果区盘面优先
68
+
3
69
  - **太乙神数:积年推局,太乙落宫**(`engine/taiyi.js`、`engine/index.js`、`engine/plain-summary.js`、`src/panel-kit.js`、`src/app.js`、`src/web-ui.js`、`src/groups.mjs`、`tools/build-html.mjs`、`tools/build-client.mjs`、`test/taiyi.test.mjs`):
4
70
 
5
71
  > 本段主题:第 22 个体系是象数盘,不是命盘。按积年推局(积年 = 公元年 + 10153917,残年取 360 的余数,再取 72 的余数得局数),局数二十四局一周、三年一宫、不入中五宫,阳遁自乾一宫顺行、阴遁自巽九宫逆行,判出太乙落在哪一宫、理天理地理人;另配八门(三十年一转)与文昌(十八年一周)。它给的是「位置对位置」的结构,不做吉凶断语。
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  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.
6
6
 
7
- 给 DeepSeek Harness 用的**玄学命理**插件:**四柱八字、紫微斗数、六爻纳甲、梅花易数、大六壬、奇门遁甲、合盘、塔罗牌**八大排盘体系,外加**黄历、农历(公农历互转)、择日、称骨、小六壬、星座、生命数字、人生K线、风水、起名、十六型人格**十一套速查,同时提供 Agent 工具与 Web 面板。
7
+ 给 DeepSeek Harness 用的**玄学命理**插件:**四柱八字、紫微斗数、六爻纳甲、梅花易数、大六壬、奇门遁甲、合盘、塔罗牌**八大排盘体系,外加**黄历、农历(公农历互转)、择日、称骨、小六壬、星座、生命数字、人生K线、风水、起名、十六型人格、中医体质、五运六气、太乙神数**十四套速查与自评,一共二十二套体系,同时提供 Agent 工具与 Web 面板。
8
8
 
9
9
  > 传统命理与占卜属文化娱乐用途,不构成医疗、投资、法律或生死判断的依据。
10
10
 
@@ -126,7 +126,7 @@ Chinese metaphysics (玄学 / xuanxue) for [DeepSeek Harness](https://github.com
126
126
 
127
127
  ### 速查十二件(almanac / convert / zeri / chenggu / xiaoliuren / star / numerology / mbti / constitution / trend / fengshui / name)
128
128
 
129
- 十二套轻量体系,输入都只要一到几个字段,结果走同一套面板与独立页(tab 由 8 个扩到 20 个),
129
+ 十四套轻量体系,输入都只要一到几个字段,结果走同一套面板与独立页(tab 由 8 个扩到 22 个),
130
130
  速查结果用等宽文本卡渲染,不套命盘模板。**全部本地确定性计算**:同一天、同一输入永远同一结果。
131
131
 
132
132
  - **黄历 `almanac`**:农历、四柱干支(年柱按立春、月柱按节)、建除十二神、宜忌简表、冲煞、上一/下一节气、每日一卦,以及**值日十二神(黄道/黑道)、十二时辰吉凶(五鼠遁干支 + 时家十二神)、二十八宿、胎神、财神/喜神/福神/阳贵/阴贵方位、日柱纳音、六合三合吉配生肖**;值日神/二十八宿/胎神/吉神方位与 lunar-javascript 逐日对拍。`scope` 明写未收录逐日全量吉凶神煞与彭祖百忌
@@ -143,7 +143,7 @@ Chinese metaphysics (玄学 / xuanxue) for [DeepSeek Harness](https://github.com
143
143
 
144
144
  - **中医体质 `constitution`**:九种体质(平和 / 气虚 / 阳虚 / 阴虚 / 痰湿 / 湿热 / 血瘀 / 气郁 / 特禀)各 5 题的自评问卷,共 45 题,按 1(没有)到 5(总是)打分。先不带 `answers` 调一次拿到题目,再把 45 个分数按顺序传回(跳过的传 `null`,别缩短数组)。转化分 = (原始分 − 题数) / (题数 × 4) × 100:偏颇质 ≥ 40 判「是」、30–39「有倾向」,平和质要 ≥ 60 且其余八种都 < 30 才算;结果给主质、兼夹、九条横条与调养方向。**不是医学诊断**,只用来对照自己的日常状态。
145
145
  - **五运六气 `wuyunliuqi`**:按「大寒」分运气年(与八字按立春定年柱不同),十干化运定中运太过 / 不及(五音太少),年支定司天与在泉,再切出主运五步(73.05 日一运)、客运五步、主气六步(60.875 日一气)、客气六步,标出此刻落在哪一运哪一气、客主加临属同气 / 顺 / 泄 / 逆 / 从,并判天符 / 岁会 / 同天符 / 同岁会 / 太乙天符。只要一个日期(省略补今天),不用生辰也不看性别;结果第一块是运气年与九步时刻表,当前那一步高亮。气候、脏腑与常见不适都是传统说法的转述,**不是诊断**,也不当天气预报用。
146
- - **太乙神数 `taiyi`**:年家太乙,按积年推局——积年 = 公元年 + 10153917,残年取 360 的余数,再取 72 的余数得局数;局数二十四局一周、**三年一宫、不入中五宫**,阳遁自乾一宫顺行八宫(1→2→3→4→6→7→8→9)、阴遁自巽九宫逆行(9→8→7→6→4→3→2→1),每宫理天 / 理地 / 理人各一年。另配八门(三十年一转,1954 年休门起)与文昌(积年取 18 的余数,阳局自申起、阴局自寅起,路上遇乾、坤各数两次)。只要一个日期,不用生辰也不看性别;结果第一块是九宫地盘(南上北下),太乙那格高亮、文昌带标记。只算到太乙、八门、文昌三个落点:计神 / 始击 / 定目、主算与客算、主客大小将、三基五福十精、掩迫关囚击格都**未收录**,盘面上不显示,也不按它们解读。
146
+ - **太乙神数 `taiyi`**:年家太乙,按积年推局——积年 = 公元年 + 10153917,残年取 360 的余数,再取 72 的余数得局数;局数二十四局一周、**三年一宫、不入中五宫**,阳遁自乾一宫顺行八宫(1→2→3→4→6→7→8→9)、阴遁自巽九宫逆行(9→8→7→6→4→3→2→1),每宫理天 / 理地 / 理人各一年。另配八门(三十年一转,1954 年休门起)与文昌(积年取 18 的余数,阳局自申起、阴局自寅起,路上遇乾、坤各数两次)。第二层再往下推:**计神**(积年取 60 的余数,从寅起逆数)、**始击**(计神加和德之宫,天目随之移)、**主算与客算**(从文昌 / 始击所在沿九宫环顺行累加宫数,天目在正宫按本数、在间神先计一,数到太乙宫前一位)、**大小将与参将**(大将取算数个位、整十归一,参将取大将乘三的个位),以及**掩、击、格、对、提、迫、囚、关**八种位置关系(掩=始击同宫,击=始击在太乙左右,格=太乙望始击,对=文昌冲太乙宫,提=客大将与文昌同宫,迫=文昌或四将在太乙前后,囚=将与太乙同宫,关=主客将同一位)。只要一个日期,不用生辰也不看性别;结果第一块是九宫地盘(南上北下),太乙那格高亮,始击、文昌各带一枚标记。第三层再补齐:**定目**(淘金歌「以合神加太岁」,天目随移)、**三基**(君基三十年一移、臣基三年一移、民基一年一移;君与臣起午、民起戌,顺行十二支)、**五福**(四十五年一位,乾一→艮三→巽九→坤七→中五)、**大游**(三十六年一位,七→六→四→三→二→一→九→八)、**十精**其余五位(天乙、地乙、直符、四神、小游)与**阴阳数和**(八三四九为阳宫、二七六一为阴宫,阳宫得奇为重阳、阴宫得偶为重阴,都属不和;另有上和十四与十八、次和二十三与二十九与三十二、下和十二与十六与二十七与三十四与三十八)。第四层:**月计、日计、时计**(积月 = ⌊积年 × 章月 8726 ÷ 章岁 657⌋,积日 = ⌊积月 × 月法 2447 ÷ 日法 49⌋,时以上年冬至为天正、时实 =(冬至积日 − 1)× 12 + 时辰序;太乙、天目、计神各按自己的周期推宫),以及一层**卦象吉凶**——照卷一《推太公考时法》的位置判据,用原书用词分四档:**大吉**(阴阳和顺、八种相犯全无,且八门值开/休/生,即卷一所谓「吉道」)、**吉**(和顺、无相犯,八门不在开休生)、**不和**(无相犯但有一算落重阳或重阴)、**凶**(命中掩、击、格、对、提、迫、囚、关任何一犯)。只报符号与一句依据,不写「成 / 不成」,也不解释现实结果,**不是预测**;卷一另有「大利」「利以行兵」「先吉后凶」,要五将与天乙十二神同参,这一层没有做,盘面与文案都写明。仍未收录:交节判遁(按冬至夏至交节判)、四神拆成绛宫明堂玉堂的十二位全序、胜负断辞与三旗五将;时计用现代节气定冬夏至,与卷一的气法常数差几日。这些盘面上不显示,也不按它们解读。
147
147
 
148
148
  ### 解析与详解(interpret)
149
149
  「解析与详解」把盘面翻译成能看懂、能照着做的事,覆盖**八字、紫微、六爻、梅花、大六壬、奇门、塔罗**这 7 个体系:结果下方跟一个解析模块,对话工具里加 `withInterpret: true` 即可一并返回。合盘有自己的逐项对照详批、人生 K 线有自己的阶段报告、起名有自己的五格与音韵评估,都不再套一层解析;黄历、择日、称骨、小六壬、星座、生命数字、十六型人格、公农历互转属速查类,也不附解析——对这些体系传 `withInterpret` 不会多出这一段(结果里也不会有 `interpretTier`)。
@@ -230,7 +230,7 @@ dsh plugin install ./dsh-metaphysics-0.17.0.tgz
230
230
 
231
231
  > 独立页(`命理排盘.html`)同样是这二十二个 tab:速查 tab 在左侧展开对应小表单(择日的起算日/事项/天数/属相/候选日、农历的转换方向/农历日期/闰月、小六壬的时间或报数、风水的命卦/门主灶/玄空与坐向、运、兼向度数、飞星日期与时刻(结果都是方位网格:八向标吉凶、玄空九宫列运/山/向三数,替卦与年月日时另列事实行)、起名的评估或生成、十六型人格的分页问卷(4 题一页、1–5 打分,答满 12 题可先看结果));合盘要填双方出生信息、可选八字/紫微两种合盘,勾「三方合盘」再加第三人;奇门用「换局规则」单选组(拆补/超神接气/置闰)与「询问方向」定用神。这份文件与侧栏面板是**各自生成**的两份产物(同一份 `engine/`),随包发布的是仓库根这一份;自己在桌面另存过的话,用 `npm run build:desktop` 一次刷新两处,别手工拷。
232
232
 
233
- > 首屏默认按用途分三组:**问一件事**(六爻/梅花/塔罗/奇门/六壬/小六壬)、**看一个人**(八字/紫微/合盘/人格/称骨/数字/人生K)、**查日子**(黄历/择日/农历/星座/风水/起名),每项带一句白话(如「摇六次,问一件事」);用过的入口会进「最近用过」,最多 3 条。19 个平铺 tab 仍保留,右上角「分组 / 平铺」随时切换,选择记在本机;手机端每组先露 4 项,其余点「还有 N 个」展开。这份分组数据只有一份(`src/groups.mjs`),独立页与宿主侧栏面板在构建时各自取用;侧栏宽度不等同窗口宽度,收纳按容器查询生效。
233
+ > 首屏默认按用途分三组,共 20 个精选入口:**问一件事**(六爻/梅花/塔罗/奇门/六壬/小六壬)、**看一个人**(八字/紫微/合盘/人格/体质/称骨/人生K)、**查日子**(黄历/择日/农历/运气/太乙/风水/起名)——每组只露前 4 项,其余折进「还有 N 个」,宽屏窄屏同一口径;每项带一句白话(如「摇六次,问一件事」),用过的入口会进「最近用过」,最多 3 条。星座与生命数字不进分组(它们是另一套体系的轻娱乐入口,和干支五行不同源),但**平铺视图里 22 个 tab 一个不少**,右上角「分组 / 平铺」随时切换,选择记在本机。这份分组数据只有一份(`src/groups.mjs`),独立页与宿主侧栏面板在构建时各自取用;侧栏宽度不等同窗口宽度,收纳按容器查询生效。
234
234
  > 表单顶部还有一行**一键起卦**:六爻 / 梅花 / 六壬 / 奇门 / 塔罗 / 小六壬六个 chip 折一行放着,点一下就用**起卦当下**排一卦(塔罗不看时间,直接抽牌),所问之事写在下方的输入框里(六爻必填);点中的那一项会高亮。展开后若已有盘,行尾是「把这张盘问进对话」,与结果卡下方那条入口是同一件事。这一行默认收起,展开/收起的状态记在本机——纯布尔,不存任何输入过的出生信息或问题。
235
235
  > 结果卡的第一块永远是**盘面**本身(卦象 / 牌面 / 星盘),起卦时刻、解读、性能与修订、句柄、影子盘、推导链依次排在后面——一屏先看见盘,再看细节;性能与修订这类技术行不再挡在盘面前面。
236
236
 
@@ -330,7 +330,7 @@ npm run build:verification # 重建 docs/verification.html 与 README 徽章(
330
330
  # 存到别处:node tools/build-html.mjs --out "D:\某处\命理排盘.html"
331
331
  npm test # 顺序跑完 test/ 下全部 *.test.mjs 并汇总
332
332
  npm run test:ci # 构建 + 产物自检 + 回归 + 断言基线 + 测试自检 + HTML 注入面 + 工程约定(CI 跑的就是这条)
333
- npm run smoke # 全体系冒烟:19 个 tab × 关键选项 × 边界日期,看「排盘→渲染→文本」三条链有没有崩
333
+ npm run smoke # 全体系冒烟:22 个 tab × 关键选项 × 边界日期,看「排盘→渲染→文本」三条链有没有崩
334
334
  npm run stress # 压测:连续排 200 次(不同日期),查不崩、不漂、缓存不涨、体系不串
335
335
  npm run e2e # 真机回归:单页 19 个 tab + 宿主面板,各点一遍(无浏览器时自动跳过)
336
336
  npm run e2e:panel # 只跑面板那层:真 Chrome + 真 React + 假宿主槽位,43 项