- Add 15+ references: audit reports, lessons learned, verified celebrity cases - Add test data: v6.1 verification results, large-scale results JSON - Update jyotish_engine.py and shadbala.py with latest fixes - Prepare for ClawdHub marketplace publication
11 KiB
印度占星 Skill 全面测试报告
测试日期: 2026-05-04
测试方式: 从 GitHub 仓库 https://github.com/732642856/yinduzhanxing 克隆最新代码,模拟普通用户通过云端 git 仓库调用
测试数据: 1990-01-15 10:30 北京 (lat=39.9, lon=116.4, tz=+8)
测试环境: macOS, Python 3.11.9, pyswisseph 2.08
一、总体结论
引擎核心计算功能基本可用,27 个子命令全部能正常启动、接受参数、返回 JSON 输出。full-reading 综合解盘 19 个模块全部返回正常数据。SAV=337、R1-R10 验证全通过、Dasha 总年数=120 等关键数学验证均无误。
主要问题集中在文档与代码不一致——quick-reference-guide.md 中的多个示例命令无法直接执行,部分功能声称但未实现,版本号管理混乱。
二、27 个子命令逐项测试结果
| # | 子命令 | 状态 | 测试命令 | 问题 |
|---|---|---|---|---|
| 1 | chart |
✅ 正常 | chart --year 1990 --month 1 --day 15 --hour 10 --minute 30 --lat 39.9 --lon 116.4 --tz 8 |
无 |
| 2 | chart --validate |
✅ 正常 | 同上 + --validate |
无,R1-R10 全通过 |
| 3 | full-reading |
✅ 正常 | full-reading --year 1990 ... --age 35 |
返回 19 模块全 OK |
| 4 | dasha |
✅ 正常 | dasha --birthdate '1990-01-15' --moon-lon 138.8151 |
⚠ 参数接口与文档场景二不一致 |
| 5 | yoga |
✅ 运行 | yoga --ascendant Pisces --planets '...' |
⚠ 检测到 0 个 Yoga(可能误判);参数格式不直观 |
| 6 | predict |
✅ 运行 | predict --year ... --event-type career |
⚠ 输出质量低(key_factors=[], timing_windows=[]) |
| 7 | predict --past-verify |
✅ 运行 | predict --year ... --past-verify |
输出泛化,仅有 4 个推断期 |
| 8 | varga |
✅ 正常 | varga --year ... --d9 |
⚠ 文档中 varga -d 24 参数不存在 |
| 9 | varga-full |
✅ 正常 | varga-full --year ... --divisions 'D2,D9,D10,D60' |
无 |
| 10 | transit |
✅ 运行 | transit --year 2026 --month 5 |
⚠ 仅接受 --year --month,文档声称有 7 个参数全不存在 |
| 11 | shadbala |
✅ 正常 | shadbala --year ... |
6 种力量完整输出 |
| 12 | ashtakavarga |
✅ 正常 | ashtakavarga --year ... |
SAV=337,BAV 全部验证通过 |
| 13 | validate |
✅ 正常 | validate --year ... |
11 项全通过 |
| 14 | audit |
✅ 正常 | audit --year ... |
P1-P12 审计正常输出 |
| 15 | aspects |
✅ 正常 | aspects --year ... |
度数精确相位正常 |
| 16 | jaimini |
✅ 正常 | jaimini --year ... |
7 Karaka + 8 Karaka 双输出 |
| 17 | nakshatra-adv |
✅ 正常 | nakshatra-adv --year ... |
含 Tara Bala + Sub-Lord |
| 18 | argala |
✅ 正常 | argala --year ... |
含 Virodha 反向门闩 |
| 19 | tajika |
✅ 正常 | tajika --year ... --age 35 |
Muntha + YearLord + Mudda Dasha |
| 20 | synastry |
✅ 正常 | synastry --moon1 ... --moon2 ... |
36 分制 + Mangal Dosha |
| 21 | prashna |
✅ 正常 | prashna --datetime ... --lat ... --lon ... |
多模式均正常 |
| 22 | prashna --mode lost-item |
✅ 正常 | 同上 | 失物查询正常 |
| 23 | prashna --mode kunda |
✅ 正常 | 同上 | 仅返回 derived nakshatra(输出过于简单) |
| 24 | double-transit-pac |
✅ 正常 | double-transit-pac --year ... --date 2026-05-04 --house 7 |
D1+D9+CL 三层 |
| 25 | transit-ll7l |
✅ 正常 | transit-ll7l --year ... --date 2026-05-04 |
输出较简单 |
| 26 | planetary-congregation |
✅ 正常 | planetary-congregation --year ... --transit-date 2026-05-04 |
本命+过境聚集检测 |
| 27 | vivah-saham |
✅ 正常 | vivah-saham --year ... --transit-date 2026-05-04 |
含 Double Transit 激活判断 |
| 28 | celebrity |
✅ 正常 | celebrity --name Einstein |
返回 7 条匹配 |
| 29 | db-stats |
✅ 正常 | db-stats |
15840 案例 |
| 30 | memory (store) |
✅ 正常 | memory --action store --content ... |
存储成功 |
| 31 | memory (search) |
✅ 正常 | memory --action search --query test |
检索正常 |
| 32 | memory (context) |
✅ 运行 | memory --action context --query test |
输出全空(无历史数据属正常) |
| 33 | report |
⚠ 报错 | report /tmp/test_report --name ... |
需要预生成的 MD 文件夹 |
三、发现的问题分类
🔴 严重问题(按文档执行必定失败)
P1: transit 子命令文档与实现完全不一致
文档声称(quick-reference-guide.md 多处):
transit --target-date YYYY-MM-DD --target-planets "Jupiter,Venus" --reference-points "Lagna,Moon" --lat LAT --lon LON --tz TZ
实际参数:
transit --year 2026 --month 5 # 仅有这两个参数
引擎从预编译的 JSON 文件读取过境数据,不支持指定目标行星、参考点或出生信息。按文档执行直接报错。
P2: cmd_rectify 子命令完全不存在
文档 quick-reference-guide.md 第 157-158 行描述了 cmd_rectify 命令用于出生时间矫正:
python3 scripts/jyotish_engine.py cmd_rectify --events "..."
引擎中完全没有这个子命令。grep 搜索全文,rectify 出现次数为零。
P3: 版本号体系混乱
| 位置 | 版本 |
|---|---|
| SKILL.md | v6.0.0 |
| quick-reference-guide.md | v6.0.0 |
| jyotish_engine.py 文件头 | v3.7.1 |
| full-reading 输出 | 4.4.0-full-reading |
| ashtakavarga 输出 | 2.0 |
| audit 输出 | 3.5 |
| synastry 输出 | 3.7 |
| predict 输出 | 3.5 |
v6.0.0 是 Skill 文档层面的版本号,但引擎代码从未更新到 6.0.0。用户看到的输出中没有任何 6.0.0 标识。
🟡 中等问题(影响使用体验)
P4: dasha 子命令不使用标准出生信息参数
大部分子命令使用 --year --month --day --hour --minute --lat --lon --tz,但 dasha 使用 --birthdate --moon-lon。文档场景二的示例用了标准参数格式,直接执行会报错。
P5: yoga 子命令设计不直观
yoga 是唯一一个不使用标准出生信息参数的子命令,要求手动传 --ascendant 和 --planets 字符串(如 'Sun:Aries:9,Moon:Aquarius:7,...')。
问题:
- 文档未说明如何从
chart输出中提取 yoga 所需格式 - 不传参数时默认 ascendant=Aries、planets 为空,静默返回空结果(yogas_detected=0)而非报错
- 用户需要手动查 chart 输出再拼接字符串,工作流断裂
P6: varga 子命令文档中 -d 参数不存在
文档提到 varga -d 24 和 varga -d 10,但引擎只支持 --d9、--d10、--all 三个开关。
P7: predict 子命令输出质量低
predict 的 career 事件预测输出中:
key_factors: []— 空数组timing_windows: []— 空数组dasha_signals: []— 空数组transit_signals: []— 空数组- 所有事件类型(包括未请求的 marriage/wealth/health)都输出,概率全部为 30%
这表明 predict 模块的预测逻辑非常粗浅,几乎只是占位输出。
P8: celebrity 子命令数据库中 latitude/longitude 全为 null
所有 15840 个案例的 latitude、longitude、ascendant_sign、ascendant_degree、lagna_lord 等字段全部为 null,数据未被完整导入。但 person_list_matches 中包含完整坐标信息。
P9: yoga 检测灵敏度过低
测试用例中 Pisces 上升、Mars 在天蝎座入庙 9 宫、Jupiter 逆行在 Gemini 4 宫(形成 4-9 轴的 Saraswati Yoga 候选),但 yoga 检测到 0 个 Yoga。可能 Yoga 规则库过于保守或有 bug。
🟢 轻微问题
P10: report 子命令依赖预生成的 MD 文件夹
report 需要一个包含 p1_data.md、p2a_planets.md 等预生成文件的文件夹。普通用户不知道如何生成这些文件,文档也未说明。
P11: prashna --mode kunda 输出过于简单
仅返回 {"derived_nakshatra": "Rohini", "index": 3},缺少解读内容。
P12: full-reading 模块数与文档不一致
SKILL.md 说"13模块一键出",实际返回 19 个模块。文档需要更新。
P13: celebrity --config 参数不存在
文档提到 celebrity --config,但引擎中只有 --name 和 --limit。
P14: full-reading 的 --age 参数文档未说明
引擎支持 --age 可选参数,但 quick-reference-guide.md 未提及。
P15: prashna 的 7 种 mode 文档不完整
引擎支持 chart/arudha/sphutas/sahams/lost-item/life/kunda 共 7 种模式,文档仅列了部分。
四、编码问题
中文输出全部为乱码(在终端 JSON 输出中显示为 逐逐逐 等不可读字符)。这是因为 JSON 输出中中文被 escape 为 \uXXXX 格式,但终端编码处理异常。实际在 Python 中解析后中文是正确的,但直接阅读 JSON 输出时不可读。
这个问题对 AI 调用者(程序化解析 JSON)影响不大,但对人类用户直接查看输出很痛苦。
五、AI 调用工作流中的关键断裂点
从普通用户/AI 的角度,以下工作流路径存在断裂:
路径 A(精准出生信息)断裂点:
- chart → yoga:chart 输出的行星数据无法直接喂给 yoga,需要手动拼接字符串
- chart → dasha:chart 输出月亮经度后需要手动传给 dasha,且 dasha 不接受标准参数
- chart → predict:predict 的
--chart参数需要整个 chart 的 JSON 字符串,但传参方式不直观 - full-reading 已解决大部分断裂:full-reading 内部自动串联了大部分模块
路径 B(PDF/文字星盘)断裂点:
- 引擎没有任何 PDF 读取能力,完全依赖 AI 手动提取后拼凑参数
yoga需要手动传参,对 AI 来说需要额外转换逻辑
路径 C(出生时间矫正)断裂点:
cmd_rectify子命令完全不存在- 矫正功能纯靠 AI 文档推理,无引擎支持
六、建议优先级
| 优先级 | 问题编号 | 建议操作 |
|---|---|---|
| P0 | P1, P2 | 修正 quick-reference-guide.md 中 transit 和 cmd_rectify 的文档,或实现对应功能 |
| P1 | P3 | 统一版本号,或在 SKILL.md 中明确区分"Skill文档版本"与"引擎版本" |
| P1 | P4, P5 | 为 dasha 和 yoga 增加标准出生信息参数支持(_add_chart_args) |
| P2 | P6 | 修正 varga 文档中的 -d 参数说明 |
| P2 | P7 | 增强 predict 模块的实际预测逻辑,填充 key_factors 和 timing_windows |
| P2 | P9 | 排查 Yoga 检测灵敏度过低的问题 |
| P3 | P8, P10-P15 | 修补文档细节、补充 report 使用说明、完善 celebrity 数据导入 |
七、测试通过确认的功能
以下核心计算能力验证通过:
- ✅ 行星位置计算(Swiss Ephemeris,Lahiri Ayanamsa)
- ✅ 宫位系统(Whole Sign)
- ✅ 行星尊贵状态(入庙/旺相/落陷等)
- ✅ 逆行检测
- ✅ Nakshatra + Pada 计算
- ✅ Vimshottari Dasha 大运/小运时间线
- ✅ SAV = 337(Ashtakavarga 总量验证)
- ✅ BAV 各行星 12 宫 bindus 总量验证
- ✅ Rahu-Ketu 180° 对冲验证
- ✅ R1-R10 数学验证全通过
- ✅ Shadbala 六种力量计算
- ✅ Jaimini Chara Karaka 7/8 双系统
- ✅ Tajika Muntha + YearLord + Mudda Dasha
- ✅ Synastry Ashta Koota 36 分制
- ✅ Prashna Arudha + Sphutas + Sahams
- ✅ Double Transit PAC 三层检测
- ✅ Vivah Saham 婚姻敏感点 + 双激活检测
- ✅ Argala 门闩 + Virodha 反门闩
- ✅ 名人数据库 15840 案例
- ✅ Hermes 记忆系统 store/search