0%

部署astrbot

最近龙虾大火,虽然我不觉得龙虾真的能干活,以及我认为龙虾就是个能控制电脑的聊天机器人,虽然不看好龙虾,但是咱二次元可以不养龙虾,我们可以养猫娘。

安装astrbot

astrbot提供了多种安装方式,可以参考官方文档。因为astrbot是可以让机器人控制local环境的,所以我是不想通过docker之类的容器来部署的,我想让它能够直接操作本机的环境,所以我是建议用uv来部署的。先按照官方文档的说明安装好uv,然后执行下面的命令安装astrbot

1
uv tool install astrbot

这里有两个需要注意的地方:

  1. 不建议使用root用户来运行astrbot,因为如果你运行环境选了local,astrbot的机器人执行命令的用户就是你运行的用户,也就是说如果用root来运行,那机器人就会有root权限,所以建议用普通用户或者给astrbot专门建一个用户来使用。
  2. 不要直接运行astrbot init,这个会在你当前目录下面初始化,如果你不想让你的当前目录多出些什么不知道的东西的话就先去建一个astrbot目录然后再初始化
    1
    2
    3
    4
    mkdir astrbot
    cd astrbot
    astrbot init
    astrbot run

run完之后应该是能看见正常启动了,可以通过浏览器访问http://你的服务器IP:6185进入webui,第一次登录用户名和密码都是astrbot,登录之后会叫你改用户名和密码,改完之后先去把左边栏的条目全部点一遍看看熟悉一下界面,然后放着先去整点别的。

注册QQ官方机器人

因为我平常QQ用得比较多,所以这里就说说接入QQ官方机器人使用。很多人都说QQ官方机器人限制比较多,想整那种QQ号的机器人,那种需要用napcat来接入。虽然两种方法我都用过,但是这里只说明QQ官方机器人,不提及napcat的部署,感兴趣的可以自行去查napcat的部署,这里只做两种方法的对比

对比 QQ官方机器人 napcat
稳定性 只要astrbot不掉线就不会掉线(除非腾讯的服务器掉线了) 因为是在服务器上登录自己的QQ号,如果服务器那边的QQ掉线了得自己回去手动登录
主动发信息 本来之前以为官方机器人不能主动发信息,但是其实可以,但是有限制,具体的可以去看文档 主动发消息没有限制
用户信息 看不到用户QQ号和昵称,只能看到一个ID 能看见QQ号和昵称
好友和群 上线之前不能加群和好友 跟正常QQ一样可以加好友加群

另外说明,QQ官方机器人虽然说有个审核和上线,但是你要是不审核上线也是能自己一直用的,以及如果不审核上线的话也不需要公网IP,如果要审核上线的话需要服务器有公网IP,将服务器的IP添加到白名单。

先去QQ开放平台注册,具体注册流程之前没有记录,就自己看着注册吧。注册完颠倒机器人,然后创建机器人,昵称、头像和描述自己随便写,反正能创建就行了,创建完成之后先自己熟悉一下界面,把左边每个条目都点一下看看。

然后可以先把你的QQ机器人加入到自己的消息列表,点左边的使用范围和人员,然后有两个二维码,扫右边那个添加到群和消息列表就可以给机器人发消息了,但是这时候应该是没有反应的(我也没试过不知道是不是真的没有反应)。

astrbot接入QQ官方机器人

在astrbot的webui上点击机器人->创建机器人,消息平台选QQ官方机器人(WebSocket),机器人名称随便写,适配器不知道有什么用,但是我启用了。消息列表单聊肯定要启用的,频道私聊要不要启用看个人,反正我是从来没用过QQ的频道。然后接下来说说appidsecret怎么获取。

回到QQ机器人管理界面,在左边点击开发管理,然后界面应该是这样的。

机器人QQ号不用管,这个没什么用。那个AppID就是我们需要的那个appid,点右边的复制,然后把它粘贴到astrbot的设置里面。然后重点来了,那个Token,作用不明先不要管它,我们需要的是下面那个AppSecret(机器人密钥),注意这个东西是不保存的,你点生成的时候就会生成一个新的,然后旧的就没用了,并且平台也不会保存这个生成的密钥,你必须在生成完之后马上复制然后粘贴回astrbot里。

上面的操作做完之后点保存,然后应该能在机器人里面看见创建的QQ机器人了,但是这时候还用不了,还要接入大模型。

astrbot接入大模型

然后首先,不管是穷鬼还是富哥,强烈建议不要用自己本地的ollama的模型,起码主模型不要用ollama的,ollama的模型首先是不够新,其次是没有工具调用能力,如果设备不行参数再小一点那还很蠢,很影响体验,这个不能将就,还是要吃点好的。

如果是富哥或者能弄到国外的大厂的付费API那肯定最好,如果是跟我一样的穷鬼,那可以白嫖魔搭社区的每日免费额度,每日总共2000次的免费额度日常使用是够了的。

魔搭社区的注册就自己去注册了,好像还要再绑定个阿里云才能免费使用。然后说说怎么接入modelscope,点到个人主页,然后左边点到访问控制,新建访问令牌,然后复制访问令牌。到astrbot的界面点模型提供商,新增选modelscope,API Key里面粘贴刚刚复制的访问令牌,然后点下面的获取模型列表就能看到可用的免费模型了。

然后魔搭社区这么多免费模型选哪个呢,我个人是建议用MiniMax/MiniMax-M2.5,首先能调用工具,而且聪明,最主要的是够新,现在大模型也是日新月异,新是很重要的,但是这个模型的缺点是,每日限额100次,所以最好只用它来对话,其他分析的或者什么选别的模型。

这时候应该是能够使用了,可以先自己给机器人发点信息试试,应该是会有反应(我也没有试过)。

配置管理员和运行权限

首先点到普通配置->AI配置然后一直往下拉,拉到这里

运行环境我觉得local才够酷,玩不起的可以选沙盒模式,不过我没用过。然后打开需要管理员权限,毕竟也不希望别人通过机器人控制自己的电脑(虽然不上线的QQ官方机器人理论上也只有我们自己用),下面那个主动型能力就是可以让机器人自己给自己设定未来任务,就是相当于定时任务了。勾完之后记得在右下角找一下保存配置,点完再干别的。

接下来去设置管理员,如果之前已经给机器人发过消息了可以在左边点击对话数据,应该能看见有一个无标题对话,然后找到会话ID,注意是会话不是对话,是一串32位的十六进制码,中间不带横线的。复制那个对话ID,然后再点到普通配置->平台配置,管理员ID那里点添加更多,然后把我们刚刚复制的那串对话ID粘贴进去,然后记得点确定,然后再点保存配置,这时候应该可以让机器人执行命令了,如果想测试的话可以在机器人能访问到的目录里面塞个文本文件,让它用cat读取一下内容来测试。

将astrbot添加到系统服务

到目前为止我们的astrbot应该都还是在一个shell窗口中运行的,现在先把它ctrl+c终止掉,然后写个服务以及让它开机自启动,创建/etc/systemd/system/astrbot.service文件并写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=AstrBot Service
After=network.target

[Service]
User=运行astrbot的用户
Group=运行astrbot的用户
WorkingDirectory=之前运行astrbot init 的目录
ExecStart=astrbot run
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

然后运行下面的命令来启动和添加开机自启动

1
2
sudo systemctl start astrbot.service
sudo systemctl enable astrbot.service

一些增强体验的设置

首先是人格设定,这个可以去找玩酒馆的或者网上,甚至AI自己生成一段角色设定的提示词,保存完人格设定之后在配置里面选择刚刚添加的那个人格。

插件的话,我朋友装了个天使之心天使之魂,我也装了这两个,然后天使之魂需要设置一下那个记忆整理的模型提供商,随便选个模型就行了,其他的我也不会设置,可以自行研究。

skill的话可以在界面里面上传,也可以在astrbot目录/data/skills直接创建和编写,skill需要符合Anthropic Skills标准。也就是说,如果你的机器人有本地执行权限,且足够新,知道怎么编写skill,你完全可以让它自己给自己写skill,并且写得可能比你自己写的要好。