把旧手机变成一台本地模型服务器,这件事其实比想象中简单。
每天总有那么几件零碎活儿要处理:抓取几个 RSS 源、给相册照片打标签、接几条智能家居的控制指令。每件事耗时不过几秒钟,但总得有个东西一直挂着。专门为这点小事开一台电脑,怎么算都不划算。
最近在 GitHub 上发现了一个思路挺巧的项目——OlliteRT,直接把闲置的安卓手机变成一台本地推理服务器。

这个项目叫 OlliteRT,作者的思路很简单:对标 Ollama 的使用体验——在手机上跑模型,同时开一个兼容 OpenAI 的 HTTP 接口,局域网里其他设备填个地址就能直接调用。
01 它靠什么跑起来
底层用的是谷歌的 LiteRT-LM 运行时,推理直接调用手机自身的GPU或CPU。对外暴露一个 HTTP 服务,Apache-2.0 协议开源。
项目本身是在谷歌 AI Edge Gallery 的基础上改造的,并不是从零开发。
模型下载完成后,断网也能正常使用。数据全部在手机本地处理,官方明确表示不收集数据,代码里也没有统计逻辑。
02 模型选择:先看手机内存够不够
模型来源有三种方式:
- 应用内置清单直接下载,文件托管在 HuggingFace 的 LiteRT 社区
- 导入手机里已有的
.litertlm 文件
- 自定义模型源,填 JSON 或 URL,大约每 24 小时刷新一次
内置清单目前有七个模型可选:
| 模型 |
大小 |
最低内存 |
上下文 |
能力 |
| Gemma 4 E2B |
2.4 GB |
8 GB |
32K |
文本、图片、音频、思考、工具、MTP |
| Gemma 4 E4B |
3.4 GB |
12 GB |
32K |
同上 |
| Gemma 3n E2B |
3.4 GB |
8 GB |
4K |
文本、图片、音频 |
| Gemma 3n E4B |
4.6 GB |
12 GB |
4K |
文本、图片、音频 |
| Gemma 3 1B |
0.5 GB |
6 GB |
1K |
纯文本 |
| Qwen 2.5 1.5B |
1.5 GB |
6 GB |
4K |
纯文本 |
| DeepSeek-R1 1.5B |
1.7 GB |
6 GB |
4K |
纯文本 |
这里有个容易误判的地方。标题说 6GB 内存能跑,指的是最低门槛,只有最下面三个小模型符合。官方推荐的 Gemma 4 E2B 最低要 8GB,E4B 要 12GB——这两个支持多模态,能看图、能听音频,回答前还会先输出一段推理过程。

手机内存只有 6GB 的话,别一上来就选 E2B。
Gemma 4 还有个 MTP 功能,一次预测多个词,出字速度会明显提升,需要在模型设置里手动开启。
03 客户端基本不用改
这是它做得比较到位的地方。
OpenAI 的 chat/completions、completions、responses 全都支持,音频转写接口也有,连 Anthropic 的 messages 接口都兼容了,流式和非流式都能用。模型列表和健康检查端点也齐了。
所以手头现成的工具基本不用动:
- Python 里用 OpenAI 官方 SDK,把
base_url 指向手机就行
curl 直接调用没问题
- Open WebUI 填个地址就能连上
有人把 NAS 上几个定时任务的接口地址改了一下,任务直接跑起来了。
两个需要注意的点
工具调用目前是实验性质,在 Gemma 4 上效果最好,小模型不一定能稳定按格式返回。默认走 schema 注入,不行可以在设置里关掉,退回提示词解析的方式。
Home Assistant 还需要额外配置,要装自定义集成,语音指令还要再配一个转写组件,不是填个地址就能用。
04 状态、日志、指标一应俱全
服务跑起来后,状态页上有实时数据:运行时长、请求数、输入输出 token、出字速度和峰值、首字延迟、成功率。

还有一个可拖动的悬浮窗,手机放在一边当服务器时,瞟一眼就知道服务是否还在跑。
日志页记录每次请求和响应,支持按方法或状态码过滤,能搜关键词,JSON 带语法高亮。每条日志下方有一排标记:耗时、是否流式、是否开启思考、输入 token 占上下文比例——快满时数字会变黄变红。

除了应用内的界面,它还有 /metrics 端点,输出 29 个 Prometheus 格式指标,家里跑 Grafana 可以直接接入。
Home Assistant 除了调用模型,还能通过内置 REST 接口远程查看状态、切换模型、修改设置。
内置的 Benchmark 功能,可以在同一台手机上把几个模型挨个测一遍,比较长输入处理速度、出字速度和加载速度。
05 常驻运行的几个关键开关
每个模型可以单独保存推理参数,温度、top-k、top-p、最大输出长度都按模型存储,重启后依然生效。加速器可在 GPU 和 CPU 间切换,默认 GPU,有问题再换 CPU。修改最大输出长度或加速器会触发模型重载。

要让手机像小服务器一样常驻,三个开关值得打开:
闲置自动卸载:设定时间,比如 5 分钟无请求就把模型从内存卸载,内存还给系统。下个请求进来会自动重新加载,代价是这次会慢几秒。手机还要干别的活时,这个功能很实用。
开机自启:选默认模型打开开关,手机重启后服务自动启动。前提是关闭电池优化,否则安卓后台可能直接杀掉进程。
常驻通知:靠前台通知保住后台服务,通知栏有停止服务和复制地址两个按钮。
三个都配好,这台手机基本就是个免维护的设备。
06 安装三步,但别放公网
从 GitHub Releases 下载 APK 安装,打开后在模型列表选一个下载,完成后点模型卡片上的 Start Server,状态页会显示地址,一般是 http://手机IP:8000/v1。填进客户端即可。
目前发布的都是 beta 版本,最新是 v0.9.7-beta.1,安装包三十几 MB。
硬件要求
- 安卓 12 以上
- arm64 架构
- 内存最低 6GB,多模态建议 8GB 以上
2017 年后的安卓机基本都是 arm64,模拟器和 x86 设备不支持。
接口支持 bearer token 验证,开启后无 token 请求返回 401。也能设置客户端 IP 访问规则,只放行家里设备,监听范围可调。
官方文档特别强调:不要通过端口映射暴露到公网。没有 HTTPS,token 验证也只是基础防护。适用场景就是局域网。
07 几个硬限制
- 一次只能加载一个模型,请求排队处理,不适合多人共用
- 只支持
.litertlm 格式,不认 GGUF,llama.cpp 和 Ollama 的模型文件用不了
- token 计数按字符数除以四估算,英文还行,代码和多语言会偏,不能用来算费用
- 本地导入模型会复制文件到应用目录,占双倍空间,导入后记得删原文件
- 移动端运行时的限制,logprobs、语法约束输出、重复惩罚、LoRA 这些都没有
只跑推理的话,够用了。
08 适合当什么用
替代正经推理机器不现实——一次一个模型、请求排队,这个限制绕不过去。
但放在特定场景下刚好:任务碎、量小、不想开电脑、数据不想外传,加上监控、日志、权限、自启都有,当常驻服务没问题。
家里有闲置安卓机的话,可以装一个试试。更多本地化 AI 部署的玩法,来云栈社区聊聊。