大多数八字工具在黑箱里计算,把输出当神谕。我们反其道而行:塑造你盘面的每一条约定都声明在下面,每个边界情形都被常设测试套件覆盖,我们发现的每一个 bug 都刊载在勘误日志里。不能被审计的盘,就不值得信。
排盘由开源天文历法库 lunar-javascript(作者 6tail)计算,外面包着我们的约定层——八字引擎 BaZi Engine v0.6.0——负责真太阳时、时区、夏令时、子时换日、十神归属与大运层。同一份引擎代码同时驱动本网站与后端测试台,由自动化回归套件验证:33 个边界用例逐柱比对两套实装的每根柱、每个藏干、每个十神与纳音,外加100 组日主×天干全组合对账、4,939 条断言的大运套件,以及三层的合盘套件(全域关系扫描、历法库对账、黄金盘对)。两套实现一旦分歧,构建即失败。
年柱在立春的精确瞬间切换——不是农历新年。2 月 3 日与 2 月 4 日出生可能是不同的年。
月柱在每个「节」切换——那是全球同一个天文瞬间。我们把你出生的瞬间(换算成 UTC)与节气表比对,从不按日历日期切换。
23:00 及之后出生,日柱进到次日(子平主流,sect=1)。午夜换日作为流派选项提供,你的盘会标注所用规则。
钟表时间按 (出生地经度 − 时区中央经线)× 4 分钟校正。中央经线恒为时区偏移 × 15(UTC+8 → 东经 120°)。均时差(±16 分钟)尚未应用——计划在 v2 接入,上线时会在这里公告。
节气边界是全球时刻,所以年柱与月柱由出生瞬间换算成 UTC 后判定——这对远离本初子午线、又出生在节气交界附近的盘至关重要。日柱与时柱仍用当地真太阳时,因为「日」是在当地子时翻页的。
年干与月干的十神永远对照你真实的日主计算——即使绝对时刻盘在技术上已经跨到了次日(美洲出生常见)。
1986–1991 年 5 月 4 日至 9 月 14 日之间在中国大陆出生的,自动减去一小时,并在结果上标注此校正。
时辰未知给出显式的三柱盘——我们不猜。五行计数按三种口径展示(干 + 支主气 / 藏干半计 / 藏干全计),因为「怎么数」本身就是流派差异。
阳年干男命,或阴年干女命,顺排;另外两种组合逆排。方向读自以立春为界的年干,也就是你盘面上显示的那个年柱。全部二十种组合列在大运页。
量出生瞬间到主管之「节」的距离——顺排取下一个节,逆排取上一个——用绝对时间度量,与约定 4b 同一参照系。再按 3 日 = 1 年、1 日 = 4 个月、1 时辰 = 10 日换算。换运日期 = 记录的出生日期时间 + 该差值。
我们按两种口径返回起运岁数并展示差值:时辰块量化(余数向上取整到整时辰块——主流 App 的口径)与分钟级精确(同一 3 日比率、不做块量化)。两者至多差 10 天运。我们不替你偷偷选一个。
时辰块按记录的当地钟表(已扣夏令时)计数——纸质万年历的读法,因而是历史口径。改按真太阳时计数作为替代提供,两者结果与差值都展示,因为这是计算器之间分歧的第二大来源。
lunar-javascript 自带的大运程序把 23:00 出生当作亥时,而它自己的时柱程序却把同一时刻当作子时。这个不一致会给恰好落在 23:00–23:59 的出生少算一个时辰块,并传导进起运岁数。我们不继承它:我们的块计数器像对待其他奇数小时一样,在 23:00 放置边界。所有因此产生的差异都由测试套件记录在案,而不是糊弄过去。
合盘工具在两盘之间套用固定的经典表:天干五合与四冲;地支六合(附化神——午未之化有争议,已标注);六冲、六害、相刑组(寅巳申、丑戌未任意两支,及子卯,外加辰午酉亥四组自刑);以及三合——两盘各持其二的支以有争议的半合展示,绝不悄悄当成全三合计。没有任何优先级替你消解合与冲——巳申既合又刑,两个标签都打印。
跨盘互动是现代合婚的用法——没有经典文献让两个盘互动。因此引擎只枚举关系,绝不产出匹配百分比:任何权重或分数都是发明,而本站不发明东西。
喜用神工具用可见的权重给日主强弱计分:每个可见天干 1 分,每个地支主气 1 分加每个藏干 0.5 分(与五行计数相同的半权口径),整个月柱翻倍。日干自身记 0 分——它是被测量的对象。还会手工参看根气、合冲的命师可能得出不同判词;权重全部公开,欢迎你逐分反驳。
生扶(比劫 + 印星)占≥ 55% 为身强,≤ 45% 为身弱,之间为中和。其他流派划线在别处。55/45 是本引擎声明的选择,印在结果上,而不是藏在默认值后面。
扶抑派对身强与身弱给出答案——强取泄耗克、弱取印比劫——并且对中和的盘不给方向,而不是编一个。调候派独立计算。两派分歧时,两种读法都打印并加旗标;本站不裁决。
简化的调候规则只在存在一句话规则的地方作答:盛夏取水,深冬取火。春秋两季,经典调候按日主逐月查表(《穷通宝鉴》,120 条),无法压缩成季节规则——所以工具对那些月份不给调候答案,而不是给一个假的完整答案。
有些问题没有唯一正确答案——只有流派。当约定选择会改变你的盘时,我们不把它藏在默认值后面:
钟表 vs 真太阳时 15:30 出生经校正为 14:29,从未时跨入申时。我们计算真太阳时并展示校正值;按原始钟表排的盘可能显示相邻时辰。23 点 vs 午夜 两条日柱规则都可选;你的盘有标注。五行计数 三种口径并列。块量化 vs 分钟级 主流口径把剩余距离向上取整到整时辰块,最多差 10 天运;两者与差值都公布。用哪个钟数块 当地钟表(万年历实践)或真太阳时(与时柱口径一致)——都展示,差值量化。三合只差一支 全三合成局;两支算不算半局是流派差异——标注为有争议,不打分。一对之上合冲并存 没有优先级替你消解(巳申两者皆是);每条关系都打印。
扶抑派 vs 调候派 喜用神是流派的输出而不是事实;两派并列计算,分歧加旗标,从不裁决。强弱阈值 55%/45% 是声明值——别的流派划在别处;生扶份额精确打印,你可以套用自己的一套。这个引擎发现的每一个缺陷、怎么发现的、改了什么。这本日志从第一天就开始记——包括下面的 bug——因为没有勘误记录的方法论页只是营销页。
| 日期 | 版本 | 缺陷与修复 | 怎么发现的 |
|---|---|---|---|
| 2026-09-16 | v0.1 → v0.2 | 真太阳时基准硬编码为东经 120°(中国中央经线),所有海外出生全部算错。加入显式 tzOffsetHours 参数(含夏令时,如伦敦七月 = UTC+1)。 | 人工专家抽查:1991-03-23 11:00 纽约——正确盘为 辛未 辛卯 壬辰 丙午。 |
| 2026-09-16 | v0.2 → v0.3 | 年月柱改按绝对瞬间(UTC)对照节气表判定;v0.2 在该用北京时间的地方喂了本地时间,节气交界附近的远经度出生全被排错。 | 人工专家抽查:1993-07-07 15:30 伦敦。1993 年小暑 = 北京时间 7 月 7 日 10:32:02(三个独立来源一致);出生 = 北京 22:30 → 已过节气 → 月柱己未。某热门 App 显示戊午,是按日期而非按瞬间切换月柱。 |
| 2026-09-16 | v0.3 → v0.3.1 | 年月干的十神此前对照绝对时刻盘的日主计算,而美洲出生换算成北京时间后日主已变。十神现在永远对照真日主。 | 双引擎回归套件(33 例,逐柱)——网页移植期间搭建。 |
| 2026-09-16 | v0.3.1 → v0.3.2 | 真太阳时基准的经度取整启发式(如成都 104°E → 105°)与引擎自己关于乌鲁木齐 ±2h 的文档相矛盾。基准改为恒为 UTC 偏移 × 15,与教科书定义一致。 | 双引擎回归套件 —— 网页移植的第一道闸门在上线前抓住两个约定级缺陷。 |
| 2026-09-17 | v0.5.0 → v0.6.0 | 新增喜用神层:日主强弱按公开权重计分(可见干 1、支主气 1、藏干 0.5、月柱 ×2、日干不计),声明强弱阈值(0.55/0.45),身强身弱的扶抑派,以及简化调候规则(夏取水、冬取火,其余月份不给答案)。已发布的排盘、大运与合盘关系全部不变——所有既有 fixtures 照常通过。本层无缺陷漏网发版;三道黄金盘闸门(身强、身弱、恰在 0.5 的中和)在网页移植前锁定,双引擎逐字段比对覆盖 8 盘(含未知时辰与 23:00 出生)。 | 三层:对 168 个盘做不变量扫描(计分逐项复加、判词按阈值重推、喜忌集合检查不相交且完备、月柱加倍与日干不计逐项复核);六张人工核验的黄金盘逐字段锁值,覆盖每条判词路径与两个调候季节;以及 8 组输入的双引擎一致。页面上的实例(1988 年 7 月 8 日北京)正是被锁定的黄金盘之一,用户看到的算术就是被测试的算术。 |
| 2026-09-17 | v0.4.0 → v0.5.0 | 新增合盘层:两日主互为十神、全部十六组干对与十六组支对照五合四冲、六合六害相刑三合表逐一核查、生肖对、以及跨盘三合局。已发布的排盘与大运不变——所有既有 fixtures 与 4,939 条断言套件照常通过。一个缺陷在发版前被我们自己的真值表闸门抓住:化神查找表的键按传统书写序(子丑、甲己),而关系检查器生成的查找键按码点排序(丑子、己甲),子丑合与甲己合会静默查不到化神。两套引擎已统一键序,并对 144 组支对全扫描,断言每条关系连同它的化神。 | 三层:教科书枚举加全域扫描(144 组支对与 100 组干对逐一分类,多报与漏报都会失败);与 lunar-javascript 的 HE_GAN_5 / HE_ZHI_6 / CHONG / SHENGXIAO 对账(库中没有害、刑、三合表——注意它的 ZHI_XING 是建除十二神不是相刑表,这个引用陷阱我们已留档);以及四张人工核验盘对的黄金全树锁值。两套引擎另做 8 组盘对与全部 244 组干支组合的逐字段比对。 |
| 2026-09-17 | v0.3.3 → v0.4.0 | 新增大运层:顺逆规则、两种已公布粒度的起运算术、十二长生、以及带精确换运日期的十步大运序列。本版本排盘计算不变——33 个边界 fixtures 逐字节通过。新层构建中自抓两个缺陷:(a) 块计数器最初把 23:00 当作子块的起点而非亥与子的边界,凡跨 23:00 的区间起运岁数整整差一个块;(b) 节气瞬间被截断到分钟,展示的距离偏差约 35 秒。两者均已有新断言覆盖。 | 三道彼此独立的闸门,刻意不采用历法库自己的答案:数学上界(块量化结果与精确线性比率的差不得超过半个块,即 130 天运——实测最大 9.83);对 48 个盘逐项对账 lunar-javascript 的 getYun(),其中十例落在 23:00 区段,记为已声明的分歧而不是强行对齐;以及全部二十种顺逆组合、十二支藏干的人工可核真值表。 |
| 2026-09-17 | v0.3.2 → v0.3.3 | 十神推导改为暴露结构化数据(关系组、阴阳、两种极性变体),十神工具得以展示每个标签背后的规则而非只有标签。另修一个展示缺陷:英文页的日柱流派被打印成内部中文串。本版本排盘计算不变。 | 自动化对账测试:全部 100 组日主×天干组合在两套引擎实现间逐字段比对,外加 14 个人工核验的已知值——既防两套实现各自漂移,也防它们一起漂移。 |
33 例边界套件 常设 fixtures 覆盖立春边界、交节日跨越(瞬间前后精确到分钟)、两种流派的晚子时、未知时辰、1986–91 中国夏令时窗口、极端经度(乌鲁木齐 −2h09m)、海外跨日出生、闰日,以及十个日主全覆盖。
喜用神套件 6 张黄金盘逐字段锁值(身强、身弱、中和、恰在 0.50 的中和、一例流派分歧、一例未知时辰),外加 168 盘不变量扫描:每个分数从逐柱明细复加,每个判词按公开阈值重推,喜忌集合检查不相交且完备。工具页上打印的实例正是被锁定的盘之一。
双引擎回归 浏览器引擎与后端引擎是同一份共享实装,每次改动都对全部 fixtures 重跑;任何漂移即构建失败。
100 组十神对账 每组日主×天干(10 × 10)都在两套引擎实现间逐字段比对,外加对完整一行的人工核验参考值——两套实现既不可能各自漂移,也不可能一起漂移。
4,939 条大运断言 起运算术的验证不依赖任何单一来源:对精确线性比率的数学上界、必须落在已知值的整倍数用例、以及对历法库自带大运程序的 48 盘对账——23:00 区段内的每一处分歧都记为已声明的分歧,并断言恰好一个块宽。顺逆、时辰块映射、十二支藏干均对照人工真值表核验。
站内一致性闸门 脚本检查每个页面携带同一引擎版本、同一导航、合法的 canonical URL、无站内死链,以及 sitemap 列全了所有应公开的页面。它与测试套件一起运行,新页面不可能半接线就上线。
真浏览器关卡 无头 Chrome 逐页加载、提交一张盘、断言渲染输出后截图——DOM 桩里通过的页面在真浏览器里仍可能是坏的。
人工专家闸门 领域专家抽查边界盘、对照可信参考。被这道闸门抓住的两个缺陷都在上面的日志里——这正是这道闸门留下的原因。
八字是一套用于自我认知与反思的中国传统形而上框架——更接近一副性格透镜,而不是预测机器。我们不对健康、财富或未来做任何断言,这里没有内容构成任何建议。你的出生数据只用于排盘,不做他用。
排出你的八字 → 推导你的十神 → 推算你的大运 → 比较两个盘 → 给你的喜用神计分 →