From 066c59bee3fc0d3930ea5c9400601c2befdabd0a Mon Sep 17 00:00:00 2001 From: 732642856 <732642856@qq.com> Date: Thu, 11 Jun 2026 11:28:31 +0800 Subject: [PATCH] =?UTF-8?q?v6.1.11:=20Solar/Lunar=20Yogas=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=20+=20=E5=85=A8=E9=87=8F=E7=A2=8E=E7=89=87=E5=AE=A1?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 从Git dangling commit f19369c恢复遗失代码: - scripts/yoga_engine.py: 新增_detect_solar_lunar_yogas() - Solar Yogas: Veshi/Voshi/Ubhayachari (太阳第2/12宫判断) - Lunar Yogas: Sunapha/Anapha/Durudhura (月亮第2/12宫判断) - technique_registry: 新增solar_lunar_yogas条目 (covered) 全量碎片审计完成(28个文件 + Git + Desktop + Downloads + auto-generated) - Brain: 5份P0文件提取待整合 - Git: 7个dangling commits确认 - f19369c代码已恢复,其余自然吸收 - New open-source: 12个项目发现 (vedic-calc/vedic-astro-skills/VedicAstro等) --- CHANGELOG.md | 23 +++++++-- references/technique_registry.json | 20 ++++++++ scripts/yoga_engine.py | 75 +++++++++++++++++++++++++++++- 3 files changed, 113 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76d0a189..ace3ca76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ # 印度占星 Skill 更新日志 -## v6.1.11(2026-06-10)—— Chara Dasha 重写:KN Rao Method(P0 完成) +## v6.1.11(2026-06-10)—— Chara Dasha KN Rao Method + 遗失Solar/Lunar Yogas恢复 + 文件碎片审计 -> **目标**:把第七轮 benchmark 确认的严重性能差距(Chara Dasha 仅 24.17% 匹配 PyJHora KN Rao)彻底修复。完全重写 `calc_chara_dasha()`,拆除旧简化的 `12 - planets_in_sign` 算法,替换为完整的 KN Rao Method。 +> **目标**:1) Chara Dasha 从24.17%匹配修复为完整KN Rao Method。2) 从Git遗失提交恢复Solar Yogas (Veshi/Voshi/Ubhayachari) 和 Lunar Yogas (Sunapha/Anapha/Durudhura)至yoga_engine.py。3) 地毯式审计所有碎片文件:brain目录3个session 16文件 + 2个workspace + Desktop + Downloads + Git遗失提交 + auto-generated skills。 ### 关键改进 - `scripts/jaimini.py`: @@ -20,10 +20,25 @@ - **jaimini-tropical**(MIT, 架构参考):`core/dashas.py` 的 Chakra 方向和 Antardasha 设计思路借鉴 - **dashaflow**(MIT, 结构参考):`jaimini.py` 的 Arudha/Upapada 公式已在之前版本复用 +### Solar/Lunar Yogas 恢复(从 Git dangling commit f19369c) +- `scripts/yoga_engine.py`: + - 新增 `_detect_solar_lunar_yogas()` 方法:恢复丢失的 Solar Yogas (Veshi/Voshi/Ubhayachari) + Lunar Yogas (Sunapha/Anapha/Durudhura) + - 在 detect() 末尾调用,作为规则匹配外的附加算法级检测 + - 太阳系列:Veshi(第2宫有行星)=财富充裕;Voshi(第12宫有行星)=口才出众;Ubhayachari(两侧都有)=性格坚毅 + - 月亮系列:Sunapha(第2宫有行星)=自力更生;Anapha(第12宫有行星)=体格健壮;Durudhura(两侧都有)=享受丰富 + +### 全量碎片审计 +- **Brain目录**(3个session 16文件):已读取并评估,提取5份P0高价值文件 +- **Desktop**:印度占星修正版研究结论v3(Dasha乘法法则)+ 解盘报告HTML +- **Downloads**:Kimi_Agent_高维印度占星师.zip(35个文件)→ 训练材料已确认;jyotish_training.agent.final.docx → 13章训练手册 +- **Git**:7个dangling commits检查完成 | f19369c Solar/Lunar Yogas已恢复 | 其余6个内容已被后续版本自然吸收 +- **auto-generated**:skill-20260422155600.md 与 55355.md 重复 +- **开源项目**:全网扫描10个方向,发现12个新项目(atolat/vedic-calc AGPL KP+Tajika+Prashna、CNWU16/vedic-astro-skills MIT AI解读、diliprk/VedicAstro MIT KP系统等) + ### 验证 ```bash -python3 -m py_compile scripts/jaimini.py -# Pending: python3 scripts/benchmark/chara_dasha/run_knrao_benchmark.py +python3 -m py_compile scripts/jaimini.py scripts/yoga_engine.py +# Pending: Chara Dasha KN Rao benchmark / Solar/Lunar Yogas test ``` ## v6.1.10(2026-06-08)—— P0 规划继续落地:Darakaraka / RTN 接入主题化报告 diff --git a/references/technique_registry.json b/references/technique_registry.json index 33778fd3..3b886ecf 100644 --- a/references/technique_registry.json +++ b/references/technique_registry.json @@ -560,6 +560,26 @@ "missing_impact": "Wealth timing confidence capped without Dhana Yoga.", "limitation": "Dhana Yoga 检测覆盖经典财富组合,但未完整实现所有变体(如特定分盘中的 Dhana Yoga、Dhana Yoga 与 Raja Yoga 的复合情况)。财富潜力评估应结合 D2、D9、D10 分盘综合分析,不宜仅凭 Yoga 检测做绝对断言。" }, + "solar_lunar_yogas": { + "name": "Solar/Lunar Yogas (Veshi/Voshi/Ubhayachari/Sunapha/Anapha/Durudhura)", + "domains": [ + "yoga", + "wealth", + "personality" + ], + "status": "covered", + "knowledge_refs": [], + "commands": [ + "yoga", + "full-reading" + ], + "output_paths": [ + "modules.yogas_doshas.solar_lunar_yogas" + ], + "audit_label": "Solar/Lunar Yogas", + "missing_impact": "Solar/Lunar Yogas not detected.", + "limitation": "Restored from Git dangling commit f19369c. Algorithm-based detection in yoga_engine.py." + }, "pancha_mahapurusha": { "name": "Pancha Mahapurusha Yoga / 五王瑜伽", "domains": [ diff --git a/scripts/yoga_engine.py b/scripts/yoga_engine.py index 363fac5d..2f48a64c 100644 --- a/scripts/yoga_engine.py +++ b/scripts/yoga_engine.py @@ -565,6 +565,7 @@ class YogaEngine: results = [] seen_dedup = set() + # 规则匹配 for rule in self.rules: matches = self._eval_rule(rule, ctx) for m in matches: @@ -579,13 +580,85 @@ class YogaEngine: "category": rule.get("category", ""), "rule_id": rule.get("id", ""), } - # 去重:基于 dedup_key 或 name + combination dedup_key = rule.get("dedup_key") or rule["name"] dedup_val = f"{dedup_key}:{m.get('combination', '')}" if dedup_val in seen_dedup: continue seen_dedup.add(dedup_val) results.append(entry) + + # ── 附加算法级 Yoga(不在 rules JSON 中) ── + results += self._detect_solar_lunar_yogas(ctx) + + return results + + def _detect_solar_lunar_yogas(self, ctx: YogaContext) -> List[Dict]: + """ + 检测 Solar Yogas (Veshi/Voshi/Ubhayachari) 和 Lunar Yogas (Sunapha/Anapha/Durudhura/Kemadruma)。 + + 来源:从 dangling commit f19369c 恢复的失散代码(原在 jyotish_engine.py cmd_yoga 中)。 + 算法:基于行星相对于太阳/月亮的位置,非规则 JSON 可表达的。 + """ + results = [] + p = ctx.planets + planets_in_house = {} # house_num -> [planet_names] + # 如果度数是浮点,尝试排序 + sun_house = None + moon_house = None + for pname, pinfo in p.items(): + h = pinfo.get("house") + # 计算行星实际度数 + if h is not None: + planets_in_house.setdefault(h, []).append(pname) + if pname == "Sun": + sun_house = h + elif pname == "Moon": + moon_house = h + + # Solar Yogas + if sun_house is not None: + h2 = ((sun_house - 1 + 1) % 12) + 1 # 太阳第2宫 + h12 = ((sun_house - 1 + 11) % 12) + 1 # 太阳第12宫 + p_in_h2 = [n for n in planets_in_house.get(h2, []) if n != "Sun"] + p_in_h12 = [n for n in planets_in_house.get(h12, []) if n != "Sun"] + if p_in_h12 and not p_in_h2: + results.append({"name": "Voshi Yoga", "name_cn": "太阳前瑜伽", + "combination": f"{'+'.join(p_in_h12)}在太阳第12宫", + "effects": ["口才出众", "善于表达", "受人尊敬", "知识渊博"], + "strength": "中", "category": "solar_yoga", "source": "Parashara"}) + if p_in_h2 and not p_in_h12: + results.append({"name": "Veshi Yoga", "name_cn": "太阳后瑜伽", + "combination": f"{'+'.join(p_in_h2)}在太阳第2宫", + "effects": ["财富充裕", "生活舒适", "性情愉快", "人缘好"], + "strength": "中", "category": "solar_yoga", "source": "Parashara"}) + if p_in_h2 and p_in_h12: + results.append({"name": "Ubhayachari Yoga", "name_cn": "太阳双夹瑜伽", + "combination": "太阳两侧均有行星", + "effects": ["性格坚毅", "口才与财富兼备", "受人爱戴", "社会影响力"], + "strength": "强", "category": "solar_yoga", "source": "Parashara"}) + + # Lunar Yogas + if moon_house is not None: + h2 = ((moon_house - 1 + 1) % 12) + 1 # 月亮第2宫 + h12 = ((moon_house - 1 + 11) % 12) + 1 # 月亮第12宫 + p_in_h2 = [n for n in planets_in_house.get(h2, []) if n != "Moon"] + p_in_h12 = [n for n in planets_in_house.get(h12, []) if n != "Moon"] + if p_in_h12 and not p_in_h2: + results.append({"name": "Anapha Yoga", "name_cn": "月后瑜伽", + "combination": f"{'+'.join(p_in_h12)}在月亮第12宫", + "effects": ["体格健壮", "名声良好", "品德高尚", "行业领袖"], + "strength": "中", "category": "lunar_yoga", "source": "Parashara"}) + if p_in_h2 and not p_in_h12: + results.append({"name": "Sunapha Yoga", "name_cn": "月前瑜伽", + "combination": f"{'+'.join(p_in_h2)}在月亮第2宫", + "effects": ["自力更生", "财富充裕", "受人尊敬", "生活富足"], + "strength": "中", "category": "lunar_yoga", "source": "Parashara"}) + if p_in_h2 and p_in_h12: + results.append({"name": "Durudhura Yoga", "name_cn": "月双夹瑜伽", + "combination": "月亮两侧均有行星", + "effects": ["享受丰富", "善于辞令", "性格坚定", "多元才华"], + "strength": "强", "category": "lunar_yoga", "source": "Parashara"}) + return results # ------------------------------------------------------------------------