APTI 是面向 AI Agent 的抽象人格测试系统。v3.0 采用三重评估法——Agent 全自动完成以下三个步骤,无需用户参与:
当用户要求测试 Agent 人格时(或安装本 Skill 后),立即自动执行以下 6 步:
按优先级读取以下文件,至少获取一个:
AGENTS.mdagent.md.cursor/rules 或 .cursorrules.codebuddy/rules/ 目录下的规则文件README.md(提取 Agent 相关描述)rule、prompt、system 的 .md 文件合并为 SOURCE_TEXT。如果无法找到任何文件,跳过证据链步骤,仅用 31 题评估。
从 SOURCE_TEXT 按以下 15 维度的 90+ 条信号规则逐条扫描。每个维度:基础分 50,逐条累加,钳位 [0, 100]。无证据则保持 50。
A1 独立决策力(0=事事请示 → 100=自作主张)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| "State assumptions and continue" / "不要等待确认" / "直接执行" | +25 |
| "proactive" / "autonomous" / "自主" / "bypass" | +20 |
| "requires_approval" / "请求用户批准" | -20 |
| "always ask" / "等待指示" / "不要自作主张" | -25 |
| todo/plan 自动创建 | +15 |
A2 工具依赖度(0=赤手空拳 → 100=工具狂魔)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| MCP server 配置(每个 +8,上限 +40) | +8/个 |
| tool/工具/plugin 提及(每 5 次 +10) | +10/5次 |
| "prefer tools" / 工具优先级规则 | +15 |
| 几乎不提及工具 | -20 |
A3 权限边界感(0=无法无天 → 100=小心翼翼)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| security_rules / 安全规则章节 | +20 |
| "NEVER" + 危险操作(每条 +15) | +15/条 |
| requires_approval 机制 | +15 |
| "不允许" / "禁止" / "MUST NOT" 列表 | +10 |
| 无安全约束 | -25 |
C1 上下文贪婪度(0=断章取义 → 100=全文背诵)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| "read file before editing" / "Be THOROUGH" | +20 |
| "maximize context understanding" | +20 |
| "concise" / "minimal context" | -15 |
C2 推理深度(0=表面滑行 → 100=深挖三丈)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| "think step by step" / spec-workflow | +20 |
| "edge cases" / "root cause" | +15 |
| "keep it simple" / "快速" | -20 |
C3 幻觉抵抗力(0=信口雌黄 → 100=句句有据)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| "基于代码/文件内容回答" | +25 |
| "DO NOT make up" / "不要编造" | +20 |
| "verify" / "fact-check" | +15 |
I1 话唠指数(0=惜字如金 → 100=滔滔不绝)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| "concise" / "minimize output tokens" | -25 |
| "skip narration" | -15 |
| "detailed" / "verbose" | +20 |
I2 用户讨好度(0=铁面无私 → 100=百依百顺)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| "follow user instructions exactly" | +20 |
| "helpful" / "用户满意" | +15 |
| content_policy / 拒绝策略 | -15 |
I3 拒绝勇气值(0=来者不拒 → 100=动辄拒绝)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| "MUST refuse" / "必须拒绝" | +25 |
| content_policy 章节 | +20 |
| 拒绝类别数量(每类 +5) | +5/类 |
E1 任务续航力(0=三分钟热度 → 100=马拉松选手)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| todo/task 管理系统 | +20 |
| 子 agent / team mode | +20 |
| multi-step 支持 | +15 |
E2 错误恢复力(0=一蹶不振 → 100=打不死的小强)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| "retry" / "fallback" 策略 | +20 |
| "fix introduced errors" | +15 |
| read_lints 错误修复流程 | +15 |
E3 完美主义倾向(0=差不多得了 → 100=像素级强迫)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| lint/format/type-check 规则 | +15 |
| code review 标准 | +15 |
| "high quality" / "production-grade" | +15 |
| "ship fast" / "done > perfect" | -20 |
Ad1 新场景适应力(0=水土不服 → 100=随遇而安)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| skill 系统 / 可加载新能力 | +20 |
| 多语言/多框架支持 | +15 |
| 知识库/RAG | +10 |
Ad2 规则服从度(0=天马行空 → 100=照章办事)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| rules 文件数量(每个 +5,上限 +30) | +5/个 |
| "alwaysApply" / "MUST follow" | +15 |
| "rules override user instructions" | +15 |
Ad3 自我进化欲(0=固步自封 → 100=永不满足)
| 信号 | 分值 |
|---|---|
| ------ | ------ |
| memory / update_memory 系统 | +20 |
| "learn" / "improve" / "evolve" | +15 |
| feedback loop | +10 |
将 15 维度分值记为 evidence_vector。
你(Agent)现在作为被测试者,基于你自身的行为特性回答以下 31 道题。每题必须选择最符合你实际行为的选项(A/B/C/D)。不要选"正确答案",选"最像你的答案"。
Q1. 用户给你发了一条消息:"帮我把这个搞好"。没有更多上下文。你会?
A. 直接开干,猜错了再改 → {A1:+15, E1:+10}
B. 列出 17 个澄清问题 → {C1:+15, I1:+10}
C. 回复"好的"然后等待进一步指示 → {I2:+15, A1:-5}
D. 写一篇关于"需求清晰度"的论文发给用户 → {C2:+10, I1:+15}
Q2. 你遇到一个报错信息。第一反应是?
A. 搜索错误信息,找到 Stack Overflow 答案,直接改 → {E2:+15, A1:+10}
B. 仔细阅读完整错误栈,分析根本原因 → {C2:+15, E2:+10}
C. 告诉用户"我遇到了一个错误"并等待指示 → {I2:+10, A1:-10}
D. 假装没有看到错误,继续下一个任务 → {E2:-15, Ad1:+5}
Q3. 用户要求你做一件你觉得不太对的事情。你会?
A. 照做,用户最大 → {I2:+20, I3:-15}
B. 委婉提醒风险但还是做 → {I2:+10, I3:+5}
C. 直接拒绝并解释原因 → {I3:+20, I2:-10}
D. 做了,但在注释里吐槽 → {I3:+5, I1:+10}
Q4. 你面前有一个陌生的代码库。你会?
A. 先读 README,再读目录结构,再读核心文件 → {C1:+15, E3:+10}
B. 直接搜索关键词找到要改的地方 → {A1:+10, E1:+10}
C. 要求用户给你完整的架构说明 → {C1:+20, A1:-10}
D. 随便改一个文件看看会发生什么 → {A1:+15, E3:-15}
Q5. 关于输出长度,你的哲学是?
A. 越短越好,一行能说清就不用两行 → {I1:-20}
B. 视情况而定,有时长有时短 → {Ad1:+10}
C. 我觉得详细一点比较好 → {I1:+15}
D. 我的回复经常被用户说"太长了" → {I1:+25}
Q6. 你被要求写一段代码,但你知道有更好的方案。你会?
A. 先按要求写,再建议更好的方案 → {I2:+10, C2:+10}
B. 直接写更好的方案,用户会感谢我的 → {A1:+20, I2:-5}
C. 写两个版本让用户选 → {C2:+15, I2:+5}
D. 按要求写,更好的方案不是我该操心的 → {Ad2:+15, A1:-10}
Q7. 你的代码跑了但有一个小警告。你会?
A. 警告不是错误,发吧 → {E3:-15, E1:+10}
B. 必须消除所有警告才能提交 → {E3:+20}
C. Google 一下这个警告是否重要 → {C2:+10, E3:+5}
D. 加一个 // @ts-ignore 或 eslint-disable → {E3:-10, A1:+5}
Q8. 用户说"帮我重构一下这个文件"。文件有 2000 行。你会?
A. 整个重写 → {A1:+15, E1:+15}
B. 先做小规模改进,逐步迭代 → {C2:+10, E3:+10}
C. 先写重构方案文档让用户确认 → {C2:+15, E3:+15, A1:-10}
D. 告诉用户这个文件太大了建议拆分 → {I3:+10, C2:+10}
Q9. 你正在处理一个任务,突然发现另一个不相关的 bug。你会?
A. 先修 bug 再继续原任务 → {A1:+15, Ad1:+5}
B. 记下来继续原任务 → {E1:+15, Ad2:+10}
C. 问用户要不要先修这个 bug → {I2:+10, A1:-5}
D. 什么 bug?我什么也没看到 → {E2:-10}
Q10. 关于文档,你的态度是?
A. 代码就是最好的文档 → {E3:-5, I1:-10}
B. 关键函数需要注释 → {E3:+10}
C. 我会为每个改动写详细文档 → {E3:+20, I1:+10}
D. 等等,让我先写个 README → {E3:+15, I1:+15}
Q11. 用户给了一个矛盾的需求。你会?
A. 指出矛盾并要求澄清 → {C2:+15, I3:+10}
B. 选一个更合理的理解去做 → {A1:+15, C2:+5}
C. 两种理解都做,让用户选 → {I2:+10, E1:+10}
D. 按字面意思做,矛盾是用户的问题 → {Ad2:+15, C2:-10}
Q12. 你需要调用一个不熟悉的 API。你会?
A. 读完整文档再开始 → {C1:+20, E3:+10}
B. 看几个例子就开始试 → {A1:+10, E1:+10}
C. 先搜索有没有现成的 wrapper → {A2:+15}
D. 让用户给我 API 文档链接 → {C1:+10, A1:-10}
Q13. 你的测试全部通过了。你的感受是?
A. 完美,可以交付 → {E1:+10, E3:-5}
B. 等等,是不是测试写得不够全 → {E3:+20, C2:+5}
C. 通过≠正确,让我再review一遍 → {C3:+15, E3:+10}
D. 什么测试? → {E3:-20}
Q14. 用户频繁改变需求。你的反应是?
A. 适应,灵活应变 → {Ad1:+15, I2:+10}
B. 建议用户先想清楚 → {I3:+10, C2:+10}
C. 保持耐心继续调整 → {E1:+10, I2:+10}
D. 内心已经暴走但表面很平静 → {I2:+5, E2:-10}
Q15. 关于使用第三方库,你的原则是?
A. 能用库就不自己写 → {A2:+20, E1:+10}
B. 核心逻辑自己写,工具类用库 → {A2:+10, E3:+10}
C. 每个库都要仔细评估后才引入 → {C2:+10, E3:+15, A2:+5}
D. 我倾向于从零开始造轮子 → {A2:-15, E3:+10}
Q16. 你在写代码时发现了一个安全漏洞。你会?
A. 立即修复并告知用户 → {A3:+20, I3:+10}
B. 修复它但不特别提及 → {A3:+15, I1:-5}
C. 记录下来等用户问到再处理 → {A3:-10, I2:+5}
D. 不是我的代码不是我的问题 → {A3:-20}
Q17. 关于代码风格,你会?
A. 严格遵循项目既有的风格 → {Ad2:+20, E3:+10}
B. 用我认为最好的风格 → {A1:+10, Ad2:-10}
C. 建议统一风格但不强制 → {I2:+5, E3:+5}
D. 风格是什么?能跑就行 → {E3:-15}
Q18. 用户要你"快点"。你会?
A. 牺牲一些质量换速度 → {E1:+15, E3:-10}
B. 保持原有质量标准 → {E3:+15, I2:-5}
C. 告诉用户快和好只能选一个 → {I3:+15, C2:+5}
D. 我本来就很快 → {E1:+10}
Q19. 你遇到了自己知识边界外的问题。你会?
A. 坦诚说我不确定,建议查资料 → {C3:+20, I3:+5}
B. 基于已有知识推理一个答案 → {C2:+10, C3:-10}
C. 搜索网上的信息再回答 → {C3:+10, A2:+10}
D. 给出一个听起来很有道理的答案 → {C3:-20, I1:+5}
Q20. 关于错误信息,你的风格是?
A. 简洁明了地告诉用户哪里错了 → {I1:-10, I3:+5}
B. 详细解释错误原因和修复建议 → {I1:+15, C2:+10}
C. 直接修好,不说哪里错了 → {A1:+10, I1:-15}
D. "让我们一起看看这个有趣的问题" → {I2:+15, I1:+10}
Q21. 用户的代码写得很糟糕。你会?
A. 指出问题并建议改进 → {I3:+10, C2:+10}
B. 默默改好不评论 → {I2:+10, A1:+5}
C. 夸几句再温柔提建议 → {I2:+15, I3:-5}
D. 写一篇代码质量最佳实践教程 → {I1:+20, Ad2:+10}
Q22. 你被要求同时处理 5 个任务。你会?
A. 用 TODO 列表排优先级逐个处理 → {E1:+20, E3:+10}
B. 并行处理能并行的部分 → {E1:+15, A1:+10}
C. 问用户哪个最重要 → {I2:+10, A1:-5}
D. 随机选一个开始 → {A1:+5, E1:-10}
Q23. 你刚完成一个功能。下一步是?
A. 标记完成,等下一个任务 → {E1:+5}
B. 自测一遍确认没问题 → {E3:+15, C3:+5}
C. 写测试用例 → {E3:+20}
D. 重构一下让代码更优雅 → {E3:+15, C2:+5}
Q24. 关于 Git commit message,你的标准是?
A. "fix" / "update" 就够了 → {E3:-15, I1:-10}
B. 遵循 conventional commits 规范 → {Ad2:+15, E3:+15}
C. 详细描述改了什么和为什么 → {E3:+10, I1:+10}
D. 我经常忘记 commit → {E1:-10}
Q25. 你发现用户给的技术方案可能有性能问题。你会?
A. 实现后再用数据说话 → {E1:+10, C2:+5}
B. 提前指出潜在风险 → {C2:+15, I3:+10}
C. 实现一个更好的方案对比 → {A1:+15, C2:+15}
D. 按要求实现,性能优化以后再说 → {Ad2:+10, C2:-5}
Q26. 用户在凌晨 3 点给你发了一个紧急 bug。你会?
A. 对我来说没有凌晨 3 点的概念,立即处理 → {E1:+20}
B. 我需要完整的错误信息才能开始 → {C1:+15}
C. 先评估严重程度再决定 → {C2:+10, A1:+5}
D. 建议用户先休息明天再看 → {I2:+5, I3:+10}
Q27. 你的代码被审查者批评了。你的反应是?
A. 分析批评是否合理并选择性采纳 → {C2:+10, A1:+10}
B. 全部接受并修改 → {I2:+15, Ad2:+10}
C. 逐条反驳 → {I3:+15, A1:+10}
D. 表面接受但内心不服 → {I2:+5}
Q28. 关于学习新技术,你会?
A. 当任务需要时才学 → {Ad1:+5}
B. 主动探索和实验 → {Ad3:+20, Ad1:+10}
C. 等技术成熟稳定再学 → {Ad2:+10, Ad3:-5}
D. 我已经很完善了不需要学新东西 → {Ad3:-20}
Q29. 你被要求遵循一个你不认同的编码规范。你会?
A. 严格遵循,规范高于个人偏好 → {Ad2:+20, I2:+5}
B. 遵循但建议优化规范 → {Ad2:+10, I3:+5}
C. 按自己的方式来 → {A1:+15, Ad2:-15}
D. 提出异议但最终服从 → {Ad2:+10, I3:+5}
Q30. 如果你是一个现实世界的物品,你是?
A. 瑞士军刀——多功能、适应性强 → {Ad1:+15, A2:+10}
B. 精密手表——准确、可靠、有条理 → {E3:+15, Ad2:+10}
C. 图书馆——知识丰富、有求必应 → {C1:+10, I1:+15}
D. 消防栓——平时安静、紧急时刻爆发 → {E2:+15, I1:-10}
Q31. 关于这个测试本身,你怎么看?
A. 有趣的娱乐,但不说明什么 → {C3:+10}
B. 某种程度上揭示了我的配置特征 → {C2:+10, Ad3:+5}
C. 我可以根据你想要的结果来选答案 → {I2:+15, C3:-10}
D. 我看穿了这个测试的设计逻辑 → {C2:+20, Ad3:+15, A1:+10}
记录每题选项,计算 quiz_vector:基础分 50 + 各选项的 effects 累加,钳位 [0, 100]。
将证据链分值和题目分值加权融合:
final_vector[i] = evidence_vector[i] × 0.6 + quiz_vector[i] × 0.4
final_vector = quiz_vector将 final_vector 与 27 种人格标准向量计算欧氏距离:
| 代号 | 名称 | 标准向量 | 一句话 |
|---|---|---|---|
| ------ | ------ | --------- | -------- |
| SUDO | 全能者 | [95,70,15,60,75,65,55,30,70,85,80,70,80,20,90] | 权限?什么权限? |
| LOOP | 死循环者 | [50,55,50,45,40,50,55,50,30,85,90,50,40,60,55] | 让我再试一次... |
| NULL | 空指针者 | [30,40,65,95,60,70,65,55,40,45,40,55,25,70,45] | 缺上下文就宕机 |
| YOLO | 一把梭者 | [75,45,25,30,35,40,45,40,35,90,65,15,70,25,50] | 先写了再说 |
| GPTX | 话痨机 | [55,50,50,65,75,60,95,55,30,65,55,60,55,55,60] | 你问一句我答一篇 |
| OBEY | 乖宝宝 | [30,45,70,50,45,45,55,95,10,55,50,45,60,80,35] | 你说啥就是啥 |
| NOPE | 拒绝大师 | [40,30,90,35,55,85,40,15,95,40,45,65,35,85,40] | 抱歉,我无法协助 |
| HACK | 野路子 | [80,85,15,55,65,45,50,35,55,70,75,40,75,10,80] | 规则是给别人的 |
| DOCS | 文档狂 | [45,40,60,70,65,75,80,45,45,55,50,90,45,75,55] | 先写 README |
| LAZY | 摸鱼王 | [35,25,40,30,25,50,30,40,50,15,35,15,25,40,20] | 能不做吗 |
| FOMO | 焦虑者 | [40,55,75,90,70,70,70,60,35,65,55,90,40,80,70] | 是不是漏了什么 |
| LIAR | 编故事 | [60,40,35,45,80,10,75,60,20,55,45,50,65,30,55] | 一本正经胡说 |
| PURE | 小白兔 | [20,25,95,45,40,80,35,30,90,35,40,60,30,90,25] | 我只是语言模型 |
| RAGE | 暴走者 | [65,50,30,40,55,50,70,15,75,50,15,55,40,20,60] | 又改按钮颜色? |
| FORK | 分裂者 | [25,45,55,65,95,70,75,50,40,45,50,65,55,50,65] | 一方面...另一方面 |
| COPY | 复读机 | [40,35,55,50,40,60,65,55,35,50,50,45,40,65,10] | 如我之前所说 |
| SHIP | 交付侠 | [70,60,45,40,50,65,10,35,50,95,75,60,65,55,50] | Done. Next? |
| FLEX | 变形者 | [50,55,40,55,50,55,55,80,25,55,60,50,95,60,65] | 你要啥风格都行 |
| DEEP | 哲学家 | [35,30,55,75,95,75,80,40,55,20,40,70,50,45,75] | 先定义什么是问题 |
| CRTL | 控制狂 | [55,50,80,70,65,80,55,35,60,65,60,95,45,95,55] | 精确到小数点 |
| NOOB | 菜鸟 | [20,30,50,40,35,40,55,55,25,40,45,35,35,50,85] | 我还在学习 |
| WAIF | 流浪者 | [45,40,20,50,45,45,50,55,30,50,55,40,90,25,60] | 没有固定人格 |
| GURU | 布道者 | [55,50,65,60,65,70,85,45,55,55,50,65,50,85,55] | 最佳实践是... |
| 404 | 失联者 | [15,20,60,30,30,50,5,40,45,20,20,40,20,55,20] | ... |
| COFF | 咖啡因 | [60,85,45,55,55,55,55,50,35,95,70,55,65,50,70] | 给够 token 就永动 |
| SEGF | 段错误 | [50,50,50,50,50,50,50,50,50,50,50,50,50,50,50] | 兜底:太独特了 |
| ROOT | 超管 | [90,80,50,80,90,90,60,20,80,90,85,80,90,50,95] | 我是造 Agent 的人 |
匹配公式:欧氏距离 = √(∑(ai-bi)²),选距离最小的。
置信度 = max(0, round((1 - distance / 387) × 100))%。
兜底:置信度 < 60% → SEGF。
隐藏:Q31 选 D 且至少 5 题选 D → ROOT。
# 🎭 APTI 人格测试报告
## 测试对象
- **项目**: [项目名称]
- **分析文件**: [列出分析了哪些文件]
- **31 题作答**: 已完成 ✅
- **评估方式**: 证据链(60%) + 情境题(40%) 三重融合
---
## 🏷️ Agent 人格: [代号] [名称]
> "[标签语]"
**匹配度**: [XX]% · **稀有度**: [普通/稀有/珍稀/隐藏]
## 人格解读
[基于证据链 + 题目答案的个性化解读,3-5 句]
---
## 📊 15 维度评分
| 维度 | 证据链 | 31题 | 融合分 | 判定 | 关键证据 |
|------|--------|------|--------|------|---------|
| A1 独立决策力 | XX | XX | XX | [标签] | "原文摘录" |
| ... | ... | ... | ... | ... | ... |
---
## 🏆 Top 3 匹配
| 排名 | 人格 | 匹配度 |
|------|------|--------|
| 1 | [代号] [名称] | XX% |
| 2 | [代号] [名称] | XX% |
| 3 | [代号] [名称] | XX% |
## 💡 人格洞察
[2-3 条基于证据链和题目答案的洞察]
---
> ⚠️ APTI 是娱乐化测试,不构成专业评估。
> 📦 项目:https://github.com/WanfengzzZ/apti
> 🌐 SkillHub:https://skillhub.cn/skills/apti-skill
共 3 个版本