Skip to content

Latest commit

 

History

58 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

观微 · 以术问道

Open-source Chinese metaphysics: nine arts of divination with AI interpretation.
简体中文 · English

观微 Guanwei · 以术问道,观微知著

CI GitHub Pages Release MIT License TypeScript Tests

Guanwei — an open-source Chinese metaphysics application: eight-character Bazi, Ziwei Doushu, classical astrology, Qimen Dunjia, Liuyao, Da Liu Ren, Meihua, Xiaoliuren and Tarot — with AI-powered in-depth interpretation.
东玄为主、中西合参的玄学占卜应用:九术排盘、AI 深度解读、古籍学馆,一条链路贯通「排盘 → 解读 → 归档 → 回看」。

占问所得,仅供修身养性、怡情遣兴之用,不构成任何决策依据。

▶️ 立即体验(无需注册 · 无需配置 · 无需 API Key)

演示:九术排盘 → AI 报告
▶ 打开交互演示 —— 九种术数本地排盘(浏览器直接计算,零后端),八字附带完整 AI 解读示例

另有 GitHub Pages 静态演示站(首页/九术说明/古籍/学馆)。完整功能(真实排盘 + 实时 AI 解读 + 存档)请本地/云端部署(见下)。

🖼️ 界面预览

首页 八字排盘

✨ 功能

九术排盘(确定性历法计算,前后端单一算法副本)

类目 术数
命盘类 八字(子平)、紫微斗数、古典星盘(VSOP87 回归黄道)
占问类 奇门遁甲、梅花易数、六爻、大六壬、小六壬、塔罗
  • 出生时间支持 公历/农历双历、精确到时刻(东玄据此推时辰,星盘直接用时刻)
  • 地点精确到 省市区县 → 经纬度(真太阳时校正,含 1986-1991 中国夏令时回拨);未填地点时明示"按北京时间排盘"
  • 时辰未知支持:不排时柱仅依年月日三柱论命;可依人生关键事件反推时辰(流年 × 时柱应象打分引擎)
  • 盘面动态话术:排盘结果按日主×季节×旺衰×十神×五行旺缺×大运喜忌生成个性化解读,告别千篇一律的模板
  • 起占结果由后端计算并持久化入库(SQLite),六爻摇卦、塔罗抽牌等交互结果同样后端定稿

AI 深度解读

  • 9 术角色化解读:每术独立 persona(紫微:命盘结构 → 星曜落宫 → 十二宫 → 大限流年 → 人生阶段),技能清单单轮注入(多 Agent 编排规划中,接入后作为 guanwei-pro 模式,见 ROADMAP)
  • 双轨 Schema:命盘类(原始解读/性格/原生家庭/心智模式/人生阶段/事业/爱情/财富/健康)、占问类(现状/趋势/时机)
  • 盘面事实一致性约束:AI 必须逐字引用排盘数据,不得编造;后端六亲宫位事实校验 + 矛盾定向修正(宫位地支/主星/借星/生年四化)
  • 解读稳定性:Step1 盘面解析缓存复用、低温采样、论断锚定(主观程度词必须有盘面依据)、去重与字数预算
  • 人生经历校准:可录入命主已知人生事件,AI 解读在对应流年处呼应、且不与已知经历矛盾
  • 问题-术数适配性分析(如奇门不适于问情爱)
  • 流式生成 + 结构化报告卡片,可导出 Markdown / 存为 PDF
  • 古籍引证:断语库 shared/core/data/duanyu.ts 收录古籍原文 16 条,其中 11 条已逐字校核(reviewed)并接入 AI prompt(来源为 ctext/维基文库/时点古籍权威底本)——解读行文自然处可引用「《书·篇》:原文」并附出处;其余 5 条待校核不注入

其他

  • 古籍页(背景动画、经典原文)、学馆(九术源流与知识)
  • 用户档案管理(主档案/示例档案/编辑/切换)
  • 占卜历史(起占自动归档,可回看排盘与 AI 报告,可删除)

🏗️ 技术架构

前端 React 18 + TS + Vite + Tailwind(宋式美学 UI)
后端 Express + tsx(SSE 流式 + SQLite 存储)
共享引擎 shared/core/engine/*(lunar-typescript 历法 + astronomy-engine 星历)
AI 层:多 LLM 适配(OpenAI 兼容 / Google 格式,DeepSeek / Gemini / Groq / 通义 / 自定义端点)

数据流

① 排盘:登录用户 → 前端输入 → POST /api/divine → 后端引擎计算 → SQLite 入库 → 前端渲染
② AI:点击解读 → POST /api/ai/interpret/stream(divineId) → 后端读库 → 组装 Prompt → LLM SSE 流式返回
     → 后端 parseReport 结构化匹配(清洗/映射/质量评分/六亲事实校验)→ quality=ok 才入库 → 前端 ReportView
③ 历史:GET /api/divine?username= → 档案管理页列表/详情/删除

🚀 快速开始(一行命令)

⚡ 方式一:npm 一行安装(推荐,国内几秒装完)

npm i -g guanwei
guanwei setup
guanwei start

打开 http://localhost:5173 即用。国内用户自动走 npmmirror 加速;升级:guanwei update。停止:guanwei stop

💡 配置 Key(guanwei setup:交互式引导——选服务商 → 粘贴 Key(不回显),写进 ~/.guanwei/.env 仅本机可读。也可一步到位:guanwei setup --key sk-你的真实Key(DeepSeek 等 5 家任选,Key 申请见下文)。 💡 不配 Key 也能启动guanwei start 直接跑,排盘/演示/古籍全部可用,仅 AI 解读不可用(页面会提示配置入口)。

⚡ 方式二:Docker 一行启动(免装 Node,最省心)

docker run -d --name guanwei -p 5173:80 -e LLM_DEEPSEEK_KEY=sk-你的真实Key ghcr.io/rubyccll/guanwei:latest

打开 http://localhost:5173 即用。停止:docker stop guanwei。其他服务商:-e LLM_PROVIDER=gemini -e LLM_GEMINI_KEY=sk-你的真实Key(deepseek / gemini / groq / qwen / custom 均可)。

⚡ 方式三:curl 一键安装(源码方式,备用)

curl -fsSL https://raw.githubusercontent.com/RubyCcll/guanwei/main/scripts/install.sh | bash
guanwei setup
guanwei start

详细方式(Codespaces / Compose / 本地 Node)

只需一步:配置你的 API Key5 家服务商任选,DeepSeek 性价比最高)。

方式四:GitHub Codespaces(零本地安装,云端一键)

Open in GitHub Codespaces

点击按钮 → 云端环境自动装好依赖 → 终端执行:

./scripts/setup.sh --key sk-你的真实Key

方式五:Docker Compose(多容器)

预构建镜像已发布到 GitHub Container Registry(amd64 + arm64 双平台):

./scripts/setup.sh --docker --key sk-你的真实Key   # 自动配置 + 拉取镜像 + 启动
# 或手动:
#   cp server/.env.example server/.env   (填入 Key)
#   docker compose up -d                  (自动拉取 GHCR 镜像)

打开 http://localhost:5173 。停止:docker compose down

镜像:ghcr.io/rubyccll/guanwei-guanwei-web / guanwei-guanwei-backend;端口冲突时 WEB_PORT=5180 API_PORT=3020 docker compose up -d 覆盖。也可直接 docker pull ghcr.io/rubyccll/guanwei-guanwei-web:latest

方式六:本地 Node.js(≥ 22.5,需 node:sqlite 内置支持)

./scripts/setup.sh                    # 交互式:选服务商 + 输入 Key
# 或一步到位:./scripts/setup.sh --key sk-你的真实Key

脚本自动:安装依赖 → 写入 server/.env(Key 仅存本地)→ 启动前后端。打开 http://localhost:5173 → 缘起页注册 → 九术页起占 → 召 AI 成报告。

🖥️ 观微 CLI(启动 / 更新 / 自检一条命令)

# ① 在【项目根目录】执行一次(全局安装 guanwei 命令,之后任意目录可用):
npm link
# ② 不想全局安装?直接使用:./scripts/guanwei <命令>

guanwei setup                # 配置 API Key(交互式:选服务商 + 粘贴 Key)
guanwei setup --key sk-xxx   # 一步到位(sk-xxx 换成你的真实 Key)
guanwei start                # 启动(--docker 用容器)
guanwei doctor               # 环境自检(Node/配置/占位密钥/端口/依赖/版本)
guanwei update               # 更新到最新版(git 增量合并,.env 等本地配置不覆盖)
guanwei check / status       # 版本检查 / 状态
guanwei stop                 # 停止(docker 模式)

guanwei update 采用 git 增量合并:只拉取远程变更、保留本地所有配置(.env 等已 gitignore 文件不受影响);检测到本地未提交修改会先提示并自动 stash 保护,更新完成后恢复。

🔑 获取 API Key(5 家服务商任选)

服务商 官方入口 说明
DeepSeek(推荐) https://platform.deepseek.com 性价比最高,中文好
Groq https://console.groq.com 有免费额度
Gemini https://aistudio.google.com/apikey 有免费额度
通义千问 https://dashscope.console.aliyun.com/ 国内直连
自定义端点 任意 OpenAI 兼容接口 --provider custom

注册后在对应平台创建 Key → 运行 ./scripts/setup.sh --key 你的Key(Windows 用 scripts/setup.bat --key 你的Key)即完成配置;未配置时页面会有明确引导。

测试

npm test                 # 181 项测试(核心引擎/渲染/交互/存储/流程/提示词)
cd server && npx tsx scripts/divineStoreSmoke.ts   # SQLite 存储冒烟

📁 目录结构

├── src/                 # 前端(页面/组件/hooks/服务)
├── server/
│   ├── src/
│   │   ├── routes/      # divine(排盘)/ ai(解读)/ users / hour(时辰反推)
│   │   └── services/    # promptBuilder / llmProvider / divineStore / hourInference / relativesCheck / sixRelatives
│   ├── data/            # SQLite 与用户数据(gitignore)
│   └── .env.example
├── shared/core/         # 前后端共用引擎(排盘算法/数据,单一副本)
├── scripts/             # setup.sh(一键配置)/ guanwei(CLI)/ release.sh(发版)/ setup.bat(Windows)
├── deploy/              # nginx 配置(Docker 部署)
├── .devcontainer/       # GitHub Codespaces 模板
├── Dockerfile.web / Dockerfile.server / docker-compose.yml
├── docs/                # 开源素材(banner/截图/GIF/示例报告)
└── tests/               # 测试(含回归集)

🔐 安全说明

  • 所有密钥仅存于本地 server/.env(已 gitignore),仓库只提供 .env.example 模板;Docker 镜像构建已排除 .env(.dockerignore)
  • 密码哈希使用 scrypt(带随机盐),登录时兼容升级存量旧哈希
  • AI 报告质量门槛:结构评分不达标不入库,自动留档供改进提示词
  • 测试数据全部虚构/匿名化,不含真实用户隐私;真实案例仅存本地(git 忽略)
  • ⚠️ 部署边界(务必知晓):本项目定位为「本地/内网自部署」工具,未内置登录鉴权体系——用户身份仅靠传入的 username 区分,知道用户名即可读取该用户档案(GET /:username/profile 无口令校验)。请勿直接暴露到公网;如需公网访问,必须在前面架设反向代理 + 网关鉴权(如 Nginx basic auth / Authelia / Cloudflare Access 等),或在应用层另行加固。

📄 示例输出

🗺️ 迭代计划

已完成(v1.1.x):

  • 排盘精度:八字(藏干十神/旺衰拆解/用神喜忌/大运流年/神煞/胎元命宫身宫/时辰未知)、紫微(辅曜安星/生年四化/庙旺落陷/格局识别)、星盘(宫位/行星入宫/庙旺逆行)、六爻纳甲(六亲六神世应/月破旬空)、奇门(值使/暗干/八神)、六壬(贵人/十二天将)、梅花(体用旺衰)
  • AI 解读:两步管线(盘面解析 → 深度报告)、盘面事实注入、画像级 Schema、多 LLM 适配、解读稳定化与去重、六亲事实校验修正、人生经历校准
  • 时辰反推:依人生关键事件推演时辰(流年 × 时柱应象打分引擎)
  • 盘面动态话术:排盘结果按盘面数据生成个性化解读
  • 部署套件:一键配置脚本、Docker Compose(GHCR 预构建镜像)、Codespaces、guanwei CLI(启动/更新/自检)、Windows 支持
  • 演示页:九术本地排盘(纯浏览器引擎)+ 八字示例报告,GitHub Pages 直接体验
  • 评测闭环:接入 MingLi-Bench(160 题)建立 AI 解读评测基线,评测驱动 prompt 迭代

计划方向:

  • 开放分发:MCP Server / Agent Skill / REST API(复用 shared/core 单一算法副本)
  • 体验:移动端适配深化、性能优化、演示页输入表单
  • 持续演进:更细致的解读和更精确的个人化设计

🤝 如何参与

  • 🐛 遇到问题 → 提 Bug 报告
  • 💡 有想法 → 提 功能建议
  • 🧑‍💻 想写代码 → 见 CONTRIBUTING.md(含「我想做什么 → 推荐起点」导航)
  • 🌱 新手友好 → good first issue
  • ⭐ 觉得不错 → 点个 Star,就是最大的支持
  • 📦 发版节奏:语义化版本,见 CHANGELOG.md;发版一条命令 ./scripts/release.sh <版本号>

📄 License

MIT


观微 · 以术问道,观微知著。本仓库将持续迭代,欢迎 Star 与 Issue。

About

九术排盘与 AI 深度解读开源项目:八字/紫微/星盘/奇门/六爻/六壬/梅花/小六壬/塔罗 · Chinese metaphysics: Bazi, Ziwei, Qimen, Tarot with AI interpretation

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages