Skip to content

Repository files navigation

天机 (tianji)

PyPI version Python 3.10+ License: MIT CI Demo

天机 是一个纯 Python 实现的中国玄学算法库,支持八字排盘、六爻起卦、紫微斗数等功能。所有算法均从零实现,不依赖外部数据库。配套完整的现代化 Web 前端,完全离线运行,零数据收集。

"天机不可泄露" — 但代码可以开源。

作者:Zijian Ni(倪子健)


🌐 Web Interface

在线体验https://zijian-ni.github.io/tianji/

天机提供一个纯前端的 Web 界面,无需安装任何依赖,直接在浏览器中使用。所有计算均在浏览器端完成(纯 JavaScript),不向任何服务器发送数据。

八字排盘(v0.3.0 全面升级)

  • 🔢 四柱八字 — 年月日时四柱、天干地支、十神关系
  • 📜 纳音五行 — 每柱显示对应纳音(海中金、炉中火、大林木…)
  • 🏠 胎元命宫 — 自动推算胎元干支与命宫干支
  • 神煞系统 — 天乙贵人、文昌、驿马、桃花、华盖、将星、天德、月德、禄神、羊刃
  • 📊 格局分析 — 根据月令透干判断格局(正官格、七杀格、食神格等)
  • 🎯 用神忌神 — 基于日主强弱自动推荐用神/忌神五行
  • 📈 精确大运 — 节气精确计算起运年龄(3天≈1岁),显示公历年份与纳音
  • 🌊 五行力量 — 带百分比条形图,旺/中/弱/缺状态标注
  • 📅 农历显示 — 阳历/农历日期对照
  • 🔄 流年分析 — 十年流年干支、十神、纳音

六爻占卜

  • 🎴 三种起卦方式(时间起卦、数字起卦、模拟摇铜钱)
  • 卦象 SVG 可视化,动爻高亮

紫微斗数

  • ⭐ 十二宫命盘排列,主星安置

💡 本地运行:直接用浏览器打开 web/index.html 即可,无需构建工具。


功能特性

模块 功能 状态
八字 四柱排盘、十神、五行分析、日主强弱
八字 纳音五行(60甲子完整纳音表) ✅ v0.3.0
八字 胎元、命宫推算 ✅ v0.3.0
八字 神煞(10种常用神煞) ✅ v0.3.0
八字 格局分析、用神忌神 ✅ v0.3.0
八字 精确大运(节气计算)、流年 ✅ v0.3.0
八字 刑冲合害
六爻 64卦、时间/数字/铜钱起卦、装卦分析
紫微 十二宫、紫微/天府星系安星
前端 深色中国风 UI、响应式、中英双语
隐私 零数据收集、无 CDN、完全离线
API FastAPI REST 接口
CLI 命令行工具

安装

pip install tianji

带 LLM 支持:

pip install "tianji[llm]"

快速开始

八字排盘

from datetime import datetime
from tianji.bazi import BaZiChart

chart = BaZiChart(birth_dt=datetime(1990, 5, 15, 14, 30), gender="male")
chart.display()

print(chart.year_pillar)   # 庚午
print(chart.month_pillar)  # 辛巳
print(chart.day_pillar)    # 庚辰
print(chart.hour_pillar)   # 癸未
print(chart.day_master)    # 庚 (Metal, Yang)

十神推算

from tianji.bazi import ten_gods_from_chart

gods = ten_gods_from_chart(chart)
for pos, result in gods.items():
    print(f"{pos}: {result.stem.char}{result.ten_god} ({result.english})")

六爻起卦

from tianji.liuyao import cast_hexagram

# 时间起卦
result = cast_hexagram(method="time")
result.display()

# 铜钱摇卦
result = cast_hexagram(method="coin", seed=42)
result.display()

# 数字起卦
result = cast_hexagram(method="number", num1=3, num2=7)
result.display()

紫微斗数

from tianji.ziwei import create_ziwei_chart

chart = create_ziwei_chart(year=1990, month=4, day=21, hour=14)
print(chart.display())

命令行

tianji bazi --date 1990-05-15 --time 14:30 --gender male
tianji liuyao --method time
tianji serve --port 8000

REST API

uvicorn tianji.api.app:app --reload

# 八字排盘
curl -X POST http://localhost:8000/bazi/chart \
  -H "Content-Type: application/json" \
  -d '{"birth_datetime": "1990-05-15T14:30:00", "gender": "male"}'

算法说明

八字四柱算法

算法 关键规则
年柱 以立春为年界 立春前属上一年
月柱 五虎遁月法 甲己→丙寅,乙庚→戊寅,丙辛→庚寅,丁壬→壬寅,戊癸→甲寅
日柱 基准日推算 1900-01-01 = 甲戌(序号10),天数差 mod 60
时柱 五鼠遁时法 甲己→甲子,乙庚→丙子,丙辛→戊子,丁壬→庚子,戊癸→壬子

纳音五行

每两个相邻的六十甲子共享一个纳音,共 30 组。例如:

  • 甲子/乙丑 → 海中金
  • 丙寅/丁卯 → 炉中火
  • 甲戌/乙亥 → 山头火

十神对照

十神 关系 阴阳
比肩 同元素 同性
劫财 同元素 异性
食神 我生 同性
伤官 我生 异性
偏财 我克 同性
正财 我克 异性
七杀 克我 同性
正官 克我 异性
偏印 生我 同性
正印 生我 异性

神煞

神煞 查法 吉凶
天乙贵人 日干查年/日支
文昌贵人 日干查支
驿马 日/年支三合局冲 中性
桃花 日/年支三合局沐浴 中性
华盖 日/年支三合局墓库 中性
将星 日/年支三合局帝旺
天德 月支查
月德 月支查
禄神 日干查支
羊刃 日干查支

六爻起卦

  • 时间起卦:年+月+日+时数字,推算上卦、下卦、动爻
  • 数字起卦:自定义三个数字起卦
  • 铜钱摇卦:三枚铜钱×六次,6=老阴,7=少阳,8=少阴,9=老阳

紫微斗数

  • 五行局:水二局、木三局、金四局、土五局、火六局
  • 紫微星位:以农历生日、五行局推算紫微星落宫
  • 天府对宫:天府星与紫微星寅-申对称分布

项目结构

tianji/
├── src/tianji/
│   ├── calendar/          # 干支历法引擎
│   ├── bazi/              # 八字算法
│   ├── liuyao/            # 六爻算法
│   ├── ziwei/             # 紫微斗数
│   ├── llm/               # LLM 解读层(可选)
│   └── api/               # FastAPI 接口
├── web/                   # 现代化 Web 前端
│   ├── index.html
│   ├── css/style.css      # 中国风深色主题
│   └── js/
│       ├── calendar.js    # 干支历法引擎 (JS)
│       ├── bazi.js        # 八字算法 (JS) — 含纳音/胎元/命宫/神煞/格局
│       ├── liuyao.js      # 六爻算法 (JS)
│       ├── ziwei.js       # 紫微斗数 (JS)
│       ├── i18n.js        # 中英文国际化
│       └── app.js         # UI 控制器
├── tests/                 # 测试套件(140+ 测试)
├── .github/workflows/     # CI/CD + GitHub Pages
└── pyproject.toml

隐私声明 / Privacy

天机完全尊重用户隐私。

  • 零数据收集:Web 前端完全在浏览器本地运行,不发送任何网络请求
  • 无追踪:不使用任何分析服务
  • 无 CDN:不从外部加载字体、图标或脚本
  • 无 Cookie:不设置任何 Cookie 或 localStorage
  • 完全离线:断网也能正常使用
  • CSP 保护:Content Security Policy 阻止外部资源加载

Web 前端

推送到 main 分支后自动部署至 GitHub Pages。

本地运行:

open web/index.html
#
cd web && python3 -m http.server 8080

English

tianji is a pure-Python Chinese metaphysics library with a modern, privacy-first web frontend. All algorithms implemented from scratch, no external databases. Created by Zijian Ni.

Features

  • BaZi (Four Pillars): Year/month/day/hour pillars, Ten Gods, Five Elements, Day Master strength, Nayin, Taiyuan/Minggong, Shensha (10 types), Pattern analysis, Favorable/unfavorable elements, Luck Pillars (precise), Flow Years, branch relationships
  • Liu Yao (Six Lines): 64 hexagrams, time/number/coin casting, moving lines analysis
  • Zi Wei Dou Shu (Purple Star): 12-palace chart, Zi Wei + Tian Fu star groups
  • Web UI: Chinese-style dark theme, responsive, bilingual, fully offline
  • Privacy: Zero data collection, no CDN, no tracking, no cookies

Quick Example

from datetime import datetime
from tianji.bazi import BaZiChart

chart = BaZiChart(birth_dt=datetime(1990, 5, 15, 14, 30), gender="male")
print(chart.year_pillar)   # 庚午
print(chart.month_pillar)  # 辛巳
print(chart.day_pillar)    # 庚辰
print(chart.hour_pillar)   # 癸未

贡献

欢迎提交 Issue 和 PR!详见 CONTRIBUTING.md

许可证

MIT License — Copyright (c) 2026 Zijian Ni(倪子健)

About

天机 — Chinese Metaphysics Library: BaZi (八字), Liu Yao (六爻), Zi Wei Dou Shu (紫微斗数)

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages