我们把八字工具链全开源了:bazi-kit 三件套
AskingMing 团队把支撑产品的八字工具链全部开源:计算引擎 bazi-engine、双语术语库 bazi-terms、React 排盘组件 bazi-chart,MIT 协议,欢迎复用。
做一款八字产品,最底层的痛点不是「怎么解读」,而是连一套干净的双语术语表和能用的排盘界面都没有。市面上要么只有中文资料,要么每个排盘 UI 都焊死在某一个特定的计算引擎上——想换个引擎、想显示英文标签,就得把整个视图层重写一遍。
AskingMing 在开发过程中也踩了同样的坑。所以我们干脆把支撑产品的整条工具链都整理出来,以 MIT 协议开源成了 bazi-kit —— 三个可以独立使用、也可以组合使用的 npm 包:
bazi-engine—— 计算层:传入出生时间、地点和性别,返回一张完整的命盘。bazi-terms—— 双语术语库:天干地支、十神、纳音、神煞……结构化、可翻译、零依赖。bazi-chart—— React 排盘组件:把任意命盘数据渲染成干净的双语界面。
三者之间的依赖方向是严格单向的:bazi-terms ← bazi-engine / bazi-chart。渲染组件不依赖计算引擎——你可以用我们的引擎,也可以带你自己的。
bazi-engine:从出生时间到一张完整命盘
这是整条链路里最「重」的一层,也是最容易被低估的一层。排盘看起来只是查表,但要把真太阳时、历史夏令时、城市坐标这些细节都做对,工程量远比想象中大。
import { computeBazi } from 'bazi-engine';
const result = computeBazi({
solar: '1990-03-24 09:54',
gender: 'male',
location: { city: '广州' },
});
// result.pillars, result.daYun, result.solarTime …
computeBazi 是一个纯函数:相同输入永远得到字节级相同的输出,没有 IO、没有 Date.now()、没有全局状态。它默认开启真太阳时校正(使用 Meeus 均时差公式),通过 IANA 时区数据库处理历史夏令时——比如中国 1988 年夏天实际是 UTC+9,静态偏移量表表达不了这种细节。
v1 版本覆盖的能力:
- 四柱(干支、藏干)、十神(天干级 + 藏干级)
- 纳音、旬 / 空亡、长生十二宫、自坐
- 大运(含十神与纳音)
- 真太阳时(Meeus / 近似两种算法可选)
- 内置 88 个城市的坐标与时区映射
刑冲合会、神煞、五行分值计划在 v2 加入。
bazi-terms:让每个概念都可翻译、可检索
命盘用到的每一个术语,都是结构化数据:
- 十天干
STEMS(10)、十二地支BRANCHES(12) - 五行(含相生相克)
ELEMENTS、ELEMENT_CYCLES - 十神(含日主)
TEN_GODS(11) - 十二长生
GROWTH_STAGES、神煞SHEN_SHA(38) - 六十甲子纳音
NA_YIN(30 音 / 60 组) - 刑冲合会
INTERACTION_TYPES(8)、通用术语GENERAL_TERMS(40+)
每个词条都带 key、zh、en、可选的 pinyin,以及一段可以直接贴进 tooltip 的英文定义。主力函数 translate() 永不抛错——无法识别的输入原样返回,所以你可以放心把任何引擎的原始输出直接管道给它:
import { translate, t, naYinOf } from 'bazi-terms';
t('dayMaster'); // 'Day Master'
translate('元男'); // 'Day Master' (别名自动解析)
translate('甲子'); // 'Sea Gold' (按六十甲子取纳音)
naYinOf('甲子')?.en; // 'Sea Gold'
不同引擎对同一个概念的命名往往不一样(有的用 元男,有的用 日元;有的把刑冲合会输出成枚举值),bazi-terms 通过别名和专用解析器把它们统一归一,于是一套 zh → key 映射就能服务所有引擎。
bazi-chart:把任意命盘渲染成双语界面
把你的命盘数据喂给 <BaziChart />,它会自动识别输入形状、归一化、然后渲染——不需要额外配置。
import { BaziChart } from 'bazi-chart';
// data = 你引擎的原始输出;形状会被自动识别。
export default function Reading({ engineOutput }) {
return <BaziChart data={engineOutput} lang="both" theme="light" />;
}
它会渲染完整的画面:四柱(主星、按五行着色的干支字、藏干及其十神、纳音、长生、空亡、神煞)、五行分数条、刑冲合会面板、大运时间线,以及命宫 / 身宫 / 胎元 / 胎息等辅助宫位。样式是纯内联的,不需要 import CSS,对 SSR 和任何元框架(Next.js、Remix、Astro)都安全。
如果你已经有自己的引擎、只想用我们的渲染层,bazi-chart 也能直接对接——它自动识别社区最常见的两种数据形状(顶层 八字 对象、按年月日时键控的 pillars 映射),也支持你自己构建 NormalizedChart。
安装与组合
三个包都可以单独使用,也可以按需组合:
# 完整链路:计算 + 渲染
npm install bazi-engine bazi-chart
# 只要渲染层(带自己的引擎)
npm install bazi-chart
# 只要术语库(做 i18n、博客词条、tooltip)
npm install bazi-terms
都提供 ESM + CJS 双构建和完整的 TypeScript 类型声明。
为什么选择开源整条链路
很多八字项目要么只开源算法、要么只开源 UI,中间缺了一环就逼着你去适配别人的私有格式。我们把三层都打开,是因为每一层都有独立的复用价值:
- 你正在做一款八字 App?直接用
bazi-engine算、bazi-chart渲染,省掉几个月的基础设施工作。 - 你已经有自己的引擎、只想要一个干净的排盘界面?装
bazi-chart,它不绑定任何特定引擎。 - 你在写八字相关的文章或教程、需要准确的中英对照术语?
bazi-terms零依赖,拿来就用。
这也是我们对「八字工具生态」的一点期待:与其每个人都在重复造轮子,不如把基础的部分做成公共基础设施,把精力留给真正有差异化的解读和产品体验。
关于 AskingMing
bazi-kit 是 AskingMing 底下开源出来的工具链——AskingMing 是一款 AI 八字洞察与心灵成长产品(也就是你正在看的这个站)。但这套工具是设计给任何在这个领域做开发的人用的,独立于产品本身存在。
它还早期(v0.1.x),真心欢迎反馈:术语缺漏、翻译有误、边界情况、新的命盘形状、或者非 React 的渲染器需求——都可以通过 GitHub issue 或 PR 告诉我们。
想看看这套排盘实际长什么样?输入你的出生年月日时,一键生成属于你自己的八字命盘:免费排八字。
GitHub: https://github.com/favkit/bazi-kit · npm: bazi-engine / bazi-terms / bazi-chart
推荐阅读
阴阳五行是什么?中国玄学底层逻辑入门
阴阳五行是什么?一篇讲清阴阳与五行的基本概念、相生相克关系,以及它们如何构成八字命盘的底层逻辑。
2026年9月1日天干地支是什么?八字的时间系统一次讲清
天干地支是什么?十天干与十二地支如何组成六十甲子,又如何排成你的四柱八字。一篇文章讲清八字的时间系统。
2026年8月25日八字和紫微斗数有什么区别?两种命理体系的核心差异
八字看五行生克,紫微斗数看星曜宫位——两种命理体系的排盘方式、分析视角和擅长领域逐一对比,帮你选对入门工具。
2026年8月17日八字能看事业和感情吗?看懂你的人生重心与驱动力
八字中的十神关系可以反映一个人在事业和感情中的核心驱动力。了解十神如何影响你的职业选择和关系模式。
2026年7月20日什么样的 AI 八字解读才算靠谱?四个判断标准
不是所有 AI 命理工具都一样。了解如何判断一个 AI 八字解读产品是否有参考价值,避免被空泛文案误导。
2026年7月18日八字配对 vs 星座配对 vs 生肖配对:哪种更有参考价值
从分析维度、信息深度和实用性角度,对比八字合婚、西方星座配对和生肖配对三种常见方式。
2026年7月15日
