搭建自己的 QQ 机器人 —— 玩客云折腾

一大堆作业

拥有一个自己的机器人,你需要做一点准备:

  • 一个 QQ 账号作为机器人(当然是小号啦)
  • 一个能接收验证的邮箱
  • 一个能触类旁通脑子和良好的心态

安装前的准备

安装远程文件管理,比如 WinSCP SSH 客户端,为了与 WinSCP 联动可以选择 Putty,但作为颜值党的我选择了 Windows Terminal,可在微软商店下载。

Mirai 安装

因为玩客云无法使用 iTXTech MCL Installer 一键安装环境,因此以下为手动安装步骤,该步骤都在 /root 文件夹下进行操作

  1. 安装 Java
    下载 JDK17 (版本需要大于或等于 11),然后使用 WinSCP 将压缩包上传到服务器,然后依次输入以下命令

    1
    2
    3
    4
    5
    6
    7
    #解压文件到/usr/bin目录下
    tar -xvf zulu17.34.19-ca-jdk17.0.3-linux_aarch32hf.tar.gz -C /usr/bin
    #安装openjdk
    update-alternatives --install /usr/bin/javac javac /usr/bin/zulu17.34.19-ca-jdk17.0.3-linux_aarch32hf/bin/javac 1
    update-alternatives --install /usr/bin/java java /usr/bin/zulu17.34.19-ca-jdk17.0.3-linux_aarch32hf/bin/java 1
    #检查是否安装成功
    java -version&&javac -version

    若看到以下输出则安装成功

  2. 安装 Mirai Console Loader
    中下载最新版本的 MCL,用 WinSCP 创建一个名为 qq 的文件夹,进入 qq 文件夹,将下载的文件拖进去,然后执行下面的命令

    1
    2
    3
    4
    5
    6
    #解压
    unzip mcl-1.2.2.zip
    #赋予mcl文件可执行权限
    chmod +x mcl
    #运行mcl
    ./mcl

    然后等待程序进行自动安装,成功安装的情况大致如下图

    安装成功
    安装成功

  3. 进行登录测试
    论坛上关于登录的题十分不建议在服务器上进行首次登录,如果你介意的话先阅读帖子里的相关事项再可进行操作。无法登录的临时处理方案

    1
    2
    #模拟安卓手机进行临时登录
    /login QQ账号 QQ密码 ANDROID_PHONE

    如下图则为登录成功。红字部分为 Slf4j 相关,不影响使用,如果介意的话可以看下面的项目进行操作。

    登录测试成功
    登录测试成功

  4. 正式登录 QQ 账号

    1
    2
    3
    4
    #正式登录
    /autologin add QQ账号 密码
    #配置该账号自动的登陆设备
    /autologin setconfig QQ账号 protocol ANDROID_PHONE

    成功正式登录并配置
    成功正式登录并配置

  5. 权限管理
    为方便自己后续对插件的管理,建议给足自己权限,就像 Linux 中的 root 账户一样

    1
    /perm permit u你的QQ大号 *:*

    至此 Mirai 安装完毕,输入 stop 即可退出 Mirai 控制台

插件安装

注意 Mirai 只是一个框架,需要通过安装插件以实现各种功能

该步骤都在 /root/qq 下进行,除了输入命令,其余操作均可通过 WinSCP 可视化操作。

首先建议安装这两个插件,提供聊天时对机器人进行控制和其他编程语言的支持,插件会在下次启动 MCL 后完成安装

1
2
./mcl --update-package net.mamoe:chat-command --channel stable --type plugin
./mcl --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin

对于其他插件,我以搭建群聊机器人为例子,茉莉云聊天机器人

先到茉莉云 注册一个账号,注册只需要进行邮箱验证。免费账户只能创建一个机器人,一个知识库(只能添加 100 条词目且只支持文本内容),500 次 API 调用次数。进入控制台创建一个机器人,然后根据自己的喜好填好相关资料,接着在 Api 一栏中获取自己的 ApiKeyApiSecret

创建机器人
创建机器人

填写资料
填写资料

API
API

然后下载茉莉云聊天机器人插件,将 jar 文件上传到 plugins 文件夹中,然后运行一次 MCL,退出,接着进入 config/org.laolittle.plugin.molly.Molly 文件夹,对 MollyConfig.yml 配置文件进行修改,将前面获取的相关 Api 信息填入,其余的根据自己的情况修改

修改配置文件
修改配置文件

现在一个基本的聊天机器人就搭建成功了。借助茉莉云,我们可以方便地在网页控制台对机器人的词库等进行设置

词库设置
词库设置

使用一段时间后会发现机器人有时会将你的聊天指令理解为聊天对话,机器人把本应该做出对应确定的行为变成了不可测的对话,为什么会出现这种回复不准确的结果呢?除了修改聊天指令,还可以设置知识库的权重和准确率,对于两者的区别,官方文档有提到

官方文档

知识库的权重设置有什么用?
用户的每个知识库都可以自己设置它的权重,一共有 5 个档,分别为极低、较低、正常、较高、极高,从左到右,权重依次升高,系统默认的知识库都是正常档。

知识库权重越高,此知识库对应的词库优先级也就越高。比如知识库 A 和知识库 B,都设有一个提问:「你好啊」,假如知识库 A 比知识库 B 的权重高,那么机器人在引用了这两个知识库的情况下,会优先使用知识库 A 对应的回答。

注意:知识库权重高,就不一定此知识库的词库在任何情况下都会优先,还是得看具体都语义,只有语义相近的情况下,才会优先。

提示:知识库权重高不是设置的越高就会越好,请合理设置;

例如,设置系统默认知识库权重是较低档,自己添加一个知识库 A 是极高档,假如用户提问:你今天吃饭了嘛,默认库有一个词库是今天吃饭了没,知识库 A 有一个词库是今天不想吃饭,这个明显默认知识库的回复更合适,但是因为权重设置问题,可能会导致知识库 A 的词库加分高,机器人回复的是知识库 A 的回答;

所以闲聊库与默认库基本一致就行,不需要过多设置,当你的知识库是某垂直领域的问答,这时您才考虑适当调高知识库的权重。

知识库的精确度设置有什么用?

AI 智能聊天插件在回答问题的时候,会计算词库和提问语义的匹配度,匹配度从 0 到 100%,匹配度越高,语义相似度也就越高;

之前知识库没有这个设置,系统有一个默认的匹配度阈值,低于这个值,则不会被触发,当所有词库都没有达标,则机器人使用万金油回复;

现在这个设置加上之后,用户可以自己控制这个精确度(也就是匹配度阈值),精确度设置最低值为 10%,最高为 100%,100% 表示知识库的词库和提问完全匹配才会触发,请谨慎设置,这将影响机器人的回复结果。

提示:知识库精确度不是设置的越高就会越好,请合理设置;

例如,设置知识库 A 的精确度为 100%,假如用户提问:你今天吃饭了嘛,知识库 A 有一个词库是今天吃饭了没,这个匹配度大概有 80% 左右,但是小于知识库 A 的精确度设定,则不会被触发;

所以知识库一般情况精确度默认就行了,不需要过多设置,当你的知识库需要高精度匹配,甚至要求词库与提问语句完全相同时,这时您才考虑适当调高知识库的精确度。

进程守护

如果不需要查看控制台中的详细信息或者开机自启,可通过 Systemd 进行管理

1
2
# 编辑配置文件
vim /etc/systemd/system/qq.service

加入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=MCL
After=network.target
Wants=network.target

[Service]
WorkingDirectory=/root/qq
ExecStart=/root/qq/mcl
Restart=on-abnormal
RestartSec=5s
KillMode=mixed

StandardOutput=null
StandardError=syslog

[Install]
WantedBy=multi-user.target

启用服务

1
2
3
4
5
6
# 更新配置
systemctl daemon-reload
# 启动服务
systemctl start qq
# 设置开机启动
systemctl enable qq

管理命令

1
2
3
4
5
6
7
8
# 启动服务
systemctl start qq
# 停止服务
systemctl stop qq
# 重启服务
systemctl restart qq
# 查看状态
systemctl status qq

结尾

更多玩法和插件可以自己上 Mirai 论坛浏览探索,我这里只是简单介绍一下。另外因为机器人可以看到所有消息记录,即使玩客云在局域网中运行,也一定要做好基本服务器的安全防护!

参考资料

Arm-Linux 设备安装 JDK 总结
Cloudreve 进程守护
Mirai docs

  • 标题: 搭建自己的 QQ 机器人 —— 玩客云折腾
  • 作者: 一大堆作业
  • 创建于 : 2022-02-13 00:00:00
  • 更新于 : 2022-02-13 00:00:00
  • 链接: https://blog.zuoye.win/post/da-jian-zi-ji-de-qq-ji-qi-ren-wan-ke-yun-zhe-teng/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
搭建自己的 QQ 机器人 —— 玩客云折腾