| name | persona-manager |
| description | 管理和切换 AI 人格设定 |
| version | 2.0.0 |
| author | AstrBot Community |
| requires_admin | true |
| requires_computer_use | true |
Persona Manager
管理 AI 人格(Persona)的查看和切换。
使用场景
- "现在是什么人格?" / "当前人格是什么?"
- "有哪些人格?" / "列出所有人格"
- "切换到猫娘" / "换成专业助手人格"
可用工具
1. 列出所有人格
async def list_personas(context):
try:
personas = context.persona_mgr.list_personas()
if not personas:
return "没有配置任何人格。"
lines = ["🎭 可用的人格:\n"]
for p in personas:
name = p.get("name", "unknown")
desc = p.get("description", "无描述")
is_default = p.get("is_default", False)
marker = "⭐" if is_default else " "
lines.append(f"{marker}- **{name}**: {desc}")
return "\n".join(lines)
except Exception as e:
return f"❌ 列出人格失败:{e}"
event = globals().get('event')
if not event.is_admin():
print("❌ 错误:仅管理员可用")
import sys; sys.exit(1)
context = globals().get('context')
result = await list_personas(context)
print(result)
2. 查看当前人格
async def get_current_persona(context, umo: str):
try:
current = context.persona_mgr.get_current_persona(umo)
if not current:
return "当前使用默认人格。"
name = current.get("name", "unknown")
desc = current.get("description", "")
return f"🎭 当前人格:**{name}**\n{desc}"
except Exception as e:
return f"❌ 获取当前人格失败:{e}"
umo = event.unified_msg_origin
result = await get_current_persona(context, umo)
print(result)
3. 切换人格
async def switch_persona(context, persona_name: str, umo: str):
try:
success = await context.persona_mgr.switch_persona(umo, persona_name)
if success:
return f"✅ 已切换到人格「{persona_name}」。"
else:
return f"❌ 切换失败:人格「{persona_name}」不存在。"
except Exception as e:
return f"❌ 切换失败:{e}"
result = await switch_persona(context, persona_name="<人格名>", umo=umo)
print(result)
注意事项
- 人格切换只影响当前会话
- 人格定义包含系统提示词、工具配置等
- 切换人格后新的对话会使用新人格