v6.1.11: Solar/Lunar Yogas恢复 + 全量碎片审计

从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等)
This commit is contained in:
732642856
2026-06-11 11:28:31 +08:00
parent 55853336b5
commit 066c59bee3
3 changed files with 113 additions and 5 deletions
+19 -4
View File
@@ -1,8 +1,8 @@
# 印度占星 Skill 更新日志
## v6.1.112026-06-10)—— Chara Dasha 重写:KN Rao MethodP0 完成)
## v6.1.112026-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.102026-06-08)—— P0 规划继续落地:Darakaraka / RTN 接入主题化报告
+20
View File
@@ -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": [
+74 -1
View File
@@ -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
# ------------------------------------------------------------------------