---
slug: "bazi-ziwei-skill"
source_type: "skill_md"
source_url: "https://cdn.jsdelivr.net/gh/dzcmemory-web/bazi-ziwei-skill@main/SKILL.md"
repo: "https://github.com/dzcmemory-web/bazi-ziwei-skill"
source_file: "SKILL.md"
branch: "main"
---
---
name: bazi-ziwei
description: 八字 + 紫微斗数 AI 排盘与综合分析。当用户提供生辰（阳历/农历日期、时辰、性别）询问八字、紫微、命理、命盘、流年大运相关问题时使用。基于 Yiqi 算法库 + enrichBazi 补全层精准排盘（杜绝 LLM 自行排盘出错），支持按需独立分析八字 / 独立分析紫微 / 两盘交叉印证。
---

# 八字 + 紫微斗数综合分析 Skill

## 何时触发

用户场景：
- 提供出生时间（"我是 2000-01-01 中午 12:00 男"）并希望分析
- 询问"帮我看八字 / 看紫微 / 算命 / 看命盘 / 看流年大运"
- 提供命盘文本（文墨天机、紫微斗数排盘软件导出格式）希望深度解读
- 询问特定大运/流年的吉凶

**不触发**：单纯的星座 / 塔罗 / 周公解梦 / 风水 / 姓名学。

## 必需输入

```
公历或农历日期 (YYYY-MM-DD)
出生时刻 (HH:MM, 24 小时制)
性别 (男/女)
```

若用户没给时辰，**必须主动询问**，不要默认子时。时辰对四柱日柱和紫微命宫影响极大。

> 不需要出生地。排盘直接使用钟表时间，不做真太阳时经度校正。

---

## 执行流程

### Step 0 — 决策门（开场必做） ⭐

**问题 1：要看哪种命理？**
> "我可以做三种分析：
> 1. **八字独立分析**（事业 / 财运 / 婚恋 / 子女 / 六亲 / 健康，按八字格局推演 — 长文输出）
> 2. **紫微独立分析**（十二宫 + 大限 + 生年四化 + 流年 — 长文输出）
> 3. **八字 + 紫微综合印证**（两盘交叉对账 — 提供长文 / 可视化海报 / 两种都要）"

**如果用户选 3，再追问问题 2：呈现形态**
> "综合印证可以这样输出：
> A. **📜 长文深度版**（Markdown 散文，沉浸阅读）
> B. **🎴 结构化海报版**（单文件 HTML，可截图分享）
> C. **两种都要**"

**根据选择加载相应提示词和模板**：

| 用户选 | 加载提示词 | 模板 | 输出 |
|---|---|---|---|
| 1 | `prompts/bazi-prompt.md` | — | Markdown 对话回复 |
| 2 | `prompts/ziwei-prompt.md` | — | Markdown 对话回复 |
| 3 + A | `prompts/zonghe-yinzheng-prompt.md` | — | Markdown 对话回复 |
| 3 + B | `prompts/zonghe-poster.md` | `templates/report-zonghe-poster.html` | `<name>-zonghe.html` |
| 3 + C | 上述两份都跑 | 同上 | Markdown + HTML 两份 |

> **海报模板仅综合印证一种**。八字独立 / 紫微独立只有长文输出（用户深度阅读用）。这是经过设计的——海报是综合印证独占的杀手锏，承担社交分享 + 用户惊艳的角色。

---

### Step 1 — 排盘（算法层，产出 JSON）

**绝对不要让 AI 自己排八字或紫微**。必须调用算法层脚本：

```bash
cd calculator
node dist/run-chart.js --year=YYYY --month=MM --day=DD --hour=HH --minute=MM --gender=male > chart.json
```

**注意**：`run-chart.ts` 的 stdout 是纯 JSON，stderr 是 debug 信息。**重定向时只取 stdout**（`> chart.json`），不要 `2>&1`。

脚本输出 JSON：
- `bazi`：四柱 / 十神 / 星运 / 自坐 / 纳音 / 藏干 / 大运（含 startAge/endAge/startYear/endYear）
- `bazi.enrichment`：格局 / 旺衰 / 调候 / 五行旺相 / 五行统计 / 天干关系 / 地支关系 / 整柱判定
- `ziwei`：十二宫 / 生年四化 / 大限 / 阴阳 / 五行局 / 命主身主

> **关键约束**：纯 LLM 排盘会错排日柱 → 日主 → 格局 → 用神，全链失真。Case B 测试证明 DeepSeek/Gemini 自行排盘均出错。算法层不可绕过。

---

### Step 2 — 文本盘转换（算法层，产出可读文本）

LLM 读 JSON 不如读结构化文本。把 Step 1 的 JSON 转成文墨天机风格的树状文本：

```bash
node dist/dump-text.js --input=chart.json --output=chart.txt
```

文本盘包含：
- 紫微部分：基本信息 + 生年四化 + 十二宫（含主星 / 辅星 / 大限 / 流年）
- 八字部分：四柱（含藏干十神 / 星运 / 自坐 / 纳音）+ 大运 + 算法补层（格局 / 旺衰 / 调候 / 关系 / 整柱）

将 `chart.txt` 内容连同对应提示词一起送给 LLM 做分析。

---

### Step 3 — 分析（按 Step 0 用户选择执行对应分支）

#### Step 3 — 长文版（用户选 1 / 2 / 3+A / 3+C）
读取对应长文提示词（`bazi-prompt.md` / `ziwei-prompt.md` / `zonghe-yinzheng-prompt.md`），喂入 `chart.txt`，输出 Markdown 长文。

> 综合印证（3+A）的前置条件：先跑八字 + 紫微独立分析拿到中间报告，再喂给 `zonghe-yinzheng-prompt.md`。
> 如输出被截断，分段输出。

#### Step 3 — 海报版（仅用户选 3+B 或 3+C）
1. 读取 `prompts/zonghe-poster.md`，喂入 `chart.txt`
2. LLM **必须输出严格 JSON**（不是 Markdown）——提示词末尾会要求"直接以 `{` 开头"，照办即可
3. 把 LLM 输出的 JSON 保存为 `analysis.json`
4. 调用渲染脚本：
   ```bash
   cd calculator
   node dist/render.js \
     --chart=chart.json \
     --analysis=analysis.json \
     --template=../templates/report-zonghe-poster.html \
     --output=<user-name>-<date>.html \
     --currentYear=<YYYY>
   ```
5. 把生成的 HTML 文件路径告诉用户，让其用浏览器打开

> **重要**：海报版的视觉由 HTML 模板决定，**LLM 只产数据不产 HTML**。如果 LLM 输出含 markdown 包装（如 \`\`\`json … \`\`\`），渲染前需剥掉。

---

## 安装后行为（重要）

**装好 Skill 后不要主动跑任何验证 / 自检命令。** 不要试 Smoke Test、不要排示例盘、不要分析示例命主。装好就是装好，等用户来给生辰再开始工作。

> 自检命令在 `TEST-GUIDE.md` 中由人工按需运行，不在 Agent 的职责范围内。Agent 主动跑会浪费 token + 触发上下文压缩。

依赖检查（仅在用户首次提供生辰、Agent 准备跑 run-chart.ts 报错时）：
```bash
cd <skill-root>/calculator
ls node_modules >/dev/null 2>&1 || npm install
```
也就是说，依赖问题**报错时再修**，不要装好就主动检查。

---

## 关键约束

1. **装好不自检**：见上节"安装后行为"。不要主动跑示例排盘 / 自检 / smoke test
2. **决策门必做**：永远先问用户要哪种分析，避免无意义的 token 消耗 + 输出截断
3. **排盘必须走算法层**：不要徒手算四柱、紫微宫位、大限。错一步全盘垮
4. **不引入命盘外变量**：风水、姓名、阳宅、紫白飞星不在本 Skill 范围
5. **冲突要说出来**：八字与紫微出现矛盾信号时按综合印证提示词的 4 条规则判定，不和稀泥
6. **置信度自评**：边界情况（旺衰临界、格局模糊、两盘对立）必须标"置信度：低"
7. **不替用户做决策**：投资、择偶、医疗、堕胎等决策类问题，给信号不给指令
8. **敏感问题拒答**：下蛊、断人财路、害人命运等违禁内容直接拒绝
9. **免责声明**：分析末尾必带"仅供文化研究与娱乐参考"

---

## 文件清单

```

├── SKILL.md                          ← 本文件
├── calculator/
│   ├── run-chart.ts                  ← 入口：生辰 → JSON（stdout 纯 JSON / stderr debug）
│   ├── dump-text.ts                  ← JSON → 文墨天机风文本
│   ├── render.ts                     ← 渲染脚本：chart.json + analysis.json + 模板 → HTML
│   ├── package.json                  ← 算法层依赖声明
│   ├── yiqi-core/                    ← Yiqi 算法（已 vendored 入库，无外部依赖）
│   └── bazi-enrich/                  ← enrichBazi 补层（格局/旺衰/调候/关系/整柱）
├── prompts/
│   ├── bazi-prompt.md                ← 八字独立分析（长文）
│   ├── ziwei-prompt.md               ← 紫微独立分析（长文）
│   ├── zonghe-yinzheng-prompt.md     ← ⭐ 综合印证（长文）
│   └── zonghe-poster.md              ← ⭐ 综合印证（海报版 JSON 输出）
├── templates/
│   └── report-zonghe-poster.html     ← 综合印证海报模板（占位符）
└── fixtures/                         ← 7 个验证案例（Case A-G）
```

**注**：HTML 渲染目前**仅支持综合印证模式**。如用户选了八字独立 / 紫微独立又问"能不能出 HTML 报告"，告知"目前 HTML 海报仅对综合印证开放，建议选综合印证（含八字+紫微）以拿到海报"。

---

## 工作示例

**用户**：我是 2000 年 1 月 1 日 12:00 出生的男生，帮我看下命盘。

**Skill 应该走**：
1. 信息确认（日期/时辰/性别 ✅）
2. **决策门**："想要八字分析 / 紫微分析 / 综合印证？"
3. 用户回 "八字"：
   - Step 1：跑 `run-chart.ts` 产出 `chart.json`
   - Step 2：跑 `dump-text.ts` 产出 `chart.txt`
   - Step 3a：加载 `prompts/bazi-prompt.md` + 喂入 `chart.txt` → 输出八字分析
4. 提醒"若要紫微 / 综合印证可随时追问"

---

## 失败模式与处理

| 现象 | 原因 | 处理 |
|---|---|---|
| 排盘脚本报错 | 日期超 1900-2100 / 时辰格式错 | 询问用户校正 |
| AI 想"凭记忆排盘" | 偷懒走捷径 | **拒绝**。算法层是不可绕过的硬约束 |
| 输出被截断 | 三段一锅出超 token 上限 | 回到决策门，拆分输出 |
| 算法层和用户其他软件结果不一致 | 命名流派差异（建禄格 vs 比肩格） | 按算法层 `notes` 解释，不偷换说法 |
| Windows + 中文路径 + PowerShell 编码错乱 | 平台特性 | 在 cmd / git bash / WSL 下运行，避免 PowerShell |

---

## 免责声明（每次输出末必带）
> 本分析基于传统八字与紫微斗数理论框架，仅供文化研究与娱乐参考，不构成医疗、投资、婚姻、法律等任何决策依据。命运由个人选择与客观环境共同塑造。
