机器人“店员”使用文档
该页面主要由cx维护,嘻嘻
一、介绍
- Q群:沃玛频道主群
- 店员B站账号: @店店店店员(支持评论区总结/回复/私信聊天)
- 开发者:橙息
- 设定:来自b站up主@warma的作品中出现的角色“店员”
- 功能:基于deepseek等AI模型的聊天机器人,可以同时与多人进行连续的文字聊天,语音聊天,识别图像等
使用到的AI模型
- 大语言模型:DeepSeek-V2
- 视觉模型:qwen-vl-plus(通义千问视觉模型)
- 语音识别模型:Paraformer语音识别-中文-通用-16k-离线-large-pytorch
- 语音合成模型:GPT-SoVITS-v2
以下内容中以 频道 指代聊群或私信频道
基本功能特性
- 白名单:需要橙息手动为频道添加白名单才能使用店员的所有功能
- 闭嘴:当店员处于闭嘴状态的时候,无法在频道中通过
@店员
除外的方式触发AI回复 - 防刷屏:主要是为了防止店员与其他机器人(贝拉)触发循环对话
- 判定方式:在触发店员AI对话的时候,判断最近5条消息是否包含2条店员消息,并且5条消息的时间间隔小于8秒,如果是则不触发AI回复
- 自动宵禁:当自动宵禁功能开启,工作日00:00-06:30自动开启全员禁言
- 生日提醒:根据聊群用户在qq设置的生日,在每日的8点整自动为用户献上生日祝福
- 语音输出:在触发店员AI聊天时,在发送的文本最后加上 "-a" 可以让店员使用语言+文本回答用户的问题
二、店员AI聊天功能
触发AI对话的方式:
- 在聊群中发送带有“店员”二字的消息
- 在聊群中
@店员
- 引用店员的消息
- 在私信中发送任意消息
- 在聊群中有 1% 的概率触发店员的AI回复
- 若消息中包含
**
(双星号)则任何情况下都不会触发AI回复 - 有新用户加入聊群,自动触发AI回复欢迎新用户
- 戳一戳有 20% 的概率触发
短期记忆
- 在每个频道都会有15条对话上下文(又称短期记忆)
- 记忆包括用户的对话(没有触发AI回复的消息)
- 还包括店员自己发送的消息和调用外部函数的结果
- 超过15条后会自动删除最早的一条对话。
- 店员可以结合这15条消息来回答用户的问题。
长期记忆
- 店员会在聊天中自动整理记忆到向量数据库中,包括新增/更新/删除记忆
- 店员会在回答问题时根据提问调用数据库中最匹配的5条记忆条目
- 使用了阿里云的DashVector向量检索服务
- 使用了阿里云的通用文本向量模型text-embedding-v2
可用信息
- 用户发送的消息文本
- 用户在聊群中的昵称
- 当前的时间 (格式为:YYYY-mm-dd HH:MM:SS)
- 频道名称
- 个别频道的额外信息
闲聊频道:各个子频道群号列表(已加入到长期记忆中)- 沃玛岛:基础的帮助文档
店员接受的格式
- 文本内容
- 图片:可以是引用的图片,又或是
图片
+文字
混合(自定义表情包将作为图片处理)图片会先传递给qwen-vl-plus模型进行识别,识别结果会作为文字代替文本消息中的图片传递给deepseek-v2模型,deepseek-v2模型会根据识别结果回复
- qq emoji:转为对应的文字名称
- qq表情包:转为对应的文字名称
- 语音:语音识别,使用了Paraformer语音识别-中文-通用-16k-离线-large-pytorch来语音识别(只支持中文)
- 引用消息:可获取引用的消息文本内容和发送者的昵称,如果引用的消息包含图片也会按照上述方式处理
- 其他格式:无法处理文件、视频等格式
店员可输出的格式
- 文本内容
- 图片(使用图片的url来发送图片,前 提是店员得知道一张图片的url)
- 语音: 使用GPT-SoVITS-v2来合成语音
- Latex公式:会自动渲染为图片,有时候会抽风
- 代码块: 大部分时候都会将代码块渲染为图片
调用外部函数
- 事件触发器:可以定时提醒用户做某件事情。
- 闭嘴:店员AI静默
- 网页搜索:调用google搜索api- b站搜索:在b站搜索视频/up主/专栏等- 获取用户主页投稿信息:投稿的视频列表- 获取视频内容:由b站AI生成的视频总结- 获取视频数据:标题/简介/up主/播放量/弹幕/评论/点赞/投币/收藏/转发等数据
三、店员指令功能
- 使用 “
@店员
” <指令> <参数> 来执行指令(通常使用空格分隔) - 只要消息以“@店员 ”开头,就算没有@到,也会当做指令来处理而不是直接触发AI回复
- 当“
@店员
”后没有匹配到如下列表的指令时,触发AI回复
频道/群内指令列表
权限介绍
- 所有人:所有用户都能使用的指令
- 管理员:指定的管理员列表中的用户才能使用的指令
- 开发者:指定的开发者列表中的用户才能使用的指令
- op:指定的op列表中的用户才能使用的指令
- 群主:当前所在频道的群主
- 群管理员:当前所在频道的管理员
用户指令
指令名 | 别名 | 参数 | 权限 | 介绍 | 示例 | 备注 |
---|---|---|---|---|---|---|
闭嘴 | - | ?时间(单位h/m/s) | 所有人 | 店员AI静默 | @店员 闭嘴 1h | 不带参数默认5分钟,一次只能使用一种单位 |
开嘴 | 张嘴/说话/解除静默/解除闭嘴 | - | 所有人 | 店员AI解除静默 | @店员 开嘴 | - |
发言统计 | 今日发言/今日发言统计/今日发言量/今日发言数/今日发言数量 | - | 所有人 | 查询当前qq群当日发言计数 | @店员 发言统计 | |
费用统计 | 费用查询/费用/欠款/债务 | - | 所有人 | 查询用户使用店员AI产生的费用 | @店员 费用统计 | |
费用排行 | 费用榜单/费用榜/债务榜/欠债榜/欠款榜 | - | 所有人 | 查询用户使用店员AI产生的总费用的排行榜 | @店员 费用排行 | |
拖更时长 | 拖更时间/拖更查询/上次更新/最新视频/拖更日期 | ?关键词 | 所有人 | 查询沃玛视频拖更时长,不带参数默认为上个视频之后多久没更新 | @店员 拖更时长 爆炸电台 | |
更新生日 | 生日更新 | - | 所有人 | 更新自己的生日为当前qq设置的生日 | @店员 更新生日 | |
查询生日 | 生日查询 | ?日期 | 所有人 | 查询指定日期的生日的群友 | @店员 查询生日 11-11 | |
扫雷 | - | 开始/显示/结束/帮助 | 所有人 | 扫雷小游戏,点击查看具体用法 | @店员 扫雷 开始 简单 | 具体命令请使用 "@店员 扫雷 帮助" 来查看 |
开始游戏 | 游戏开始 | 游戏名 | 所有人 | 在当前子频道启动一个玩家队列 | @店员 开始游戏 真心话大冒险 | 点击查看具体用法 |
结束游戏 | 游戏结束 | - | 所有人 | 在当前子频道结束一个玩家队列 | @店员 结束游戏 | 点击查看具体用法 |
加入游戏 | - | - | 所有人 | 加入当前子频道的游戏玩家队列 | @店员 加入游戏 | 点击查看具体用法 |
退出游戏 | - | - | 所有人 | 退出当前子频道的游戏玩家队列 | @店员 退出游戏 | 点击查看具体用法 |
下一个 | - | - | 所有人 | 查询当前子频道游戏玩家队列中的下一个玩家 | @店员 下一个 | 点击查看具体用法 |
词云 | - | ?[时间范围] ?[参数] | 所有人 | 根据聊天记录生成词云 | @店员 词云 -u 1周 | 点击查看具体用法 |
help | 帮助/帮助文档/菜单/meun/指令列表 | - | 所有人 | 查看帮助文档 | @店员 help |
管理员指令
指令名 | 别名 | 参数 | 权限 | 介绍 | 示例 | 备注 |
---|---|---|---|---|---|---|
通过 | - | 问卷序号 | 管理员 | 通过指定序号的问卷 | @店员 通过 114514 | 可以回复问卷消息来快捷操作 |
驳回 | - | 问卷序号/驳回内容 | 管理员 | 驳回指定序号的问卷 | @店员 驳回 114514 请按要求填写 | 可以回复问卷消息来快捷操作 |
手动审核 | 获取问卷/查看问卷/查询问卷/问卷查询/问卷查看/问卷获取 | 问卷验证码 | 管理员 | 手动获取指定问卷验证码的问卷 | @店员 手动审核 114514 | 用于手动审核在“已过滤通知”中的入群申请 |
搜索用户 | 查找用户 | QQ号 | 管理员 | 在店员加入的所有Q群中搜索指定的QQ号,返回指定用户所在的群的列表 | @店员 搜索用户 1234567890 | |
检索黑名单 | 检查黑名单 | - | 管理员 | 在店员加入的所有Q群中检索黑名单中的用户,返回黑名单用户所在的群的列表 | @店员 检索黑名单 | |
记忆清除 | - | - | 群主/群管理员/管理员 | 清除店员AI聊天在当前频道的短期记忆 | @店员 记忆清除 | |
记忆搜索 | 记忆检索/记忆查询 | 关键词 | 管理员 | 查询店员AI长期记忆 | @店员 记忆搜索 橙息是萝莉 | |
记忆删除 | - | ids | 管理员 | 删除店员AI长期记忆,参数为记忆搜索结果中的id,可以为多个,用空格分隔 | @店员 记忆删除 1 2 3 | |
强制触发 | - | 群号 | 管理员 | 强制在指定聊群触发店员AI聊天 | @店员 强制触发 1234567890 | 在后面加上 "-a" 表示使用语音合成,"-c" 表示使用粤语语音合成 |
tts | 语音合成 | 文本内容 | 管理员 | 使用店员语音合成生成语音 | @店员 tts 您好,欢迎光临,买? | 在后面加上 "-c" 表示使用粤语语音合成 |
重启 | - | - | 管理员 | 重启店员主进程 | @店员 重启 | |
强制关闭 | - | - | 管理员 | 使用mcsm强制终止店员主进程 | @店员 强制关闭 | |
自动宵禁 | - | 开启/关闭 | 管理员 | 开启/关闭自动宵禁功能 | @店员 自动宵禁 开启 | |
触发生日提醒 | - | ?日期 | 管理员 | 手动触发生日提醒 | @店员 触发生日提醒 11-11 | |
视频评论 | - | B站视频AV/BV号 | 管理员 | 在指定视频召唤店员AI总结 | @店员 视频评论 BV1Ex4y177xd | |
echo | - | 文本内容 | 管理员 | 让店员重复指定的文本内容 | @店员 echo 您好,欢迎光临,买? | |
git | - | pull | 开发者 | 从仓库拉取最新代码并重启 | @店员 git pull | |
git | - | push | 开发者 | 将本地的json文件(白名单列表)推送到仓库 | @店员 git push |
MC指令集合
mc指令执行器
- 在任意频道,沃玛岛MC服务器管理员(op)可以发送"//"开头的消息来执行任意mc指令
- 如使用
//list
来查看在线玩家列表。
频道/群内-店员MC指令: 注: 由于现在沃玛岛同时开了插件服和MOD服,在使用MC相关的命令的时候,在命令最后面加上" -m"(注意-m前面有空格)来指定使用MOD服,默认使用插件服
指令名 | 参数 | 权限 | 介绍 | 示例 | 备 注 |
---|---|---|---|---|---|
绑定 | 玩家名 | 所有人 | 绑定MC服务器皮肤站 | @店员 绑定 cxchency | 增强了鲁棒性,“绑定”与“玩家名”之间不需要空格也能执行 |
管理员绑定 | 玩家名; @用户 | op/管理员 | 管理员手动绑定 | @店员 管理员绑定 cxchency @橙息 | |
解绑 | 玩家名 | op/管理员 | 解除绑定 | @店员 解绑 cxchency | |
绑定查询 | 玩家名 | op/管理员 | 查询玩家名对应的qq号 | @店员 绑定查询 cxchency | |
绑定反查 | qq号 | op/管理员 | 查询qq号对应的玩家名 | @店员 绑定反查 123456789 | |
在线玩家 | - | 所有人 | 查询沃玛岛服务器在线玩家列表 | @店员 在线玩家 | |
tps | - | 所有人 | 查看沃玛岛服务器tps | @店员 tps | |
ping | - | 所有人 | 查询所有服务器地址连通性 | @店员 ping | |
排行榜 | - | 所有人 | 查询沃玛岛服务器统计信息排行 | @店员 排行榜-<?页数> <统计分类> <?统计项> | 点击查看具体用法 |
分类排行榜 | - | 所有人 | 查询沃玛岛服务器统计信息的某个分类下的所有条目的统计排行 | @店员 分类排行榜-<?页数> <统计分类> <?玩家名> <升序/降序> | 点击查看具体用法 |
排名 | - | 所有人 | 查询指定玩家名在沃玛岛服务器统计信息中某个条目的排行名次 | @店员 排名 <玩家名> <统计分类> <?统计项> | 点击查看具体用法 |
排行榜系统
1. 排行榜
- 查询沃玛岛服务器统计信息排行
- 用法:
@店员 排行榜-<?页数> <统计分类> <?统计项>
- 统计分类有如下:
丢弃
破坏
挖掘
合成
被杀
拾取
击杀
使用
其他
进度
- 除“其他”、“进度”类型以外,对应的 <统计项> 为对应实体/方块/物品id > “其他”类型的 <统计项> 参考 统计信息列表 > “进度”类型的 <统计项> 参考 进度列表
- 若不使用 <统计项> 则统计整个分类的合计数
使用示例:
“@店员 排行榜 挖掘 diamond_ore” 将返回挖掘钻石矿的排行榜
“@店员 排行榜-2 击杀 将返回合计击杀的排行榜的第二页
2. 分类排行榜
- 查询沃玛岛服务器统计信息的某个分类下的所有条目的统计排行
- 用法:
@店员 分类排行榜-<?页数> <统计分类> <?玩家名> <?升序/降序>
- 统计分类有如下:
丢弃
破坏
挖掘
合成
被杀
拾取
击杀
使用
其他
使用示例:“@店员 分类排行榜 挖掘” 将返回全服挖掘各类方块的排行榜
“@店员 分类排行榜-2 击杀 cxchency” 将返橙息的击杀各类型生物的排行榜的第二页
3. 排名
- 查询指定玩家名在沃玛岛服务器统计信息中某个条目的排行名次
- 用法:
@店员 排名 <玩家名> <统计分类> <?统计项>
- 统计分类有如下:
丢弃
破坏
挖掘
合成
被杀
拾取
击杀
使用
其他
进度
- 除“其他”、“进度”类型以外,对应的 <统计项> 为对应实体/方块/物品id
- 若不使用 <统计项> 则统计整个分类的合计数
- 用法:
“@店员 cxchency 排名 挖掘 diamond_ore” 将返回橙息在全服挖掘钻石矿次数的名次
“@店员 cxchency 排名 击杀” 将返回橙息合计击杀的名次
其他指令
骰子
- 在任意频道,发送".r"开头的消息来使用骰子功能
- 示例:".r2d6" 掷 2 个 6 面骰子
- 只投一个骰子的时候,d可以省略,如".r6"等同于".r1d6"
扫雷小游戏
- 开始游戏:@店员 扫雷 开始 [难度] (难度可选:简单/中级/高级)
- 结束游戏:@店员 扫雷 结束
- 显示游戏:@店员 扫雷 显示
- 点开方块:.挖开/挖/d/D [坐标] (例如:".d a1", 或者 ".d a1-3" 来连续挖开多个方块)
- 标 记地雷:.标记/插旗/f/F [坐标] (例如:".f a1", 或者 ".f a1-3" 来连续标记多个方块)
- 双键挖开:.双键/双击/m/M [坐标] (例如:".m a1")
游戏玩家队列系统
- 在当前子频道创建一个循环的游戏玩家队列
- 每个子频道只能创建一个队列
- 子频道之间的队列不互通
- 指令:
- 开始游戏
- 别称:游戏开始
- 参数:游戏名
- 示例:
@店员
开始游戏 真心话大冒险
- 结束游戏
- 别称:游戏结束
- 示例:
@店员
游戏结束
- 加入游戏
- 示例:
@店员
加入游戏
- 示例:
- 退出游戏
- 示例:
@店员
退出游戏
- 示例:
- 下一个
- 查询队列中的下一个玩家
- 示例:
@店员
下一个
- 开始游戏
词云
- 用法:@店员 词云 [时间范围] [选项]
- 时间范围(默认为'1天'):
以下提到的所有沃频子频道不包括店员与用户的私信 词云会自动排除机器人的发言(包括店员和其他已被标记的机器人)
- 可用单位:秒/s、分钟/m、小时/h、天/d、周/w、月/M、年/y
- 格式:数字+单位,例如'1天'、'1周'、'1小时'
- 选项:
- 当前子频道模式('-c'):获取当前子频道的所有用户聊天记录生成的词云
- 用户模式('-u'):获取当前使用指令的用户在所有沃频子频道中的聊天记录生成的词云
- 全子频道模式('-g'):获取所有沃频子频道中所有用户的聊天记录生成的词云
- 注:使用用户模式时,词云默认私信发送给用户,您可以附加'-p'参数来指定发送到当前子频道
- 示例:
- 查看自己1天内在所有沃频子频道中的发言的词云:“@店员 词云 1天 -u”
- 查看本子频道(本群)一周内所有用户的发言的词云:“@店员 词云 1周 -c”
- 查看所有沃频子频道一年内所有用户的发言的词云:“@店员 词云 1年 -g”
四、微博动态推送
- 以
图片
+文本
的形式自动推送微博@warma的动态到沃玛频道主群 - 将动态中的图片逐个提取并发送到沃玛频道主群
- 如 果动态包含视频,会自动发送视频文件到沃玛频道主群
- 将微博文本内容转发给店员AI来生成回复发送到沃玛频道主群
五、b站动态推送
- 以
图片
+文本
的形式自动推送b站@Warma和@warma养鸽场的动态/视频投稿到到沃玛频道主群 - 将动态中的图片逐个提取并发送到沃玛频道主群
- 将动态文本内容转发给店员AI来生成回复发送到沃玛频道主群
- 如果是投稿视频将自动在B站评论区抢热评(根据视频信息/视频字幕来生成评论)
六、MC服务器消息互通
- 在q群沃玛岛MC插件服务器消息互通和沃玛岛MC MOD务器消息互 通实现双向消息互通
消息互通群中的店员AI系统独立于其他频道,是以游戏玩家身份加入MC服务器,并借助消息互通回答用户或执行命令(已移除mc中的店员,原因:开销过大,效果不佳)
七、问卷审核系统
- 实现了之前频道的问卷审核系统
- 当申请加入沃玛频道主群的时候,用户需要在问卷网页填写问卷并获得验证码
- 用户需要将验证码作为入群问题的答案提交入群申请
- 店员会尝试自动审核收到的问卷
- 若自动审核失败,则自动发送到管理群,由管理员手动审核
- 若用户在沃玛频道主群,自动通过其加入其他子群的入群申请