1. 为什么选择旧安卓手机做智能助手?
家里抽屉总躺着几部退役的安卓机?别急着换不锈钢盆,这些被时代淘汰的设备其实是绝佳的机器人试验场。我去年用一部2016年的红米Note 3成功搭建了全天候运行的QQ助手,实测待机功耗不到5W,比树莓派还省电。
旧手机有三个不可替代的优势:零成本硬件、完整Linux环境和24小时在线能力。Termux这个神器能把安卓变成便携服务器,配合AstrBot的跨平台特性,甚至能实现大模型对话这样的高级功能(当然老机型跑不动最新LLM,但基础自动化完全够用)。最近给邻居家中学生改造的作业提醒机器人,就是用他爸淘汰的华为Mate10实现的,连续稳定运行两个月没重启。
2. 环境准备:Termux的进阶玩法
2.1 安装避坑指南
千万别在Google Play下载Termux!官方早已停止维护,我踩过坑——那个版本连pip都装不上。推荐从F-Droid获取最新版,国内用户可以用清华镜像源加速下载:
wget https://mirrors.tuna.tsinghua.edu.cn/fdroid/repo/com.termux_118.apk安装后先做这三件事:
- 执行
termux-setup-storage获取存储权限 - 运行
pkg update && pkg upgrade更新基础包 - 安装必备工具链:
pkg install python git wget curl proot-distro
2.2 性能优化技巧
老手机内存吃紧?试试我的三阶优化法:
- 第一阶:修改
~/.bashrc添加ulimit -s 256限制栈内存 - 第二阶:用
termux-wake-lock防止系统休眠杀进程 - 第三阶:安装
tmux替代screen,内存占用减少40%
有个冷知识:Termux的proot环境其实比完整Linux轻量得多。我在1GB内存的骁龙615设备上测试,原生Ubuntu会卡死,而proot下的Ubuntu 20.04能流畅运行AstrBot核心功能。
3. AstrBot的定制化部署
3.1 非Root安装Ubuntu
官方推荐用proot-distro安装Ubuntu,但默认源慢到怀疑人生。这里分享我的加速方案:
proot-distro install ubuntu --override-alias astrobot \ --repository https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/安装完成后一定要执行apt install python3.10-venv,否则后续pip安装会报错。遇到过最坑的问题是SSL证书失效,解决方案是:
mkdir -p /etc/ssl/certs && curl -k -o /etc/ssl/certs/ca-certificates.crt https://curl.se/ca/cacert.pem3.2 配置实战经验
克隆AstrBot仓库时,国内用户建议走Gitee镜像:
git clone https://gitee.com/mirrors/AstrBot.git --depth=1启动前务必修改config/config.toml:
[web] host = "0.0.0.0" # 允许局域网访问管理界面 port = 6185 [qq] admin_qq = [你的QQ号] # 重要!不加这个无法执行管理员命令遇到uv启动报错可以尝试替换依赖源:
export UV_DEFAULT_INDEX="https://pypi.tuna.tsinghua.edu.cn/simple" uv pip install -r requirements.txt4. NapCat的Termux特调方案
4.1 一键部署脚本解析
官方安装脚本其实暗藏玄机,这个命令会完成三件事:
curl -sSL https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.termux.sh | bash- 创建
/data/data/com.termux/files/usr/var/lib/napcat专用目录 - 下载预编译的ARM64二进制文件
- 自动配置systemd服务(实际用termux-service模拟)
建议部署完成后立即修改config.yml:
websocket: enabled: true host: 127.0.0.1 port: 6199 access_token: "astrbot" # 必须与AstrBot配置一致4.2 扫码登录的隐藏技巧
老旧手机摄像头模糊?试试这个方案:
- 在电脑浏览器打开
http://<手机IP>:3000 - 电脑端显示二维码后手机扫码
- 执行
termux-notification --id qrscan --title "QQ登录" --content "扫码完成后点击"设置提醒
遇到风控拦截时,在NapCat管理面板开启智能心跳模式,能有效降低封号概率。实测红米K30开启后,连续运行30天无异常。
5. 智能助手实战案例
5.1 自动回复机器人配置
在AstrBot的插件目录plugins/qq下新建autoreply.py:
from astrbot import on_command from astrbot.adapters.qq import MessageEvent @on_command("自动回复", aliases=("自动应答")) async def handle(event: MessageEvent): if "在吗" in event.message: await event.reply("24小时在线中~") elif "天气" in event.message: await event.reply("点击查看实时天气:http://weather.com")然后到WebUI的插件管理页面激活即可。我的读书群就用这个功能自动回复常见问题,节省90%重复劳动。
5.2 群管功能进阶版
结合AstrBot的定时任务,可以实现智能群管理:
from astrbot import scheduler from astrbot.adapters.qq import GroupMessageEvent @scheduler.scheduled_job("cron", hour=9) async def morning_announce(): await bot.send_group_msg( group_id=123456, message="早安打卡开始啦!" ) @on_command("踢人", permission="admin") async def kick_member(event: GroupMessageEvent): if "广告" in event.message: await bot.set_group_kick( group_id=event.group_id, user_id=event.user_id )建议配合关键词过滤使用,在config.toml中添加:
[plugins.qq.filter] banned_words = ["赌博", "兼职", "加微信"] action = "kick" # 或warn/mute/ban6. 长期运行保障方案
6.1 进程守护方案
Termux的后台存活是个老大难问题,推荐组合拳:
- 安装
termux-services包 - 创建
~/.termux/boot/start-astrbot文件:
#!/data/data/com.termux/files/usr/bin/sh termux-wake-lock proot-distro login astrobot -- bash -c "cd AstrBot && uv run main.py"- 执行
chmod +x ~/.termux/boot/start-astrbot
这样手机重启后会自动恢复服务。我在红米Note 5上测试,待机30天耗电仅15%。
6.2 监控与日志
用这个命令查看资源占用:
termux-top -n 1 | grep -E '(astrbot|napcat)'日志自动归档方案:
mkdir -p ~/logs proot-distro login astrobot -- bash -c "cd AstrBot && uv run main.py 2>&1 | tee ~/logs/astrbot-$(date +%Y%m%d).log"遇到内存泄漏时,在config.toml添加:
[runtime] gc_interval = 3600 # 每小时强制垃圾回收7. 常见问题解决方案
Q:NapCat频繁掉线怎么办?A:修改config.yml中的心跳参数:
heartbeat: interval: 30000 # 毫秒 timeout: 10000Q:AstrBot插件加载失败?A:99%的问题是Python依赖冲突,试试:
uv pip install --force-reinstall -r requirements.txtQ:Termux闪退?A:这是安卓内存回收机制导致的,到系统设置-电池优化里把Termux设为"不优化"
最近给家里老人做了个吃药提醒机器人,用2018年的荣耀9X部署,通过QQ自动发送服药提醒。这种旧物改造的成就感,比买新设备有意思多了。