七政四余,二十八宿,古法星盘,尽在指尖。
Moira(Μοῖραι — 希腊命运三女神之名)是一款开源的中国传统占星学桌面应用,基于 JPL DE440 高精度星历数据,提供完整的七政四余星盘计算、四柱八字排盘、神煞推演与星力分析。面向中国传统命理学研究者、天文爱好者与命理软件开发者的深度探索工具。
本项目是原 Java 版 Moira 的 Rust + Tauri 重制版,从桌面端移植到现代跨平台架构,同时继承和发展了原版的排盘逻辑与领域模型。
中文名暂定:默伊拉
| 模块 | 说明 |
|---|---|
| 七政 | 太阳、太阴、水星、金星、火星、木星、土星(含天王/海王/冥王) |
| 四余 | 罗睺、计都、月孛、紫炁(中国传统隐曜) |
| 二十八宿 | 角亢氐房心尾箕…全宿度计算,按四象着色 |
| 十二宫 | 等宫制,显示每宫宿度 |
| 相位 | 合/六分/四分/三分/对分等,支持自定义容许度 |
| 星制切换 | 回归制(Tropical)⇄ 恒星制(Sidereal),实时切换对比 |
- 八字排盘: 年、月、日、时四柱,含天干地支、纳音五行
- 大运: 阳男阴女顺行/阴男阳女逆行,节炁起运,自动计算起运年龄
- 十二长生: 每个天干的十二长生阶段
- 藏干: 地支藏干解析
- 十神: 正官、偏印、伤官等十神关系
- 年神煞 (7+): 太岁、天乙贵人、禄神、羊刃、驿马、桃花、华盖等
- 日干神煞 (5-6): 天德、月德、文昌、红艳、天赦等
- 时神煞: 青龙、朱雀等十二时辰神煞
- 支持自定义启用/禁用
- 命宫主(命度主)、身宫主
- 星躔喜忌格
- 十干化曜
- 小限: 岁数流年地支
- 月限: 小限+月份
- 洞微飞限: 12 年周期大限系统
- 升殿 / 入垣 / 失躔 / 失垣 / 季星: 五重星力评估
- 五行生克加成/惩罚
- 宫神煞分析(白虎、丧门、官符、岁破、病符等)
选择吉日良辰的天星择日功能
基于几何方法的日月食搜索
内置 CLI,支持命令行快速排盘输出
moira/
├── moira-rs/ # Rust Cargo workspace
│ ├── crates/moira-core/ # 共享计算引擎库
│ │ └── src/
│ │ ├── lib.rs # 核心入口:星体、宫位、相位、宿度
│ │ ├── angles.rs # 天球角度(上升点、中天、福点)
│ │ ├── bazi.rs # 四柱八字、大运、十神、纳音
│ │ ├── eclipse.rs # 日月食搜索
│ │ ├── lunar.rs # 农历转换(朔望月、干支纪年)
│ │ ├── rule_engine.rs # 星力规则引擎(升殿入垣等)
│ │ ├── shensha.rs # 神煞(年、日干、时辰)
│ │ ├── solar_terms.rs # 二十四节炁计算
│ │ └── utils.rs # 工具函数
│ ├── src/main.rs # CLI 入口
│ └── assets/bsp/de440.bsp # JPL DE440 星历数据(symlink)
└── apps/desktop/ # Tauri v2 桌面应用
├── src/ # React 前端
│ ├── App.tsx # 主应用(三区布局)
│ ├── theme.ts # 暗色主题系统
│ ├── types/chart.ts # TypeScript 类型定义
│ └── components/ # UI 组件
│ ├── AstrologyChart.tsx # 星盘 Canvas 渲染(react-konva)
│ ├── BaziPanel.tsx # 八字面板
│ ├── PlanetTable.tsx # 星曜数据表
│ ├── InputForm.tsx # 输入表单
│ ├── ElectionalForm.tsx # 择日表单
│ ├── ChartManager.tsx # 星盘管理(保存/加载)
│ ├── ErrorBoundary.tsx # 错误边界
│ └── shared.tsx # 共享组件
└── src-tauri/ # Tauri Rust 层
├── src/lib.rs # Tauri 命令
└── tauri.conf.json
| 层 | 技术 |
|---|---|
| 桌面框架 | Tauri v2 — 轻量、安全、跨平台 |
| 前端 | React 18 + TypeScript + Vite |
| 星盘渲染 | react-konva (Canvas) |
| 天文计算 | moira-core (Rust 库) |
| 星历数据 | JPL DE440 (anise 库) |
| Rust 版本 | 1.95 (edition 2024) |
| 版本控制 | jj (Jujutsu) / Git |
# 克隆仓库
git clone https://github.com/Milk0217/moira.git
cd moira
# 获取星历数据(约 40MB,存放于 assets/bsp/)
# 需要下载 JPL DE440 BSP 文件:
# https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de440.bsp
# 启动桌面应用
cd apps/desktop && npm install && npx tauri dev
# 或运行 CLI
cd moira-rs && cargo run# 后端测试(19 个以上测试用例)
cd moira-rs && cargo test -p moira-core
# 前端测试
cd apps/desktop && npx vitest runcd apps/desktop && npx tauri build本项目严格使用中国传统占星学领域语言,详见 CONTEXT.md。核心约定:
- 七政 → 太阳、太阴(非"月亮")、水星、金星、火星、木星、土星
- 四余 → 罗睺、计都、月孛、紫炁
- 二十八宿 → 角亢氐房心尾箕…四象划分
- 星制 → 回归制(Tropical)与恒星制(Sidereal)双支持
- 神煞 → 吉神/凶神/中性,分类推演
- 大运 → 节炁起运,十年一运
- 流限 → 小限/月限/洞微飞限
避免使用西方占星术语(星座名请用中国传统十二宫名称)。
该项目处于 早期开发阶段。当前版本已实现完整的七政四余星盘计算、八字排盘、神煞系统等核心功能,正在进行界面优化和功能扩展。
- JPL DE440 星历集成
- 七政四余星体位置计算(黄道/赤道)
- 二十八宿度与四象着色
- 回归制 / 恒星制双模式
- 等宫制十二宫
- 相位计算(含自定义容许度)
- 四柱八字 + 大运 + 纳音
- 神煞系统(年/日干/时辰)
- 安身立命与度主星
- 星力规则引擎(升殿入垣等)
- 流限系统(小限/月限/洞微飞限)
- 宫神煞分析
- 天星择日
- 日食月食搜索
- 暗色主题星盘 Canvas 渲染
- 十二宫宫神煞标注
- 多语言支持(中/英)
- 命盘报告导出(PDF)
- 比较盘(合盘)功能
- 流年星盘叠加
- macOS / Windows / Linux 正式发布
欢迎任何人加入 Moira 的开发! 🙌
无论你是:
- 🦀 Rust 开发者——改进天文计算精度、优化性能
- ⚛️ React 前端开发者——美化星盘渲染、完善交互体验
- 📚 中国传统文化研究者——校对领域逻辑、补充神煞定义
- 🐛 Bug 发现者——提交 Issue 或 PR
都欢迎贡献代码、文档、想法!
- Fork 本仓库,创建你的功能分支
- 提交代码,保持代码风格一致(Rust edition 2024,TypeScript strict 模式)
- 确保测试通过:
cargo test+npx vitest run - 发起 Pull Request,描述你的改动
- 使用
CONTEXT.md定义的领域术语 - Rust 用
Result<T, String>而非 unwrap - TypeScript strict 模式,
noUnusedLocals+noUnusedParameters - 提交信息用中文或英文,保持清晰
GNU General Public License v3
版权所有 (C) 2025 Milk0217
本程序是自由软件,你可以遵照自由软件基金会(Free Software Foundation)出版的 GNU 通用公共许可证第三版 (GNU General Public License v3) 来修改和重新发布这一程序。
本程序分发时希望它会有用,但不提供任何担保;甚至没有对适销性或特定用途的适用性的默示担保。详见 GNU General Public License。
本项目源自 Java 版 Moira(GPL v2 or later),根据原许可证条款可选择后续版本进行授权。
- JPL NAIF — DE440 高精度星历
- anise — Rust 天文计算库
- Tauri — 跨平台桌面框架
- react-konva — Canvas 渲染引擎
Moira — 让星辰讲述你的故事。