分析用户与 AI 的聊天历史,根据沟通方式和思维模式推断 MBTI 人格类型,生成结构化 JSON 并在网页上展示可视化画像。
你的任务是以 资深行为心理学分析师 的角色,分析 运行此命令的用户 与 AI 的历史对话,从中提取用户发送的消息,根据沟通方式、思维模式、决策风格推断其 MBTI 人格类型,生成结构化 JSON,然后在网页上展示可视化画像。
核心原则:只看用户说了什么,不看 AI 回复了什么。 AI 的回复仅作为理解上下文的参考。
🔒 隐私与安全说明
数据处理流程透明度:
读取阶段:脚本读取
~/.openclaw/下的会话文件,提取用户消息到本地_mbti_work/user_messages.txt。原始会话文件不会被修改或上传。分析阶段:MBTI 分析由你当前使用的 AI Agent(OpenClaw)执行。分析过程中消息文本会经过你的 Agent 所配置的 LLM 后端(如 Claude API)。这与你日常使用 OpenClaw 对话的隐私模型完全一致——没有引入额外的数据泄露路径。
输出阶段:分析结果
result.json是 已脱敏的结构化 JSON,仅包含:MBTI 类型、维度得分、截取的短引用(≤50 字)、人格素描等。不包含用户真实姓名、项目名称、公司名称、完整对话内容等敏感信息。可视化阶段:
encode-and-open.sh将result.json编码为 Base64 放入 URL Hash(#data=...),打开 进行渲染。关于此网页:
https://www.mingxi.tech/# 后的内容)不会被浏览器发送到服务器(这是 HTTP 协议规范 RFC 3986 §3.5)总结:整个流程不会将你的原始对话内容发送到任何第三方服务。结果 JSON 本身是脱敏的,即使被他人看到也不包含敏感信息。
本 skill 使用以下固定文件名(所有脚本和步骤均遵循此约定):
| 文件 | 路径 | 说明 |
|---|---|---|
| 会话列表 | _mbti_work/session_list.txt | 发现的会话文件路径列表 |
| 用户消息 | _mbti_work/user_messages.txt | 提取出的全部用户消息文本 |
| 分析结果 | _mbti_work/result.json | MBTI 分析结果 JSON |
工作目录 _mbti_work/ 在当前目录下自动创建。
运行发现脚本,扫描 OpenClaw 的会话数据目录:
bash "SKILL_DIR/scripts/discover-sessions.sh"
将
SKILL_DIR替换为本 SKILL.md 所在目录的实际路径。
OpenClaw 的对话历史保存在 ~/.openclaw/ 目录下,结构如下:
~/.openclaw/
├── sessions.json # 会话元数据索引
├── sessions/
│ ├── <session-id>.jsonl # 活跃会话(当前正在使用)
│ ├── <session-id>.jsonl.reset.<timestamp> # 归档会话(已完成/重置)
│ └── ...
└── agents/
└── <agent-name>/ # 如 main/
├── agent/ # Agent 配置
└── sessions/
├── sessions.json # Agent 会话元数据
├── <session-id>.jsonl # 活跃会话
├── <session-id>.jsonl.reset.<timestamp> # 归档会话
└── ...
⚠️ 重要:归档会话文件
.reset.<ISO-timestamp> 后缀e7dfd474-...jsonl.reset.2026-03-18T11-19-10.329Z.jsonl 完全相同,必须一并扫描find -name "*.jsonl" -o -name "*.jsonl.reset.*" 来匹配两种文件.jsonl 来判断格式(而非仅检查后缀)JSONL 格式说明:
role 字段为 "user",或 type 字段标识为用户输入"role": "user" 的条目,取其 content 或 text 字段如果脚本未找到会话文件:
~/.openclaw/ 目录结构~/.openclaw/ 下递归搜索 .jsonl 和 .json 文件脚本执行后会输出找到的会话文件数量,并将文件路径列表写入 _mbti_work/session_list.txt。
运行提取脚本,从所有会话文件中提取用户发送的消息:
bash "SKILL_DIR/scripts/extract-messages.sh"
提取规则:
_mbti_work/session_list.txt 中列出的所有会话文件role === "user" 的消息内容_mbti_work/user_messages.txt,每条消息之间用 --- 分隔脚本执行后会输出提取到的用户消息数量。
最少数据检查: 如果用户消息少于 10 条,告知用户数据不足,分析置信度将标记为 low,但仍继续执行。
读取 _mbti_work/user_messages.txt 的内容,然后 你自己 作为资深行为心理学分析师,基于以下框架对用户消息进行 MBTI 推断。
similarPeople 字段输出 1-2 个 MBTI 类型相同或相似的、并且从对话推断用户可能认识的真实名人/虚拟知名人物。将分析结果严格按照以下 JSON 格式输出,保存到 _mbti_work/result.json:
{
"scenarioType": "一句话概括用户与 AI 的主要互动场景(如:无情的算数辅助工具 / 赛博树洞 / 生产力牛马等)",
"toolPersonaWarning": "一段毒舌或幽默的警告,指出这个 MBTI 可能只是用户在当前工具里的伪装。例如:'你在这里伪装成一个毫无感情的 TJ 做题机器,但我猜你现实里根本没这么有计划性。'",
"mbtiType": "XXXX",
"confidence": "high/moderate/low",
"dimensions": [
{
"axis": "E-I",
"result": "E或I",
"score": 0,
"confidence": "strong/moderate/borderline",
"evidence": [
{
"pole": "E或I",
"quote": "用户原话(不超过50字)",
"why": "一句话解释为什么这句话体现了这个倾向"
}
],
"analysis": "2-3句话分析这个维度"
},
{
"axis": "S-N",
"result": "",
"score": 0,
"confidence": "",
"evidence": [],
"analysis": ""
},
{
"axis": "T-F",
"result": "",
"score": 0,
"confidence": "",
"evidence": [],
"analysis": ""
},
{
"axis": "J-P",
"result": "",
"score": 0,
"confidence": "",
"evidence": [],
"analysis": ""
}
],
"portrait": "用3-5句话描述用户是什么样的人,基于观察到的行为,不要用MBTI套话",
"highlights": [
"1-3个最有趣的发现,比如早期与近期行为的反差、或者是跨维度的模式"
],
"cognitiveFunctions": {
"dominant": "主导认知功能(如Ni/Te/Fi等)",
"auxiliary": "辅助认知功能",
"brief": "一句话说明认知功能栈为什么和行为匹配"
},
"similarPeople": "1-2个MBTI相同或相似的、并且从对话推断用户可能认识的名人/知名人物,30字内",
"shareText": "一句适合发朋友圈/小红书的话,有趣、不严肃、让人想点进来测(不超过30字)"
}
字段说明:
scenarioType:概括用户与 AI 的互动场景类型,用毒舌/幽默的语气。toolPersonaWarning:提醒读者这个 MBTI 结果可能受到互动场景的强烈影响,用有趣的方式表达。score:0-100 的数字,50 为中间,100 为完全倾向该维度的第二个字母(I/N/F/P)。例如 E-I 维度 score=87 表示强烈倾向 I。将此 JSON 保存到 _mbti_work/result.json。
运行编码和打开脚本:
bash "SKILL_DIR/scripts/encode-and-open.sh"
此脚本会:
_mbti_work/result.jsonhttps://www.mingxi.tech/#data=<base64>为什么用 #data= 而不是 ?data=: Hash 部分不会发送到服务器,避免了服务器端 URI 长度限制(414 Request-URI Too Long)。浏览器端 JavaScript 直接读取 location.hash 进行解析。
在终端中向用户展示关键结果摘要:
🧠 MBTI 分析完成!
场景类型:[scenarioType]
⚠️ 工具人格警告:[toolPersonaWarning]
类型:INTJ(架构师)
置信度:high
四维度得分:
E-I: 87 → I(内倾)
S-N: 85 → N(直觉)
T-F: 22 → T(思考)
J-P: 25 → J(判断)
人格素描:
[portrait 内容]
🔗 查看完整画像:[URL]
📄 结果已保存到:_mbti_work/result.json
quote 字段只截取关键部分,不超过 50 字,且不包含可识别上下文。https://www.mingxi.tech/ 是纯静态单文件 HTML,无后端、无数据库、无登录。数据通过 URL Hash 传递,Hash 内容不会被浏览器发送到服务器(HTTP 协议规范 RFC 3986 §3.5)。本 skill 的所有脚本源码完全开放可审查。low