Skip to content

角色系统

概述

角色系统允许用户切换不同的 AI 对话角色,每个角色有独立的 system prompt 定义。支持内置角色和用户自定义角色。

RoleManager 类管理(ai/role_manager.py),角色数据持久化在 data/roles/roles.json

内置角色

角色名称风格
default星辰旅人友善专业的 AI 助手,简洁友好
tsundere杂鱼酱高傲嚣张的雌小鬼,高攻零防
cool冷酷助手冷漠高效,极其简洁,不带情感

默认角色为 tsundere(傲娇)。

命令

所有命令通过 角色 关键字触发:

命令说明
角色 列表查看所有可用角色
角色 当前查看当前使用的角色
角色 切换 <名称>切换到指定角色
角色 查看 <名称>查看角色提示词详情
角色 创建 <名称> [提示词]创建自定义角色
角色 编辑 <名称> <新提示词>编辑自定义角色提示词
角色 删除 <名称>删除自定义角色
角色 帮助查看详细帮助

自定义角色

创建自定义角色时,提示词中可使用以下变量:

变量说明
{bot_name}机器人名称(如"星辰旅人")
{user_name}用户名称
{self.username}机器人用户名

示例:

角色 创建 猫娘 你是{bot_name},一只可爱的猫娘。喜欢撒娇和玩耍。和你说话的人叫{user_name}。

自定义角色管理

  • 自定义角色由创建者管理
  • 删除角色时,使用该角色的用户会自动切换到默认角色(tsundere)
  • 内置角色不可删除或编辑

代码参考

python
class RoleManager:
    def get_system_prompt(self, user_id, bot_name, user_name, self_username="") -> str:
        """获取用户的 system prompt(变量替换后)"""

    def set_user_role(self, user_id, role_id):
        """设置用户的角色"""

    def get_all_roles(self) -> dict:
        """获取所有角色(内置+自定义)"""

    def create_role(self, name, prompt, creator) -> bool:
        """创建自定义角色,返回是否成功"""

    def delete_role(self, name_or_id) -> bool:
        """删除自定义角色"""

    def edit_role(self, name_or_id, new_prompt) -> bool:
        """编辑自定义角色的提示词"""

基于 VitePress 构建