⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/Fight/ollitert-oldphone-local-llm/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

抽屉里大概都躺着一两部旧手机,卖二手不值几个钱,留着又占地方。前几年我也折腾过几轮,装个监控、当下载机、挂网盘,最后都回抽屉继续吃灰。

直到我看到一个叫 OlliteRT 的项目。它把安卓手机变成一个本地大模型服务器,在局域网里开一个和 OpenAI 一样的接口。电脑、NAS、智能家居系统,只要能填一个 API 地址,就能连上手机里的模型。不碰云服务,不要 API Key,数据不出家门。

它基于谷歌的 LiteRT-LM 运行时,代码前身是谷歌官方的 AI Edge Gallery,用 Kotlin 写的,Apache 2.0 协议。作者给它的定位就一句话,安卓上的 Ollama。

仓库首页实时截图,Star 与 Fork 计数同时可见

但我先不急着夸它能跑模型。手机跑大模型这事,两年前就有人在 Termux 里手搓过了。这篇我想聊的是另一个问题,它凭什么值得你一直开着。

能一直挂着,比能跑起来更难

README 头部,标语与三行兼容性徽标

先看它把什么当成目标。官方 README 的开篇是这么写的,把它想成安卓上的 Ollama,挑一个模型、点一下 Start,你的手机就成了一台服务器。

重点在后半句。Ollama 在电脑上受欢迎,不是因为能跑模型,是因为它把模型管理、端口、常驻、日志这些麻烦事收进了一条命令。OlliteRT 抄的是这一整套,只是把机器换成了抽屉里那台旧手机。

所以它做的事能拆成两层。第一层是能不能跑起来,这层由运行时决定。第二层是能不能被长期信任地挂着,这层要看它有没有开关、仪表、账本和门禁。

能跑起来只是门槛,敢让它 24 小时一直挂着才算个产品。

七款模型摆出来,其实是一张内存对照表

模型列表页,点一下就能下载

App 里内置了七款模型,点一下就能下载。也支持自己导入 .litertlm 文件,或者加一个自定义模型源,给个 JSON 文件或链接就行。

作者整理的七款模型配置对照表

模型 体积 最低内存 上下文 支持的能力
Gemma 4 E2B 2.4 GB 8 GB 32K 文字、图片、语音、思考、工具调用
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 文字

两列最值得看。一列是最低内存,官方推荐给普通手机的是 Gemma 4 E2B,但它要 8GB;系统本身的最低门槛是 6GB,那个数字只说明装得上,不等于跑得动推荐的那款。6GB 的机器该看底下那三款小模型。

另一列是上下文。Gemma 4 系列给到 32K,Gemma 3n 和三款小模型只有 1K 到 4K。日常聊天够用,塞长文档就吃力。

拿不准的话,App 里有个自带的 Benchmark,先跑一遍再决定下哪个。这个清单也不是死的,能自己导入,也能加模型源。

一条 API 地址背后,服务器该有的东西它都补了

装好以后你看到的是一条地址,形如 http://192.168.1.176:8000/v1。默认端口是 8000,在设置里能改。这条地址背后,是我觉得这个项目最不像玩具的地方。

状态页,运行时长与吞吐与成功率实时刷新

状态页上,运行时长、请求数、tokens 吞吐、解码速度、成功率全是实时刷新的。官方截图里 Gemma 4 E2B 解码跑到 29.9 tokens/s,加载只要 4 秒。这组数字没标注机型,只能当参考。

日志页,请求级记录带过滤与搜索

日志记到了请求级。每个请求的请求体和响应体都留下来,支持搜索、过滤、JSON 高亮。哪个客户端发了什么、模型回了什么,翻一遍就清楚。

推理参数设置页,每个模型单独存一份

配置项分两组。推理那组,每个模型可单独设温度、最大输出长度、top-k、top-p,还能选跑在 GPU 还是 CPU 上。安全与生命周期那组,监听范围、客户端 IP 白名单、Bearer token 验证、闲置自动卸载模型,都能设。官方 README 专门提醒过,别把服务暴露到公网。

指标还往外开了口子,/metrics 是 29 个 Prometheus 指标,玩 Grafana 的能接进监控大盘。/health 与 /v1/server/config 这些也在,状态的读和写不用自己造轮子。

换客户端基本不用改代码

它对外是标准的 OpenAI 兼容接口,Open WebUI、Home Assistant、Python 脚本、curl,凡是能填 OpenAI 地址的地方基本都能接。它另外还兼容 Anthropic 的 Messages 接口,Claude Code 这类工具也能直连。

不改代码的价值在于迁移成本。你原来接的是哪家云端,把地址换一下就行,提示词、工作流、工具定义都能接着用。

从装 APK 到发出第一个请求

整个流程没什么门槛,花时间的只有等模型下载这一步。

第一步,去 GitHub 的 Releases 页面下 APK 装上。手机要求安卓 12 以上、arm64 架构,2017 年以后的机器基本都满足。内存至少 6GB,想跑多模态模型建议 8GB 往上。另外提醒一句,目前放出来的版本都还是 beta 包。

第二步,打开 App,在模型列表里挑一个点下载。官方推荐 Gemma 4 E2B,2.4GB,8GB 内存的机器就能跑。不想在 App 里下也行,自己准备好 .litertlm 文件导进去。

第三步,在模型卡片上点 Start Server,等几秒模型加载完,服务就起来了,默认监听 8000 端口。

接着把客户端接上。状态页会显示 API 地址,点一下就能复制。不管接什么客户端,要填的都是三样,地址填 http://手机IP:8000/v1,模型名从模型页上抄,API Key 在没开验证的时候随便填一个占位值就行。

拿 Open WebUI 举例,在它的 Settings 的 Connections 里加一条 OpenAI 连接,把地址填上,刷新一下模型就出来了。要注意 Open WebUI 默认不开工具调用,得手动把 Function Calling 打开。

Home Assistant 要多一步,得通过 HACS 装一个自定义集成,作者测下来最省心的是 Custom Conversation,填的还是那三样。接好之后除了对话,还能拿它做语音转文字。

Claude Code 也能直连,设两个环境变量指过去就行。不过作者在文档里提醒过,手机上的模型上下文窗口小,跑不动它那套重型工具调用,建议只当兼容性测试,别指望真拿它干活。

四条硬限制,先看完再决定挂不挂

第一条是并发。它一次只能加载一个模型,请求也是排队处理的,没有并发这回事。当个家庭小助手行,想替代正经的在线服务就别想了。

第二条是模型格式。它只认 .litertlm,不支持 GGUF,手里囤的那些模型一张都用不上。想自己转的话得在 Linux 上跑谷歌的 litert-torch,还要 32GB 以上内存。

第三条是工具调用。它确实做了,但还是实验性质,而且依赖模型本身有没有为函数调用训练过。模型不支持的时候,可以关掉工具 schema 注入,退回提示词兜底。

第四条是发热。手机长时间跑模型肯定会热,作者在 README 里写了句挺逗的话,别把跑着模型的手机塞枕头底下,电池鼓包了他不负责。玩笑归玩笑,旧手机电池老化的居多,打算常开还是留个心眼。

那点电费,和一台常年开着的旧手机

最后算一笔账。手机跑起来功耗大概 5 到 10 瓦,一台显卡服务器动不动 300 瓦往上,差出两个数量级。这就是它敢说自己能 24 小时挂着的底气。

它当然替代不了云端的大模型服务,速度和模型规模都在那摆着。但接进智能家居当本地语音助手,或者给相册打标签、每天汇总一次 RSS,这类一天跑几次、每次只要几秒的小活,它是够的。数据不出家门,对某些场景本身就是理由。

仓库地址是 https://github.com/NightMean/OlliteRT 。它现在五百多 Star,四个多月前才建库,长期维护还得观察。最后交代一句,我没真机装过,性能数字来自官方截图且未标注机型,硬件门槛来自官方 README,想上手建议先拿抽屉里最不心疼的那台机器试。

关注引导图

文章目录
  1. 1. 能一直挂着,比能跑起来更难
  2. 2. 七款模型摆出来,其实是一张内存对照表
  3. 3. 一条 API 地址背后,服务器该有的东西它都补了
  4. 4. 换客户端基本不用改代码
  5. 5. 从装 APK 到发出第一个请求
  6. 6. 四条硬限制,先看完再决定挂不挂
  7. 7. 那点电费,和一台常年开着的旧手机