# fate-bench
**Repository Path**: ccstl/fate-bench
## Basic Information
- **Project Name**: fate-bench
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-10-07
- **Last Updated**: 2026-10-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# fate-bench
**命理开放数据集 —— 真实命盘配已核实的人生事件。**
[](./LICENSE-DATA)
[](./LICENSE-CODE)
[](./data/fate_bench.jsonl)
[](./data/cases.json)
[](./data/raw/hkjfma/INVENTORY.md)
[English](./README.md) | 中文
---
## 这是什么
网上关于八字和紫微斗数的公开数据,基本只有两类:有命盘没结果,或者有解读没东西可核。
两类都算不上能用的数据。
这里是**生辰配已核实的人生结局** —— 某人哪一年离婚、哪一年创业、哪一年父母过世、哪一年确诊癌症
—— 做成单选题,答案由事先就知道答案的一方公布。
来源是一场从 2010 年办到现在的年度比赛。执业命理师实名下场,冲着奖杯来;每届由一组师傅出题,
提供一个真人的生辰和这个人已核实的经历,赛后主办方公布答案 —— **连参赛者考了多少分一起公布**。
**295 道题 · 63 个命例 · 十届 2010–2025 · 其中七届有公开的人类成绩。**
答案的成色不是一回事,数据里分得清清楚楚。215 题带主办方自己公布的答案
(`answer_provenance: "official"`);另外 80 题来自第三方转录 —— 那两届主办方判过卷但从未
公布答案表(`"third-party"`)。只想要前一种,按这个字段过滤即可。
每条记录都带完整的出生年月日、时辰、地点,所以同一个人既能排八字,也能排紫微,也能排西洋星盘。
数据本身不绑定任何一个体系 —— 题目也不绑定:问的是这个人身上发生了什么,不是命盘上写了什么。
## 数据
| 文件 | 内容 |
|---|---|
| [`data/fate_bench.jsonl`](./data/fate_bench.jsonl) | **合并好的全量,一行一题** —— 题目、答案、生辰、两种命盘都内联。从这个文件开始。 |
| [`data/hkjfma_qa.json`](./data/hkjfma_qa.json) | 295 道题 —— 题干、选项、答案、生辰、源 URL |
| [`data/cases.json`](./data/cases.json) | 63 个命例 —— 生辰 + 排好的八字与紫微盘 |
| [`data/human_baseline.json`](./data/human_baseline.json) | 真人命理师在同一批题上的成绩 |
| [`data/hkjfma_categories.json`](./data/hkjfma_categories.json) | 每道 HKJFMA 题的分类,及其判定方式 |
| [`data/raw/hkjfma/`](./data/raw/hkjfma/) | 清洗后的源文本、转录的答案表、77 张存档原图 |
| [`data/vendor/minglibench/`](./data/vendor/minglibench/) | MingLi-Bench 原样 vendor,MIT 协议 |
| [`data/vendor/baziqa/`](./data/vendor/baziqa/) | BaziQA 的五个比赛文件,vendor 进来让审计能离线复现 |
### 命盘里有什么
`cases.json` 不止四柱。光有四柱是一张没有时间轴的快照,而这里绝大多数题问的是
**「哪一年发生了什么」**—— 那是要看大運的。所以每个命例都带上了师傅实际开工要用的东西:
| 八字 | 紫微斗數 |
|---|---|
| 四柱、日主 | 十二宫及其干支 |
| 每柱十神 | 主星含亮度与四化 |
| 藏干十神 | 副星、杂曜、長生十二神 |
| 納音 | 身宫、命主身主、五行局 |
| **大運** —— 干支、年份区间、虚龄区间、順逆、起運日 | **每宫大限年龄段** |
```json
"luck_cycles": {
"starts": "1974-08-02", "direction": "順行",
"cycles": [{"ganzhi": "辛亥", "years": [1974, 1983], "ages": [3, 12]}, "…"]
}
```
## 来源
| 来源 | 覆盖 | 题数 | 协议 / 状态 |
|---|---|---:|---|
| [香港青年術數家協會 全球算命師大賽](https://hkjfma.org) | 2010–2013、2018、**2021** | 135 | 主办方公开发布,注明出处引用。2021 由本仓库从主办方题目原图转录 |
| [MingLi-Bench](https://github.com/DestinyLinker/MingLi-Bench)(Destiny Linker) | 2022–2025 | 160 | MIT —— 注明出处复用 |
| [BaziQA](https://github.com/ChenJiangxi/BaziQA)(Chen & Liu) | 仅 2021 的答案 | — | 其 README 声明 MIT;提供主办方从未出过答案表的那届的 40 个答案 |
这个比赛从 2010 年办到现在,每届由一组执业师傅出题:提供一个真人的生辰,附上这个人已核实的
经历,比赛结束后公布答案。此前的工作只覆盖了最近四届,这个仓库往回补前面的。
| 届 | 年份 | 题数 | 命例 | 选项 | 答案来源 |
|---:|---|---:|---:|:---:|---|
| 第一届 | 2010 | 9 | 3 | A–E | 文字 |
| 第二届 | 2011 | 15 | 3 | a–e | 文字 |
| 第三届 | 2012 | 15 | 3 | A–D | 文字 |
| 第四届 | 2013 | 16 | 4 | A–D | 文字 |
| 第九届 | 2018 | 40 | 9 | A–D | 从公布的照片转录 |
| 第12届 | 2021 | 40 | **9** | A–D | ⚠ 第三方 —— 主办方从未公布 |
| 第13届 | 2022 | 40 | 8 | A–D | 经 MingLi-Bench,已用主办方答案表核过 |
| 第14届 | 2023 | 40 | 8 | A–D | 经 MingLi-Bench,已用主办方答案表核过 |
| 第15届 | 2024 | 40 | 8 | A–D | 经 MingLi-Bench,已用主办方答案表核过 |
| 第16届 | 2025 | 40 | 8 | A–D | ⚠ 第三方 —— 无答案表 |
2021 是唯一一届「八位出题老师、九个命例」:最后一位陳俊燊師傅一人交了两个命主
(一个三题、一个两题)。按「每位老师五题」切会把其中两个命主配错盘。
**题目和官方答案两样都公开**,这一届才收。有几届不满足 ——
逐届审计(含每一届被排除的具体原因)见 [data/raw/hkjfma/INVENTORY.md](./data/raw/hkjfma/INVENTORY.md)。
**第九届(2018)是价值最高的一届**:完整,主办方**中英双语**发布(所以不需要我们翻译,
我们的措辞不会进入数据),而且每个命例都标了出题师傅**用的是哪门术数**
(子平八字 ×6、紫微斗數 ×2、奇門遁甲 ×1)。这个字段整个语料里独此一份,可以按门派分层看。
## 人类基线
这些题不是为了做 benchmark 出的。它们是比赛题:执业师傅实名下场,冲着奖杯来,答案封存到赛后
才公布。主办方把得奖者的分数也一并公布了 —— 所以这个领域里极少见地,「真人到底能做到几分」
是有据可查的。
| 届 | 年份 | 题数 | 选项 | 人类最高分 | 随机 |
|---:|---|---:|:---:|---|---:|
| 第一届 | 2010 | 9 | A–E | **6 / 9**(66.7%) | 20% |
| 第二届 | 2011 | 15 | a–e | **8 / 15**(53.3%) | 20% |
| 第三届 | 2012 | 15 | A–D | **8 / 15**(53.3%) | 25% |
| 第四届 | 2013 | 16 | A–D | 未公布 | 25% |
| 第九届 | 2018 | 40 | A–D | **19 / 40**(47.5%) | 25% |
| 第13届 | 2022 | 40 | A–D | **21 / 40**(52.5%) | 25% |
| 第14届 | 2023 | 40 | A–D | **21 / 40**(52.5%) | 25% |
| 第15届 | 2024 | 40 | A–D | **26 / 40**(65.0%) | 25% |
| 第12届 | 2021 | 40 | A–D | 未公布 | 25% |
| 第16届 | 2025 | 40 | A–D | 未公布 | 25% |
十届里有七届有基线。人类最好成绩落在 47%–67% 之间,地板是 20–25%
—— 凡公布成绩的届次都明显高于随机,但也都远远谈不上做穿。
**这是天花板,不是平均值。** 只有前几名的分数被公布,各届所有参赛者的均分都不可知;参赛人数
大多也没公布,所以「大盘子里的最高分」和「小盘子里的同样分数」不能直接比。
要拿模型跟这些数字比,还有两处得注意。第九届起官方名次是跳水式计分 —— 每人删掉最高分和最低分
的那两个命例,只算中间六例共 30 题 —— 所以 2018 冠军的**官方成绩是 15/30**,而其 40 题原始
总分是 19。上表给的是原始分,也就是跟「模型跑完整个题库」可比的那个。主办方在 2022 那张表上
直接写明了一个后果:**总分最高的未必是冠军** —— 2022 的最高原始分就落在亚军身上。另外各届
选项数不同,随机基线也跟着变。
2022–2025 这四届,题目经 MingLi-Bench 转录,而成绩转录自主办方自己的表格,是两个独立来源。
2023 和 2024 的表还公布了每人在**每个命例**上的得分,也一并收在 `human_baseline.json` 里。
完整数据、注意事项和出处见 [`data/human_baseline.json`](./data/human_baseline.json)。
## 真值是怎么核的
**答案逐字符核对过。** 每一届解析出来的答案串都跟主办方公布的答案比对过 ——
2010 的 `第一條: 1a, 2e, 3e`、2013 的「答案公報」段、2018 的手写答案表。五届全部完全一致。
**第三方转录是审计过的,不是继承的。** 有两个项目转录同一场比赛 —— MingLi-Bench(2022–2025)
和 BaziQA(2021–2025),本数据集从两边都取了答案。我们手上有其中三届(2022、2023、2024)
主办方自己的手写答案表。对着这三张表,MingLi-Bench 的原始抓取文本、他们发布的 `data.json`、
BaziQA 的文件、以及本仓库自己的解析,四方 **120 题全对**
([`scripts/crosscheck_vendor.py`](./scripts/crosscheck_vendor.py))。
**有两届根本无从审计,只能如实标注。** 2021 和 2025 主办方没出过答案表,所以没有任何办法证明
那 80 个答案**是对的** —— 只能说两家独立转录互相印证,各 40/40 一致。一致说明转录得仔细,
不等于真值。这些题带 `answer_provenance: "third-party"`,一个过滤条件就能剔掉。
**命盘由第三方库排。** 八字用 `lunar-python`,紫微用 `py-iztro`(就是 MingLi-Bench 用的
那个 iztro 实现)。发 benchmark 的人不该同时提供真值。有三个命例,出题师傅把自己手排的四柱
印在了生辰旁边 —— 三个都和脚本算出来的一致。
**源头缺的地方标出来,不补。** 63 个命例有 2 个没有盘:一个是 2018 那例,主办方压根没登生辰;
另一个是 2013 那例,缺的时辰**正是题目要你推的东西**。
**源文的错字照登,不悄悄改。** 2021 的卷子把壬寅印成「王寅」(Q18)、髮妻印成「法妻」(Q5)。
两处都按原样保留,这样转录才能对着存档原图复核;两处都记在 INVENTORY 里。
## 数据须知
- **各届选项数不同。** 早期五选(A–E),后来四选。所以随机基线不一样(20% vs 25%),
不能不加区分地混在一起算。271 题四选,24 题五选。
- **一个命例的题数不固定。** 2018 不是「8 例 × 5 题」:有位师傅一个人出了两个不同的人,
他那一块是 2 + 3。
- **时间按公布的原样。** 不做真太阳时校正。只给了时辰没给钟点的,取时辰中点 ——
对时柱而言这是精确值,因为同一时辰内任何时刻时柱相同。唯独子時例外:它跨子夜,
**日柱**在两侧不同。`resolved_time.source` 会告诉你当前是哪种情况。
- **有几届印了师傅自己排的盘。** 第二届把四柱印在生辰旁边(`壬子年 庚戌月 丁酉日 乙巳時`),
相当于同一个出生时刻的一份独立人工排盘参照。
- **有一类题把任务反过来了。** 第四届要求从人生经历反推**出生时辰**,而不是从盘推事件。
- **有五题用这份数据根本答不了。** 主办方把那个命例的生辰印在卷子上、没登到网页,
所以 2018 年的选手有、我们没有。这几题的答案照样收着,并标了 `birth_info.missing`;
谁拿这份数据做评测都该把它们剔除 —— 用它们等于让人用比当年选手更少的资料去比选手的成绩。
- **这是一份中文数据集,英文只覆盖一部分,而且不是我们翻的。** 295 题全部是中文,繁简都有,
按各届原样保留,两个方向都不转换。其中 53 题另带 `question_en` —— 那是**主办方自己双语
发布的**(第四届 16 题全部 + 第九届 37 题),不是本仓库的翻译。其余 242 题没有英文,
日文和韩文一条都没有。要整套单一语言得自己翻 —— 这样翻错了也是你自己的账,
不会被悄悄烙进真值里。
- **紫微星名是简体**(`py-iztro` 的输出),题目是繁体。两边都没做转换。
- **分类标签出自两拨人的手。** 295 题里 294 题带 `category`,用的是 MingLi-Bench 那套十二类,
但 `category_source` 会告诉你每条的来源:他们标了自己那 160 条,我们补的 135 条走关键词规则
(`scripts/categorize.py`)外加 13 条人工改判。拿这套规则去跑他们那 160 条人工标注,
只能复现 **76%** —— 所以按题型切分的结果当近似看,别当成同一个标注者的一致判断。
有一条有意留空:2013 那道反过来推出生时辰的题,问的是命盘本身,不是人生的哪个侧面。
## 复现
```bash
pip install lunar-python py-iztro
python scripts/normalize.py # 源文本 → data/hkjfma_qa.json
python scripts/charts.py # 生辰 → data/cases.json
python scripts/categorize.py # 题目分类 → data/hkjfma_categories.json
python scripts/export_jsonl.py # 全部合并 → data/fate_bench.jsonl
python scripts/crosscheck_vendor.py # 用一手答案表审计两个第三方来源
```
每个脚本都支持 `--check`,只校验不写文件。
## 伦理与边界
这些记录描述的是真实的人,但只有生辰和性别,没有姓名。它们在这里的呈现方式,和主办方当初
公开的方式一致。
本仓库作为**文化与评测资源**发布。收录一条记录,既不表示当年那个结果被正确预测过,
也不构成对这些体系预测效力的任何主张。
## 相关
- [`shunshi-ai/east-asian-celebrity-bazi`](https://huggingface.co/datasets/shunshi-ai/east-asian-celebrity-bazi)
—— 2284 位公众人物,含算好的年/月/日柱
- [`shunshi-ai/bazi-reader-mcp`](https://github.com/shunshi-ai/bazi-reader-mcp)
—— 开源干支历引擎
同一场比赛的另外两份转录,本仓库都注明出处复用了:
- [`DestinyLinker/MingLi-Bench`](https://github.com/DestinyLinker/MingLi-Bench) —— 2022–2025,160 题
- [`ChenJiangxi/BaziQA`](https://github.com/ChenJiangxi/BaziQA) —— 2021–2025,另有论文
([arXiv:2602.12889](https://arxiv.org/abs/2602.12889))
## 许可
代码 [MIT](./LICENSE-CODE)。整理后的数据 [CC BY 4.0](./LICENSE-DATA) ——
这不延及底层素材本身,见 [SOURCES.md](./data/raw/hkjfma/SOURCES.md)。
由 [顺时 Shunshi.AI](https://shunshi.ai) 整理维护。