dsh-metaphysics 0.14.2 → 0.14.3
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 +34 -2
- package/README.md +8 -3
- package/client.js +331 -26
- package/engine/daliuren.js +4 -4
- package/engine/geo.js +1 -1
- package/engine/index.js +1 -0
- package/engine/interpret.js +228 -4
- package/engine/liuyao.js +12 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
版本按「一组可感知的改动」发,README 与市场条目描述随能力同步。
|
|
4
4
|
|
|
5
|
-
## 0.14.
|
|
5
|
+
## 0.14.3(未发布)
|
|
6
|
+
|
|
7
|
+
- **经典通例对拍**:新增 `test/fixtures/classics.json` 与 `test/classics.test.mjs`,把典籍里的规则表当作期望值来验实现——
|
|
8
|
+
- 六爻:京房八宫卦序的宫属与世应(八纯上爻、一至五世依次、游魂四爻、归魂三爻),64 卦全表
|
|
9
|
+
- 六壬:日干寄宫(甲寅乙辰丙戊巳丁己未庚申辛戌壬亥癸丑)、中气换将(雨水登明亥将起,12 个中气抽样)
|
|
10
|
+
- 紫微:纳音定五行局、紫微天府以寅申为轴相照
|
|
11
|
+
- 出处与录入方式写在 fixture 的 `meta.sources`,由 `tools/gen-classics-fixture.mjs` 生成,不从引擎输出反推
|
|
12
|
+
- 说明:录入的是**通例表**(规则级),不是某本书的例课原文;例课需要可引用的原文,见 README「对拍」
|
|
13
|
+
- **卦象/牌阵类也给出「依据」**:六爻列本卦/变卦、世应爻位与六亲六神、动爻、日辰、卦宫;梅花列本卦/互卦/变卦、体用与生克、动爻;六壬列课体、三传、月将、旬空与青龙/朱雀/六合/天后/白虎/子孙是否出现;塔罗列牌阵与牌位、主轴牌、正逆位计数与元素分布
|
|
14
|
+
- 至此六个有维度的体系(八字/紫微/六爻/梅花/六壬/塔罗)都能核对依据;奇门走分节形态,事实本就写在 section 正文里
|
|
15
|
+
- **《增删卜易》卦例对拍**:从 PDF 电子本(有文字层)录入 9 条原文卦例——「月建 + 日干支 + 本卦 → 变卦」,出处精确到章(元神忌神衰旺章第十、月将章第十六、日辰章第十七、独发章第三十一、星煞章第三十三、用神元神忌神仇神章第九)。引擎须按 64 卦表还原这一对(名字、翻爻、变卦生成)
|
|
16
|
+
- 《卜筮正宗》(复城道长精校)此前是**扫描版 PDF、无文字层**;这次拿到同一版本的 **docx**(有文字层),从中提取 138 条带「占事」的卦例,99 条卦名可唯一解析,收 19 条进 `boshizhengzong`
|
|
17
|
+
- 每条核对:本卦 → 变卦、卦宫(宫 + 五行,与八宫表互证)、有日期的样本还核旬空
|
|
18
|
+
- 书中「空亡」与通用旬空不一致的例子(丙辰日作戌亥,应为子丑)只记卦名卦宫、不断言空亡;1 条卦宫与八宫表冲突(表格串行)不收,原因写在 fixture 的 `meta.sources`
|
|
19
|
+
- 原文用字保留异体(遯/遁、干/乾),动爻**不录**——原书卦象图在 PDF 里被压成一行,位置不可靠,硬录等于造数据
|
|
20
|
+
- **六爻补旬空**:`buildLiuyao` 现在输出 `xunShou`(旬首)与 `xunKong`(旬空两位),文本摘要多一行「旬首:甲午 旬空:辰巳」;六旬表与「丙辰日空子丑」都有断言
|
|
21
|
+
- **双 UI 收口(第一步)**:新增 `src/core.js`,把「爻值解析」「问事体系」「数字输入」三条规则收成单一来源,`app.js` 与 `web-ui.js` 都改为调用 `window.__MPCore`;构建脚本把 core 一并打进 `client.js` 与独立 HTML
|
|
22
|
+
- 单测 `test/core.test.mjs`(21 条)直接加载浏览器文件验证;`ask.test.mjs` 改为检查「单一来源 + 两端委托」
|
|
23
|
+
- 表单编排(参数拼装)仍各留一份,下一步再收
|
|
24
|
+
- **修合盘面板**:合盘的主方性别/出生地被漏在 `bazi|ziwei` 分支之外——0.14.1 起引擎把性别改为必填,面板点「合盘」会直接报 `你(主方)的gender 必须是 male 或 female`,看起来像"合盘不对"。现在三体系共用同一分支,合盘四柱与单盘一致(实测 庚午 辛巳 丁丑 丁未 对 庚午 辛巳 丁丑 丁未)
|
|
25
|
+
- **奇门进面板**:新增「奇门」tab,起局时刻 + **换局规则**(fieldset + legend + `role="radiogroup"` 的原生 radio:拆补 / 超神接气 / 置闰,附 `details` 说明),`juMethod` 透传给引擎;盘面下新增 `qimenFactsHTML`,用 `dl > div > dt/dd` 列出局数、节气、四柱、值符、值使、旬首、空亡、驿马、换局规则、晚子时——事实与解读区的结论分开,全部走 `esc()`
|
|
26
|
+
- 尚未做(下一步):三栏 Grid 布局、`<template>` 渲染、显式状态机(idle/missing_input/…)、960/1200 断点的布局断言
|
|
27
|
+
- **独立页补齐合盘 / 奇门**:`命理排盘.html` 由六个 tab 变八个
|
|
28
|
+
- 合盘:对方出生日期/时刻/性别/出生地 + 「合盘方式」八字/紫微切换;主方同样带性别与真太阳时,四柱与单盘一致
|
|
29
|
+
- 奇门:换局规则用 `fieldset + legend + role="radiogroup"` 的原生 radio(拆补/超神接气/置闰,附 `details`),加「询问方向(定用神)」;结果 = 九宫盘 + `dl` 事实表 + 分节解读;换规则重起局、换方向只重出解读
|
|
30
|
+
- `build-html` 导出 `page()` 且直接运行时才写盘,`test/standalone.test.mjs` 直接对生成源码做结构断言(24 条)
|
|
31
|
+
- **解析深化:把"怎么推出来的"也写出来**
|
|
32
|
+
- 八字 / 紫微新增四段:**看盘顺序**(月令→旺衰→用神→格局→大运→流年/命宫→三方→四化→大限,逐步引用实际值)、**时间窗**(当前与后续大运 + 近五年流年,带档位与理由)、**交叉校验**(喜忌分量对比、大运与流年同向/反向、调候与扶抑是否一致)、**未纳入**(没算什么、哪些流派差异会改变轻重)
|
|
33
|
+
- 六爻 / 六壬补**看卦/看课顺序**(卦宫→世应→动爻→用神→日辰→变卦;月将→四课→三传→课体→神将)与**未纳入**
|
|
34
|
+
- 这些段落全部由盘面数据推出,不新增断语;`test/deep.test.mjs` 41 条断言校验结构、关键步骤与"无占位值"
|
|
35
|
+
- 测试:44 个文件 / 1147 条 PASS
|
|
36
|
+
|
|
37
|
+
## 0.14.2 —— 口径、复现与性能(已发布)
|
|
6
38
|
|
|
7
39
|
- **1929 年前的节气改用当时的地方时**:`termInstantJd` 与农历共用同一套换算(1929-01-01 前为北京地方平时 UTC+7.7611,之后东八区),并顺手修正切点常量的半天偏移。此前农历切换、节气一律 +8,1929 年前出生者在交节前后约 14 分钟内可能月柱整柱错位
|
|
8
40
|
- **晚子时口径统一**:`lateZi`(八字/六壬)与 `lateZiHourMode`(奇门)互为别名,一个概念不再有两个参数名;四套体系的摘要都会写明实际采用的口径(换日 / 不换日)。默认值保持原样(八字/六壬换日、奇门不换日),不偷偷改盘
|
|
@@ -18,7 +50,7 @@
|
|
|
18
50
|
- **稳定性扫射**:`test/fuzz.test.mjs` —— 用固定种子随机 12 组生日跑遍八个体系,覆盖参数矩阵、边界日期(1600/2400/闰年/1929 切换点)、解析层与"同参数两次结果字节一致"
|
|
19
51
|
- **自刑补齐**:辰午酉亥两柱同见判「自刑」,大运/流年支与原局同支也按自刑处理。此前 `buildRelations` 遇到同支直接跳过,四柱里 3 个辰也不会报刑
|
|
20
52
|
- **权重口径显式化**:五行占比(1/0.5/0.3)与日主通根(1.2/0.6/0.3)各自命名并注明用途——数值未变,只是不再像"同一件事写了两份"
|
|
21
|
-
-
|
|
53
|
+
- **解析加「依据」**:八字与紫微的五个维度各附一行盘面事实(日主旺衰、月令、喜忌、大运流年、宫位主星、煞星),面板渲染 `mp-it-dev`、文本渲染「 依据:…」;卦象类的依据行在 0.14.3 补齐
|
|
22
54
|
- **解析失败不再变空壳**:builder 抛错时面板显示「⚠ 解析生成失败」并把原因转义后带出,文本摘要同样标出;此前只返回一个空 dimensions 的对象,用户看到的是"没有解析"
|
|
23
55
|
- **结构不变量**:`test/invariants.test.mjs` —— 不依赖外部样盘,用"盘面自身必须成立"的性质守算法:紫微 12 宫支互异/大限连续覆盖、奇门八门八神各一次、六十四卦一一对应、四柱纳音与世应合法。金标准只能覆盖少量样盘,不变量对每张盘都成立
|
|
24
56
|
- 测试:39 个文件 / 1011 条 PASS(新增 historical-tz、repro、caliber、tool-geo、fuzz、relations、evidence、invariants 八组)
|
package/README.md
CHANGED
|
@@ -68,7 +68,8 @@ Chinese metaphysics for [DeepSeek Harness](https://github.com/deepseek-ai/deepse
|
|
|
68
68
|
|
|
69
69
|
- **结构化输出**:`{ moduleType, system, title, lead, dimensions[], sections[], disclaimer }`;`moduleType` 为 `natal`(命盘)/ `divination`(卦象)/ `card`(牌阵),`dimensions` 固定五个维度
|
|
70
70
|
- **五个维度**:整体运势、工作与职业选择、事业发展、爱情与感情、健康状况——每项给「解读 + 行动建议」
|
|
71
|
-
-
|
|
71
|
+
- **依据可核对**:每个维度都附一行「依据」,列出这条结论引用的事实——命盘类(八字/紫微)给日主旺衰、月令、喜忌、大运流年、宫位主星与煞星;卦象类(六爻/梅花/六壬)给本卦互卦变卦、世应、动爻、三传四课与神将;塔罗给牌阵、主轴、正逆位与元素分布。面板与文本两条输出路径都会显示
|
|
72
|
+
- **推导可复核**:八字/紫微另有「看盘顺序」「时间窗」「交叉校验」「未纳入」四段——先看什么后看什么、未来几步大运与近五年流年、喜忌分量与运年是否同向、以及这套算法**没有**计算什么;六爻/六壬对应给「看卦/看课顺序」与「未纳入」。这些都从盘面数据推出,不新增断语
|
|
72
73
|
- **卦象**(六爻/梅花/大六壬)额外给:卦名与卦辞大意、爻辞与动爻、体用关系、互卦与变卦、落到生活里
|
|
73
74
|
- **塔罗**额外给:整盘连贯解读(把几张牌串成一条线,避免各张互相矛盾)与牌面结构(大阿卡纳占比、元素分布、正逆位)
|
|
74
75
|
- **文案口径**:第二人称、温和、只给倾向与建议,不作绝对判断;底部保留理性参考的免责提示
|
|
@@ -124,7 +125,9 @@ dsh plugin install ./dsh-metaphysics-0.6.0.tgz
|
|
|
124
125
|
|
|
125
126
|
### 面板
|
|
126
127
|
|
|
127
|
-
|
|
128
|
+
重启后侧栏出现**太极图标**,点开是排盘面板:紫微 / 八字 / 六爻 / 梅花 / 六壬 / 奇门 / 合盘 / 塔罗八个 tab。奇门 tab 里「换局规则」可选拆补、超神接气、置闰;盘面下方用键值表列出局数、值符值使、空亡驿马等事实,与解读区的结论分开。
|
|
129
|
+
|
|
130
|
+
> 独立页(`命理排盘.html`)同样是这八个 tab:合盘要填双方出生信息、可选八字/紫微两种合盘;奇门用「换局规则」单选组(拆补/超神接气/置闰)与「询问方向」定用神。两份文件是**各自生成**的:重新构建后要单独同步你在用的那份拷贝(见「开发」里的 `--out`)。
|
|
128
131
|
|
|
129
132
|
### 深色与导出
|
|
130
133
|
|
|
@@ -142,6 +145,7 @@ dsh plugin install ./dsh-metaphysics-0.6.0.tgz
|
|
|
142
145
|
- **紫微四化**:中州派常用表(庚干作太阳禄、武曲权、太阴科、天同忌)
|
|
143
146
|
- **日主旺衰**:量化算法,非唯一流派
|
|
144
147
|
- **入参**:日期按月份天数与闰年校验(`1990-02-30` 直接报错,不滚到下个月);八字/紫微/合盘的性别必填(性别决定大运大限顺逆,不做默认);六爻爻值必须正好 6 个,留空才随机摇卦。非法入参带错误码返回(`E_INPUT` / `E_LINES` / `E_COUNT` / `E_ASOF` / `E_PARTNER`),不静默改成另一个盘
|
|
148
|
+
- **对拍**:历法对 NAOJ 历要项与 ICU 抽样的农历;流派规则对典籍通例——六爻八宫卦序与世应(京房)、六壬日干寄宫与中气换将(《大六壬指南》)、紫微纳音定五行局与紫微天府相照(《紫微斗数全书》);另有《增删卜易》9 条与《卜筮正宗》19 条原文卦例(本卦→变卦、卦宫、旬空)。期望值在 `test/fixtures/classics.json`,出处见其 `meta.sources`。规则表是**规则级**录入,卦例只取原文能稳定读出的字段;动爻位置不录(PDF/DOCX 的卦象表串行,硬解析等于造数据)
|
|
145
149
|
|
|
146
150
|
## 数据与隐私
|
|
147
151
|
|
|
@@ -153,7 +157,8 @@ dsh plugin install ./dsh-metaphysics-0.6.0.tgz
|
|
|
153
157
|
|
|
154
158
|
```bash
|
|
155
159
|
npm run build # 生成 client.js(浏览器端产物)
|
|
156
|
-
npm run build:html # 生成独立的 命理排盘.html
|
|
160
|
+
npm run build:html # 生成独立的 命理排盘.html(可离线双击使用),默认写到工作区根目录
|
|
161
|
+
# 想同时更新别处的拷贝(例如桌面那份):node tools/build-html.mjs --out "C:\Users\<你>\Desktop\命理排盘.html"
|
|
157
162
|
npm test # 顺序跑完 test/ 下全部 *.test.mjs 并汇总
|
|
158
163
|
npm run test:ci # 回归 + 断言基线 + 测试自检 + HTML 注入面 + 工程约定(CI 跑的就是这条)
|
|
159
164
|
npm run test:baseline # 断言数确实要减少时,显式重建基线
|