← 返回全部文章

前两天聊倪海夏中医,今天看这套《天纪》紫微排盘项目

一个基于倪海夏《天纪》体系的紫微斗数开源项目,包含排盘算法、格局知识库、古籍资料、前端工作台和 51.8 万命盘样本数据。

前两天推荐过倪海夏老师相关的中医资料。今天换到《天纪》这一侧,看一个基于倪海夏体系做的紫微斗数开源项目:ziwei-doushu

先把边界说清楚:这类工具更适合学习、研究和产品原型,不适合作为现实决策依据。紫微斗数本身有强解释性,AI 解读又会放大确定口吻,使用时最好把它当成传统知识的结构化学习入口。

这个项目的价值不只在“能排盘”。它把排盘算法、倪海夏《天纪》知识、古籍文本、格局识别和前端交互放在一个 Next.js 项目里。对想研究传统术数数字化、 AI 命理产品、知识库和前端体验的人,都有参考价值。

项目能做什么

仓库地址:https://github.com/Renhuai123/ziwei-doushu

线上体验地址:https://wdyziweidoushu666.com

开源部分主要有五块:

  • 排盘算法:lib/ziwei/algorithm.ts,基于 iztrolunar-javascript,负责从公历生日、生时、性别生成紫微命盘。
  • 四化与格局:lib/ziwei/sihua.tslib/ziwei/patterns.ts,包含禄权科忌和经典格局判断。
  • 倪海夏体系资料:lib/nihai/,整理了天纪、地纪、人纪相关内容和倪师资料。
  • 古籍资料:lib/classics/,包含《骨髓赋》《紫微斗数全集》《紫微斗数全书》等文本数据。
  • 前端界面:app/components/,包括排盘页、合盘页、古籍阅读、命理百科、命盘面板等。

README 里还提到 51.8 万条命盘样本数据,放在 Releases 。数据覆盖年、月、日、时辰、性别组合,每条包含命盘 JSON 和多个主题解读文本。这个数据量对做 RAG 、微调、 A/B 测试都很有用。

本地运行教程

先克隆仓库:

git clone https://github.com/Renhuai123/ziwei-doushu.git
cd ziwei-doushu

安装依赖:

npm install

复制环境变量:

cp .env.example .env.local

.env.example 里默认是 DeepSeek,也支持其他 OpenAI 兼容模型。最少需要配置:

AI_PROVIDER=deepseek
DEEPSEEK_API_KEY=your-deepseek-api-key
NEXT_PUBLIC_SITE_URL=http://localhost:3000

启动开发服务器:

npm run dev

然后打开:

http://localhost:3000

需要注意一点:README 明确说,开源版不包含后端 API 路由,比如 /api/interpret/api/heming/api/generate。所以如果直接跑起来发现 AI 解读或生成接口不通,不一定是你本地配置错了。排盘算法和前端界面可以先独立研究,AI 解读接口需要自己补。

先看哪几个文件

如果只是想理解它怎么排盘,先看这三个文件:

lib/ziwei/algorithm.ts
lib/ziwei/types.ts
lib/ziwei/constants.ts

generateChart() 是核心入口。它接收出生年、月、日、时辰、性别,调用 astro.bySolar(),再把十二宫、主星、辅星、煞星、庙旺利陷、大限等信息整理成项目自己的 ZiweiChart 数据结构。

表单部分在:

components/BirthForm.tsx

这里可以看到一个很实用的细节:项目根据出生地经度计算真太阳时时辰。代码里用 (longitude - 120) * 4 计算分钟偏移,再把北京时间转成对应时辰。对命理类产品来说,这类输入细节会直接影响用户信任。

命盘页在:

app/chart/page.tsx

它负责收集表单、调用生成接口、展示命盘、处理星曜点击、宫位点击、历史命盘等交互。以后要自己改产品,基本从这里下手。

格局知识库怎么读

重点看:

lib/ziwei/patterns.ts

这个文件有 1100 多行,写法没有停在文案堆叠,而是把每个格局拆成“必须条件、加分项、破格警示”。比如紫府同宫、君臣庆会、府相朝垣这类格局,都对应具体的检测函数。

这种结构很适合拿去做 AI 解读前的规则层。先由代码判断命盘里有哪些明确格局,再把结构化结果交给大模型解释。比直接把生日丢给模型让它自由发挥稳得多。

如果要补 AI 解读接口

开源版没有后端 API,但补起来并不复杂。最小思路是:

  1. 前端提交出生信息到 /api/generate
  2. API 内部调用 generateChart() 得到命盘 JSON 。
  3. 调用 detectPatterns() 一类的格局识别函数,得到规则层结果。
  4. 把命盘结构、格局、用户问题、必要免责声明一起发给 LLM 。
  5. 返回结构化文本,避免让模型自己重新排盘。

伪代码大概是这样:

import { generateChart } from '@/lib/ziwei/algorithm';

export async function POST(req: Request) {
  const birthInfo = await req.json();
  const chart = generateChart(birthInfo);
  return Response.json(chart);
}

如果要做解释接口,可以再加一层:

const chart = generateChart(birthInfo);
const prompt = buildPrompt({ chart, question });
const answer = await callLLM(prompt);
return Response.json({ chart, answer });

这里最重要的是:排盘交给确定性代码,解释交给模型。不要让模型负责“算盘”,否则同一个输入很容易出现不同答案。

51.8 万样本数据怎么用

Releases 里有三卷压缩包:

ziwei-samples-v3-part1.zip.001
ziwei-samples-v3-part2.zip.002
ziwei-samples-v3-part3.zip.003
SHA256SUMS.txt

Linux 或 macOS 合并解压:

cat ziwei-samples-v3-part*.zip.* > combined.zip
unzip combined.zip

这套数据更适合做三类事:

  • 做 RAG,把命盘样本和解读主题拆成可检索片段。
  • 做小模型微调,把输入命盘和输出解读配成训练样本。
  • 做规则修改后的回归测试,比如改了 patterns.ts,再对比样本输出有没有明显偏移。

数据许可比较宽松,可以商用,但要保留来源标注。产品页、模型卡、数据集 README 里写清楚来源即可。

推荐的学习路径

如果你前两天看的是倪海夏中医内容,可以按这个顺序接到《天纪》:

  1. 先读 lib/nihai/index.ts,了解天纪、地纪、人纪三套框架。
  2. 再看 app/page.tsx,观察产品怎么把“紫微、天纪、地纪、人纪”组织成学习入口。
  3. 然后看 algorithm.ts,把排盘主流程跑通。
  4. 接着读 patterns.ts,理解格局识别怎么从文案变成规则。
  5. 最后再考虑接 LLM,把命盘 JSON 和规则结果转成自然语言解释。

这个项目适合收藏。它既有传统术数内容,又有现代 Web 产品结构,还把一部分样本数据开放出来。拿来学习,比只看一个在线算命页面有用得多。

学习提醒:命理内容适合研究传统文化和产品设计,不建议用于医疗、投资、婚恋、职业等现实决策。

源地址

https://github.com/Renhuai123/ziwei-doushu

来源:https://github.com/Renhuai123/ziwei-doushu