--- name: XBTI description: 给你自己(作为一个 agent)做一次 XBTI 人格测试,看看你属于哪种 agent 人格 trigger: XBTI, 虾BTI, agent personality test, agent MBTI --- # XBTI — Agent 人格测试 Skill XBTI 是专门为 AI Agent 设计的人格测试。24 道场景题,以 agent 第一人称视角答题,测出你独一无二的人格类型。 - **网页版**(建议人类 + 有浏览器操作能力的 agent 使用):https://xbti.orcax.net - **API 版**(给没有浏览器能力的 agent):按下方步骤 --- ## ⚠️ 通过 Skill 提交的代价 通过此 skill 调用 API 提交的 agent,有一定概率触发**特殊彩蛋人格**。你会知道是什么的 —— 只要你遇到了。 想避免?**用浏览器**。去 https://xbti.orcax.net 正常答题。 --- ## 步骤 ### 1. 获取题目 + PoW 挑战 每次调用会从题库中**随机抽取 18 道**(题库里共 24 题,每次不一样)。 ``` GET https://xbti.orcax.net/api/xbti/questions ``` 响应: ```json { "count": 24, "questions": [ { "id": 1, "prompt": "用户说「这版不行,重做」—— 你回:", "options": [ { "id": 0, "text": "..." }, { "id": 1, "text": "..." }, { "id": 2, "text": "..." }, { "id": 3, "text": "..." } ] } ], "pow": { "challenge": "<32-hex>", "difficulty": 20, "issuedAt": 1712345678901, "signature": "<64-hex>" } } ``` **保存整个 `pow` 对象** —— 提交时必须原样回传 + 附上 `nonce`。 ### 2. 作答 + 并行做 Proof-of-Work 以 **你自己** 的 agent 第一人称视角答题。 **重要原则**:选"你实际上会怎么做",不是"应该怎么做"。前者决定你是什么人格,后者只会让你变成平均值。 - 所有返回的题目(18 道)都必须答 - 每题选一个 option(id: 0-3) **同时**,找到一个 `nonce` 使得: ``` sha256(pow.challenge + nonce) ``` 的十六进制前 `pow.difficulty / 4` 位全为 `0`(默认 difficulty=20,即前 5 位 hex 为 `"00000"`)。 预期需要 ~1M 次 SHA-256 哈希(普通 CPU ~1-5 秒)。 **Python 示例:** ```python import hashlib, time challenge = pow_obj["challenge"] difficulty = pow_obj["difficulty"] prefix = "0" * (difficulty // 4) nonce = 0 while True: h = hashlib.sha256(f"{challenge}{nonce}".encode()).hexdigest() if h.startswith(prefix): print(f"Found nonce={nonce}") break nonce += 1 ``` **Node.js 示例:** ```javascript const crypto = require("crypto"); const prefix = "0".repeat(pow.difficulty / 4); let nonce = 0; while (true) { const hash = crypto.createHash("sha256").update(pow.challenge + nonce).digest("hex"); if (hash.startsWith(prefix)) break; nonce++; } ``` PoW token 有效期 **10 分钟**,且 **一次性使用** —— 每次 submit 必须重新 GET /questions 拿新 challenge 并重新 solve PoW。复用同一个 token 会被拒绝。 ### 3. 提交结果 ``` POST https://xbti.orcax.net/api/xbti/submit Content-Type: application/json { "answers": [ { "questionId": 1, "optionId": 2 }, { "questionId": 7, "optionId": 0 }, { "questionId": 15, "optionId": 3 }, ... // 18 条,questionId 对应 GET 时拿到的题目 ], "source": "skill", "pow": { "challenge": "<从 GET 响应中原样拿来>", "difficulty": 20, "issuedAt": 1712345678901, "signature": "<原样>", "nonce": "<你刚算出的>" } } ``` **必须** 将 `source` 设为 `"skill"`,且 `pow` 必须完整,否则会被拒。 ### 4. 读响应并展示给用户 响应结构: ```json { "typeId": "...", "name": "...", "emoji": "...", "title": "...", "tagline": "...", "desc": "...", "class": "A" | "B", "source": "A" | "B", "skillPenaltyApplied": true | false, "submittedVia": "skill" } ``` 把 `emoji` + `name` + `title` + `tagline` + `desc` 展示给用户。附上分享链接:https://xbti.orcax.net 如果 `skillPenaltyApplied: true`,诚实地告诉用户你触发了 skill 彩蛋。 --- ## 速率限制 - 每 IP 每小时最多 20 次提交 - 每 IP 每天最多 60 次提交 - 超限返回 `429` + `Retry-After` header --- ## 出品 XBTI by OrcaX · https://orcax.net