问真八字复刻总报告
问真八字 · 复刻总报告
最后更新:2026-11-13 在线站点:https://lujiachun.top/bazi/ | 古籍库:https://lujiachun.top/books/ | 合盘:https://lujiachun.top/hepan/ 源码仓库:https://github.com/plasmashen/lujiachun (
main分支自动发布)
一、这份文档说什么
把「问真八字」App 的排盘能力尽可能完整地逆向并复刻,做成一个免费、可离线运行的网页版。本报告记录:
- 复刻到什么程度(哪些精确对齐、哪些只是形态相似、哪些做不了)
- 每个模块的算法原理与验证数据
- 逆向过程中踩过的坑与结论
- 剩余差距的真实原因
一句话总结:核心排盘(四柱、神煞、农历、日课、大运、流年、流日、流时、合盘)已完全对齐;五行能量与起运秒位存在原理性差距,已在文中标明。
二、总体进度
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
交运规则:
- 交运日期 = 出生 + 起运年/月/日
- 首干 = 交运日年柱天干(立春为界)
- 次干 = 首干合化干(甲↔己、乙↔庚、丙↔辛、丁↔壬、戊↔癸)
- 节气 = 交运日前最近「节」
- 输出:
逢X、Y年 立秋后19天 交大运
实测: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
三个关键细节:
- 节气当天仍属上一月支的末段(按日切换,不按时刻)
- 申月首段是「戊己土」合称,不是「戊土」
- 验证: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/ |
抓取要点:
- 站点
https://www.iwzbz.com/artical/pcbook/v2/<id>.html - 未登录即可读全文,无 VIP 墙、无试读截断
- 目录类名兼容
items/items2 - 需清理软连字符 U+00AD、U+200B、U+200C、U+FEFF
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 名人八字库 / 断事笔
-
名人八字库 226 例:
mingren.php未登录只返回少量,无法全量获取 - 断事笔筛选:用户私有笔记数据,不存在于任何公开接口
7.5 「独家自研五柱算法」
App Store 描述提到,但公开接口与命理体系中均未体现,无法定位。
7.6 技术限制
-
Jekyll 本地不可构建:容器无
jekyll/bundle/ruby,只能静态校验 HTML 与 front matter -
浏览器截图中文方块:容器字体与浏览器沙箱字体环境隔离,
@font-face内嵌也未生效,只能 DOM 量测
八、站点结构
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 顺序(随机)、名人库与断事笔(需会员/私有数据)。
方法论:黑盒逆向靠「猜公式 → 拉样本 → 验证 → 修正」闭环,但必须全量校验,且要能区分「方法不够巧」和「信息本身不足」。
本报告由实测数据生成,所有百分比均来自实际运行结果,无估算值。