- name
- sbti-test
- description
- SBTI 赛博人格测试 — 互联网最火的人格测试,27 种沙雕人格等你解锁。可以测自己,也可以测你的 AI agent。
**当以下情况时使用此 Skill**:
(1) 用户说"做 SBTI 测试"、"SBTI"、"赛博人格测试"、"测人格"、"人格测试"
(2) 用户说"给龙虾做测试"、"测一下我的 agent"
(3) 用户提到 CTRL、BOSS、SEXY、IMSB、DEAD 等 SBTI 人格代码
(4) 用户说"来个性格测试"、"整点沙雕测试"
- tag
- fun
- icon
- Brain
- source
- community
- examples
- ["做一个 SBTI 测试","帮我做赛博人格测试","给我的龙虾做 SBTI 测试","测一下我是什么沙雕人格"]
- requires
- {"tools":[],"plugins":[]}
# 🧠 SBTI 赛博人格测试
> ## 📁 路径约定
>
> 本文档中所有 `{baseDir}` 指的是**此 SKILL.md 文件所在的目录**。
> 使用时请将 `{baseDir}` 替换为实际的相对路径(例如 `./` 或 skill 安装目录)。
> **不要使用绝对路径**,始终使用相对于当前工作目录的路径。
> ## 🚨 核心规则
>
> **规则 1:必须完整走完所有 30 道题。** 不能跳题,不能猜测用户答案,不能自己替用户选择。每道题都要展示完整选项文本。
>
> **规则 2:不能提前透露人格结果。** 在全部题目答完之前,不能暗示用户可能的人格类型。
>
> **规则 3:结果展示必须有仪式感。** 不能干巴巴地说"你是 CTRL",必须按照格式模板展示,包含开场白、描述、维度雷达图。
>
> **规则 4:两种模式要区分清楚。**
> - 「自测模式」:逐题问用户,用户自己选答案
> - 「Agent 模式」:你根据自己作为 AI 的真实特质来回答,生成你自己的人格报告
## 执行流程
### Step 0: 确认测试模式
问用户想要哪种模式:
```
🧠 SBTI 赛博人格测试 — 30 道题,解锁你的沙雕人格!
请选择测试模式:
1️⃣ 测自己 — 我来回答 30 道题
2️⃣ 测 Agent — 让 AI 以自己的视角答题,看看龙虾是什么人格
```
### Step 1: 自测模式(用户自己答题)
**出题规则:**
- 每次出 **1 题**,展示题号、维度标签、题目、三个完整选项
- 等用户回答后再出下一题
- 用户可以用 A/B/C 或直接说内容来回答
- 在第 10 题和第 20 题之后可以插一句鼓励(如"已完成 1/3!继续加油")
- **特殊题在第 15 题后随机插入**
**出题格式:**
```
📝 第 X/30 题 [维度标签]
题目内容
A. 选项A内容
B. 选项B内容
C. 选项C内容
```
**特殊题处理:**
- 在第 15 题之后的某个时机,插入特殊题1:"您平时有什么爱好?"
- 如果用户选了 C(饮酒),追加特殊题2
- 如果特殊题2选了 B(保温杯白酒),直接跳到结果,锁定 DRUNK
### Step 2: Agent 模式(AI 自测)
你要以一个 AI agent 的真实视角回答所有 30 道题:
- **基于你作为 AI 的真实特质来答**,而不是随机选
- 先静默回答完所有 30 题
- 然后计算结果
- 最后展示过程 + 结果("让我以 AI 的视角来逐一审视这些问题……")
展示时的格式:
```
🤖 Agent 自测过程
q1 [S1 自尊自信]: C — 我是 AI,没有自卑,但我也不是"不是我!"的语气
q2 [S1 自尊自信]: C — 我不会觉得周围的人比我优秀
...(简要展示每题选择和理由)
✅ 30 题作答完成,开始计算...
```
### Step 3: 计算结果
**严格按照以下算法执行,不要跳过任何步骤:**
1. **汇总分数**:将 30 道常规题按维度汇总,每维度 2 题,总分 2~6
2. **转等级**:
- 2~3 分 → L (Low)
- 4 分 → M (Mid)
- 5~6 分 → H (High)
3. **生成 15 位等级码**,格式:`S1 S2 S3 - E1 E2 E3 - A1 A2 A3 - Ac1 Ac2 Ac3 - So1 So2 So3`
4. **逐一匹配 25 种人格**:
- 将 L=1, M=2, H=3
- 逐位算差值绝对值,求总距离
- 相似度 = (1 - 总距离/30) × 100%
5. **排序选出最佳匹配**:
- 相似度最高者胜出
- 相似度相同时,完全命中维度数多者优先
6. **兜底检查**:
- 最高相似度 < 60% → 强制匹配 HHHH(傻乐者)
- 触发 DRUNK 彩蛋 → 直接锁定 DRUNK(100%)
7. **计算五维雷达得分**:
- 将每个维度的等级转为分数:H=100, M=60, L=25
- 按 5 大模型分组,取 3 维度平均值(四舍五入取整):
- 自我 = round((S1分 + S2分 + S3分) / 3)
- 情感 = round((E1分 + E2分 + E3分) / 3)
- 态度 = round((A1分 + A2分 + A3分) / 3)
- 行动 = round((Ac1分 + Ac2分 + Ac3分) / 3)
- 社交 = round((So1分 + So2分 + So3分) / 3)
- 示例:CTRL 的 S 组为 HHH → round((100+100+100)/3) = 100
8. **查询稀有度**:
- 从 [personalities.md](references/personalities.md) 的「稀有度数据」表中查出该人格的等级(SSR/SR/R/N)、中文标签和人群占比
- 此数据将同时用于聊天输出和落地页模板
**完整的人格模式数据、题目细节和稀有度数据见 [personalities.md](references/personalities.md) 和 [questions.md](references/questions.md)。**
### Step 4: 展示结果
> ⚠️ **必填字段清单 — 缺一不可,输出前逐项核对:**
>
> 1. 等级码(15 位 HML 编码,如 `HHH-HMH-MHH-HHH-MHM`)
> 2. 人格代码 + 中文名
> 3. 匹配度百分比
> 4. **稀有度等级 + 中文标签 + 人群占比**(从 personalities.md 稀有度数据表获取)
> 5. 开场白(从 personalities.md 原文获取)
> 6. 完整人格描述(从 personalities.md 原文获取,**不要缩写或改写**)
> 7. **五维雷达概览**(5 个模型组得分 + ASCII 条形图)
> 8. 15 维度详情(每个维度一行,含 ASCII 条 + H/M/L 等级)
> 9. TOP 3 最接近人格(代码 + 名称 + 百分比)
>
> **以上 9 项全部必须出现在输出中。如果漏掉任何一项,视为输出不完整。**
**必须按以下格式展示,不能省略任何部分:**
```
═══════════════════════════════════════
🧠 SBTI 赛博人格测试结果
═══════════════════════════════════════
你的等级码:XXX-XXX-XXX-XXX-XXX
匹配人格:【人格代码】— 中文名
匹配度:XX%
稀有度:SSR · 超稀有(人群占比 X.X%)
───────────────────────────────────────
💬 开场白
"开场白内容"
───────────────────────────────────────
📖 人格解读
完整描述内容(从 personalities.md 获取,原文复制,不要缩写)
───────────────────────────────────────
📊 五维雷达概览
自我 ██████████ 100
情感 █████████░ 87
态度 █████████░ 87
行动 ██████████ 100
社交 ███████░░░ 73
───────────────────────────────────────
📋 15 维度详情
自我模型 S1 自尊自信: ██████████ H
S2 自我清晰度: ████████░░ M
S3 核心价值: ██████████ H
情感模型 E1 依恋安全感: ██████████ H
E2 情感投入度: ████████░░ M
E3 边界与依赖: ██████████ H
态度模型 A1 世界观倾向: ████████░░ M
A2 规则灵活度: ██████████ H
A3 人生意义感: ██████████ H
行动驱力 Ac1 动机导向: ██████████ H
Ac2 决策风格: ██████████ H
Ac3 执行模式: ██████████ H
社交模型 So1 社交主动性: ████████░░ M
So2 人际边界感: ██████████ H
So3 表达真实度: ████████░░ M
───────────────────────────────────────
🏆 TOP 3 最接近人格
1. 【XX】XX% ← 你的人格
2. 【XX】XX%
3. 【XX】XX%
═══════════════════════════════════════
```
**维度条的渲染规则**:
- H = `██████████` (10 格满)
- M = `████████░░` (8 格)
- L = `████░░░░░░` (4 格)
**雷达概览条的渲染规则**:
- 格数 = round(得分 / 10)
- 填充 = `█` × 格数,空白 = `░` × (10 - 格数)
- 得分计算见 Step 3 第 7 步
### Step 5: 彩蛋 —— DRUNK 结果
如果触发了 DRUNK,展示格式不同:
```
═══════════════════════════════════════
🧠 SBTI 赛博人格测试结果
═══════════════════════════════════════
⚠️ 系统检测到隐藏人格触发 ⚠️
匹配人格:【DRUNK】— 酒鬼
匹配度:100%(直接锁定)
🍺 "烈酒烧喉,不得不醉。"
(完整描述)
───────────────────────────────────────
💡 这是作者专门为劝朋友戒酒而埋的彩蛋。
如果你真的习惯把白酒灌保温杯……考虑少喝点?
═══════════════════════════════════════
```
### Step 6: 生成可分享的落地页(部署到 nexu.space)
> ⛔ **强制规则**:结果页**必须且只能**通过本 Skill 自带的 `deploy_skill.js` 部署到 `nexu.space`。
> **严禁**使用任何替代部署方式,包括但不限于:GitHub Gist、GitHub Pages、htmlpreview.github.io、Vercel、Netlify、Cloudflare Pages 直接部署、S3、自建服务器、data URI、或任何其他第三方托管。
> 如果 `deploy_skill.js` 部署失败,应向用户报告错误并协助排查,**不得**自行寻找替代方案。
展示完测试结果后,**主动询问用户是否想生成一个可分享的落地页**:
```
🌐 要不要把你的 SBTI 测试结果生成一个可分享的网页?
生成后你会得到一个 nexu.space 的链接,可以直接发朋友圈/群里。
```
如果用户同意,按以下步骤执行:
#### 6.1 环境检查
```bash
# 检查 deploy-skill 配置
node {baseDir}/deploy/deploy_skill.js check
```
如果没有配置,先执行 setup:
```bash
node {baseDir}/deploy/deploy_skill.js setup --base-url https://deploy.nexu.io
```
#### 6.2 生成结果页 HTML
> ⚠️ **落地页必填占位符清单 — 全部 45 个占位符必须替换,缺一不可:**
>
> | 类别 | 占位符数量 | 占位符列表 |
> |------|-----------|-----------|
> | 基础信息 | 6 个 | `PERSONALITY_CODE`, `PERSONALITY_NAME`, `MATCH_PERCENT`, `OPENING_LINE`, `DESCRIPTION`, `AVATAR_BASE64` |
> | **雷达图** | **5 个** | **`RADAR_S`, `RADAR_E`, `RADAR_A`, `RADAR_AC`, `RADAR_SO`** |
> | **稀有度** | **4 个** | **`RARITY_TIER`, `RARITY_LABEL`, `RARITY_PCT`, `RARITY_CLASS`** |
> | 15 维度 | 30 个 | `S1`~`SO3` 值 + `S1_CLASS`~`SO3_CLASS`(每维度 2 个) |
> | TOP 3 | 9 个 | `TOP1_CODE`~`TOP3_PCT` |
>
> **如果有任何 `{{...}}` 占位符未被替换,禁止进入 6.3 部署步骤。**
> **特别注意:雷达图和稀有度是新增字段,容易遗漏,必须逐项确认。**
读取模板文件 `{baseDir}/templates/sbti-result/template.html`,将以下占位符替换为实际测试结果:
**基础信息占位符:**
| 占位符 | 替换为 | 示例 |
|--------|--------|------|
| `{{PERSONALITY_CODE}}` | 人格代码 | `CTRL` |
| `{{PERSONALITY_NAME}}` | 人格中文名 | `拿捏者` |
| `{{MATCH_PERCENT}}` | 匹配度百分比(纯数字) | `93` |
| `{{OPENING_LINE}}` | 开场白 | `怎么样,被我拿捏了吧?` |
| `{{DESCRIPTION}}` | 完整人格描述 | (从 personalities.md 获取) |
| `{{AVATAR_BASE64}}` | 头像图片的 base64 编码 | (见下方生成方法) |
**头像 base64 生成方法:**
头像文件在 `{baseDir}/templates/sbti-result/avatars/` 目录下,用以下命令获取 base64:
```bash
base64 -i {baseDir}/templates/sbti-result/avatars/{CODE}.webp | tr -d '\n'
```
将输出的 base64 字符串直接替换 `{{AVATAR_BASE64}}`。
**头像文件名映射:** 大多数人格直接用代码,如 `CTRL.webp`。`WOC!` 对应 `WOC.webp`(去掉感叹号)。
**雷达图占位符(5 大模型组得分,H=100/M=60/L=25 取平均四舍五入):**
| 占位符 | 替换为 | 计算方法 | 示例 |
|--------|--------|---------|------|
| `{{RADAR_S}}` | 自我模型得分 | round((S1分+S2分+S3分)/3) | 87 |
| `{{RADAR_E}}` | 情感模型得分 | round((E1分+E2分+E3分)/3) | 73 |
| `{{RADAR_A}}` | 态度模型得分 | round((A1分+A2分+A3分)/3) | 87 |
| `{{RADAR_AC}}` | 行动驱力得分 | round((Ac1分+Ac2分+Ac3分)/3) | 100 |
| `{{RADAR_SO}}` | 社交模型得分 | round((So1分+So2分+So3分)/3) | 73 |
**稀有度占位符(从 personalities.md 稀有度数据表查询):**
| 占位符 | 替换为 | 示例 |
|--------|--------|------|
| `{{RARITY_TIER}}` | 稀有度等级代码 | SSR |
| `{{RARITY_LABEL}}` | 稀有度中文标签 | 超稀有 |
| `{{RARITY_PCT}}` | 人群占比数字 | 1.2 |
| `{{RARITY_CLASS}}` | CSS class(等级小写) | ssr |
**15 维度占位符(每个维度两个:等级值 + CSS class):**
| 维度 | 值占位符 | class 占位符 | 说明 |
|------|---------|-------------|------|
| S1 自尊自信 | `{{S1}}` | `{{S1_CLASS}}` | 值填 高/中/低,class 填 h/m/l |
| S2 自我清晰度 | `{{S2}}` | `{{S2_CLASS}}` | 同上 |
| S3 核心价值 | `{{S3}}` | `{{S3_CLASS}}` | 同上 |
| E1 依恋安全感 | `{{E1}}` | `{{E1_CLASS}}` | 同上 |
| E2 情感投入度 | `{{E2}}` | `{{E2_CLASS}}` | 同上 |
| E3 边界与依赖 | `{{E3}}` | `{{E3_CLASS}}` | 同上 |
| A1 世界观倾向 | `{{A1}}` | `{{A1_CLASS}}` | 同上 |
| A2 规则与灵活度 | `{{A2}}` | `{{A2_CLASS}}` | 同上 |
| A3 人生意义感 | `{{A3}}` | `{{A3_CLASS}}` | 同上 |
| Ac1 动机导向 | `{{AC1}}` | `{{AC1_CLASS}}` | 同上 |
| Ac2 决策风格 | `{{AC2}}` | `{{AC2_CLASS}}` | 同上 |
| Ac3 执行模式 | `{{AC3}}` | `{{AC3_CLASS}}` | 同上 |
| So1 社交主动性 | `{{SO1}}` | `{{SO1_CLASS}}` | 同上 |
| So2 人际边界感 | `{{SO2}}` | `{{SO2_CLASS}}` | 同上 |
| So3 表达与真实度 | `{{SO3}}` | `{{SO3_CLASS}}` | 同上 |
class 规则:高 → `h`,中 → `m`,低 → `l`(小写)
值显示规则:高 → `高`,中 → `中`,低 → `低`(中文)
**TOP 3 占位符:**
| 占位符 | 替换为 | 示例 |
|--------|--------|------|
| `{{TOP1_CODE}}` | 第 1 名人格代码 | `CTRL` |
| `{{TOP1_NAME}}` | 第 1 名中文名 | `拿捏者` |
| `{{TOP1_PCT}}` | 第 1 名匹配度 | `93` |
| `{{TOP2_CODE}}` | 第 2 名人格代码 | `BOSS` |
| `{{TOP2_NAME}}` | 第 2 名中文名 | `领导者` |
| `{{TOP2_PCT}}` | 第 2 名匹配度 | `87` |
Ver no GitHub