一台闲置的Redmi 9i,没有买树莓派,也没有让它继续在抽屉里吃灰。有人把它改造成了一台全天候运行的边缘AI节点,同时兼任本地S3存储和SQLite数据库服务器。整机待机功耗约1.2W,峰值也只有4.2W。

这个项目的核心硬件并不起眼:联发科Helio G25处理器(8颗Cortex-A53核心)、4GB LPDDR4X内存、eMMC 5.1闪存加microSD扩展,以及一块5000mAh内置电池——这块电池在断电时充当了零成本的UPS(不间断电源)。

打开网易新闻 查看精彩图片

软件栈:让安卓系统"闭嘴"

改造的关键在于软件层。作者对安卓系统进行了root,并在其上运行一个Linux chroot环境,同时设置了部分wakelock(唤醒锁),防止安卓系统自带的lowmemorykiller守护进程和Doze省电模式悄悄杀掉后台进程。

语音转文字任务由whisper.cpp(base.en模型)承担,代码针对A53核心编译了ARM NEON SIMD向量指令。大语言模型部分则运行llama.cpp,加载量化后的Qwen 2.5(0.5B Instruct Q4_K_M版本)。

内存管理上,作者写了一个进程内的JIT(即时编译)治理器:闲置模型超过75秒后自动从内存驱逐回磁盘,确保4GB内存永远不会触发OOM(内存耗尽)被杀。存储层采用项目隔离的SQLite(WAL模式),外加一个兼容S3的对象存储,并配有内存热索引。

真正的麻烦:每天一次的断电和僵尸隧道

硬件改造顺利,但真正的挑战来自外部环境。作者所在地区大约每天停电一次。手机自带电池让节点本身不会关机,但下游链路会崩溃:路由器断电、Wi-Fi断开,临时Cloudflare快速隧道会立刻失效,返回HTTP 530错误,或者连接恢复后卡在过期的TCP套接字上。

为了让系统真正实现自愈,作者改用带持久域名的命名隧道,并写了一个后台监督看门狗脚本。每次停电后Wi-Fi一恢复,脚本就会自动刷新失效的套接字状态、拆除僵尸监听器,并重新同步Cloudflare边缘Worker,让数据库、存储和推理端点全部自动恢复,全程无需人工干预。

这套方案的启示

这个项目的价值不在于硬件多强——4GB内存跑0.5B模型,性能上限摆在那里。它展示的是一种思路:旧手机不是电子垃圾,而是一个自带电池、屏幕、Wi-Fi模块的完整Linux设备。对于边缘AI实验、本地数据存储这类低负载场景,它的性价比和功耗表现,可能比专门买一块开发板更务实。

当然,这套方案的门槛也不低:需要root权限、Linux chroot配置、编译优化和网络自愈脚本编写能力。如果你手里正好有一台旧安卓机,又愿意折腾,这或许是一个让电子垃圾重获新生的方向。