Install
openclaw skills install @dora233/sk-61b00e213202openclaw skills install @dora233/sk-61b00e213202不是「测你是什么性格」,是「测你这辈子开局的根骨」。用户测完要得到的是:我这辈子起步的牌有多差,以及我该怎么打。
| 通道 | 何时用 | 怎么走 |
|---|---|---|
| UI 模式(首选) | 能打开本地 HTML | 1. 先跑 python -X utf8 scripts/build_quiz_html.py --out <桌面路径> 生成单文件点选页2. 立即调用 Start-Process 或系统默认程序打开该 HTML3. 告知用户「测灵页已打开,点选答题即可,答完提交出卡」 |
| 逐题问答模式(次选) | 对话框交互,用户不想敲答案串 | 见下方「对话接入方式」的逐题交互流程 |
| 纯文本模式(兜底) | 用户明确要求一屏看全部题目 | 第 1 轮报卷号 + 一屏铺开 8 题(--questions --paper N);第 2 轮收答案串出卡(--card) |
纯文本模式两轮闭环,没有第三轮——灵根不给讨价还价的空间,不满意就再测一次(换一张卷,共 20 张)。
| 用户回复 | 处理 |
|---|---|
| 答案串(含/不含卷号、带/不带题号、全角半角、逗号顿号空格) | --card 全部识别,先归一化再解析 |
| 单字母答案(A/B/C,逐题问答时) | 逐题累计,存到数组,够了就调 --card 出结果 |
| 「就到这里」「不想答了」 | 数已交题数:≥ 5 题直接出卡,未答按默认项补齐,卡片印「剩下的替你答了」;不足 5 题劝一句,仍坚持则照样出卡(不拦第二次) |
| 漏答 | 用该题默认项补齐,卡片末尾注一句,绝不追问 |
| 缺卷号 | 退出码 2 + 明确提示。不许替用户猜一个卷号 |
UI 模式(自动打开):
python -X utf8 scripts/build_quiz_html.py --out <桌面/本命灵根测试.html>Start-Process '<完整路径>'逐题问答模式(交互友好):
python -X utf8 scripts/linggen.py --start --paper N,把开场白 + 第 1 题发给用户python -X utf8 scripts/linggen.py --question N --paper <同一卷号> 输出下一题--card纯文本模式(兜底):
用户触发 → 跑 python -X utf8 scripts/linggen.py --questions --paper N(N 随机 1–20),把 stdout 原样发给用户
收到答案串 → python -X utf8 scripts/linggen.py --card "<原文>",把卡片原文发出
用户想换卷 → 换 N 重来;用户对结果不服 → 「换张卷再测」,不重判同一张卷
全程保持「测灵人」语气(见 data/meta.json 的 opening),不提 AI、不提脚本
Windows 下所有 python 调用带 -X utf8,否则中文输出按 GBK 乱码。
两层判定,全部实现在 scripts/linggen.py,UI 的 JS 引擎(scripts/engine.js)与它逐用例对拍:
make_papers.py --check 拦截)score = raw / 24(cap = 8 题 × 3)判定顺序固定,先判变异:
min_top、差距 ≤ max_gap、且领先第三名 ≥ min_lead。按相生对映射:金水→冰 / 水木→雾 / 木火→风 / 火土→熔 / 土金→岩attr_threshold 的属性个数(1–5 → 天/双/三/四/全)阈值参数全部在 data/meta.json,由 --calibrate 网格搜索实测校准——改题库后必须重跑校准。
{品质字} · {五字天干} · {地支校验字}
例:四·丙癸壬辛庚·巳
LT-481307-3 那种写法像订单号,会把用户从仙侠语境里拽出来decode_talisman() 直接给出「属性组合 + 品质 + 主属性」,下游 Skill 不需要重跑本测试。校验不通过明确报错,不要猜、不要修--config alt(上架版,不点名)默认;--config fan(粉丝版,判词可点名)仅限非商用渠道以主属性「木」自检:滋养必须是沧浪门(水生木)、磨砺必须是锐金堂(金克木)。方向反了整个表全错且极其隐蔽。--audit 第 7 项断言此方向。
python -X utf8 scripts/make_papers.py --check # 试卷结构 + 逐题五行峰值配平
python -X utf8 scripts/linggen.py --audit # 六档可达 + 分布逐档实测 + 帖码往返 + 字符集纯净 + 宗门方向 + 禁词 + 卡宽
python -X utf8 scripts/linggen.py --selftest # 确定性 + 错码拦截 + 解析容错 + 漏答补齐
python -X utf8 scripts/build_quiz_html.py --verify # JS 引擎与 Python 对拍(需 node)
python -X utf8 scripts/linggen.py --calibrate # 改题库后重新校准阈值
--config fan 且不上架meta.disclaimer)不可删linggen-test/
├── SKILL.md
├── data/
│ ├── questions.json # 8 题(题干 + 选项 + 五行权重 + 默认项)
│ ├── papers.json # 20 张卷(make_papers.py 生成,固定种子,勿手改)
│ ├── attrs.json # 五行配置、宗门、相生相克、变异对、属性判词
│ ├── tiers.json # 六档品质:系数、难度、判词、目标分布
│ └── meta.json # 阈值、干支码表、道号字库、禁词表、开场白、声明
├── scripts/
│ ├── linggen.py # 主引擎:--card / --questions / --audit / --selftest / --calibrate / --list
│ ├── make_papers.py # 构建期生成 / 校验 papers.json
│ ├── engine.js # JS 计分引擎(与 linggen.py 同源对拍)
│ ├── build_quiz_html.py # UI 生成(--out / --verify)
│ └── verify_js.js # node 对拍执行器
└── references/
├── canon.md # 灵根设定的题材通用口径
└── test-prompts.md # 回归用例