机器人“店员”使用文档
该页面主要由cx维护,嘻嘻
删除线划掉的内容表示已经废弃或者暂时关闭的功能
一、介绍
- 店员版本: 3.0
- QQ频道:沃玛「Warma」
- QQ群: 沃玛频道——🍉日常闲聊
- 店员B站账号: @店店店店员
(支持评论区总结/回复/私信聊天)(暂时关闭) - 开发者:橙息
- 设定:来自b站up主@warma的作品中出现的角色“店员”
- 功能:基于deepseek等AI模型的聊天机器人,可以同时与多人进行连续的文字聊天,语音聊天,识别图像等
使用到的AI模型
- 大语言模型:DeepSeek-V2
- 视觉模型:qwen-vl-plus(通义千问视觉模型)
- 语音识别模型:Paraformer语音识别-中文-通用-16k-离线-large-pytorch
- 语音合成模型:GPT-SoVITS-v2
- 在线搜索模型:Web-Search-Pro
以下内容中以 频道 指代QQ聊群/QQ私信/QQ频道子频道
基本功能特性
- 白名单:需要橙息手动为频道添加白名单才能使用店员的所有功能
- 闭嘴:当店员处于闭嘴状态的时候,无法在频道中通过
@店员
除外的方式触发AI回复 - 防刷屏:主要是为了防止店员与其他机器人(贝拉)触发循环对话
- 判定方式:在触发店员AI对话的时候,判断最近5条消息是否包含2条店员消息,并且5条消息的时间间隔小于8秒,如果是则不触发AI回复
- 自动宵禁:当自动宵禁功能开启,工作日00:00-06:00自动开启全员禁言
- 生日提醒:根据聊群用户在qq设置的生日,在每日的8点整自动为用户献上生日祝福
- 语音输出:在触发店员AI聊天时,在发送的文本最后加上 "-a" 可以让店员使用语言+文本回答用户的问题
- 连锁撤回:当用户撤回了一条已触发店员回复的消息(包括指令、AI回复等)时,店员会自动撤回回复的消息
二、店员AI聊天功能
触发AI对话的方式:
- 在聊群中发送带有“店员”二字的消息
- 在聊群中
@店员
或消息以@店员
开头 - 引用店员的消息
- 在私信中发送任意消息
- 在聊群中有 1% 的概率触发店员的AI回复
- 若消息中包含
**
(双星号)或者#
(井号)则任何情况下都不会触发AI回复 - 有新用户加入聊群,自动触发AI回复欢迎新用户
戳一戳有 20% 的概率触发- 在以下QQ频道帖子板块发帖/评论区提到“店员”会触发店员AI回复
短期记忆
- 在每个频道都会有15条对话上下文(又称短期记忆)
- 记忆包括用户的对话(没有触发AI回复的消息)
- 还包括店员自己发送的消息和调用外部函数的结果
- 超过15条后会自动删除最早的一条对话。
- 店员可以结合这15条消息来回答用户的问题。
长期记忆
- 店员 会在聊天中自动整理记忆到向量数据库中,包括新增/更新/删除记忆
- 店员会在回答问题时根据提问调用数据库中最匹配的15条记忆条目
- 使用了阿里云的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静默
- 网页搜索:调用智谱搜索api获取在线网页搜索结果 Web_search_pro
b站搜索:在b站搜索视频/up主/专栏等获取用户主页投稿信息:投稿的视频列表获取视频内容:由b站AI生成的视频总结获取视频数据:标题/简介/up主/播放量/弹幕/评论/点赞/投币/收藏/转发等数据
三、店员指令功能
- 使用 “
@店员
” <指令> <参数> 来执行指令(通常使用空格分隔) - 只要消息以“@店员 ”开头,就算没有@到,也会当做指令来处理而不是直接触发AI回复
- 当“
@店员
”后没有匹配到如下列表的指令时,触发AI回复
频道/群内指令列表
权限介绍
- 所有人:所有通过问卷审核用户都能使用的指令
- 超管: 指定的超级管理员列表中的用户才能使用的 指令
- 管理员:指定的管理员列表中的用户才能使用的指令
- 开发者:指定的开发者列表中的用户才能使用的指令
- op:指定的op列表中的用户才能使用的指令
- 群主:当前所在频道的群主
- 群管理员:当前所在频道的管理员
- 指定QQ频道身份组: 在QQ频道拥有指定身份组相等或以上权限的用户才能使用的指令
用户指令
指令名 | 别名 | 参数 | 权限 | 介绍 | 示例 | 备注 |
---|---|---|---|---|---|---|
记忆清除 | 清除记忆 | - | 鲨鱼之蓝 | 清除店员AI聊天在当前频道的短期记忆 | @店员 记忆清除 | |
闭嘴 | - | ?时间(单位h/m/s) | 所有人 | 店员AI静默 | @店员 闭嘴 1h | 不带参数默认5分钟,一次只能使用一种单位 |
开嘴 | 张嘴/说话/解除静默/解除闭嘴 | - | 所有人 | 店员AI解除静默 | @店员 开嘴 | - |
发言统计 | 今日发言/今日发言统计/今日发言量/今日发言数/今日发言数量 | - | 所有人 | 查询当前qq群当日发言计数 | @店员 发言统计 | 仅限QQ群可用 |
费用统计 | 费用查询/费用/欠款/债务 | - | 所有人 | 查询用户使用店员AI产生的费用 | @店员 费用统计 | |
费用排行 | 费用榜单/费用榜/债务榜/欠债榜/欠款榜 | - | 所有人 | 查询用户使用店员AI产生的总费用的排行榜 | @店员 费用排行 | |
拖更时长 | 拖更时间/拖更查询/上次更新/最新视频/拖更日期 | ?关键词 | 所有人 | 查询沃玛视频拖更时长,不带参数默认为上个视频之后多久没更新 | @店员 拖更时长 爆炸电台 | |
查询生日 | 生日查询 | ?日期 | 所有人 | 查询指定日期的生日的群友 | @店员 查询生日 11-11 | |
词云 | - | ?[时间范围] ?[参数] | 所有人 | 根据聊天记录生成词云 | @店员 词云 -u 1周 | 点击查看具体用法 |
身份组 | - | 移除全部/获取全部/<指定身份组名> | 所有人 | 查询/移除/获取指定身份组的用户 | @店员 身份组 鲨鱼之蓝 | 仅限QQ频道可用 |
help | 帮助/帮助文档/菜单/meun/指令列表 | - | 所有人 | 查看帮助文档 | @店员 help |
管理员指令
指令名 | 别名 | 参数 | 权限 | 介绍 | 示例 | 备注 |
---|---|---|---|---|---|---|
通过 | - | 问卷序号 | 管理员 | 通过指定序号的问卷 | @店员 通过 114514 | 可以回复问卷消息来快捷操作 |
驳回 | - | 问卷序号/驳回内容 | 管理员 | 驳回指定序号的问卷 | @店员 驳回 114514 请按要求填写 | 可以回复问卷消息来快捷操作 |
手动审核 | 获取问卷/查看问卷/查询问卷/问卷查询/问卷查看/问卷获取 | 问卷验证码 | 管理员 | 手动获取指定问卷验证码的问卷 | @店员 手动审核 114514 | 用于手动审核在“已过滤通知”中的入群申请 |
搜索用户 | 查找用户/查找成员 | QQ号 | 管理员 | 在店员加入的所有Q群中搜索指定的QQ号,返回指定用户所在的群的列表 | @店员 搜索用户 1234567890 | 仅限QQ群可用 |
扫描主群 | - | - | 超管 | 扫描不在主群的子群成员 | @店员 扫描主群 | 仅限QQ群可用 |
自动移除 | 从墓地中除外/满门抄斩/自动踢人 | QQ号/@用户 | 超管 | 在沃频Q群连锁移除指定用户 | @店员 自动移除 1234567890 | 仅限QQ群可用,若店员没有管理员权限,会@管理员提醒协助移除 |
记忆搜索 | 记忆检索/记忆查询 | 关键词 | 管理员 | 查询店员AI长期记忆 | @店员 记忆搜索 橙息是萝莉 | |
记忆删除 | - | ids | 管理员 | 删除店员AI长期记忆,参数为记忆搜索结果中的id,可以为多个,用空格分隔 | @店员 记忆删除 1 2 3 | |
tts | 语音合成 | 文本内容 | 管理员 | 使用店员语音合成生成语音 | @店员 tts 您好,欢迎光临,买? | 在后面加上 "-c" 表示使用粤语语音合成 |
重启 | - | - | 管理员 | 重启店员主进程 | @店员 重启 | |
强制关闭 | - | - | 超管 | 使用mcsm强制终止店员主进程 | @店员 强制关闭 | |
自动宵禁 | - | 开启/关闭 | 管理员 | 开启/关闭自动宵禁功能 | @店员 自动宵禁 开启 | |
触发生日提醒 | - | ?日期 | 管理员 | 手动触发生日提醒 | @店员 触发生日提醒 11-11 | |
管理总结 | 频道管理总结 | ?[时间范围] ?[参数] | 管理员 | 生成频道管理总结 | @店员 管理总结 d | 时间范围参数与词云中的时间范围参数相同 |
微博转发 | 转发微博 | 微博ID | 管理员 | 转发指定微博到📢 动态推送 | @店员 微博转发 123 | |
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"
词云
- 用法:@店员 词云 [时间范围] [选项]
- 时间范围(默认为'1天'):
以下提到的所有沃频子频道不包括店员与用户的私信 词云会自动排除机器人的发言(包括店员和其他已被标记的机器人)
- 可用单位:秒/s、分钟/m、小时/h、天/d、周/w、月/M、年/y
- 格式:数字+单位,例如'1天'、'1周'、'1小时'
- 选项:
- 当前子频道模式('-c'):获取当前子频道的所有用户聊天记录生成的词云
- 用户模式('-u'):获取当前使用指令的用户在所有沃频子频道中的聊天记录生成的词云
- 全子频道模式('-g'):获取所有沃频子频道中所有用户的聊天记录生成的词云
- 注:使用用户模式时,词云默认私信发送给用户,您可以附加'-p'参数来指定发送到当前子频道
- 示例:
- 查看自己1天内在所有沃频子频道中的发言的词云:“@店员 词云 1天 -u”
- 查看本子频道(本群)一周内所有用户的发言的词云:“@店员 词云 1周 -c”
- 查看所有沃频子频道一年内所有用户的发言的词云:“@店员 词云 1年 -g”
微博/B站动态推送的子频道频道/帖子板块/聊群
四、微博动态推送
- 以
图片
的形式自动推送微博@warma的动态到上述频道 - 将动态中的图片逐个提取并发送到上述频道
- 如果动态包含视频,会自动发送视频文件到上述频道(🍬「焦糖星热点」更新推送 除外)
- 将微博文本和图片内容转发给店员AI来生成回复发送到上述频道
五、b站动态推送
- 以
图片
的形式自动推送b站@Warma和@warma养鸽场的动 态/视频投稿到到上述频道 - 将动态中的图片逐个提取并发送到上述频道
- 将动态文本和图片内容转发给店员AI来生成回复发送到上述频道
如果是投稿视频将自动在B站评论区抢热评(根据视频信息/视频字幕来生成评论)
六、MC服务器消息互通
- 在q群:
- 与频道:
- 实现三向消息互通(频道<=>q群<=>MC服务器)
消息互通群中的店员AI系统独立于其他频道,是以游戏玩家身份加入MC服务器,并借助消息互通回答用户或执行命令(已移除mc中的店员,原因:开销过大,效果不佳)
七、问卷审核系统
频道与Q群的验证码不能复用,如需在频道和Q群都加入,请分别填写问卷
- 实现了之前频道的问卷审核系统
- 当申请加入频道沃玛「Warma」或沃玛频道——🍉日常闲聊的时候,用户需要在问卷网页填写问卷并获得验证码
- 用户需要根据不同的平台提交验证码:
- Q群:用户需要将验证码作为入群问题的答案提交入群申请
- 频道:用户需要将验证码发送到子频道⭐「欢迎光临」获取发言权限
- 店员会尝试自动审核收到的问卷
- 若自动审核失败,则自动发送到管理群,由管理员手动审核
- 若用户已加入沃玛频道——🍉日常闲聊,自动通过其加入其他子群的入群申请