返回 Skill 列表
extension
分类: 其它无需 API Key

sbti人格测试

SBTI 人格测试 —— 以 IM 对话方式逐题提问,根据答案自动计算人格类型,并展示本地图片。 当用户说"做个人格测试"、"SBTI"、"测人格"、"测测我是什么人格"时触发。

person作者: user_ec4a1693hubcommunity

SBTI 人格测试 Skill

技能说明

把 https://sbti.unun.dev/ 的选择题转成 IM 对话形式,逐条提问,最终按网页原版逻辑输出人格结果,并展示本地图片。

仅供娱乐,不作任何心理学、医学或人生判断依据。


文件结构

sbti-jacob/
├── SKILL.md              ← 本文件
├── data/
│   └── sbti_data.json    ← 所有题目、选项、人格库、评分逻辑数据
├── scripts/
│   └── score_sbti.py     ← 计算最终人格的 Python 脚本
└── *.png / *.jpg         ← 27 种人格的本地图片

交互流程

1. 开场白

先发一条开场消息:

🎭 欢迎来到 SBTI 人格测试!

本测试共 31 题(特殊条件下 32 题),分 3 轮进行:
  • 第 1 轮:10 题
  • 第 2 轮:11 题
  • 第 3 轮:10 题(特殊情况下 +1 题)

每轮集中作答,答完一轮再进下一轮。仅供娱乐,请勿当成诊断书。准备好了吗?

然后等用户确认,确认后从第 1 题开始。


2. 分批提问规则

测试分 3 轮进行,每轮一次性发出当轮的所有题目,用户集中作答后再进入下一轮。

轮次划分(共 31 题,含 drink_gate_q1):

| 轮次 | 题目编号(在完整序列中) | 题数 | |------|--------------------------|------| | 第 1 轮 | 正式题 q1~q10 | 10 题 | | 第 2 轮 | 正式题 q11~q20 + drink_gate_q1(插在本轮末尾) | 11 题 | | 第 3 轮 | 正式题 q21~q30 | 10 题;若 drink_gate_q1 答案值为 3 则本轮末追加 drink_gate_q2 |

注:正式题顺序固定(q1~q30),drink_gate_q1 固定放在第 2 轮末尾,drink_gate_q2(如需)放在第 3 轮末尾。

每轮格式:

先发一条提示,例如:

📋 第 1 轮(共 3 轮)—— 第 1~10 题,请逐题作答:

然后将本轮所有题目连续发出,每道题格式如下:

第 3 题

我很清楚真正的自己是什么样的

A. 不认同
B. 中立
C. 认同

全部题目发完后,提示用户:

请按题号顺序回复,例如:
1-A 2-C 3-B ...
或逐题回复也可以。

收到回答后:

  • 解析每道题的选项,映射为对应 value(数字)。
  • 如有未作答或无法识别的题,在本轮内追问补全,不进入下一轮。
  • 全部答对后,发送轮次小结(已完成 X/31 题),然后继续下一轮。

选项识别:

  • 用户回复 A/B/C/D(大小写不敏感,a/A 均可)或直接输入选项文字,均视为有效。
  • 批量回复格式如 1-a 2-c 3-b 同样有效。
  • 如果回复无法识别,单独追问该题。

3. 收集答案

记录每道题的 id 和用户选择的 value(数字),形成一个 JSON 对象,例如:

{"q1": 2, "q2": 3, "q3": 2, ..., "drink_gate_q1": 1}

4. 计算结果

所有题目作答完毕后,调用评分脚本:

python3 "$(dirname "$0")/../scripts/score_sbti.py" --answers-json '{"q1": 2, "q2": 3, ..., "drink_gate_q1": 1}'

脚本输出一个 JSON,包含:

  • finalType:最终人格(含 codecnintrodesc
  • modeKicker:标题标注(如"你的主类型" / "隐藏人格已激活")
  • badge:匹配徽章文字
  • sub:副标注
  • top3:匹配度前三的普通人格
  • dimensions:15 个维度的评分和说明
  • imagePath:本地图片绝对路径(如果存在)

5. 展示结果

按以下格式输出(内容完全使用脚本返回的原文,不要改写):

━━━━━━━━━━━━━━━━━━━━━━━━━
【{modeKicker}】

{code}({cn})
{badge}

{sub}

💬 {intro}

{desc}
━━━━━━━━━━━━━━━━━━━━━━━━━

📊 Top 3 匹配:
1. {top3[0].code}({top3[0].cn})—— {top3[0].similarity}%
2. {top3[1].code}({top3[1].cn})—— {top3[1].similarity}%
3. {top3[2].code}({top3[2].cn})—— {top3[2].similarity}%

🔢 15 维度评分:
(逐条列出 dimensionName:Level / 分数 —— 说明)

🖼️ 人格海报:
(若 imagePath 非空,使用 SendImage 或等效工具直接将本地图片发送到 IM,不要输出路径文字)

⚠️ 本测试仅供娱乐,请勿当成诊断书、相亲标准或人生判决书。

注意事项

  1. 不要改写题目文字、选项文字、人格描述,原文照搬。
  2. 图片发送:脚本返回的 imagePath 是绝对路径,使用 SendImage(或平台等效的发图工具)将图片直接发送到 IM,不要把路径作为文字输出给用户。
  3. DRUNK 人格:若 drink_gate_q2 的回答值为 2,最终人格为 DRUNK(隐藏人格),modeKicker = "隐藏人格已激活"。
  4. HHHH 兜底:若最高相似度 < 60%,最终人格为 HHHH(傻乐者),modeKicker = "系统强制兜底"。
  5. 评分规则(脚本内已实现,此处仅供参考):
    • 每个维度两题,选项 value 相加
    • 总分 ≤ 3 → L,= 4 → M,≥ 5 → H
    • 与 25 种正常人格的 15 维 pattern 计算欧氏距离,取最近者