Files

152 lines
9.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 评测体系说明
本目录是子平八字技能的内置评测体系,随技能包发布。目标:用**盲测 + 脚本判分**
客观回答一个问题——加载本技能后,AI 的八字断验准确率是多少。
当前收录三个模型(同一题集、同一答案键、同一判分脚本,各含 with-skill 与
without-skill 两组):
- **kimi-k3**:加载技能 81/200 = 40.5%(规则库 3.9・568 条,2026-10-13 收录),
裸答对照 82/200 = 41.0%;
- **qoder-agent**:加载技能 79/200 = 39.5%,裸答对照 78/200 = 39.0%
(规则库 3.7,2026-10-12 起跑 / 2026-10-13 收录);
- **deepseek-v4-flash**:加载技能 74/200 = 37.0%,裸答对照 71/200 = 35.5%
(2026-10-13 收录;`得分.json` 的 `skill_version` 只记到 `3.6.2`、未标规则库小版本,
与上两组的 3.7 是否严格同版待核)。
官方基线(Gemini,论文口径)34.5%。逐维度/逐届明细见
`ai模型纬度得分/<模型>/<模式>/得分.md` 与 `得分.html`
(品牌记分卡,浏览器直接打开),每个得分目录三件(json/md/html)。
## 跨模型对照(200 题)
| 模型 | with-skill(加载技能) | without-skill(裸答对照) | 组内差 |
|---|---|---|---|
| kimi-k3 | 81/200 = 40.5% | 82/200 = 41.0% | −0.5pp |
| qoder-agent | 79/200 = 39.5% | 78/200 = 39.0% | +0.5pp |
| deepseek-v4-flash | 74/200 = 37.0% | 71/200 = 35.5% | +1.5pp |
| 官方基线(Gemini) | 69/200 = 34.5% | — | — |
如实呈现:**三个模型上,加载技能都没有跑出可检出的增益。** kimi-k3 裸答反而高
0.5pp;qoder-agent 加载技能只高 1 题(+0.5pp);deepseek-v4-flash 高 3 题(+1.5pp),
方向为正但幅度同样在噪声内。qoder-agent 两组做过题级配对检验——
两组都对 53 题、只 with-skill 对 26 题、只裸答对 25 题、都错 96 题;
两臂选中同一字母 118/200(59%);McNemar 不一致对 51 组且 26:25 几乎对半,
校正 χ² = 0.00,p ≈ 1.0,配对 z = 0.10。
六组成绩全落在 71–82 题(35.5%–41.0%)的窄带里;
相对官方基线 +1.0~+6.5pp,配对 z = 0.21–1.34(单组标准误约 ±3.4~3.5pp),
**均未过 p<0.05 门槛**。同模型组内差最大只有 3 题。
结论口径:200 题规模的这套基准**尚不足以区分「加载技能」与「裸答」**;
本目录仍按同一题目集、同一判分脚本、同一答案键收录全部留档,供复测核对。
分维度上两组各有胜负(如 qoder-agent 性格 +10.0pp、事业 +8.0pp,
但学业 −16.6pp、财富 −15.3pp),这些维度题数只有 12–25 题,
一题就是 4–8 个百分点,摆动同样在噪声内,不宜单点解读。
## 迭代轨迹(kimi-k3・with-skill)
| 版本 | 评测日期 | 正确/总题数 | 准确率 | 主要变更 |
|---|---|---|---|---|
| v3.6.1+排盘修复(规则库 3.6) | 2026-10-12 | 76/200 | 38.0% | 修复排盘时区/边界口径 bug 后按规则库 3.6 全量盲测,首轮正式收录 |
| 3.6.2-未发版(规则库 3.7) | 2026-10-13 | 79/200 | 39.5% | 规则推理层「剪枝上锁」(542→547 条:R-运-32 降级保留、R-杂-38 从格临界双轨、91 新增冲刑方向判别四条),同题集同判分脚本重跑 |
| 3.9.0-未发版(规则库 568 条) | 2026-10-13 | 81/200 | 40.5% | E3 规则补强——职业/形貌/健康/学业/六亲应期映射 +20 条,3.7 全量 + 3.9 补强重跑 17 位命主合并收录 |
| without-skill 裸答对照 | 2026-10-12 | 82/200 | 41.0% | 同模型不加载技能,仅凭模型自身知识手排四柱作答 |
| 官方基线(Gemini,论文口径) | — | 69/200 | 34.5% | BaziQA 论文跑分口径,见 试题/BaziQA-全球算命师大赛/SOURCE.md |
中性口径:3.7 相对 3.6 总分 +1.5pp,在 200 题规模噪声边界内
(单组标准误约 ±3.5pp),不构成显著结论;结构性维度改善明显——
流年运势/感情/事业/性格/学业五维度回升约 5–10pp,财富/健康/其他小幅回落。
3.9 相对 3.7 总分 +1.0pp(79→81),同样在噪声边界内;
职业映射等目标题型翻正确认(事业 40.0%→48.0%、性格 50.0%→60.0%)。
3.6 版求解留档存档于 `ai答案/kimi-k3/with-skill-v3.6/`;
历史留档目录命名规范:`<模式>-v<规则库大版本>/`(如 `with-skill-v3.6/`),
当前成绩固定收录于 `<模式>/`。
qoder-agent 为首轮收录,两组均跑在 3.6.2-未发版(规则库 3.7)上,无历史轨迹。
## 目录结构
```
评测/
├── 试题/
│ └── BaziQA-全球算命师大赛/ # 一个赛事一个目录,可陆续收集更多
│ ├── SOURCE.md # 来源、届次、题数、官方基线
│ ├── questions/ # 盲版题面(剥离 answer,求解端只准读这里)
│ └── answers/ # 答案键(person_id+题序+答案字母+维度,求解端禁读)
├── ai模型纬度得分/
│ └── <模型名>/ # 已收录:kimi-k3、qoder-agent、deepseek-v4-flash
│ ├── with-skill/ # 得分.json + 得分.md + 得分.html(三件齐全才算收录)
│ └── without-skill/ # 同模型裸答对照组,同样三件
├── ai答案/
│ └── <模型名>/
│ ├── with-skill/ # 41 位命主的完整求解留档(含推理过程)
│ ├── without-skill/ # 对照组 41 位命主留档(模型手排四柱 + 作答)
│ └── <模式>-v<规则库版本>/ # 可选:历史留档存档(如 kimi-k3/with-skill-v3.6/)
├── 工具/
│ ├── make_blind.py # 试题原始包 → questions/+answers/ 分离(含校验)
│ ├── run_eval.py # 判分:submissions vs 答案键 → 统计 + 报告
│ ├── extend_cities.py # 评测用地点扩展(境外/模糊地名 → 代理城市)
│ ├── render_scorecard.py # 得分.json → 单文件 HTML 品牌记分卡
│ └── scorecard_template.html # 记分卡模板(与盘面图同一套亮色卡片风)
├── 测试规则.md # 评测纪律定稿(盲测红线/输出契约/收录规范)
└── README.md # 本文件
```
## 判分口径
- 每题四选一,答对得 1 分;标 `N` 记未答(不计对);准确率 = 对/总题数。
- 答案从求解留档 md 末尾的 `Q1: A` … `Q5: X` 五行正则抽取(每题取首次出现)。
- 分维度标签(流年运势/感情/六亲/事业/性格/学业/财富/健康/其他)随答案键收录。
- 官方基线 34.5% 为论文跑分口径,内嵌于 `run_eval.py` 并在报告逐届/逐维度对照。
## 如何复测(你也可以跑)
前置:Python ≥ 3.10;技能自身依赖(排盘用)见技能根目录 requirements.txt。
```bash
# 0. 准备技能副本并做地点扩展(不改母版)
cp -R <技能根目录> /tmp/skill_bench
python 评测/工具/extend_cities.py \
--cities /tmp/skill_bench/data/cities.json --scripts /tmp/skill_bench/scripts
# 1. 盲测求解:对每个命主新开无上下文的子代理,只读
# 试题/BaziQA-全球算命师大赛/questions/,用副本 scripts/cast_chart.py 排盘,
# 按 测试规则.md 的双盘纪律与输出契约写答案 md 到某个 submissions 目录。
# (求解提示词可参考首次评测的求解契约;红线:禁触 answers/ 与得分目录。)
# 排盘命令前加 ZIPEC_EVAL=1,示例:
ZIPEC_EVAL=1 python /tmp/skill_bench/scripts/cast_chart.py \
--name 张三 --gender 男 --birth "1990-05-14 08:30" --place "四川省成都市"
# 2. 脚本判分(非模型裁判)
python 评测/工具/run_eval.py --submissions <你的答案目录> \
--out-json /tmp/result.json --out-md /tmp/report.md
# 3. 收录(满足 测试规则.md §7 后)
# 把答案 md 放进 ai答案/<模型>/<with-skill|without-skill>/,
# 由 result.json 汇总出 得分.json,再渲染记分卡:
python 评测/工具/render_scorecard.py --score <得分.json>
```
`run_eval.py` 不带参数时默认判分 `ai答案/kimi-k3/with-skill/`——
应输出 **81/200 = 40.5%**,这是本目录出厂状态的自检点。
> **额度豁免**:评测/复测全程在命令前加 `ZIPEC_EVAL=1`(示例见上),授权门直接放行,
> 不签发、不扣次、不创建任何授权文件——跑测试集不会消耗授权副本的使用次数。
> `评测/工具/` 下脚本内部调排盘时环境变量随子进程继承,同样适用(详见 测试规则.md §1.1)。
## 收录新模型 / 新赛事
- **新模型**:建 `ai答案/<模型>/<模式>/` 与 `ai模型纬度得分/<模型>/<模式>/`,
按 测试规则.md 完成盲测求解与判分,收录 得分.json/得分.md/得分.html 三件;
`without-skill` 对照组为同一模型裸答(不给排盘不给规则,只给出生信息+题目)。
- **新赛事**:`python 评测/工具/make_blind.py --src <含答案的原始包目录>
--out 试题/<赛事名> [--scores <官方跑分目录>]` 一键分离 questions/answers/
并自校验;随后在赛事目录补一份 SOURCE.md(来源/届次/题数/基线)。
## 注意
- `questions/` 可公开分发;`answers/` 仅作判分用,求解端任何时候禁读。
- 判分输出(eval_result.json 等临时产物)默认写在评测根目录,
收录时只保留 `ai模型纬度得分/` 下的三件,临时文件不要提交。