dsh-metaphysics 0.58.0 → 0.59.1

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.
@@ -0,0 +1,123 @@
1
+ // 能力边界:这个插件不回答什么。
2
+ //
3
+ // 写这份清单的理由很具体:命理产品最容易犯的错不是算错,是让用户以为它能回答所有问题。
4
+ // 所以每条都要对应一处**真实的实现状况**,不是免责话术——
5
+ // 「我们可能不准」这种句子没有信息量,用户看完还是不知道该信哪部分。
6
+ // 有用的写法是:这条为什么做不到、做到哪一步就停了、停在哪里的依据是什么。
7
+
8
+ /**
9
+ * 通用边界:所有体系都适用。放在清单最前面,因为它比任何单条技法边界都重要。
10
+ */
11
+ export const UNIVERSAL_LIMITS = [
12
+ {
13
+ id: 'validity',
14
+ title: '任何技法的预测效度都未经检验',
15
+ text: '能被复核的只有形式层——纳甲、干支关系、十神、宫位这类可由程序重算的部分,错了能查。解释层是各派通行说法,本插件不声称它比别的说法更准,也没有做过能被别人重复的验证。',
16
+ },
17
+ {
18
+ id: 'same-chart',
19
+ title: '同盘不同命,本插件不解决',
20
+ text: '同一个四柱、同一张命盘对应无数人,从盘面推不出具体某一个人。这是模型的硬缺陷,不是样本不够——换个更大的样本也补不上。所以本插件给的是「这一类盘常见的结构」,不是「你会怎样」。',
21
+ },
22
+ {
23
+ id: 'advice',
24
+ title: '不给医疗、法律、投资建议',
25
+ text: '不做疾病诊断与用药建议,不判诉讼胜负,不做买卖与借贷决策。三类问题都有各自的专业判断标准,盘面推不出它们。',
26
+ },
27
+ ];
28
+
29
+ /**
30
+ * 按体系的能力边界。system 为 null 时返回通用三条。
31
+ * 每条都应能追到 engine 里的实际实现,改实现时同步改这里。
32
+ */
33
+ export const SYSTEM_LIMITS = {
34
+ liuyao: [
35
+ {
36
+ id: 'liuyao-no-date',
37
+ title: '应期不给公历日期',
38
+ text: '只给地支与快慢档(偏速/偏缓/待解/未定),不折算成「某月某日」。原因不是保守:应期可取逢值、逢冲、逢合、出空、填实多种,任一种都能事后对得上,折算成日期只是把不确定性藏进一个具体数字里。回测 15 条规则命中 51.7%,平均要给 3.55 个候选支(随机基线 29.6%)——高于随机,但撑不起一个具体日期。',
39
+ },
40
+ {
41
+ id: 'liuyao-yongshen',
42
+ title: '用神多现时,不替你选',
43
+ text: '卦中用神两现时,插件把候选都列出来,不代选。取哪一个直接决定断语方向,各家取舍标准不一,替选等于把一派之见说成唯一答案。',
44
+ },
45
+ {
46
+ id: 'liuyao-zhi-date',
47
+ title: '「某支应事」不等于「那天会发生」',
48
+ text: '地支只标方向与快慢,不承诺落点。同一支在一天里对应两个时辰、在一个月里对应多个日子,具体哪一天,本插件不判。',
49
+ },
50
+ {
51
+ id: 'liuyao-liuyue',
52
+ title: '不推演流月推进后的二次变化',
53
+ text: '应期按「当下一个月建 + 日辰」静态算,不模拟下一个月到来后「原来的合被冲开、原本被制住的爻复起」这类连锁。实占里有反例:用神伏藏、本来可靠日辰冲开,但进入下个月建后一冲解掉了原月建对制它之爻的合,制者复起,出伏失败,事情没成。跨月推演还没做,所以应期只能作「该留意哪几支」,不能承诺某个月份。',
54
+ },
55
+ ],
56
+ bazi: [
57
+ {
58
+ id: 'bazi-hour-unknown',
59
+ title: '时辰未知时,只给三柱,不给紫微与合盘',
60
+ text: '不知道出生时辰时,本插件不排时柱,起运按日估算,并把「时柱按正午暂算」写在结果第一行。紫微(命宫由生月与生时支定)与合盘(夫妻宫、大运都依赖时支)一律不出盘——不是保守,是这两套离了时支就不成立,硬排出来只是看着像盘。',
61
+ },
62
+ {
63
+ id: 'bazi-no-event',
64
+ title: '不预测具体年份的事件',
65
+ text: '不判「哪年结婚」「哪年升职」「哪年发财」。岁运并临、运年反吟、伏吟这类只作变动提示、不断吉凶——这些格局在十年里会反复出现,按它们断事,等于每年都能找到一次「应验」。',
66
+ },
67
+ {
68
+ id: 'bazi-strength',
69
+ title: '旺衰是分档,不是评分',
70
+ text: '旺衰按五行分量与月令得令情况分档,给出的百分比是相对权重,不是命理学的定量指标。各家对「几分算旺」没有共识,本插件不把档位差当成精确结论。',
71
+ },
72
+ {
73
+ id: 'bazi-huagi',
74
+ title: '化气格的真化,仍缺对拍',
75
+ text: '化气格成立条件各家宽严不一(是否要求月令为化神、日主是否允许有根),本插件按从严一路判,并把条件与原文并列摆出;真化/假化的判定还没有实盘对拍集。',
76
+ },
77
+ ],
78
+ ziwei: [
79
+ {
80
+ id: 'ziwei-feixing',
81
+ title: '飞星层只报路径,不判吉凶',
82
+ text: '飞星能做到单一支化逐宫追到成环、三方四正按落宫归堆,但串连与复合飞化叠上大限流年之后的力重还没定,所以只报走到哪、不判好与不好。',
83
+ },
84
+ {
85
+ id: 'ziwei-poge',
86
+ title: '格局只判成立,破格条件未做',
87
+ text: '34 条格局按独立谓词逐条复算过成立条件,但「什么情况下这条格局不算」各家破法不一,需先定底本,所以现在只判成不成立。',
88
+ },
89
+ ],
90
+ meihua: [
91
+ {
92
+ id: 'meihua-waiying',
93
+ title: '不取外应',
94
+ text: '只按时间/数字起卦,用体用生克与互变卦推演。外应(当时的声音、来人衣着、路上所见)不纳入——那部分的解释空间几乎没有边界,纳入后任何结论都能凑出来。',
95
+ },
96
+ ],
97
+ daliuren: [
98
+ {
99
+ id: 'daliuren-yingqi',
100
+ title: '三传只给结构,应期未做',
101
+ text: '四课三传按通行起法给出,天将、六亲、旺衰并列;具体应期推演尚未实现,不据此判时间。',
102
+ },
103
+ ],
104
+ qimen: [
105
+ {
106
+ id: 'qimen-bamen',
107
+ title: '八门九星入墓未做',
108
+ text: '十干克应与六仪入墓已按通行口径上,八门、九星入墓各家说法不同、需逐条核,暂不实现;用神落宫与击刑入墓的联动只并列条件、不推结论。',
109
+ },
110
+ ],
111
+ tarot: [
112
+ {
113
+ id: 'tarot-claim',
114
+ title: '牌义取通行义,不做个人化解读',
115
+ text: '按牌阵位置与正逆位给通行牌义,不做联想式延伸。牌阵与问题的对应关系由你确定,插件不替你判断「该抽几张」「该问什么」。',
116
+ },
117
+ ],
118
+ };
119
+
120
+ /** 取某体系的边界清单:通用三条 + 该体系条目 */
121
+ export function limitsFor(system) {
122
+ return [...UNIVERSAL_LIMITS, ...(SYSTEM_LIMITS[system] || [])];
123
+ }
package/engine/liuyao.js CHANGED
@@ -67,6 +67,10 @@ const ZHI_CHONG_PAIRS = [['子', '午'], ['丑', '未'], ['寅', '申'], ['卯',
67
67
  const ZHI_HE_PAIRS = [['子', '丑'], ['寅', '亥'], ['卯', '戌'], ['辰', '酉'], ['巳', '申'], ['午', '未']];
68
68
  const CHONG_OF = Object.fromEntries(ZHI_CHONG_PAIRS.flatMap(([a, b]) => [[a, b], [b, a]]));
69
69
  const HE_OF = Object.fromEntries(ZHI_HE_PAIRS.flatMap(([a, b]) => [[a, b], [b, a]]));
70
+
71
+ // 应期规则要算「冲开/合住」,但表只有这一份:导出成函数,别让第二个模块再抄一张表
72
+ export const chongOf = (branch) => CHONG_OF[branch] || null;
73
+ export const heOf = (branch) => HE_OF[branch] || null;
70
74
  const TRIGRAM_OPPOSITE = { 乾: '巽', 巽: '乾', 坎: '离', 离: '坎', 艮: '坤', 坤: '艮', 震: '兑', 兑: '震' };
71
75
 
72
76
  // ── 化进神 / 化退神 ────────────────────────────────────────────────