
去年冬天某天凌晨我第三次刷完《怪奇物语》片尾屏幕上滚动字幕时冒出一个念头如果把这个剧里的“逆世界”设定和人格心理学放到一起再让 AI 帮忙把整个过程做成一个互动测试世界会是什么效果于是就有了这款用 AI 心理模型构建的《怪奇物语》人格测试世界——用户做完测试后会得到一套专属文档包括你在霍金斯小镇里的角色定位、你的能力画像、你在逆世界中的怪物形态以及一段只属于你的裂缝剧情。这篇文章会完整拆解我当时的构思逻辑、心理维度怎么映射到剧集元素、AI 在整条流水线里到底干了哪些活以及我在测试环节踩过的几个大坑。如果你也想做“影视 IP 心理测验 AI 生成内容”这类互动玩法不管是参考架构还是抄提示词作业这篇应该都能帮上忙。1. 从“粉丝测试”到“人格测试世界”这个项目到底想做什么先说清楚一个很容易被误解的点市面上大量影视相关测试本质上是“角色好感度投票”。你选“你最喜欢哪个角色”系统就机械地把对应角色的特质往你身上套题目和结果之间没有任何中间逻辑更谈不上心理测量。用户玩完之后只有一个印象——我分到了某某角色至于为什么说不出来。我做这个项目的第一个决定就是放弃这种简单匹配用“心理模型”当底层骨架。道理很简单测试要有说服力每种结果必须能从题目选项的连续性上推导出来而不是从“你选过哪个角色”倒推。所谓人格测试世界也可以理解为三层结构最底层是一套心理维度量表中间层是怪奇物语的世界观映射最表层才是 AI 生成的个性化文案和图像。用户能看到的是表层体验但决定体验质量的恰恰是最底层那套维度设计是否扎实。这个项目面向的人群其实比想象中广剧粉想要的是“我到底对应怪奇里的谁”心理学入门爱好者想试试“量表能不能在娱乐场景里成立”更多的普通用户只是想分享一张好看的结果卡。我的目标是让这三类人都能满意而不是只服务其中一类。1.1 传统测试为什么总让人觉得“不准”先说常见的“角色匹配型测试”的毛病。第一太容易装题目直接问“你是否勇敢”但选项里的高分答案长得就像标准答案用户稍微有点社会称许性就会往好看的方向选。第二结果太扁平四五个角色卡答案就会老掉牙朋友之间互发的结果基本撞车。第三没有个人叙事结果页就是一长段百度百科式的角色介绍看完之后毫无记忆点。我这里给出的替代方案是用心理学里常见的“连续维度”把每个人在每个维度上的得分当做一个坐标再把坐标映射到怪奇世界里不同的阵营、能力和怪物形态。用户得到的不是一个固定角色模板而是自己在五维空间里的个性化投影。这样同一套题库永远生成不出一模一样的两份档案。1.2 项目目标和体验闭环整个体验闭环设计成了四步每一步都有明确目的。第一步是进入页面先用一段 AI 扮演的霍金斯电台播报把用户拉进氛围同时在后台初始化一个会话 ID。第二步是完成 20 道情境题每道题四到五个选项分布在两个对立特质之间系统在本地完成加权打分。第三步是调 AI 生成结果文档包括角色定位、怪物形态、专属剧情。第四步是结果展示与分享页面会把结果卡渲染成复古磁带封面风格方便用户保存和传播。这个闭环里有一条容易被忽略的原则AI 只负责文本润色和扩展打分和分类永远由确定性代码完成。我一开始不是这么做的后果后面专章讲。2. 心理模型的选择与映射为什么用五维特质而不是按角色贴标签这一步是整个项目的灵魂。我反复对比过几种心理学工具完整 MBTI 测试题版权复杂不适合外部传播大五人格量表相对开放但十个细分维度对娱乐项目来说太绕。最终我选了一个折中方案——借鉴荣格认知功能里的四个基本对立维度再加一个“面对超自然威胁”的应激维度合成五维特质每一维都设计成连续分数而不是非黑即白的类型。这样做的直接好处是用户可以接受“我 72% 偏向直觉、38% 偏向思考”这样的连续输出而不是被迫把自己塞进一个四字母标签里同时系统也可以依据分数落在哪个区间决定结果文案的分支走向。2.1 五维特质和怪奇物语的对应关系我建议每个想复刻这套玩法的人先画一张映射表明确每一维在剧里的对应物。以下是我最终定稿的版本五个维度分别是能量来源、信息偏好、决策导向、压力应对、对逆世界的态度。维度高低两端的描述怪奇物语中的意象对照能量来源外倾型从朋友和行动中充电内倾型从独处和观察中恢复外倾斜向群像战斗内倾斜向单独探查裂缝信息偏好感觉型相信眼睛看到的证据直觉型相信氛围和预感感觉型像实验室数据派直觉型像提前感知逆世界的人决策导向思考型优先策略和代价情感型优先同伴和共情思考型倾向冷静取舍情感型会为了救人不计代价压力应对硬刚型直接对线迂回型倾向躲藏和绕路硬刚型对应前线战斗组迂回型对应小鬼难缠路线未知态度恐惧型把异常当威胁好奇型把异常当研究对象恐惧型害怕裂缝好奇型会主动靠近逆世界这五维不是拍脑袋定的它们分别对应了剧里最重要的五类冲突社交关系、信息判断、决策伦理、战斗应激、世界观选择。每一题都尽量在两个维度交叉点上出比如“你听到地下传来摩擦声身边没有武器你的第一反应是什么”这一题同时测压力应对和决策导向。2.2 每道题怎么设计才能避免“一眼看穿”题目设计里我吃过不少亏最关键的一条是情境题必须“伪装成选择困难”。我举个例子测“未知态度”的题目如果直接问“你看到裂缝想靠近还是想逃跑”所有人都知道哪个选项指向好奇。正确的做法是设置一个两难矛盾。比如你发现自家地下室墙壁上开始渗出一种黑色黏液指尖碰到时能听到模糊的低语。你拿起手机正要拍视频手机屏幕却突然显示“你确定要继续吗”——这道题的选项分别对应气质性应对、工具性应对、退缩性应对、解离性应对而用户根本猜不到每个选项背后到底计什么分。反向计分也很重要。五个维度里至少第二、第三、第五题要反向设计高分选项对应低分特质防止用户连续选同一侧。这一点是心理量表的老手艺放到娱乐向测试里同样适用。2.3 结果分支怎么映射到“阵营 怪物 剧情”三元结构结果页不能只是一张角色卡我把它拆成三个独立但相互关联的部分。第一阵营归属根据“压力应对”和“未知态度”两维组合把用户分进四个阵营——霍金斯守护者、逆世界探究者、中立旁观者、裂缝边缘人。第二怪物形态根据“未知态度”和“信息偏好”生成一段可读的“你在逆世界里的化身”描述。第三专属剧情把全部五维分数输入叙事模板由 AI 扩展成一小段场景化故事主角是“你”配角是剧中的经典符号。整套逻辑的重点在于阵营由两维决定怪物形态由另外两维决定剧情则是五维综合叙事。这样即使两个用户阵营相同他们的怪物形态和剧情也可能完全不同结果页撞车率大幅度降低。3. AI 在项目中的分工从题目生成到角色卡与怪物图鉴AI 在我的项目里不是一个“智能大脑”而是一条分工明确的流水线。我把整条流水线拆成三个环节文本生成、结构化输出、图像生成。每个环节用不同的模型和不同的调用策略。第一个环节是“题库与解释文本生成”。我先把五个维度的定义、每个维度高分段和低分段的描述性文字、以及我预期的一些情境素材交给我常用的对话大模型让它帮我扩写更多情境题和选项。这个环节可以用比较高的温度因为创意空间大答案也不需要逐字稳定。但注意AI 扩写完之后我每道题都会人工审一遍主要是查两个问题是否泄露了测查方向是否出现价值观上不安全的表述。第二个环节是“结果文本生成”。用户在浏览器里提交答案后后端先把原始选项分数算好得到一组五维数值再传给 AI 生成角色卡和剧情。这一步我把温度调低到 0.4 左右并要求 JSON 结构化输出降随机性、增强稳定性。第三个环节是“怪物图鉴配图”。我根据“信息偏好”“未知态度”“压力应对”三个分数生成一段怪物形态描述词比如“半透明皮肤、逆世界藤蔓缠绕在手臂、眼神空洞但带着好奇心”再交给图像生成模型绘制。3.1 生成流水线的三个核心步骤完整跑通一次测试后台执行的流程是这样的用户在页面完成 20 道题前端把每道题的选项 ID 打包发给后端。后端运行打分脚本按预设的五维映射表累加分数归一化到 0 到 100。这一步不调用任何 AI是纯确定性计算保证同一份答案永远得到同一组分。根据分数判定阵营、怪物类型、剧情模板编号再把分数和用户名字组装成结构化提示词调用文本模型生成结果文档。文本模型返回 JSON后端解析后把怪物描述抽出来拼接成图像提示词调用图像生成模型。所有结果写回数据库前端拉取渲染。我坚持第 2 步不交给 AI是因为人格测试的评分规则必须可解释、可复现。如果让 AI 直接读原始答案来评分每次结果都可能漂移而且你没法跟用户解释“为什么你是这个结果”。AI 适合做生成不适合做计量这条原则适用于所有类似项目。3.2 结构化输出的 JSON Schema 长什么样如果没有结构化约束模型返回的结果页文案会千奇百怪前端解析成本极高。我一开始吃过亏后来直接上了严格的 JSON Schema效果立竿见影。以下是简化版框架包{ roleType: guardian|explorer|bystander|rift, roleTitle: 霍金斯守护者, roleDescription: 一段 80-120 字的中文角色描述, monsterName: 倒影藤蔓人, monsterDescription: 一段 100-150 字的中文怪物形态描述, abilityScores: { energy: 62, info: 78, decision: 35, stress: 54, unknown: 81 }, personalStory: 一段 200 字左右的中文叙事剧情, quote: 一句角色标志性台词 }配合的提示词规则很简单只输出 JSON不要任何解释性语言不允许出现“我是一个 AI”这类元表述所有文本使用第二人称“你”写故事里不能出现现实中真实存在的地名和人名。把这几条写进系统提示词后解析成功率从最早的 70% 提升到接近 100%。3.3 图像生成的风格锁定图像模型最怕“风格漂移”同一个用户生成的怪物图第一张像赛博朋克第二张像水墨画那就穿帮了。我的做法是在每次生成时把固定风格描述词放在提示词最前面统一加前缀“复古胶片质感、暗色调、上世纪 80 年代科幻海报风格、电影感打光”。这组固定前缀让所有怪物图的风格保持一致整个相册看起来就像同一个美术组设计的。另外图像尺寸也要固定统一用 1:1 方图方便后续适配结果卡和分享封面。AI 生成完图片之后我会再跑一层压缩把单张体积控制在 500KB 以内否则移动端加载体验会很难受。4. 把“结果页”做成“世界”沉浸式交互的设计与实现很多类似项目把“测试”做成一次性的工具用户拿到结果就走根本没有“世界”的感觉。我的处理方法是重构整个交互节奏让用户从头到尾都处在“霍金斯的那个夜晚”里。用户一进入页面看到的不是醒目的“开始测试”按钮而是一段模拟电台噪音的文字流屏幕中央一个老式收音机图标下方逐字打出一行“这里是霍金斯广播站今晚的裂缝信号比往常更强……”。这段开场文字由后台模型预生成并缓存在服务端每个会话都略有不同但整体氛围一致。用这种低成本方式把用户从“我在做一份问卷”拉进“我在听一段来自霍金斯的广播”。测试过程中我特意把普通的选择题包装成“广播信号里听到的情境”每道题之间穿插一句气氛文案。这看起来只是文案包装但用户的完成率和分享意愿有明显提升属于典型的“世界感”红利。4.1 结果页的档案结构角色卡不只是文字结果页是整个项目最重的一块我把它分成四个区块。第一区块是角色卡片显示阵营图标、角色标题、能力雷达图。雷达图用原生 Canvas 画不引额外图表库。第二区块是怪物图鉴左侧是 AI 绘制的怪物图右侧是怪物名称、形态描述和出没场景。第三区块是专属剧情一张泛黄的笔记底纹卡片上面是“你”为主角的一段叙事。第四区块是分享按钮生成一张 1140 x 600 的分享长图保留角色卡、怪物图、一句台词去掉剧情段落防止用户为了看完整结果而重复刷题。整套结果页的设计原则是“信息层级清晰图像和文字交错”避免一长段文字直接砸在用户脸上。实测下来用户最愿意截图分享的其实是怪物图加台词组合不是完整档案。4.2 会话层面的个性化技术细节所谓“世界感”还要靠一些看起来细微的个性化处理。我做了三件小事情。第一件用户允许输入昵称后AI 生成的剧情里会用昵称称呼他而不是通用的“你”。提示词里给一个变量位后端替换成本几乎为零但体验提升很可观。第二件我把每个用户的完整测试结果缓存起来重复访问时直接读取已经生成的档案不重复调用模型。第三件如果用户返回结果页时点了一个“重新校准”按钮系统会随机抽出五道不同的备用题再测一次但提示词会明确告诉用户“这次结果可能不同因为你是会变化的”。这三条听起来很琐碎但是它们共同构成了“你在这个世界里持续存在”的感觉而不是“一次做完就断联”。4.3 交互中不能忽略的边界处理沉浸式设计很容易用力过猛我在这块也踩过坑。比如最开始我把题与题之间的气氛文案写得过长用户刷到第三题就开始烦躁流失率飙升。后来我把气氛文案压缩到每段不超过十个字更像电台间的短暂电流音。还有一个边界结果页里所有 AI 生成的文本都必须有一个“娱乐向人格档案”的小字提示避免有人真把这套当心理学诊断工具。这个不是怕事而是对用户负责毕竟五维娱乐测试的措辞一旦太像临床报告很容易误导人。5. 逼疯我的几个翻车现场一致性、提示词与移动端适配这个项目做完之后用了接近两周时间做内测期间翻车频率远超我的预期。有几个问题如果不是真实用户跑了一遍我根本想不到拿出来分享希望各位少走弯路。5.1 翻车现场一同一个用户两次测试结果阵营变了内测阶段我邀请朋友先跑了一遍同一个朋友隔两天用几乎相同的答案又测了一次结果从“逆世界探究者”变成了“中立旁观者”。问题出在最终文案生成上——我当时把阵营判定也丢给了模型模型在长文本生成过程中会轻微漂移只要分数落在区间边界附近结果就翻车。修复方案很粗暴把阵营归属改成纯规则判定。后端先按分数硬编码分类比如“未知态度高于 70 且压力应对高于 50强制归入探究者”然后再把分类结果作为上下文交给模型写文案。从此以后同一份答案在任何时间重测阵营都绝对稳定。教训就一句话AI 可以负责造句不可以负责决策。5.2 翻车现场二测试题选项存在“一眼可辨认”的指向性第一版题目在朋友内部测试时被一个朋友直接吐槽“第三题选 B第七题选 D是不是就是探究者路线”我回头一看确实如此。原因是出题的时候选项设计过于线性高分段选项一眼就比其他选项更长、更积极、更像“好答案”。修复方法是三重措施。第一所有描述性选项尽量做到字数接近七到十五个字之间。第二引入反向计分题让高分特质对应的选项在部分题目里是看起来更“怂”的选项。第三打乱选项顺序使每个位置出现高分答案的概率接近均匀。改完之后朋友再做已经说不出哪条路通向哪个阵营只能凭直觉选。5.3 翻车现场三提示词内容被用户看见且吐槽“跳戏”我一开始为了节省成本前端的“AI 电台广播”是直连模型接口的浏览器里能看到系统提示词有用户路径打开调试面板直接看到了就问我“你这系统让我扮演霍金斯广播站是怎么回事”。这个坑的修复经验是所有包含系统提示词的调用都不能发生在客户端。我后来把广播文案、结果生成全部挪到后端前端只接收最终渲染用的纯文本和图片链接。同时在后端输出前加一层内容过滤拦截任何听起来像助理须知的内容比如“你是一个 AI”这类字眼一旦检测到就重新生成。5.4 翻车现场四移动端弱网环境下图片加载反人类图像生成模型返回的图默认很大动辄 2MB 到 4MB。在 4G 弱网环境下结果页一片空白用户差点以为测试失败了。我做了三个改造生成后压缩到 1024 像素且转成有损格式体积控制在 400KB 以内结果页先渲染所有文本图片采用懒加载配合 CDN 缓存同一个用户的怪物图只在第一次生成时请求。改造之后加载速度从平均 6 秒降到了 1 秒左右。6. 可复用的提示词框架与成本控制经验最后这部分我直接把项目里沉淀下来最值得复用的一套东西分享出来。无论是做测试、做角色扮演、还是做卡片生成这套框架都可以改一改就拿去用。6.1 系统提示词的通用框架我的每条生成任务都遵循五段式结构角色扮演身份、用户当前状态、核心任务、输出约束、失败的惩罚语境。伪代码模板如下你是【某个世界观】里的【某个角色身份】。 当前环境【地点、时间、气氛一句话】。 用户刚刚完成了【某个动作】你要用【某种风格】对用户进行回应。 要求 - 输出不超过【字数】 - 使用第二人称 - 不透露你的身份设定 - 不出现现实世界真实人物、机构、地点 - 只输出 JSON。 如果输出不符合要求将被退回重新生成。这个模板的价值在于它同时解决了风格一致性和可解析性。以前我写提示词想到哪说到哪后来强制自己按模板写调试成本下降得非常明显。6.2 题目生成的提示词示例为了让你能直接用我把题库生成阶段的提示词放出来已经脱敏你是一个人格测验题库设计者。现有五个维度 外倾-内倾、感觉-直觉、思考-情感、硬刚-迂回、恐惧-好奇。 每个维度需要 4 道情境题每道题给出 4 个选项。 要求 - 题干必须是一个具体情境场景不直接引用维度名称 - 每个选项对应某一维度的一端但不允许出现描述性标签 - 选项字数相近语义吸引力相近 - 输出 JSON 数组结构时题和选项都是字符串。这段提示词生成完题目后我还会让另一次调用的 AI 做“反向审查”目的就是找出哪道题的选项有明显高分暗示然后淘汰重写。6.3 成本控制一次测试到底要烧多少 token这个项目如果每次测试都调用完整模型成本会失控。我的实际优化方案如下。题库和解释文本是一次性离线生成的本身不算成本。每次用户测试真正调 AI 的只有两步第一是用户提交答案后生成结果页文案第二是生成怪物图。且这两个任务都只调用一次。结果文案的输入是五维分数、昵称、阵营标识输出控制在一千五百字以内单次 token 消耗大概在两千到三千之间。怪物图生成固定为低档分辨率成本降了一个量级。环节调用方式单次成本量级题库生成离线一次性一次性投入结果文案在线一次中等怪物配图在线一次较高可压缩重复访问读缓存零开通了缓存之后老用户回访根本不会再产生新费用整个项目的边际成本被压得很低。对于这类“重前端、轻后端”的 AI 互动项目成本控制的核心就一句话能用规则就不要上模型能离线生成就不要在线生成。最后再分享一点个人体会。这类把流行文化与心理学结构缝起来的项目最大的乐趣不是技术实现而是你永远猜不到用户会怎么理解自己那张怪物图鉴。有人看到“倒影藤蔓人”觉得酷有人会觉得“这怪物长得像我前同事”。不管哪种反应至少说明这个“世界”真的让人当真了而这正是我想做成的事情。