Skip to content

hweng99/zhiming

Repository files navigation

Zhiming · Three-System Astrology AI

English summary | 繁體中文說明見下方

An open-source, privacy-first astrology consultation tool that combines Bazi (八字), Zi Wei Dou Shu (紫微斗數), and Western Astrology — running all three systems deterministically and using AI only to interpret, never to generate, chart data.

  • Free & non-commercial — no account required
  • Privacy-first — all user data stays in your browser (IndexedDB); nothing is uploaded
  • Hallucination-resistant — deterministic algorithms calculate charts; the AI model never touches the numbers
  • Live demo: https://zhiming-tawny.vercel.app
  • Community: Threads post · 90K+ views

Built with Next.js · TypeScript · NVIDIA NIM · Vercel AI SDK


知命(Zhīmìng)· 三系統命理諮詢

結合 紫微斗數生辰八字西洋占星 三套系統,以確定性演算法排盤,再由 AI 命理師用白話為你交叉解讀。 一個免費、非商業的個人命理研究小工具——你的資料只留在自己的裝置裡,不會上傳到任何伺服器


這個專案在做什麼

知命把三套獨立的命理系統當成三個彼此獨立的「訊號源」:

系統 排盤引擎(確定性演算法) 解讀重點
生辰八字 lunar-typescript 日主強弱、五行喜忌、十神格局
紫微斗數 iztro 命宮十二宮、主星廟旺、四化
西洋占星 circular-natal-horoscope-js 日月升、行星宮位、相位

三盤分別算出後,再做跨系統一致性比對:三套都指向同一結論時把握度最高(★★★★★),分歧時誠實標示為「同一件事的不同切面」,絕不硬湊一致

核心設計原則(硬規則)

  1. 排盤一律走確定性演算法,AI 絕不生成命盤。 AI 只負責「解讀」既有命盤,數字由引擎算好,模型不得自行更改或重算。
  2. 使用者資料只存在本地。 出生資料、對話紀錄全部存在瀏覽器的 IndexedDB,永不上雲、永不寫進伺服器日誌。送到 AI 端的只有「命盤結構」,姓名等個資不會離開你的裝置。
  3. 多輪對話記憶、每日重置。 每天一場諮詢(上限 10 輪對話),對話過程保有完整記憶;隔天開啟新的一場,記憶重新開始。
  4. AI 是命理師,不是預言機。 定位為生涯規劃的決策支持工具:只談傾向與機率,不恐嚇、不下絕對斷言、不診斷、不薦股、不給法律定論。
  5. 達使用上限可下載「今日運勢小卡」PNG 作為留念。

技術架構

[Next.js App Router 前端]
        │  使用者只在本地建立命盤、聊天紀錄存 IndexedDB
        ▼
[/api/calculate]  ── 確定性排盤(無狀態,不記錄出生資料)
        │
        ▼
[/api/chat]  ── 組系統提示(知識庫 + 命盤)→ 串流呼叫 NVIDIA NIM
        │
        ▼
[NVIDIA NIM]  ── 開源/免費模型,OpenAI 相容端點
  • 框架:Next.js 16(App Router、Turbopack)+ React 19 + TypeScript
  • 樣式:Tailwind v4(CSS @theme,子夜星盤色盤,無外部字型)
  • AI:Vercel AI SDK v6 + @ai-sdk/openai-compatible,串接 NVIDIA NIM 開源模型(預設 nvidia/nemotron-3-super-120b-a12b,可在介面切換)
  • 本地儲存:IndexedDB(idb-keyval)+ Zustand;支援 JSON 備份匯出/匯入
  • 視覺化:Recharts(五行雷達圖)、html-to-image(小卡 PNG)

⚠️ 本專案使用的 Next.js 為較新版本,撰寫程式前請先讀 node_modules/next/dist/docs/ 內對應指南,勿直接套用舊版寫法。


本地開發

# 1. 安裝相依套件
npm install

# 2. 設定環境變數(NVIDIA NIM 金鑰)
#    在專案根目錄建立 .env.local(此檔已被 .gitignore,切勿提交):
echo 'NVIDIA_NIM_API_KEY=你的_NIM_API_KEY' > .env.local

# 3. 啟動開發伺服器
npm run dev          # http://localhost:3000

# 4. 其他指令
npm run build        # 正式建置
npm run lint         # ESLint
npm test             # Vitest(排盤黃金測試等)

環境變數

變數 用途 位置
NVIDIA_NIM_API_KEY NVIDIA NIM API 金鑰(伺服器端使用,不會送到前端) .env.local(本機)/ Vercel 專案環境變數(線上)

部署(Vercel)

# 以最新版 CLI 部署(全域舊版 CLI 可能因端點版本過舊而失敗)
npx -y vercel@latest deploy --prod --yes --token "$VERCEL_TOKEN"
  • 串流路由使用 runtime = "nodejs",區域於 vercel.json 設定 {"regions":["hnd1"]}(東京,離台灣最近)。
  • 部署後確認 Deployment 歷史只有 1 個 Ready、0 個 Failed。

隱私聲明

知命不設帳號、不蒐集個資。你輸入的出生資料與所有對話只保存在你自己的瀏覽器裡;清除瀏覽器資料即等同刪除。送往 AI 模型的內容僅含「命盤結構」,不含姓名等可識別個資。命理結果僅供自我探索與生涯規劃參考,非預言、非醫療/法律/投資建議


LUCE Agentic|創辦人 Sean Weng

About

知命 · 三系統命理諮詢——紫微/八字/西洋占星,確定性排盤+AI 命理師白話解讀。免費非商業,使用者資料只存本地。

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors