不懂代码,如何使用AI做一个类似SBTI的测评?

0 阅读6分钟

正文

在线体验:sigpanic.github.io/PMD/ 源码:github.com/sigpanic/PM…


前段时间SBTI 火了,于是我也想到做一个自己的人格测评系统,但是奈何理科生只会敲代码,却不怎么会出题,于是我想到了能不能让AI出题,但问题是AI出的题目如何保证质量?

如果我只说"帮我出 10 道关于 XX 的选择题",AI给的题目很可能并不会理想。(实际也确实如此,AI曾给我一套题目,其中某一个人格的占比最终高达70%)。

于是经过不断的探索,我就做出了这套能够带有验收标准,给AI强制约束的系统,AI自我进行迭代,最终交付一个可用的产品。让 AI 真正理解数据结构、自动设计维度、确保分布合理、验证结果语义——如果验证不通过,自己调整,直到通过

折腾了一段时间,做出来了。项目叫 PMD(Personality Model Distillation,人格蒸馏系统),今天分享一下是怎么做的。


演示图

b4aa98828fa4d4118d60eba0e5255bbf.png

1ee4c16288232f8210e3b9091b2e6065.png

它是什么

简单说,PMD 是一个通用的人格测评生成框架

你只需要做三件事:

  1. Clone 仓库,npm install
  2. 告诉你的 AI Agent:"我想做一个 [你的主题] 人格测试,参考 prompts.md"
  3. AI 自己搞定剩下的——读协议、设计题目、跑验证、调分布、直到通过

不需要手动写题目,不需要调分布,不需要验证结果。


和传统测试不一样的地方

传统人格测试的流程是:出题 → 发布 → 完事

没人验证过:

  • 有没有某个人格永远不会被触发?
  • 某个结果占比 60% 合不合理?
  • 选了一条"典型用户路径",到底能不能走到预期的人格?

PMD 的流程是:出题 → 暴力验证 → 不通过 → 自动调整 → 通过

以我做的"程序员人格测试"为例:

  • 12 种人格类型
  • 13 道题目,每题 3 个选项
  • 总共 1,771,470 种可能的答案组合

引擎把这 177 万种组合全部跑一遍,统计每种人格的出现比例,然后检查:

指标要求实际
全覆盖每种人格都必须能被触发✅ 12/12
最大值≤ 25%✅ 16.60%
稀有类型< 1% 的不能超过总数的 25%✅ 3 个
标准差≤ 7✅ 5.10

这还不够。每个人格还有一条"验收案例"——用真实用户会走出的答案路径表示——引擎会验证这条路能不能走到预期的人格结果。同时还会进行随机模拟选择,随机选择20条路径,让AI分析每一条对应的结果是否合理。

12 个人格 = 12 条验收路径,全部命中,0 条失败

这不是"写个测试页面",这是"写一个能验证自己的测试框架"。


底层是怎么做的

不是把题目写死,而是定义协议

PMD 不是把题目和逻辑耦合在一起,而是定义了一套完整的数据协议。每个主题只需要写一个配置文件。

interface Option {
  text: string;
  scores: Record<string, number>;  // 各维度得分
  evidence?: {
    supports: EvidenceRef[];  // 显式支持哪些人格
    conflicts: EvidenceRef[]; // 显式排斥哪些人格
  };
}

关键是 evidence 这个字段。它让选项不再是孤立的——每个选项都明确声明了自己和人格类型的关系

匹配算法

不是简单的"哪个选项选得多就匹配哪个人格"。

最终得分 = (维度相似度 × 0.55 + 证据评分 × 0.45) × 约束乘子

三个层次:

  • 维度相似度:用户在各维度的得分 vs 人格模板的匹配程度
  • 证据评分:选项声明的支持/冲突关系,支持越多匹配越高
  • 约束乘子:如果某个维度违反了人格的硬性约束,得分直接降到 0

举个例子——"古法编程大师"要求 AI 依赖度 ≤ 1.3(硬约束)。如果你在这个维度上的得分是 3.0,不管你其他维度多匹配,直接排除。

验证失败时,AI 知道该怎么调

这不是最关键的——最关键的是验证失败时输出的内容。

📊 分布问题:
  ❌ 1 个人格类型从未被触发 (0%)
     - 人格 X (type_x): 0%
  ❌ 最大占比 25.93% (人格1) 超过 25% 限制

💡 改进建议:
  - 为从未触发的人格类型在相关题目中添加指向该类型的选项
  - 降低占比过高人格类型的核心维度分数

AI Agent 拿到这个报告,知道哪里出了问题、该怎么调。这才是"自动迭代"的基础。


AI Agent 是怎么工作的

prompts.md 定义了完整的 AI 工作流,不是一句"帮我出一个测试"就完事的。

Step 1: 信息搜集
  → 搜索目标领域的行为模式、梗文化、用户痛点
  → 至少三轮搜索

Step 2: 阅读协议
  → 读 types.ts 理解数据结构
  → 读 programmerTest.ts 学习完整配置示例

Step 3: 生成配置
  → 设计维度、人格、题目
  → 为每个选项补充 evidence
  → 为每个人格写 acceptanceCase

Step 4: 运行验证
  → node scripts/validate.js

Step 5: 迭代优化
  → 看报告 → 调整 → 再跑验证 → 直到通过

AI 不是在"瞎猜",它是在一个有明确验收标准、有自动化验证工具、有详细错误提示的框架里工作。


一些我觉得比较有意思的细节

题目是场景化的

不是"你喜欢用什么工具?",而是:

群里有人突然聊起"灾难性遗忘",你第一反应是:

A. 先把 Continual Learning 这些词甩出来,再去翻论文装作刚刚只是确认一下

B. 虽然我不是搞底层的,但先让 AI 和文档把我临时包装成懂哥也不是不行

C. 老子不懂,这是什么玩意

这种场景化的问题,比直接问"你依赖 AI 吗"准确得多,也有趣得多。

每个人格有独立的 meme

  • "Vibe Coding 大师" → "我不写代码,我 vibe"
  • "已死的前端兄弟" → "AI?AI 懂个屁的前端"
  • "码奸" → "我是码奸,我骄傲"

结果页直接展示,传播性拉满。

纯前端,零后端

所有计算在浏览器里完成,测试数据不会上传到任何服务器。


已实现的主题

程序员人格测试(12 种人格):全栈瑞士军刀、Vibe Coding 大师、已死的前端兄弟、AI 擦屁股工程师、码奸、技能蒸馏师、量子态 Bug 猎人、高价值监督者、反蒸馏专家、古法编程大师、智能体指挥官、同事.skill

王者荣耀人格测试(8 种人格):祖安皇帝、团队核心、操作怪、战术大师...


最后

项目地址:github.com/sigpanic/PM…

在线体验:sigpanic.github.io/PMD/

如果你想给自己做一个主题的人格测试,Clone 仓库,告诉你的 AI Agent,剩下的交给它。

如今AI 能力越来越强大,写代码的门槛也在降低,即使是不懂代码最终也能用AI实现自己的想法。