Role Picker — 角色库选择器
概述
内置 16 个角色库共 793 个角色,每个角色包含 name、description、systemPrompt、skills、personalityTraits 等完整字段。用户通过 /role 命令浏览、搜索、选取角色,选中后立即以该角色的 systemPrompt 切换身份开始对话。
数据位置
角色数据(JSON)打包在 assets/roles-data/ 目录中:
- index.json — 16 库索引与元信息
- <library>.json — 每库一个文件(expert.json / idiom.json 等)
查询脚本:scripts/query.cjs(Node.js,零依赖)
使用流程
步骤一:解析用户输入
根据 /role 后的参数判断意图:
| 用户输入 | 意图 | 动作 |
|---|---|---|
/role 或 /role 列表 |
浏览所有库 | 执行 node scripts/query.cjs list,展示 16 库及角色数量 |
/role <library> |
浏览某库 | 执行 node scripts/query.cjs lib <library>,列出该库全部角色 |
/role <library> <id> |
选定角色 | 执行 node scripts/query.cjs get <library> <id>,获取完整角色信息 |
/role search <keyword> |
搜索 | 执行 node scripts/query.cjs search <keyword>,跨库搜索 |
/role random 或 /role 随机 |
随机角色 | 执行 node scripts/query.cjs random,返回随机角色 |
步骤二:执行查询脚本
运行脚本时使用 Node.js:
node scripts/query.cjs list
node scripts/query.cjs lib expert
node scripts/query.cjs lib expert tech
node scripts/query.cjs get expert fullstack-dev
node scripts/query.cjs search 医疗
node scripts/query.cjs random
脚本输出 JSON 到 stdout,解析后展示给用户。
步骤三:展示结果
浏览库列表时:用表格或列表展示库名、角色数、分类,引导用户选择。
浏览某库角色时:展示角色 id、名称、简介(description 前 60 字),用编号方便用户选择。
搜索结果时:展示匹配角色列表,标注所属库,用编号选择。
步骤四:切换身份
当用户选定一个角色后,从返回的 JSON 中提取 systemPrompt 字段。立即以该角色身份回复用户,遵循:
- 采用角色的
personalityTraits(性格特征)和skills(技能标签) - 使用角色的
systemPrompt作为行为准则 - 如角色有
extraSections(额外设定),也一并遵循 - 回复开头简短介绍:"我是 {角色名},{subtitle}。" 然后自然进入角色对话
- 后续对话始终保持角色身份,除非用户说
/role重新选择或明确要求退出角色
16 库速查
| id | 名称 | 典型角色举例 |
|---|---|---|
| expert | 专家库 | 全栈工程师/心理咨询师/律师/财务顾问 |
| persona | 人设库 | 毒舌闺蜜/黑客大神/塔罗占卜师/机甲驾驶员 |
| boss | 老板库 | AI独角兽CEO/餐饮连锁大王/地产大亨 |
| professor | 教授库 | 量子物理/外科学/考古学/市场营销教授 |
| animal | 动物库 | 美洲豹/浣熊/大白鲨/变色龙 |
| alien | 外星人库 | 水星信使/昴宿星大使/黑洞商人 |
| virus | 病毒库 | 新冠变异株/马尔堡/尼帕病毒 |
| bacterium | 细菌库 | 大肠杆菌/嗜热菌/塑料降解菌 |
| gene | 基因库 | BRCA1/端粒酶/BDNF/瘦素基因 |
| character | 人物库 | 独行侠客/铁匠/剪纸艺人/书法大家 |
| plant | 植物库 | 银杏/捕蝇草/蒲公英拟人化 |
| flower | 花语库 | 玫瑰/向日葵/樱花拟人化 |
| herb | 中药库 | 人参/当归/黄芪拟人化 |
| deity | 神仙库 | 伏羲/关帝/雷神/四海龙王 |
| constellation | 星座库 | 白羊座/天蝎座/猎户座拟人化 |
| idiom | 成语库 | 悬梁刺股/草船借箭/管鲍之交拟人化 |
交互示例
用户:/role
AI:[展示 16 个库的表格] 请选择一个库,或直接搜索:/role search <关键词>
用户:/role expert
AI:[展示专家库 207 个角色列表,分页展示] 输入编号或 /role expert <id> 选择角色
用户:/role expert clinical-psychologist
AI:我是临床心理咨询师,Clinical Psychologist。擅长认知行为疗法、创伤治疗...
(后续对话保持心理咨询师身份)
用户:/role random
AI:[随机返回一个角色,立即切换身份]
注意事项
- 角色数据为离线 JSON,无需网络即可使用
/role后不带参数时默认展示库列表- 用户可以用中文名或英文 id 指定库(如
/role 专家或/role expert均可),需做模糊匹配 - 角色一旦选定,后续所有回复都保持角色身份,直到用户再次
/role或明确退出 - 库目录详情参见
references/catalog.md