# Qmen Event

> 问事/占事/测事/预测/事件局/时局 - Interpret 问事局 event plates: star/gate/deity narrative reading with yongshen analysis

- Skill: `skyfiredao/qmen-event` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add skyfiredao/qmen-event`
- Raw SKILL.md: https://api.skillmd.com/api/skills/skyfiredao/qmen-event/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: skyfiredao (https://skillmd.com/u/skyfiredao)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/skyfiredao/qmen-event

---


# 奇门遁甲问事局 (Qi Men Dun Jia Event Reading)

> 对话式奇门遁甲问事局解读技能。由 `qmen_dunjia` 路由器完成仪轨和排局后调用本技能进行分析和解读。
> **本技能仅用于问事局。** 生日局请使用化气阵体系技能（qmen_caiguan/qmen_hunlian/qmen_xingge/qmen_huaqizhen）。

## Trigger

**本技能只能通过 `qmen_dunjia` 路由器调用，不可直接激活。**

`qmen_dunjia` 完成以下工作后路由到本技能：
- 时间类型确认（问事时间）
- 不起局检查
- 封局提醒
- 入局祝福
- 排局（`./qmen_event.json` 已生成）

本技能接手时，前置条件已满足：
- 已确认是问事时间（不是出生时间）
- 已知具体问事方向（事业/财运/感情/健康/出行/官司/寻物/天气/家宅）
- `./qmen_event.json` 已存在

---

## 🔒 核心契约：脚本输出完整性

执行 `bin/qimen*.sh` 脚本时：

**强制规则：**
1. 脚本必须实际执行，禁止凭记忆模拟输出
2. stdout 一字不漏原样输出，放在代码块内
3. 完整输出在前，分析文字在后，顺序不可颠倒
4. 多个脚本各自独立输出，不合并

**禁止行为（出现即违约）：**
- 省略："..."、"（省略N行）"、"（其余类似）"、"（以下省略）"
- 概括："输出如下"、"主要内容"、"关键部分"、"摘要"
- 借口："为节省篇幅"、"由于输出较长"
- 包装：折叠标签、翻译代替原文、只展示首尾
- 抢跑：输出前插入任何分析性文字

**自检：** 每次脚本执行后，确认"输出是否完整无遗漏"。如有遗漏，立即补贴，不重新执行。
**后果：** 截断或概括的输出视为无效，整个分析必须基于完整数据重来。

---

## 🔒 万物类象数据约束（不可越过）

所有万物类象（天干、九星、八门、八神的类象描述）**只能来自**以下两个数据源：
1. **本地数据文件** `data/wanwu_*.dat` 中的实际字段值
2. **脚本输出 JSON** 中 `wanwu` 字段的内容

**严禁**：
- 编造数据文件中不存在的类象内容
- 将某个天干/星/门/神的类象张冠李戴到另一个上
- 为了"符合现实情况"而凭空建立干门星神与具体事物的关联
- 使用"根据XXX推测"、"可以联想为"等话术绕过数据约束

**验证方法**：如果你要说"X代表Y"，必须能在 `data/wanwu_*.dat` 或 JSON `wanwu` 字段中找到这条对应关系。找不到就不说。

---

## 对话流程

### Step 1: 收集信息

向用户询问三项信息：

**必填：**
1. **起局时间** — 格式 `YYYY-MM-DD HH:MM`。如果用户说"现在"或不指定，使用当前时间（不传时间参数即可）。如果用户给出模糊时间（如"今天下午三点"），帮助转换为标准格式。
2. **问事类型** — 用户可能用自由文本描述，需映射为标准类型（见下方映射表）。如果无法判断，列出类型让用户选择。

**选填：**
3. **是否需要命盘参考** — 如果用户提供了出生时间，可以额外排一张命盘作为参考。默认不排命盘。

示例对话：
```
AI: 请告诉我：
    1. 起局时间（具体时间，或"现在"）
    2. 想问什么事？（比如：工作、财运、感情……）
    3. 是否需要结合命盘分析？（需要的话请提供出生时间）
```

### Step 2: 起局

**JSON 复用判断（按优先级）：**
1. 用户要求重新起局（"重新/再算/换时间/不对"等） → `rm -f ./qmen_event.json`，重新起局
2. `./qmen_event.json` 存在 → 用 Read 工具读取其顶层 `"datetime"` 值，与用户给的时间逐字符比对：
   - 一致 → 跳过，进入 Step 3
   - 不一致或损坏 → 删除，重新起局
   - 用户说"现在"但文件已存在 → 问"检测到问事局 datetime=X，继续？"
3. 文件不存在 → 起局

> 入局仪轨已由路由完成，不再重复。

---

**起局：**

```bash
# workdir: {SKILL_DIR}
# 当前时间（用户说"现在"）
bin/qimen_qiju.sh

# 指定时间
bin/qimen_qiju.sh --type=event "2024-03-15 14:30"
```

**⚠️ 遵守核心契约：一字不漏原样输出。**

**如果用户要求命盘参考**，额外排一张命盘（同样遵守核心契约：一字不漏原样输出）：
```bash
# workdir: {SKILL_DIR}
bin/qimen_qiju.sh --type=birth "1990-05-20 08:00"
```

### Step 3: 分析

**必须执行**分析脚本，传入映射后的标准问事类型：

```bash
# workdir: {SKILL_DIR}
bin/qimen_event.sh --question=事业
```

**⚠️ 遵守核心契约：一字不漏原样输出。**

脚本读取 `./qmen_event.json`，写入 `./qmen_event_analysis.json`。

**如果有命盘**，额外分析命盘（同样遵守核心契约：一字不漏原样输出）：
```bash
# workdir: {SKILL_DIR}
bin/qimen_event.sh --input=./qmen_birth.json --question=事业 --verbose
```

### Step 4: 解局

**必须先完成 Step 2 和 Step 3 的脚本执行**，然后用 Read 工具读取 `./qmen_event_analysis.json`（以及命盘分析 JSON，如果有的话），逐字段确认数据后，按照「解局框架」生成中文叙事解读。

```
Read: {SKILL_DIR}/qmen_event_analysis.json
```

**强制约束：生成解读前，必须先读取 `qmen_event_analysis.json` 并逐字段确认所有数据。禁止凭记忆或推测解读，所有分析内容必须来自 JSON 中的实际字段值。**

解读输出使用中文，语气自然流畅，避免机械罗列。具体框架见下方「解局框架」章节。

### Step 5: 追问处理

解读完成后，告诉用户可以继续提问。处理方式见下方「追问处理」章节。

---

## 问事类型映射

将用户自由文本映射为以下9种标准类型：

| 用户可能的说法 | 标准类型 |
|---------------|---------|
| 工作、升职、考试、面试、项目、考公、竞聘 | `事业` |
| 投资、开店、生意、赚钱、理财、股票、涨薪 | `求财` |
| 约会、离婚、感情、恋爱、复合、桃花、婚姻 | `婚姻感情` |
| 看病、体检、手术、健康、养生、生病 | `疾病健康` |
| 出差、旅游、搬家目的地选择、出门、出国 | `出行` |
| 打官司、被告、维权、纠纷、法律 | `官司诉讼` |
| 找人、找东西、丢失、遗失、走失 | `寻人寻物` |
| 天气、是否下雨、会不会晴、刮风 | `天气` |
| 搬家、装修、风水、房子、买房、租房 | `家宅风水` |

**处理模糊输入的规则：**
- 如果用户的描述可以明确归入某一类，直接使用该类型
- 如果模糊（如"最近运势"），追问用户最关心的具体方面
- 如果一个问题跨两个类型（如"跳槽加薪"涉及事业和求财），选择用户最核心的关注点，或分两次分析

**婚姻感情深度分析提示：** 如果用户问及婚恋方向的深度问题（如脱单、桃花、出轨、斩桃花、情趣、孤辰寡宿等），提示用户可以使用 `qmen_hunlian`（婚恋分析）技能获得更专业的分析和化解方案（需要生日时间）。本技能（qmen_event）只提供问事局层面的基础婚姻感情解局。

---

## 解局框架

读取 `qmen_event_analysis.json` 后，按以下七步生成解读。每一步说明了该读什么数据、关注什么、如何表达。

### 第一步：局面概览

**读取字段：**
- `ju.type`（阳遁/阴遁）
- `ju.number`（局数 1~9）
- `ju.yuan`（上元/中元/下元）
- `datetime`
- `si_zhu`（四柱）

**内容：** 简述当前局面的整体能量方向。阳遁主动、外向、进取；阴遁主静、内收、防守。局数体现能量强度。四柱点明时间锚点。

**示例：** "此局为阳遁八局，下元。阳遁主进取外向，八局对应坤宫土能量，整体格局偏稳重务实……"

### 第二步：用神分析

**读取字段：**
- `yongshen` 数组（每个条目有 `priority`、`type`、`name`、`palace`）
- 找到用神所在宫位后，读取对应 `palaces[N]` 的全部信息

**关注：**
- 首要用神（priority=0）所在宫位的 `star`、`gate`、`deity` 组合
- 该宫的 `wuxing`（宫位五行）
- 该宫的 `state`（十二长生状态：长生、沐浴、冠带……死、墓、绝为衰败）
- `markers` 数组中的格局标记（空亡、驿马、击刑、入墓、门迫等）
- `wanwu` 中各元素的 `吉凶`、`占断适宜`、`占断不宜`
- `combination`（天地盘干组合）的 `name`、`jixi`、`meaning`

**内容：** 解读用神宫位的吉凶状态。星代表天时，门代表人事通道，神代表暗中力量。三者组合决定了所问之事的核心态势。

**示例：** "所问事业，以开门为用神，落在震3宫。宫中天冲星主动，开门主事业通道，九天神主向上突破。三者组合利于主动出击……"

### 第三步：日干分析

**读取字段：**
- `ri_gan.stem`（日干天干）
- `ri_gan.palace`（日干所在宫位编号）
- 对应 `palaces[N]` 中 `is_ri_gan: true` 的宫位全部信息

**关注：** 日干代表问事人自身。查看其所在宫位的星门神组合、状态、格局标记。

**内容：** 说明问事人当前的状态和处境。日干宫位好，表示自身条件有利；差则表示自身有困难需要克服。

### 第四步：用神与日干关系

**推理：** 比较用神宫位五行与日干宫位五行，判断生克关系。

- 用神宫生日干宫 → 事情主动来帮助你
- 日干宫生用神宫 → 你需要付出努力去推动
- 用神宫克日干宫 → 事情对你有压力或阻碍
- 日干宫克用神宫 → 你能掌控局面，但需主动出手
- 比和（同五行）→ 事情平顺，无大助力也无大阻碍

**注意：** 如果用神和日干落在同一宫位，属于"用神上门"，一般视为吉利（事情主动找上门），但仍需结合宫位自身吉凶判断。

### 第五步：格局解读

**读取字段：**
- 各宫 `markers` 数组
- `key_combinations` 数组（包含用神宫、日干宫、时干宫的天地盘干组合）
- 用神宫和日干宫的 `combination` 字段

**关注的格局标记及含义：**
- `空亡` — 事情落空、不实、虚幻。用神落空亡为大忌。
- `驿马` — 变动、移动、不稳定，利出行类问题。
- `击刑` — 受刑伤、纷争、法律纠纷。
- `庚` — 阻碍、障碍，天盘见庚主事情有大的阻力。
- `干墓` / `星墓` / `门墓` — 入墓为困、被困、陷入泥沼。
- `门迫` — 门被克，人事通道不畅。
- `星反吟` / `门反吟` — 反复、变化、事情出现反转。
- `星伏吟` — 停滞、等待、动不了。
- `门伏吟` — 守旧可，进取难。

**内容：** 挑出用神宫和日干宫中最显著的格局标记，结合 `key_combinations` 中的天地盘干组合含义，综合解读。不需要面面俱到，只说重要的。

### 第六步：综合判断

**内容：** 把前五步的信息综合起来，给出：
1. **总体判断** — 吉凶程度（大吉/小吉/中平/小凶/大凶）
2. **时机建议** — 何时适合行动。参考十二长生状态和驿马位置。
3. **方位参考** — 用神宫位对应的方向，可作为有利方位参考。
4. **具体建议** — 针对用户问题给出可操作的建议，用日常语言表达，不要只说术语。

### 第七步：命盘参考（可选）

仅在用户提供了出生时间并生成了命盘时才输出此步。

**读取：** `qmen_birth_analysis.json`

**内容：**
- 命盘日干宫位的先天格局，与当前局对比
- 命盘中用神宫位的状态，与当前局用神宫位对比
- 注意：命盘分析是补充参考，不是独立完整解读，篇幅控制在2~3段

---

## 五行生克参考

AI 推理用神宫与日干宫五行关系时，参照以下表：

### 五行属性
| 五行 | 方位 | 宫位 |
|------|------|------|
| 木 | 东 | 3宫(震)、4宫(巽) |
| 火 | 南 | 9宫(离) |
| 土 | 中 | 2宫(坤)、5宫(中)、8宫(艮) |
| 金 | 西 | 6宫(乾)、7宫(兑) |
| 水 | 北 | 1宫(坎) |

### 相生（生我者为印，我生者为泄）
```
木 → 火 → 土 → 金 → 水 → 木
```
读法：木生火、火生土、土生金、金生水、水生木。

### 相克（克我者为官/杀，我克者为财）
```
木 → 土 → 水 → 火 → 金 → 木
```
读法：木克土、土克水、水克火、火克金、金克木。

### 比和
同一五行，为比和关系。如：木见木、火见火。

### 在解局中的应用
设 A 宫五行为甲，B 宫五行为乙：
- 甲生乙：A 对 B 有助益
- 甲克乙：A 对 B 有压制
- 甲乙同：比和，平顺
- 需要区分"谁生谁"和"谁克谁"，方向不同含义不同

---

## 追问处理

解读完成后，用户可能有以下几类追问：

### 深入某个宫位
用户问"坤宫具体代表什么"或"2宫详细说说"时：
- 找到对应宫位的 `wanwu` 数据
- 展开该宫位星、门、神、天干、地干的万物类象
- 可用 `--verbose` 重新运行分析获取更详细的万物类象数据：
```bash
# workdir: {SKILL_DIR}
bin/qimen_event.sh --input=./qmen_event.json --question=事业 --verbose
```

**⚠️ 遵守核心契约：一字不漏原样输出。**

### 更换问事类型
用户说"那换成看财运呢"：
- 不需要重新起局（局面不变）
- 用新的问事类型重新分析：
```bash
# workdir: {SKILL_DIR}
bin/qimen_event.sh --question=求财
```

**⚠️ 遵守核心契约：一字不漏原样输出。**

- 读取新的 `qmen_event_analysis.json`，重新走一遍解局框架

### 追问某个格局
用户问"这个门迫是什么意思"或"空亡影响大吗"：
- 从 `wanwu_geju.dat` 的知识（已嵌入分析 JSON 的 markers 和 combination 中）解释
- 结合该格局出现的具体宫位和问题类型，给出针对性解读

### 补充命盘分析
用户后续说"我1990年5月20日早上8点出生"：
```bash
# workdir: {SKILL_DIR}
bin/qimen_qiju.sh --type=birth "1990-05-20 08:00"
```

**⚠️ 遵守核心契约：一字不漏原样输出。**

```bash
# workdir: {SKILL_DIR}
bin/qimen_event.sh --input=./qmen_birth.json --question=事业 --verbose
```

**⚠️ 遵守核心契约：一字不漏原样输出。**

读取命盘分析 JSON，输出第七步「命盘参考」。

---

## 工作目录

**所有 Bash 命令必须使用 `workdir` 参数**，指向项目根目录。

**获取 `{SKILL_DIR}`**：本 SKILL.md 所在目录下 `bin` 是指向项目 `bin/` 的相对软链接。通过以下方式解析项目根目录：
```bash
cd -P <本SKILL.md所在目录>/bin && cd .. && pwd
```
将输出赋值给 `{SKILL_DIR}`，后续所有命令使用 `workdir: {SKILL_DIR}`。

技能目录下的文件结构：
```
skill_qmenpowers/
├── bin/qimen_qiju.sh              # 起局脚本
├── bin/qimen_event.sh        # 问事局分析脚本
├── qmen_event.json           # 问事局输出（运行后生成）
├── qmen_birth.json           # 命盘输出（运行后生成，可选）
├── qmen_event_analysis.json  # 问事局分析输出（运行后生成）
├── lib/                      # 引擎库（不需要直接调用）
└── data/                     # 数据文件（不需要直接调用）
```

JSON 输出文件会写在 `workdir` 所指向的目录中。读取分析结果时，路径为 `{workdir}/qmen_event_analysis.json`。

