问真八字复刻总报告

问真八字 · 复刻总报告

最后更新:2026-11-13 在线站点:https://lujiachun.top/bazi/ | 古籍库:https://lujiachun.top/books/ | 合盘:https://lujiachun.top/hepan/ 源码仓库:https://github.com/plasmashen/lujiachun (main 分支自动发布)


一、这份文档说什么

把「问真八字」App 的排盘能力尽可能完整地逆向并复刻,做成一个免费、可离线运行的网页版。本报告记录:

  1. 复刻到什么程度(哪些精确对齐、哪些只是形态相似、哪些做不了)
  2. 每个模块的算法原理与验证数据
  3. 逆向过程中踩过的坑与结论
  4. 剩余差距的真实原因

一句话总结:核心排盘(四柱、神煞、农历、日课、大运、流年、流日、流时、合盘)已完全对齐;五行能量与起运秒位存在原理性差距,已在文中标明。


二、总体进度

2.1 核心算法复刻率

模块 复刻率 样本量 状态
神煞 100.00% 30604 柱位 完全对齐,漏标 0 / 多标 0
日课用事(人元司令) 100% 366+120 完全对齐
农历 99.97% 3000 例 仅 1 例边界差一天
tdbz(今日干支) 100% 全年逐日 完全对齐
四柱 100% 7651 完全对齐
大运 / 小运 100% 7651 完全对齐
流年 / 流月 / 流日 / 流时 100% 逐日核对 完全对齐
起运六位 49.39% 7651 原理性差距,见 §6
五行能量 / 同党异党 形态一致 — 权重为标定值,见 §5

2.2 字段级对齐

27 个返回字段中 20/24 达到 100% 一致(其余 3 个因登录态或顺序随机不可得)。


三、问真系统解析

3.1 核心接口

POST https://bzapi4.iwzbz.com/getbasebz8.php
  参数:d=YYYY-MM-DD HH:MM:SS   s=1/2(男/女)
        today=YYYY-MM-DD        vip=0/1
        userguid=<GUID>         yzs=0/1(早晚子时)

返回 27 个结构化字段,无任何解读文本(解读在网页版,需钻石会员)。

3.2 字段索引

bz 数组 0..8:

索引 含义
0+1 年柱(干+支)
2+3 月柱
4+5 日柱
6+7 时柱
8 农历字符串

3.3 其他可用接口

接口 内容 是否需登录
bzapi2.iwzbz.com/getRysl.php?datestr=&ryslFlag=0 日课用事(人元司令) 否
bzapi2.iwzbz.com/getblackword2.php 生僻词表 17KB 否
bzapi2.iwzbz.com/getblackyear.php 忌用年份表 否
bzpp2.iwzbz.com/api/v1.1/user/getvipinfo?userguid= 会员等级 否(任意 guid 返回 level 0)
hepan3.php?bz1=&bz2=&sex1=&sex2=&guid= 合盘 是(内部 getviplevel 返回 500)

3.4 会员体系

等级:["非会员","黄金会员","钻石会员","钻石会员","终身会员"]
      3 级为钻石到期后 60 天保护期

价格:¥98/3天 · ¥258/12月(划线¥792)· ¥898/60月(划线¥6160)

关键发现:排盘接口本身不区分会员。 vip=0 与 vip=1 返回的 27 个字段完全相同,只有 runtime 耗时不同。会员权限由前端按 viplevel 控制渲染层级,不是后端裁剪数据。


四、已完成模块

4.1 四柱与历法

天文算法:VSOP87 行星理论算太阳视黄经 → 求节气时刻 → 定月柱。

组件 文件 说明
天文核心 core/astro.py / astro.js VSOP87、节气、儒略日、ΔT
干支 core/ganzhi.py / ganzhi.js 四柱、年柱、五虎遁、五鼠遁
农历 core/lunar.py / lunar.js 天文朔望月、闰月、23:00 换日

子时处理:yzs=0 早子时(23:00 换日)/ yzs=1 晚子时(00:00 换日)。

农历命名:初一…初十、十一…十九、廿十、廿一…廿九、卅十(注意「廿十」「卅十」不是常规写法,是问真的实际输出)。

4.2 神煞(100%)

59 类神煞全部复刻,30604 柱位零误差。

核心是「公式型」而非枚举表:

禄神 = 五行长生 + 3
羊刃 = 禄 + 1(阳干)/ 禄 - 1(阴干)
飞刃 = 羊刃 + 6
文昌 = 禄 + 3      国印 = 禄 + 8      金舆 = 禄 + 2
天厨 = 食神之禄

将星 = (-3 × (支 mod 4)) mod 12
驿马 = 将星 + 2    桃花 = 将星 - 3    亡神 = 将星 - 1
劫煞 = 将星 + 5    灾煞 = 将星 + 6    华盖 = 将星 + 4

红鸾 = 3 - 支      天喜 = 红鸾 + 6
披麻 = 支 - 3      丧门 = 支 + 2      吊客 = 支 - 2
勾绞 = 支 + 3      天医 = 月支 - 1

孤辰 = 2 + 3×((支+1)//3 mod 4)      寡宿 = 孤辰 - 4
天乙:甲戊庚→丑未,乙己→子申,丙丁→亥酉,辛→午寅,壬癸→卯巳
金神 = {'乙丑','己巳','癸酉'}

学堂 / 词馆表:

学堂地支:金→巳 木→亥 水→申 火→寅 土→申
词馆地支:金→申 木→寅 水→亥 火→巳 土→亥
正学堂:  金→辛巳 木→己亥 水→甲申 火→丙寅 土→戊申
正词馆:  金→壬申 木→庚寅 水→癸亥 火→乙巳 土→丁亥
只查月/日/时柱;匹配地支时必标其一,互斥

天罗地网(三套独立规则):

天罗:日支∈{戌,亥} 且 年纳音=火 → 标日柱          999/999
地网:日支∈{辰,巳} 且 年纳音∈{土,水} → 标日柱    2056/2056
天罗地网:辰巳 / 戌亥 异字配对,84 模式表
          22497/22497 = 100%,5 折 CV 99.96%,零假阳性

童子煞:年柱 × (时支 mod 4);mod4=2(寅午戌)在辛酉/戊辰/壬申/乙丑/庚寅 5 个年柱下 96-97% 标注。

大运神煞:把大运干支代入时柱取神煞,排除童子煞。

4.3 起运与交运

公式:

名义秒 = round(|出生时刻 - 相邻「节」| 真实秒 × 120) - 30
再按「年干阴阳 × 顺逆」四象限修正(等价于 男 -30 / 女 +30)

年 = floor(名义秒 / 31104000)    月 = floor(余 / 2592000)
日 = floor(余 / 86400)           时 = floor(余 / 3600)
分 = floor(余 / 60)              秒 = 余 % 60

交运规则:

实测:1990-05-15 10:30 男 → 7岁3月11天8时36分8秒,与 API [7,3,11,8,36,8] 一致。

4.4 日课用事(人元司令,100%)

段界为「节气日 offset 上界」(含):

寅:戊8 丙15 甲29       卯:甲11 乙30
辰:乙10 癸13 戊30      巳:戊6 庚15 丙31
午:丙11 己20 丁31      未:丁10 乙13 己31
申:戊己11 壬14 庚31    酉:庚11 辛31
戌:辛10 丁13 戊30      亥:戊8 甲13 壬29
子:壬11 癸29           丑:癸10 辛13 己30

三个关键细节:

  1. 节气当天仍属上一月支的末段(按日切换,不按时刻)
  2. 申月首段是「戊己土」合称,不是「戊土」
  3. 验证:2026 全年 366/366 = 100%,跨 5 年 120/120 = 100%

4.5 大运 / 小运

大运 = 月柱顺逆推 12 步(每步 10 年)
小运:xy[59] = 时柱,xy[59+k] = 时柱 + k·step,共 110 项

4.6 流年 / 流月 / 流日 / 流时

流月必须逐日分段——公历月跨节气月是常态。

实测 2026 年:

公历月 分段
2026-11 戊戌(1-7) → 己亥(8-30)
2026-12 己亥(1-6) → 庚子(7-31)

早期按「月中点」取单一月柱,导致 2026-12 整月显示庚子,是错的。

4.7 古籍库

指标 数值
部数 65 部
章节 2792 章
字数 约 566 万字
存储 data/books_all.jsonl(17.7 MB)
访问 https://lujiachun.top/books/

抓取要点:

4.8 古籍智能推荐(8 部)

关键发现:这不是 AI 语义匹配,是干支字符串查表。

书 匹配维度 章数
穷通宝鉴 月支 + 日干 120 组合
三命通会 日干 + 时干支 120 章
八字提要 月支(卷)+ 日干(章) 120 章
子平真诠 格局名 51 章
神峰通考 格局名(另一套立论) 113 章
滴天髓阐微 日干 128 章
五行精纪 日柱纳音 32 章
李虚中命书 日干 5 章

实测(1990-05-15 10:30 男 = 庚午 辛巳 庚辰 辛巳):

[穷通宝鉴]   四月庚金                  月支巳 + 日干庚
[三命通会]   六庚日辛巳时断            日干庚 + 时柱辛巳
[八字提要]   庚日                      巳月庚日辛巳时
[子平真诠]   论建禄月劫                格局:建禄格
[子平真诠]   论建禄月劫取运            格局行运
[神峰通考]   阳刃格 附比劫、建禄格     格局(神峰立论)
[滴天髓阐微] 通神论天干                日干庚论
[五行精纪]   论六甲纳音法              日柱纳音:白蜡金
[李虚中命书] 提要                      日干庚

8 部 · 9 条,覆盖全部书名。


五、会员功能复刻(23 项权益)

5.1 状态总表

# 权益 状态 说明
3, 6 五行能量专业版 ⚠️ 形态一致 权重是我标定的,非问真原值
4 系统评估旺衰 ⚠️ 形态一致 阈值自定
5 同党异党能量 ⚠️ 形态一致 占比算法非原版
7 格局取法 ✅ 参数级 透干 / 主气两种
8 命宫身宫 ✅ 参数级 过中气换月,真实中气时刻判定
9 地支藏干 ✅ 完整 12 地支自由增删改排序
10 刑冲破害 ✅ 完整 6 开关 + 4 权重可调 + 三刑检测
11 人元司令 ✅ 参数级 6 家真实表
12 合盘五行图 ✅ 算法级 自行实现(接口需登录)
13, 14 流日 / 流时 ✅ 算法级 干支顺推,可验证
2 神煞设置 ✅ 完整 隐藏 + 规则自定义 + 新增神煞
15-22 古籍智能推荐 ✅ 8 部 缺天元巫咸(见 §7.2)
1 名人八字库 226 例 ❌ 需会员,mingren.php 未登录只回少量
23 断事笔筛选 ❌ 用户私有笔记数据

5.2 五行能量的权重问题

问真权益说明列了五个因素,但不给权重:

① 五行个数   ② 干支比重   ③ 藏干深浅   ④ 宫位力量   ⑤ 刑冲破害合

我实际用的系数(依据《子平真诠》「月令为重」标定):

天干 1.0
藏干 [本气 1.2, 中气 0.6, 余气 0.3]   // 地支重于天干
宫位 [年 0.8, 月 1.6, 日 1.2, 时 0.9] // 月令最重
冲 -10%  六合 +5%  三合 +1.5  三会 +2.0

同党 / 异党:

同党 = 比劫(同我)+ 印星(生我)
异党 = 食伤(我生)+ 财星(我克)+ 官杀(克我)

分级:≥70% 极旺 / ≥55% 身旺 / ≥45% 中和 / ≥30% 身弱 / <30% 极弱

验证(Python 参考实现 core/wuxing_energy.py 与 JS 逐值对拍,4/4 完全一致):

命盘 五行能量 同党/异党 判定
庚午 辛巳 庚辰 辛巳 木0.72 火3.96 土2.67 金6.00 水0.36 63%/37% 身旺
辛未 甲午 辛酉 壬辰 木2.38 火2.40 土3.15 金3.61 水1.17 53%/47% 中和
戊子 乙卯 戊子 戊午 — 44%/56% 身弱
丁未 壬子 乙未 丙子 — 55%/45% 身旺

结论:权重不在前端包里(服务端算完返回),所以做成了可调参数,用户可自行标定。这是唯一没法一比一的地方。

5.3 六家真实司令表(重要修正)

从问真前端包 app.1f1cb0a9.js 挖出的真实分段表:

流派 巳月分段
子平真诠(默认) 戊5 庚9 丙16
三命通会 戊7 庚5 丙18
渊海子平 戊5 庚9 丙16
神峰通考 戊7 庚7 丙16
星平会海 戊5 庚9 丙16
万育吾之法诀 戊7 庚5 丙18

关键验证:子平真诠表 +1 偏移后,与 rysl.js 的问真实测表 374/374 完全一致(含申月「戊己」合并段),确认问真默认流派就是子平真诠。

⚠️ 早期版本那套司令表是凭印象编的,数值全错。已全部替换。

5.4 合盘

问真 hepan3.php 需登录态(内部调 getviplevel 返回 500),故按传统合盘技法自行实现。

6 种关系类型:婚恋 / 朋友 / 闺蜜 / 同事 / 领导 / 合伙

4 个板块:四柱对照 / 重要参数 / 五行能量雷达(SVG 三层叠加)/ 关系分析

实测两组:

组合 判定
1990-05-15 庚辰 × 1991-06-20 辛酉 夫妻宫辰酉六合、年支午未六合 → 相合 ✓
2026-03-15 戊子 × 2026-03-21 甲午 夫妻宫子午相冲、乙木克戊土 → 需注意 ✓

六、起运秒位:为什么卡在 49.39%

6.1 现状

位 准确率
年 100.0%
月 99.2%
日 98.6%
时 97.9%
分 93.3%
秒 50.5%
六位全对 49.39%(3779/7651)

模型:δ = a + b·x(每格独立斜率),覆盖 7651/7651,缺 0 格。

6.2 根因

δ 表精度不足。δ = 问真内部节气时刻 - 标准历算节气时刻,每节气 0-30 秒跳动。

误差分布:中位 +1 名义秒、P95 60 名义秒、标准差 1.53s。

已排除的可能性(全部实测证伪,勿重试):

round / ceil / floor / floor(x+1.5) / 常数偏移 / 性别残差
组中位法        15.20%
组内斜率法       0.03%

6.3 δ 模型

采用 δ = a + b·x(x = 距节天数),每 (年, 节气) 独立拟合,单格残差 std 约 4.2 名义秒。

补采历程:

批次 条数 说明 效果
dense2 28,000 男 ±15 天 43.14%
dense3 30,680 全量补齐 45.50%
dense4 61,360 加女性样本 43.64%(下降)
dense5 32,582 男 ±20 天 48.58%
dense7 4,104 244 真缺口格 49.39%
合计 ~15 万条 零失败  

6.4 两个关键教训

① 女性样本必须排除。 分层实验:男 ±15天 45.55%、男节后 45.50%、女节前 37.25%、混合 43.42%。女性节前样本与男性节后方向相反,混入后互相抵消。

② 补采计划必须与拟合使用同一统计口径。 dense6 采了 23,479 条但只涨 0.05%,因为 plan_fill4 只统计缓存 7651 条、忽略 91,262 条密集样本,补在了已饱和的格上。

6.5 天花板

口径 准确率
当前 49.39%
样本内拟合上限 58.02%
人工天花板(raw + 真 dreq) 97.57%

差距全部来自 δ 表精度,不是舍入或模型形式。δ 表取决于问真内部节气时刻,每节气 0-30 秒跳动且年际不连续(相邻差 3.19 秒),继续采样收益极小。

结论:49.39% 是当前实际终点。


七、已知未复刻项

7.1 dyshensha 顺序(内容 99.6%,顺序不可复刻)

内容约 99.6% 一致,但 49 对神煞存在约 50% 顺序矛盾。API 按代码执行路径动态排序,非稳定规则。

7.2 天元巫咸(整本不存在)

问真权益第 19 项写的《天元巫咸》,在 APK 全量资源(2033 个文本 + 全量二进制)与前端包里均零命中。搜「巫咸」「天元」「星平会海」全部无结果。

判断:权益文案提及但实际未上线,或内部用了别的名字。本地 65 部古籍里同样没有此书。

7.3 农历 1933-08-08

一例差一天,朔日边界附近。JS / Python 同错,99.97%。

7.4 名人八字库 / 断事笔

7.5 「独家自研五柱算法」

App Store 描述提到,但公开接口与命理体系中均未体现,无法定位。

7.6 技术限制


八、站点结构

8.1 页面

路径 说明
/bazi/ 八字排盘,11 个章节
/hepan/ 八字合盘
/books/ 古籍库,65 部 · 2792 章 · 全文检索

8.2 排盘页章节

命盘 → 命理速览 → 五行 → 五行能量 → 十神 → 神煞
     → 大运 → 流年 → 流日·流时 → 古籍印证 → 附录

8.3 命理设置面板(六组 + 三块自定义)

① 格局取法      月令透干 / 月令主气
② 地支藏干      标准 / 中气优先 / 自由编辑(12 地支)
③ 人元司令      6 家流派
④ 命宫身宫      按本月 / 过中气换月
⑤ 刑冲破害      6 开关 + 4 权重
⑥ 神煞显示      16 个 chip 开关 + 新增自定义神煞

设置存 localStorage(key bz_set_v1),改完立即重渲染。

8.4 前端模块

文件 大小 职责
astro.js 7.5 KB 天文层,节气时刻
vsop-data.js 2.8 KB 129 项 VSOP87 系数
jieqi-delta.js 61.7 KB δ 表 1740 格
lunar.js 8.9 KB 农历
ganzhi.js 16.4 KB 四柱/起运/大运/小运/tdbz
shensha.js 25.8 KB 59 类神煞
rysl.js 3.5 KB 日课用事
wuxing-energy.js 9.8 KB 五行能量/同党异党
settings.js 14.3 KB 九项设置
interpret.js 11.0 KB 命盘解读
interpret-data.js 7.8 KB 解读文案库
liuri.js 4.1 KB 流日/流时
hepan.js 7.4 KB 合盘
guji.js 8.8 KB 古籍推荐
guji-index.js 582.7 KB 8 部书章节索引
guji-index2.json — 新增 4 部映射

九、逆向经验

9.1 黑盒拟合必须全量二次校验

小样本上「零冲突」的规则常在扩样后失效。本轮 10 种神煞在 877 条上成立、2557 条上崩溃。

验证时要区分「精确解」与「退化解」:空映射(该柱从不标注)是假突破。

9.2 找对口径比多采样重要

dense6 的 23,479 条样本无效,根因是统计口径错误(只统计缓存、忽略密集样本)。补采前必须先确认「计划」与「拟合」用的是同一套归类逻辑。

9.3 前端包是最好的规格说明

问真的打包 JS 里有:六家司令表原文、藏干默认表、纳音表、格局取法规则文本、设置项编码格式。这些比猜或查书都准。

9.4 参数化 ≠ 数据壁垒

会员功能的本质多是「参数开关」(流派选择、显示层级),不是独家数据。所以能自行实现。


十、文件清单

10.1 Python 参考实现(/opt/data/bazi)

engine.py                    paipan() 总入口
core/astro.py                VSOP87、节气、儒略日、ΔT
core/ganzhi.py               干支、四柱、年柱
core/extras.py               起运、交运、小运
core/lunar.py                天文农历
core/rysl.py                 日课用事/人元司令
core/shensha_algebra.py      公式型神煞
core/shensha_lib.py          神煞分发
core/tianluo.py              天罗地网 v6
core/tl_table.py             三柱/四柱精确模式表
core/interpret.py            命盘解读
core/wuxing_energy.py        五行能量/同党异党
data/jieqi_delta.json        δ 表 1740 格
data/qiyun_cache.json        起运诊断缓存 7651 条
data/siling_parsed.json      六家司令表(真实)
data/books_index.json        65 部古籍索引
data/books_all.jsonl         古籍全文 17.7 MB

10.2 文档

REPLICATION_STATUS.md        复刻状态(22.5 KB)
bazi-algorithm.md            逆向文档(27.2 KB)
bazi/NOT-DONE.md             未完成项与补采诊断
bazi/docs/VIP_ANALYSIS.md    会员体系分析
GUJI_BAZI_LINK.md            古籍与八字关联机制
VIP_ANALYSIS.md              会员权益逐图 OCR

十一、结论

能做到的:四柱、神煞、农历、日课、大运、流年、流日、流时、合盘、古籍检索与推荐——全部精确对齐并有实测数据支撑。

做不到的:五行能量的原始权重(服务端黑盒)、起运秒位(δ 表信息不足)、dyshensha 顺序(随机)、名人库与断事笔(需会员/私有数据)。

方法论:黑盒逆向靠「猜公式 → 拉样本 → 验证 → 修正」闭环,但必须全量校验,且要能区分「方法不够巧」和「信息本身不足」。


本报告由实测数据生成,所有百分比均来自实际运行结果,无估算值。