BaziJS 是一個基於 JavaScript 的開源軟體開發套件(SDK),旨在為網頁開發者提供一套標準化的八字(四柱)排盤計算引擎。該專案的核心目標是將傳統命理中模糊的判定過程轉化為可計算、可追溯且結構化的數據格式。開發者無需深入研究複雜的曆法換算或命理古籍,即可透過簡單的 API 調用,將出生日期與時間轉換為包含四柱、十神、神煞、大運及強弱分析的完整命盤結果。
專案定位
BaziJS 定位於一個純粹的計算引擎與數據提供者,而非一個預設好界面的成品網站。它採取計算與呈現分離的架構,SDK 負責處理所有底層的邏輯運算,並輸出標準化的 JSON 物件,至於最終如何在網頁上呈現(例如使用表格、圓盤或圖表),則完全交由使用端決定。此外,它特別強化了數據的可追溯性,每一項判定結果都試圖與古籍來源或特定的規則版本掛鉤,避免將單一流派的解讀視為唯一真理。
核心做法與運作流程
BaziJS 的運作流程遵循嚴格的線性管線。首先,系統接收輸入參數,包括出生日期、時間模式(精確時間、僅知時辰或完全未知)、性別與時區。接著進入曆法引擎,處理公曆與農曆的換算、節氣定位,並可根據經緯度修正為真太陽時。隨後,四柱引擎根據設定的邊界規則(如立春切年或正月初一切年)推導出年、月、日、時四柱的干支。
在基礎四柱建立後,SDK 會啟動多個衍生引擎。十神引擎計算干支與日主的關係;互動引擎辨識合、沖、刑、害等結構;強弱引擎則透過五行氣數計算日主的旺衰程度。最值得關注的是其 Profile 系統,允許使用者切換不同的規則集(例如 canonical 正統規範或研究性模型),以適應不同流派的計算習慣。最後,結果會被封裝在一個包含元數據(meta)與精度提醒(accuracy)的結構化物件中輸出。
技術亮點
BaziJS 在工程實作上有幾個顯著的特點。首先是極高的數據透明度,它引入了 Reference API,讓開發者可以查詢特定規則的來源、版本與判定依據,甚至能將結果轉換為適合大型語言模型(LLM)讀取的 AI Context,防止 AI 在分析命盤時自行猜算四柱。其次,它內建了強大的渲染能力,支持直接輸出向量格式的 SVG 或圖片格式的 PNG 命盤,並提供多種視覺主題與版式。
在品質控制方面,該專案建立了詳盡的治理模型。它將規則分為 canonical(已實作且穩定)、comparison(替代約定)與 research-only(研究中)三種狀態,並透過 JSON Schema 強制執行資料契約。其驗證機制包含大量外部抽樣案例與獨立引擎的交叉比對,確保在指定 Profile 下結果可重現,而非僅僅依賴內部測試。
適用情境與導入限制
此 SDK 非常適合需要集成命理功能的 Web 應用、個人化分析工具或 AI 命理助手。由於其核心零依賴且僅限於瀏覽器運行時,導入成本極低,支持一般的 HTML 腳本載入或現代的 ES Module 導入方式。
然而,導入時需注意其實務限制。首先,BaziJS 的強弱分析與用神推導是基於傳統規則模型的模擬,而非科學量測,不能取代專業的醫療或法律判斷。其次,曆法計算在節氣交界附近存在約正負十分鐘的精度限制,且 SDK 不內建歷史時區資料庫,使用者必須自行傳入正確的時區與經緯度以確保真太陽時的準確性。
成熟度判斷與風險
從目前的開發紀錄來看,BaziJS 已具備相當成熟的基礎計算能力與治理框架。它不僅完成了基礎的排盤功能,還建立了完整的規則治理流程與外部驗證體系。但需注意,部分複雜的格局判定(如特殊格)目前仍處於 research-only 狀態,尚未正式進入 canonical 預設結果中。
對於開發者而言,最大的風險在於對命理流派差異的處理。雖然 SDK 提供了 Profile 切換機制,但若使用端未正確保存 result.meta 中的規則快照,未來在 SDK 升級後可能會發現同一輸入產生了不同的結果。因此,建議在儲存用戶命盤數據時,同步記錄當時採用的 Profile 與規則版本,以確保分析的一致性。