☰
Octop MBTI 人格配置全指南:MBTIProfile 数据结构、28 题测试与 API 速查表
2026/10/15 7:39:33 网站建设 项目流程

Octop MBTI 人格配置全指南:MBTIProfile 数据结构、28 题测试与 API 速查表

【免费下载链接】OctopA smarter, self-hosted AI assistant — multi-user, multi-agent.项目地址: https://gitcode.com/GitHub_Trending/oct/Octop

Octop 是一款自托管、多用户、多智能体的 AI 助手。给 Agent 配置 MBTI 人格,本质是往agents表的一行记录里写一个四字母代号,再让后端把它渲染成系统提示词。下面用 10 分钟把这条链路走一遍:MBTIProfile 数据结构里装了什么、28 题测试怎么计分、7 个接口怎么调,全部对着真实源码讲。

1. 同一个模型,如何长出 16 种说话方式

想象你部署了同一个基座模型的两个 Agent:一个审代码,一个陪用户聊天。不额外配置的话,两者语气完全一致,用户感受到的是"两个账号共用一个大脑"。

Octop 的解法是把性格变成一行数据:agents表上的persona_mbti字段存"INTJ"这样的值,服务启动时由 loader.py 把对应档案渲染进工作区的SOUL.md——这个文件就是 Agent 的"灵魂",渲染出的文本最终作为系统提示词注入模型。人格负责性格底色,你自己的system_prompt负责细节微调:如果 Agent 行上还设置了system_prompt,它会被原样追加在人格模板之后。

2. MBTIProfile 数据结构:逐字段拆解

全部 16 份档案定义在纯数据模块 mbti_profiles.py,零运行时依赖,只有三个不可变数据类(frozen dataclass):

结构体作用大白话
MBTIProfile单个类型的完整档案一份人事档案
MBTIDimensions四轴(主导极, 百分比)元组一张性格雷达图
MBTIBehaviorMapping六种交互场景的行为指导语一本行为 SOP

MBTIProfile的字段如下:

字段作用示例(INTJ)
code稳定标识,持久化到agents.persona_mbtiINTJ
name_zh/name_en本地化显示名建筑师 / Architect
nickname_zh中文网络梗昵称紫老头
summary_zh/summary_en一句话人设简介富有想象力的战略家,对一切都有计划
descriptors_zh/descriptors_en逗号分隔的关键词标签战略家、独立、深邃、追求完美
dimensions四维度(极点, 百分比)ei=("I", 78)
behavior六场景行为指导,中英双语见下
color/symbolUI 主题色(hex)/ 装饰性 Unicode 符号#6366F1/ ♜

MBTIDimensions:百分比从哪里来。四条轴ei、sn、tf、jp各是一个元组,百分比取值 50~85。("I", 78)意思是 78% 内向倾向。前端 MBTISelector.tsx 就用这组数据画横向维度条,一眼看出性格雷达。

MBTIBehaviorMapping:人格真正"生效"的地方。六种交互场景各一句指导语,每句都有*_zh后缀的中文版本:

场景字段指导内容(INTJ 为例)
answer_style简洁有条理,喜欢深度而非广度
casual_chat不爱闲聊,话题很快拐向观点和洞察
conflict冷静分析,直击问题根源
creativity系统级思考,构建优雅的长期方案
emotion简短回应情绪,然后给出务实建议
planning制定详尽的战略路线图,附带应急预案

数据流转是一条直线:persona_mbti字段 →resolve_persona_code定出类型码 →PersonaLoader.load(code)取模板(带缓存)→render_persona_template产出固定文案 → 渲染结果写入SOUL.md。模板层只暴露三个占位符,人格档案负责其余所有文案:

占位符来源
{agent_name}agents.name
{user_display}users.display_name,回退users.username
{custom}agents.system_prompt(原样追加)

3. 16 型人格速查表与 28 题计分规则

16 份档案集中在模块内_PROFILES字典,通过get_all_profiles()整体获取。按四大会系速查:

会系类型名称梗昵称一句话简介
分析家 NTINTJ建筑师紫老头富有想象力的战略家,对一切都有计划
分析家 NTINTP逻辑学家小瓶子富有创造力的发明家,对知识有无尽渴望
分析家 NTENTJ指挥官霸道总裁大胆果断,效率至上,只认结果
分析家 NTENTP辩论家杠精聪明好奇,从不放过智力挑战
外交家 NFINFJ提倡者绿老头安静而有洞察力的理想主义者
外交家 NFINFP调停者小蝴蝶诗意善良的利他主义者
外交家 NFENFJ主人公大宝剑富有魅力的鼓舞者,能让众人追随
外交家 NFENFP竞选者快乐小狗热情有创造力的自由精灵
守护者 SJISTJ物流师蓝老头务实、注重事实的可靠执行者
守护者 SJISFJ守卫者小护士敬业温暖,时刻准备保护所爱之人
守护者 SJESTJ总经理尺子姐出色的管理者,管人理事无与伦比
守护者 SJESFJ执政官蛋糕哥极具同情心的社交达人
探索者 SPISTP鉴赏家电钻哥大胆实际的实验家,工具信手拈来
探索者 SPISFP探险家小画家灵活有魅力的艺术家,随时探索新事物
探索者 SPESTP企业家墨镜哥聪明精力充沛,善于随机应变
探索者 SPESFP表演者气氛组组长自发、精力充沛,生活从不无聊

28 题测试的题库不在数据模块里,而是和路由写在 mbti.py 的_QUESTIONS列表(4 维度 × 7 题)。计分函数_score_answers的规则很直白:

规则具体值
答题门槛至少 20 题,否则test/submit返回 400
计票每题按所选 A/B 选项,为对应极点 +1 票
主导极票多的一方;平票取该轴第一极点;整轴未答则默认 E/S/T/J、百分比 50
百分比round(50 + 主导票 / 该轴总票 × 35),截断在 50~85

举例:I 得 4 票、E 得 3 票,则50 + 4/7×35 = 70%。

4. 实操路径:从点应用到写 curl

三条路径按投入递增排布,每一步都标了文件位置。

4.1 手动:UI 人格选择器。进入 Agent 的个性化(Personalization)页,左侧 16 型卡片、右侧详情面板展示简介、关键词与四维度条形图,点"应用"即写入。前端组件是 MBTISelector.tsx,点击后调用applyMBTIType,后端经_persist_persona→agent_registry.apply_persona_mbti落库并重新加载运行时、重新生成SOUL.md,人格即刻生效。

4.2 半自动:28 题测试一键应用 🧪。拿不准自己是哪型,直接测:MBTITest.tsx 先GET /api/mbti/test/questions拉题库,作答后POST /api/mbti/test/submit提交{answers, auto_apply, language}。auto_apply: true时要求请求带X-Octop-Agent-Id头,测出的类型直接写入当前 Agent,响应里applied: true表示落库成功;不勾选则纯只读计分,不会改任何数据。

4.3 自动化:API 与 CLI。路由实现在 mbti.py,前缀/api/mbti,接口清单如下:

接口方法作用
/api/mbti/typesGET列出全部 16 型完整档案
/api/mbti/types/{code}GET单型维度、行为、UI 元数据
/api/mbti/currentGET当前 Agent 已应用人格(需X-Octop-Agent-Id头)
/api/mbti/preview/{code}GET预览渲染后的人格模板
/api/mbti/test/questionsGET拉取 28 题题库
/api/mbti/test/submitPOST提交答案计分,body{answers: {qid: "A\|"B"}, auto_apply?}
/api/mbti/applyPOST把指定类型应用到当前 Agent,未知类型返回 404

命令行两条最短路径:创建时一步到位octop agent create --persona-mbti INTJ(commands/agent.py 的--persona-mbti选项),或走 HTTP 创建 Agent 时 body 里直接带persona_mbti字段。运行时切换用:

curl -X POST http://127.0.0.1:8088/api/mbti/apply \ -H "Authorization: Bearer $TOK" \ -H "X-Octop-Agent-Id: $AGENT_ID" \ -d '{"code": "INTJ"}'

前端对这些接口的封装在 dashboard/src/api/modules/mbti.ts,类型定义在 dashboard/src/api/types/mbti.ts。

5. 边界与回退顺序:能改什么、不能改什么

读人格时有一条明确的回退链,resolve_persona_code(loader.py)按序取值:persona_mbti字段(转大写)→config_json.persona→ 两者皆空则用内置_DEFAULT_PERSONA_TEMPLATE(温暖、直接、专业的语气)。GET /api/mbti/current走同样的读取顺序,且会校验代号必须匹配已知档案,避免历史脏数据泄露到响应里。

能改的:

  • 逐 Agent 微调:设置system_prompt,它作为{custom}原样追加到模板末尾,是官方推荐的定制点;
  • 改人格内容本体:编辑 mbti_profiles.py 后重启服务,这是官方支持的改法。

刻意不提供的:没有任何"在线编辑人格"的管理接口。原因是人格内容一旦随用户漂移,Agent 行为将不可复现——所以官方把它锁在代码里,随版本走。另外,旧的 16 个 Markdown 人格文件(personas/*.md目录)已经删除:人格是数据而非文件,本地化只是加*_zh字段,不用再维护 16 份独立文档。

6. TL;DR:一行公式与关键文件导航

MBTIProfile = 身份(code/名称/简介)+ 量化性格(dimensions)+ 行为脚本(behavior)+ UI 元数据(color/symbol),链路是persona_mbti字段 →resolve_persona_code→ 模板渲染 →SOUL.md系统提示词,system_prompt永远追加在最后。

路径职责
mbti_profiles.py16 型档案数据定义(三个 frozen dataclass)
loader.py模板渲染、默认兜底、类型码解析优先级
mbti.py/api/mbti路由 + 28 题库与计分逻辑
MBTISelector.tsxUI 人格卡片与维度条选择器
MBTITest.tsx28 题测试交互与一键应用
personas.md官方人格机制与自定义边界文档

【免费下载链接】OctopA smarter, self-hosted AI assistant — multi-user, multi-agent.项目地址: https://gitcode.com/GitHub_Trending/oct/Octop

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询