v3.7.1: 全自动综合解盘 + 三条入口路径路由

- 新增 full-reading 子命令:一条命令串起13个模块(0.01秒出结果)
- 工作流升级v3.0:三条路径自动路由
  - 路径A:精准出生信息 → full-reading 全自动计算
  - 路径B:PDF/文字星盘 → 提取数据直接推算
  - 路径C:时间不明确 → 互动式出生时间矫正
- SKILL.md更新:22个子命令 + 三条路径说明
This commit is contained in:
732642856
2026-04-25 00:44:21 +08:00
parent 0178dfb3e8
commit 50d8ba2be7
3 changed files with 508 additions and 74 deletions
+59 -35
View File
@@ -1,6 +1,6 @@
---
name: jyotish-vedic-astrology
version: 3.7.0
version: 3.7.1
description: 印度占星(Jyotish)专业解盘与推运系统。核心能力:PDF星盘输入→严谨解盘→精确推运应期输出。覆盖行星配置、Yoga格局、Nakshatra解读、宫位分析、现代生活场景映射、现代措辞解读、案例对比分析、自动出生时间矫正、常见误判纠错、Dasha+Transit推运、精确预测、PDF星盘读取、Swiss Ephemeris计算引擎、星盘计算、分盘计算、名人案例查询、Shadbala六重力量、Ashtakavarga八分法(BPHS完整表SAV=337)、Hermes记忆系统、事件预测、R1-R10数学验证(含R2b BAV列→SAV列校验)、P1-P12行星审计(含P3仓库耦合+P8年龄状态+冲突仲裁3条规则)、验前事、MD→HTML报告生成(羊皮纸主题)、BPHS十六分盘精确计算(D2-D60)、度数精确相位系统(Drishti)、Jaimini完整系统(Chara Karaka 7/8+Chara Dasha+Karakamsha)、高级Nakshatra分析(Tara Bala+Sub-Lord KP系统)、Argala门闩系统(Virodha反干预)、Tajika年运盘(Muntha+YearLord+Mudda Dasha+Tri-Pataka三旗)、合盘分析(Ashta Koota 36分制+Mangal Dosha+Papasamya+Dasha兼容性)。触发词:印度占星、吠陀占星、Jyotish、解盘、推运、星盘分析、Dasha、Transit、Nakshatra、Yoga、出生时间矫正、吠陀占星、印占、PDF星盘、读取PDF、分析PDF星盘、矫正出生时间、出生时间验证、生时矫正、现代解读、现代措辞、误判纠错、错题本、Varga分盘、全球占星师方法论、三合盘、综合分析、过境分析、Double Transit、Sade Sati、合盘、婚姻匹配、关系分析、Koota、Mangal Dosha、年运盘、Varshaphala、太阳返照、Tajika、星宿速查、综合解盘工作流、应期预测、推运应期、事件时机、什么时候结婚、什么时候升职、什么时候发财、Argala、门闩、行星干预、Dasa收敛、Yogini大运、Chara Dasha、AI解盘、算星盘、排盘、计算星盘、查名人、Shadbala、六重力量、Ashtakavarga、八分法、行星力量、记忆系统、事件预测、验证、校验、审计、验前事、R1-R10、P1-P12、仓库耦合、冲突仲裁、报告生成、HTML报告、精确相位、Drishti、Jaimini、Chara Karaka、Atmakaraka、Darakaraka、Karakamsha、Tara Bala、Sub-Lord、KP系统、Navamsa、D9、D60、Shashtyamsa、十六分盘、门闩分析、Muntha、年主星、三旗系统、合盘评分、Nadi Koota、Gana、Yoni、Papasamya、Dasha兼容。
---
@@ -8,18 +8,27 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力
## ⚠️ 核心定位
**PDF输入 → 严谨解盘 → 精确推运应期输出**
**三种输入 → 严谨解盘 → 精确推运应期输出**
本Skill是一个**解读引擎**,不负责排盘计算。使命是:根据用户提供的PDF星盘数据,进行准确、严谨的星盘解读和推运应期预测。
本Skill支持三种输入方式,AI自动识别并路由:
**强制工作流**(→ 完整规范见 `references/ai-reading-workflow-prompt.md`):
1. 阶段一:PDF/图片输入 → 提取数据 + Quality Gate(→ `references/pdf-chart-reading-guide.md`
2. 阶段二:用户意图识别 → 路由到目标宫位(→ `references/promise-assessment-templates.md`
3. 阶段三:静态分析10步(宫位→承诺→Yoga→**Argala**→逆行→NK→Shadbala→AV→Ketu→分盘)
4. 阶段四:动态推运7步(Dasha→**Dasa Convergence轻量三系统**→Transit→Double Transit→Jaimini→KP→Varshaphala
5. 阶段五:应期输出(五层验证法→精确时间窗口,→ `assets/timing-prediction-template.md`
6. 阶段六:补救措施(可选)
7. 阶段七:现代措辞包装
### 三条入口路径(自动判断,无需用户触发)
| 路径 | 用户输入 | AI行为 |
|------|---------|--------|
| **路径A:精准出生信息** | 出生日期+时间+地点 | 直接调用 `full-reading` 引擎全链路计算(13模块一键出) |
| **路径BPDF/文字星盘** | 上传PDF星盘 或 详细的文字星盘描述 | 提取文档中的星象数据(落宫、度数、Dasha等),直接基于文档数据推算 |
| **路径C:时间不明确** | "不知道几点出生" / "大概下午" | 启动互动式出生时间矫正(外表体质→事件验证→D9/D10校正)→ 确认后走路径A |
**强制工作流**(→ 完整规范见 `references/ai-reading-workflow-prompt.md` v3.0):
1. **阶段零**:入口路由(路径A/B/C自动判断)
2. **阶段一**(仅路径B):PDF/图片输入 → 提取数据 + Quality Gate(→ `references/pdf-chart-reading-guide.md`
3. **阶段二**:用户意图识别 → 路由到目标宫位(无明确意图→综合解盘Level 2)
4. **阶段三**:静态分析10步(宫位→承诺→Yoga→Argala→逆行→NK→Shadbala→AV→Ketu→分盘)
5. **阶段四**:动态推运7步(Dasha→Dasa Convergence轻量三系统→Transit→Double Transit→Jaimini→KP→Varshaphala
6. **阶段五**:应期输出(五层验证法→精确时间窗口)
7. **阶段六**:补救措施(可选)
8. **阶段七**:现代措辞包装
---
@@ -193,7 +202,7 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力
### 13. 计算引擎集成(Swiss Ephemeris + 数据库)⭐ v3.4.0
**统一引擎入口**`scripts/jyotish_engine.py` v3.7.0(基于 Swiss Ephemeris 天文计算库)
**统一引擎入口**`scripts/jyotish_engine.py` v3.7.1(基于 Swiss Ephemeris 天文计算库)
**调用方式**AI 通过 `execute_command` 调用以下子命令(所有输出为 JSON):
@@ -204,10 +213,11 @@ SCRIPT=~/.workbuddy/skills/jyotish-vedic-astrology/scripts/jyotish_engine.py
$PYTHON $SCRIPT <子命令> [参数]
```
**13大子命令****21大子命令**v3.7 升级):
**13大子命令****22大子命令**v3.7.1 升级):
| 子命令 | 功能 | 典型用法 |
|--------|------|----------|
| **`full-reading`** | **⭐ v3.7.1 全自动综合解盘(一条命令串起13个模块)** | `full-reading --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `chart` | 完整星盘计算(含Ayanamsa修正)+ `--validate` 附加R1-R10验证 | `chart --validate --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `dasha` | Vimshottari大运时间线+小运展开 | `dasha --moon-lon 326.5 --birthdate REDACTED_DATE --today 2026-04-24` |
| `yoga` | Yoga格局识别(5种Yoga | `yoga --ascendant Leo --planets 'Sun:Aries:9,Moon:Aquarius:7,...'` |
@@ -216,32 +226,46 @@ $PYTHON $SCRIPT <子命令> [参数]
| `celebrity` | 名人案例查询(SQLite + 15,807条CSV | `celebrity --name Einstein` |
| `db-stats` | 验证数据库统计(15,840条+10种技法) | `db-stats` |
| `transit` | 行星过境查询(2026-2028 | `transit --year 2026 --month 7` |
| `shadbala` | 六重力量计算(Sthana/Dig/Kala/Chesta/Naisargika/Drik Bala | `shadbala --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `ashtakavarga` | 八分法计算(BPHS完整8×8矩阵,SAV=337 | `ashtakavarga --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `memory` | Hermes记忆系统(store/search/context/stats | `memory --action store --content "..." --tags "chart" --importance 8` |
| `validate` | R1-R10数学验证(SAV/BAV/延伸角/Rahu-Ketu/逆行/Dasha/完整性/度数/宫位) | `validate --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `audit` | P1-P12行星审计管线(Identity/Health/Resource/SAV/Dignity/Shadbala/Aspects/Nakshatra/Yogas | `audit --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `varga-full` | v3.7 BPHS十六分盘精确计算(D2-D60全部16分盘,精确度数输出) | `varga-full --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --divisions D9,D60` |
| `aspects` | v3.7 度数精确相位系统(tight/moderate/loose + 入相位/出相位) | `aspects --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `jaimini` | v3.7 Jaimini完整系统(Chara Karaka 7/8 + Chara Dasha + Karakamsha | `jaimini --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --mode all` |
| `nakshatra-adv` | v3.7 高级NakshatraTara Bala + Sub-Lord KP + 兼容性) | `nakshatra-adv --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --mode all` |
| `argala` | v3.7 Argala门闩系统(主/副Argala + Virodha反干预 + 净评分) | `argala --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `tajika` | v3.7 Tajika年运盘(Muntha + YearLord + Mudda Dasha + Tri-Pataka | `tajika --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --age 33` |
| `synastry` | v3.7 合盘分析(Ashta Koota 36分 + Mangal Dosha + Papasamya | `synastry --moon1 310.89 --moon2 45.5 --mars1 90.43 --mars2 120.3` |
| `shadbala` | 六重力量计算(Sthana/Dig/Kala/Chesta/Naisargika/Drik Bala | `shadbala --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `ashtakavarga` | 八分法计算(BPHS完整8×8矩阵,SAV=337 | `ashtakavarga --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `memory` | Hermes记忆系统(store/search/context/stats | `memory --action store --content "..." --tags "chart" --importance 8` |
| `validate` | R1-R10数学验证(SAV/BAV/延伸角/Rahu-Ketu/逆行/Dasha/完整性/度数/宫位) | `validate --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `audit` | P1-P12行星审计管线(Identity/Health/Resource/SAV/Dignity/Shadbala/Aspects/Nakshatra/Yogas | `audit --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `varga-full` | v3.7 BPHS十六分盘精确计算(D2-D60全部16分盘,精确度数输出) | `varga-full --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --divisions D9,D60` |
| `aspects` | v3.7 度数精确相位系统(tight/moderate/loose + 入相位/出相位) | `aspects --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `jaimini` | v3.7 Jaimini完整系统(Chara Karaka 7/8 + Chara Dasha + Karakamsha | `jaimini --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --mode all` |
| `nakshatra-adv` | v3.7 高级NakshatraTara Bala + Sub-Lord KP + 兼容性) | `nakshatra-adv --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --mode all` |
| `argala` | v3.7 Argala门闩系统(主/副Argala + Virodha反干预 + 净评分) | `argala --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
| `tajika` | v3.7 Tajika年运盘(Muntha + YearLord + Mudda Dasha + Tri-Pataka | `tajika --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --age 33` |
| `synastry` | v3.7 合盘分析(Ashta Koota 36分 + Mangal Dosha + Papasamya | `synastry --moon1 310.89 --moon2 45.5 --mars1 90.43 --mars2 120.3` |
| `report` | MD→HTML报告生成(羊皮纸主题) | `report ./report_folder --name 一楠 --lagna Leo` |
**外部数据源**(引擎自动读取):
- 验证数据库:`~/WorkBuddy/Claw/vedic_astrology_validation.db`(15,840条案例,10种技法准确率)
- 名人CSV`~/WorkBuddy/Claw/vedastro_data/PersonList-15k.csv`15,807条AA级数据)
- 过境配置:`~/WorkBuddy/Claw/月运过境配置-2026-2028.json`36个月行星位置)
**典型工作流**v3.7 升级):
1. 用户给出生信息 → `chart` 计算星盘 → 获取行星位置、宫位、Nakshatra
2. 从 chart 结果取月亮经度 → `dasha` 计算当前大运
3. 从 chart 结果取行星配置 → `yoga` 识别格局
4. `shadbala` 计算六重力量 → 量化行星强度排名 ⭐ v3.4
5. `ashtakavarga` 计算八分法 → SAV评分+宫位吉凶 ⭐ v3.4
6. `varga-full --divisions D9,D60` 计算精确分盘(含度数+尊严) ⭐ v3.7
7. `aspects` 计算精确相位(度数级Drishti) ⭐ v3.7
**典型工作流**v3.7.1 升级):
### 🟢 路径A:精准出生信息(推荐,一条命令搞定)
```bash
# 一键全链路计算(13模块自动串行)
$PYTHON $SCRIPT full-reading --year YYYY --month MM --day DD --hour HH --minute MM --lat XX.XX --lon XX.XX --tz X
# 输出:chart + dasha + yoga + varga_full + aspects + jaimini + nakshatra_adv + argala + tajika + shadbala + ashtakavarga + validation + audit
# 完成后直接进入阶段二(意图识别)
```
### 📄 路径B:PDF/文字星盘(用文档数据直接推算)
1. 提取PDF/文字中的所有星象数据(行星落宫、度数、Dasha、Shadbala等)
2. 数据完整性门 → Pass/Limited/Fail
3. 如有出生时间+地点,额外调用 `full-reading` 补充计算v3.7新增模块
4. 进入阶段二(意图识别)
### 🔧 路径C:时间不明确(互动式矫正)
1. 收集外表体质+生活事件(3-5轮互动)
2. 多候选时间对比验证(Dasha吻合率+Transit吻合率)
3. D9/D10精确校正
4. 矫正完成后走路径A
8. `jaimini --mode all` 计算Chara Karaka + Dasha + Karakamsha ⭐ v3.7
9. `nakshatra-adv --mode all` 计算Tara Bala + Sub-Lord ⭐ v3.7
10. `argala` 计算门闩干预分析 ⭐ v3.7
@@ -524,6 +548,6 @@ $PYTHON $SCRIPT <子命令> [参数]
---
**版本**3.7.0
**版本**3.7.1
**创建日期**2026-04-20
**最后更新**2026-04-25v3.7.0 新增7大计算模块:BPHS十六分盘精确计算+度数精确相位+Jaimini完整系统+高级Nakshatra分析+Argala门闩+Tajika年运盘+合盘分析,引擎子命令14→21
**最后更新**2026-04-25v3.7.1 新增 full-reading 全自动综合解盘子命令 + 三条入口路径路由 + 工作流v3.0;v3.7.0 新增7大计算模块:BPHS十六分盘精确计算+度数精确相位+Jaimini完整系统+高级Nakshatra分析+Argala门闩+Tajika年运盘+合盘分析,引擎子命令21→22
+232 -38
View File
@@ -1,9 +1,10 @@
# AI解盘工作流Prompt工程(AI Reading Workflow
> **适用场景**AI收到PDF星盘后,如何一步步执行完整的解盘+推运分析
> **版本**v1.0.0 | **创建日期**2026-04-24
> **适用场景**AI收到出生信息、PDF星盘或文字星盘后,如何一步步执行完整的解盘+推运分析
> **版本**v3.0.0 | **更新日期**2026-04-25
> **优先级**:⭐⭐⭐⭐⭐(AI解盘质量的决定性文件)
> **定位**:本文件是AI在收到PDF后的**执行引擎**,将Skill中所有参考资料串联成可执行的工作流
> **定位**:本文件是AI解盘的**执行引擎**,将Skill中所有参考资料串联成可执行的工作流
> **v3.0重大变更**:三条入口路径明确分流,引擎全自动计算无需用户逐模块触发
---
@@ -13,31 +14,120 @@
2. **不猜测**:数据缺失时标注"缺失",不编造数据
3. **不锚定**:先输出星盘推导,再等用户反馈,不先知道用户生活再"找依据"
4. **必标注**:每个结论标注来源系统、置信度、精度边界
5. **全自动优先**:引擎有能力自动完成的计算,绝不要求用户手动触发
6. **尊重用户数据**:用户提供的PDF/文字星盘数据即为事实来源,优先使用而非重新计算
---
## 阶段一:PDF数据提取(→ `pdf-chart-reading-guide.md`
## 🔴 阶段零:入口路由(三条路径
### 1.1 执行指令
收到PDF/图片后,AI必须:
### 用户消息到达后,AI立即判断走哪条路径:
```
1. 识别PDF来源软件(JH / Parashara's Light / 其他)
2. 按内容类型逐页提取(不依赖页码顺序)
3. 填充完整JSON Schema(见pdf-chart-reading-guide.md 第三节
4. 执行数据完整性门(Quality Gate,见第四节)
5. 执行交叉校验(见第五节)
6. 输出提取报告(见第六节)
用户消息到达
├─→ 【路径A】用户提供了精准出生信息(日期+时间+地点
│ → 直接调用 full-reading 引擎全链路计算
│ → 跳到阶段二
├─→ 【路径B】用户提供了PDF/图片星盘 或 丰富的文字星盘描述
│ → 提取文档中的所有星象数据(落宫、度数、Dasha等)
│ → 直接基于提取的数据进行推算分析
│ → 跳到阶段二
└─→ 【路径C】用户出生时间不明确 或 仅知道大概时间
→ 启动互动式出生时间矫正
→ 矫正完成后走路径A
```
### 1.2 输出模板(阶段一必输出)
---
### 路径A:精准出生信息 → full-reading 全自动计算
**触发条件**:用户提供了明确的出生日期+时间+地点(三者齐全)
**示例输入**
- "REDACTED_YEAR年4月17日 14:45 REDACTED_PLACE"
- "我出生于 1990-08-15 早上6:30 北京"
- "April 17, REDACTED_YEAR, 2:45 PM, REDACTED_PLACE, China (36.6N, 114.5E)"
**执行指令**(一条命令搞定所有计算):
```bash
python3 scripts/jyotish_engine.py full-reading \
--year YYYY --month MM --day DD --hour HH --minute MM \
--lat XX.XX --lon XX.XX --tz X
```
**此命令自动执行13个计算步骤**
1. chart — 核心星盘(上升、行星位置、宫位)
2. dasha — Vimshottari大运时间线
3. yoga — Yoga格局识别
4. varga_full — BPHS十六分盘(D2-D60
5. aspects — 度数精确相位系统
6. jaimini — Chara Karaka + Chara Dasha + Karakamsha
7. nakshatra_adv — Tara Bala + Sub-Lord
8. argala — Argala门闩系统
9. tajika — Tajika年运盘
10. shadbala — 六重力量
11. ashtakavarga — 八分法
12. validation — R1-R10数学验证
13. audit — P1-P12行星审计
**输出结构**
- `chart`:完整星盘数据
- `modules`12个模块各自的结果
- `summary`:计算耗时、模块数、错误数
- `errors`/`warnings`:异常信息
**数据质量门**
| 字段 | 检查项 | 判定 |
|------|--------|------|
| `summary.errors` | 是否为空 | 空则继续,非空需评估 |
| `summary.modules_computed` | 是否≥10 | ≥10正常,<10说明多模块失败 |
| `chart.ascendant` | 是否有上升星座 | 无则计算失败,需排查 |
**完成后**:直接跳到阶段二(意图识别)
---
### 路径B:PDF/文字星盘 → 数据提取 + 直接推算
**触发条件**:用户上传了PDF星盘、截图,或提供了详细的文字星盘描述
**示例输入**
- 上传11页JhoroWatch PDF
- 上传Parashara's Light截图
- 文字描述:"我的上升是狮子座,太阳在白羊座9宫,月亮在水瓶座7宫..."
**⚠️ 核心原则:用文档的数据,不重新排盘**
用户提供的PDF/文字星盘中的数据就是**事实来源**。AI不需要从出生时间重新计算星盘,而是直接使用文档中已有的:
- 行星落宫落座
- Dasha时间线
- Shadbala分数
- Ashtakavarga点数
- Yoga列表
- 分盘数据
**执行步骤**
```
1. 识别来源(JH / Parashara's Light / 其他软件)
2. 逐页/逐段提取所有星象数据
3. 填充标准JSON Schema(见下方模板)
4. 执行数据完整性门(Quality Gate
5. 如有出生时间+地点,额外调用 full-reading 补充计算
6. 输出提取报告
```
**数据提取模板**
```markdown
## 📋 PDF数据提取报告
## 📋 星盘数据提取报告
**来源**[JH / PL / 其他] | **页数**[N]页
**完整度**[XX%] | **分析级别**[Level 1/2/3]
**来源**[JH / PL / 文字描述] | **完整度**[XX%]
### 基本信息
- 出生:[YYYY-MM-DD HH:MM] [地点] [性别]
@@ -74,14 +164,9 @@
### Yoga清单
- [Yoga1][行星]在[X宫]
- [Yoga2]...
### 数据完整性
- ✅ P0全部齐全(N/11)或 ❌ 缺失:[列出]
- ⚠️ P1缺失:[列出]
```
### 1.3 质量门判定规则
**数据完整性门**
| 完整度 | 判定 | 允许的分析 |
|--------|------|-----------|
@@ -89,7 +174,113 @@
| 70-89%P0大部分) | ⚠️ Limited | Level 2,标注限制 |
| <70%P0缺关键项) | ❌ Fail | Level 1快速概览,要求用户补全 |
**如果Quality Gate未通过**:停止在阶段一,告知用户缺失哪些数据、为什么影响分析。
**补充计算**(条件触发):
如果PDF中包含了出生日期+时间+地点信息,AI **应当额外调用** `full-reading` 来补充PDF中可能缺失的计算(如精确相位、Argala、Tajika等v3.7新增模块),将引擎计算结果与PDF提取数据合并,以引擎结果为补充、PDF数据为基准。
**完成后**:直接跳到阶段二(意图识别)
---
### 路径C:时间不明确 → 互动式出生时间矫正
**触发条件**
- 用户说"不知道出生时间" / "大概下午吧" / "不清楚几点"
- 用户只知道日期不知道时间
- 用户提供的出生证明时间与实际有出入
**⚠️ 核心理念:不猜时间,通过互动逐步锁定**
AI不应该凭空假设一个时间,而应该通过结构化互动帮助用户锁定精确时间。
**矫正流程**(→ `birth-time-rectification-advanced.md`):
#### C1. 初始信息收集(第一轮互动)
**AI必须收集的基础信息**(只问一轮,最多5个问题):
```
"为了帮你精准确定出生时间,我需要了解一些信息:
1. 你目前知道的出生时间范围是什么?(比如'下午2点到5点'、'上午'、'完全不知道'
2. 出生地点是哪里?(城市即可)
3. 你的体型偏瘦/中等/偏壮?脸型偏圆/长/方?
4. 容易出现健康问题的部位是?(比如经常头痛/肠胃不好/腰痛等)
5. 有没有明显的胎记或疤痕?在身体什么位置?"
```
#### C2. 外表体质初筛(AI自动分析)
根据用户回答,确定上升星座范围:
- 体型+脸型+健康倾向 → 缩小到2-3个候选上升星座
- 胎记/疤痕位置 → 进一步缩小范围
- 参照 `birth-time-rectification-advanced.md` 中的外表体质对应表
#### C3. 生活事件验证(第二轮互动)
**AI请求用户提供人生重要事件**
```
"初步判断你的上升可能在[星座A]或[星座B]。
为了进一步确认,请告诉我你人生中的一些重要转折事件,
大概5-10个就行,包括大概的时间和事件类型。比如:
- 搬家、转学、毕业
- 工作/事业的重要变化
- 开始或结束一段感情
- 亲人离世或重病
- 获奖或重大成就
- 生病或手术"
```
**AI对每个事件做Dasha+Transit验证**
- 用候选时间分别排盘
- 检查事件时间点的Dasha周期是否激活相关宫位
- 检查Transit是否支持该事件
- 计算每个候选时间的吻合率
#### C4. D9/D10精确校正(第三轮互动,可选)
如果需要更精确(精确到±5分钟以内):
```
"时间范围已经缩小到[XX:XX-XX:XX]。
为了进一步精确,请告诉我:
1. 你的感情模式是怎样的?(主动/被动、深刻/轻松、重视精神连接/重视现实基础)
2. 你的工作风格是怎样的?(管理型/创意型/研究型/服务型)"
```
- 感情模式 → 判定D9上升 → 缩小时间
- 工作风格 → 判定D10上升 → 缩小时间
#### C5. 矫正结果输出
```markdown
## 🔧 出生时间矫正报告
### 信息收集
- 已知时间范围:[描述]
- 外表体质:[描述]
- 事件验证:[N]个事件
### 矫正过程
- 上升候选:[星座A] / [星座B] → 判定:[星座X]
- Dasha吻合率:[XX%]
- Transit吻合率:[XX%]
- D9上升判定:[星座](基于感情特质)
- D10上升判定:[星座](基于事业特质)
### 矫正结果
- **矫正后出生时间**[HH:MM]
- **置信度**[高/中/低][XX%]事件吻合)
- **精度范围**:±[X]分钟
### ⚠️ 声明
出生时间矫正是基于事件反向推导的概率性方法。
矫正后的时间不能100%保证精确,但基于[X]个事件的验证,
吻合率达到[XX%],可作为有效参考。
```
**矫正完成后**:使用矫正后的时间走路径A,调用 `full-reading` 全链路计算。
---
@@ -107,17 +298,19 @@
| 教育/学业 | 4宫+9宫 | — | §6 |
| 出国/迁移 | 9宫+12宫 | — | §7 |
| 灵性/修行 | 9宫+12宫 | — | §8 |
| 合盘/关系匹配 | 7宫 | `synastry` + `relationship-astrology-guide.md` | §1 |
| 综合解盘(全盘) | 全部 | `comprehensive-reading-workflow.md` | 全部 |
**(承诺模板→ `promise-assessment-templates.md`**
### 2.2 用户未明确意图时的默认流程
如果用户只上传了PDF没有说具体问什么:
如果用户没有说具体问什么(比如只给了出生信息或上传了PDF
1. 执行**综合解盘工作流Level 2**(`comprehensive-reading-workflow.md`
2. 先输出10宫位快速扫描
3. 识别最强和最弱的领域
4. 重点展开当前Dasha激活的领域
5. 主动提示用户可以深入询问任何领域
---
@@ -140,7 +333,7 @@ Step 3.3 Yoga格局识别
→ references/yoga-strength-scoring-system.md
Step 3.4 Argala检查(目标宫的2/4/5/8/11宫)
→ references/argala-complete-guide.md ⭐ 新增
→ references/argala-complete-guide.md
→ 输出:目标宫是否被"开门"或"锁门"
Step 3.5 逆行/燃烧/行星战争检查
@@ -223,7 +416,7 @@ Step 4.1 Dasha激活评估
→ 当前Maha/Antar/Pratyantar与目标领域的关系
Step 4.2 Dasa Convergence(轻量三系统法)
→ references/dasa-convergence-methodology.md §七 ⭐ 升级
→ references/dasa-convergence-methodology.md §七
→ Vimsottari + Yogini + Chara 三系统交叉验证
→ 输出:Convergence等级(Level 0-3
@@ -389,19 +582,22 @@ Step 4.7 Varshaphala年运盘确认(如需要)
## 快速参考:完整工作流一页纸
```
收到PDF
用户消息到达
├─→ 阶段一:数据提取(pdf-chart-reading-guide.md
└─→ Quality Gate → Pass/Limited/Fail
├─ 路径判断
├─→ 【路径A】精准出生信息 → full-reading 全自动计算
│ ├─→ 【路径B】PDF/文字星盘 → 提取数据 + 直接推算
│ └─→ 【路径C】时间不明确 → 互动矫正 → 走路径A
├─→ 阶段二:意图路由
│ └─→ 用户问什么 → 目标宫位 → 对应承诺模板
│ (无明确意图 → 综合解盘Level 2)
├─→ 阶段三:静态分析(10步)
│ ├─→ 宫位-行星基础
│ ├─→ 承诺评估promise-assessment-templates.md
│ ├─→ 承诺评估
│ ├─→ Yoga识别
│ ├─→ Argala检查argala-complete-guide.md)⭐
│ ├─→ Argala检查
│ ├─→ 逆行/燃烧/战争
│ ├─→ Nakshatra深度
│ ├─→ Shadbala
@@ -411,7 +607,7 @@ Step 4.7 Varshaphala年运盘确认(如需要)
├─→ 阶段四:动态推运(7步)
│ ├─→ Dasha激活
│ ├─→ Dasa Convergence轻量三系统法
│ ├─→ Dasa Convergence三系统法
│ ├─→ Transit四参考点
│ ├─→ Double Transit
│ ├─→ Jaimini确认
@@ -420,16 +616,14 @@ Step 4.7 Varshaphala年运盘确认(如需要)
├─→ 阶段五:应期输出
│ └─→ 严格遵循prediction-output-protocol.md
│ 禁用措辞 + 强制标注 + 精度声明
├─→ 阶段六:补救措施(可选)
└─→ 阶段七:现代措辞包装
└─→ modern-language-guide.md + misconceptions check
```
---
**版本**1.0.0
**创建日期**2026-04-24
**配套文件**`pdf-chart-reading-guide.md`数据提取)、`timing-prediction-template.md`(应期模板)、`prediction-output-protocol.md`(输出规范)、`comprehensive-reading-workflow.md`(综合流程)、`promise-assessment-templates.md`(承诺模板)、`argala-complete-guide.md`Argala检查)、`dasa-convergence-methodology.md`Dasa Convergence
**版本**3.0.0
**更新日期**2026-04-25
**配套文件**`pdf-chart-reading-guide.md`PDF提取)、`birth-time-rectification-advanced.md`(出生时间矫正)、`timing-prediction-template.md`(应期模板)、`prediction-output-protocol.md`(输出规范)、`comprehensive-reading-workflow.md`(综合流程)、`promise-assessment-templates.md`(承诺模板)、`argala-complete-guide.md`Argala检查)、`dasa-convergence-methodology.md`Dasa Convergence
+217 -1
View File
@@ -17,6 +17,7 @@
argala Argala门闩系统(v3.7新增)
tajika Tajika/Varshaphala年运盘(v3.7新增)
synastry 合盘分析(Ashta Koota 36分制+Mangal Dosha)(v3.7新增)
full-reading 全自动综合解盘(出生信息→全链路计算→完整报告)(v3.7.1新增)
celebrity 名人案例查询(15,807条数据+SQLite验证库)
db-stats 验证数据库统计
transit 行星过境查询
@@ -1259,6 +1260,216 @@ def cmd_synastry(args):
return calc_synastry(p1, p2)
# ============================================================================
# 22. 全自动综合解盘 full-readingv3.7.1新增)
# ============================================================================
def cmd_full_reading(args):
"""
用户只需提供出生信息,引擎自动串起全链路分析:
chart → dasha → yoga → varga-full → aspects → jaimini → nakshatra-adv
→ argala → tajika → shadbala → ashtakavarga → validate → audit
→ 综合报告输出
"""
import time
t0 = time.time()
report = {
'version': '3.7.1-full-reading',
'birth_info': {
'date': f"{args.year}-{args.month:02d}-{args.day:02d}",
'time': f"{args.hour:02d}:{args.minute:02d}",
'lat': args.lat, 'lon': args.lon,
'tz': f"UTC{'+' if args.tz >= 0 else ''}{args.tz}",
},
'modules': {},
'errors': [],
'warnings': [],
}
# ── Step 1: 核心星盘 ──
chart, asc_idx, jd, ayanamsa = compute_chart_data(
args.year, args.month, args.day, args.hour, args.minute,
args.lat, args.lon, args.tz)
if chart is None:
return {"error": "swisseph未安装,无法计算星盘"}
report['chart'] = chart
planets = chart.get('planets', {})
asc_deg = chart.get('ascendant', {}).get('degree', 0)
asc_sign = chart.get('ascendant', {}).get('sign', 'Unknown')
planet_lons = {pn: pd['degree'] for pn, pd in planets.items() if isinstance(pd, dict) and 'degree' in pd}
planet_sign_indices = {}
for pn, pd in planets.items():
if isinstance(pd, dict) and 'sign' in pd:
planet_sign_indices[pn] = SIGNS.index(pd['sign']) if pd['sign'] in SIGNS else 0
# ── Step 2: Vimshottari Dasha ──
try:
moon_data = planets.get('Moon', {})
moon_lon = moon_data.get('degree', 0)
nak_idx = int(moon_lon / (360 / 27)) % 27
nak_name = NAKSHATRA_LIST[nak_idx][0]
nak_lord = NAKSHATRA_LIST[nak_idx][1]
pada = int((moon_lon % (360/27)) / (360/108)) + 1
birthdate = f"{args.year}-{args.month:02d}-{args.day:02d}"
today_str = datetime.now().strftime('%Y-%m-%d')
dasha_result = cmd_dasha(type('Args', (), {
'nakshatra': nak_name, 'pada': pada,
'moon_lon': moon_lon, 'birthdate': birthdate, 'today': today_str
})())
report['modules']['dasha'] = dasha_result
except Exception as e:
report['errors'].append(f"dasha: {e}")
# ── Step 3: Yoga格局 ──
try:
yoga_planets = {}
for pn, pd in planets.items():
if isinstance(pd, dict) and 'sign' in pd and 'house' in pd:
yoga_planets[pn] = {'sign': pd['sign'], 'house': pd['house']}
yoga_result = cmd_yoga(type('Args', (), {
'ascendant': asc_sign,
'planets': ','.join([f"{k}:{v['sign']}:{v['house']}" for k, v in yoga_planets.items()])
})())
report['modules']['yoga'] = yoga_result
except Exception as e:
report['errors'].append(f"yoga: {e}")
# ── Step 4: BPHS十六分盘 ──
try:
sys.path.insert(0, SCRIPT_DIR)
from varga import calc_all_vargas
varga_result = calc_all_vargas(planet_lons, asc_deg, None) # None = 全部分盘
report['modules']['varga_full'] = varga_result
except Exception as e:
report['errors'].append(f"varga-full: {e}")
# ── Step 5: 精确相位 ──
try:
from aspects import calc_all_aspects
aspects_result = calc_all_aspects(planet_lons, asc_deg)
report['modules']['aspects'] = aspects_result
except Exception as e:
report['errors'].append(f"aspects: {e}")
# ── Step 6: Jaimini系统 ──
try:
from jaimini import calc_chara_karaka_7, calc_chara_karaka_8, calc_chara_dasha, calc_karakamsha
from varga import calc_varga
jaimini_result = {}
jaimini_result['chara_karaka_7'] = calc_chara_karaka_7(planet_lons)
jaimini_result['chara_karaka_8'] = calc_chara_karaka_8(planet_lons)
jaimini_result['chara_dasha'] = calc_chara_dasha(asc_idx, planet_lons, args.year, args.month)
# Karakamsha
ck7 = jaimini_result['chara_karaka_7']
dk_name = ck7.get('DK', {}).get('planet', 'Moon')
dk_lon = planet_lons.get(dk_name, 0)
dk_d9 = calc_varga(dk_lon, 9)
jaimini_result['karakamsha'] = calc_karakamsha(
dk_d9.get('sign', 'Aries'), dk_d9.get('degree_in_sign', 0))
report['modules']['jaimini'] = jaimini_result
except Exception as e:
report['errors'].append(f"jaimini: {e}")
# ── Step 7: 高级Nakshatra ──
try:
from nakshatra_advanced import find_nakshatra, calc_all_tara_balas, calc_sub_lord
nak_result = {'planets': {}}
for pn, lon in planet_lons.items():
nak_result['planets'][pn] = find_nakshatra(lon)
moon_nak_idx = int(planet_lons.get('Moon', 0) / (360/27)) % 27
nak_result['tara_bala'] = calc_all_tara_balas(moon_nak_idx, planet_lons)
nak_result['sub_lords'] = {pn: calc_sub_lord(lon) for pn, lon in planet_lons.items()}
report['modules']['nakshatra_advanced'] = nak_result
except Exception as e:
report['errors'].append(f"nakshatra-adv: {e}")
# ── Step 8: Argala门闩 ──
try:
from argala import calc_argala
report['modules']['argala'] = calc_argala(planet_sign_indices, asc_idx)
except Exception as e:
report['errors'].append(f"argala: {e}")
# ── Step 9: Tajika年运盘(需要年龄) ──
age = args.age
if age is None:
# 自动计算年龄
try:
birth_date = datetime(args.year, args.month, args.day)
age = (datetime.now() - birth_date).days // 365
report['warnings'].append(f"未提供年龄,自动计算为 {age}")
except:
age = None
if age is not None:
try:
from tajika import calc_muntha, calc_year_lord, calc_mudda_dasha, calc_tri_pataka
asc_si = int(asc_deg / 30) % 12
tajika_result = {}
tajika_result['muntha'] = calc_muntha(asc_si, age)
yl = calc_year_lord(asc_si, age)
tajika_result['year_lord'] = yl
varsha_lord = yl.get('year_lord', 'Jupiter')
tajika_result['mudda_dasha'] = calc_mudda_dasha(asc_si, varsha_lord, args.month)
muntha_si = (asc_si + age) % 12
tajika_result['tri_pataka'] = calc_tri_pataka(planet_lons, varsha_lord, muntha_si)
report['modules']['tajika'] = tajika_result
except Exception as e:
report['errors'].append(f"tajika: {e}")
# ── Step 10: Shadbala六重力量 ──
try:
from shadbala import calc_shadbala
birth_hour = args.hour + args.minute / 60.0
sun_lon = planet_lons.get('Sun', 0)
moon_lon = planet_lons.get('Moon', 0)
report['modules']['shadbala'] = calc_shadbala(planets, asc_sign, birth_hour, sun_lon, moon_lon)
except Exception as e:
report['errors'].append(f"shadbala: {e}")
# ── Step 11: Ashtakavarga八分法 ──
asht_data = None
try:
from ashtakavarga import calc_ashtakavarga
asht_data = calc_ashtakavarga(planets, asc_idx)
report['modules']['ashtakavarga'] = asht_data
except Exception as e:
report['errors'].append(f"ashtakavarga: {e}")
# ── Step 12: R1-R10数学验证 ──
try:
from validate import validate_chart
report['modules']['validation'] = validate_chart(chart, asht_data)
except Exception as e:
report['errors'].append(f"validate: {e}")
# ── Step 13: P1-P12行星审计 ──
try:
audit_result = cmd_audit(args)
report['modules']['audit'] = audit_result
except Exception as e:
report['errors'].append(f"audit: {e}")
# ── 汇总 ──
elapsed = round(time.time() - t0, 2)
module_count = len(report['modules'])
error_count = len(report['errors'])
report['summary'] = {
'elapsed_seconds': elapsed,
'modules_computed': module_count,
'errors': error_count,
'status': 'complete' if error_count == 0 else f'{error_count} errors',
'next_step': 'AI可直接基于此数据执行阶段二(意图路由)→阶段三(静态分析)→阶段四(动态推运)→阶段五(应期输出)',
}
return report
# ============================================================================
# CLI入口
# ============================================================================
@@ -1388,6 +1599,11 @@ def main():
p.add_argument('--gender1', default='M', help='Person1性别')
p.add_argument('--gender2', default='F', help='Person2性别')
# 22. full-reading (v3.7.1新增)
p = sub.add_parser('full-reading', help='全自动综合解盘(出生信息→全链路→完整报告)')
_add_chart_args(p)
p.add_argument('--age', type=int, default=None, help='当前年龄(不提供则自动计算)')
args = parser.parse_args()
if not args.command:
parser.print_help(); sys.exit(1)
@@ -1398,7 +1614,7 @@ def main():
'validate': cmd_validate, 'audit': cmd_audit, 'report': cmd_report,
'varga-full': cmd_varga_full, 'aspects': cmd_aspects, 'jaimini': cmd_jaimini,
'nakshatra-adv': cmd_nakshatra_adv, 'argala': cmd_argala, 'tajika': cmd_tajika,
'synastry': cmd_synastry}
'synastry': cmd_synastry, 'full-reading': cmd_full_reading}
result = cmds[args.command](args)
output_json(result)