我們把八字工具鏈全開源了: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日
