旧手机别扔!三台安卓手机搭建本地大模型实战指南
从 4GB 老爷机到 12GB 千元机,手把手教你在手机上跑 Ollama,搭建私有 AI 服务器
写在前面
很多人以为跑大模型必须买显卡、配服务器。但其实,你抽屉里吃灰的旧手机就能跑。
我手头有三台安卓设备,配置从弱到强:华为畅享 9 Plus(4GB)、OnePlus 3(6GB)、vivo Y300i(12GB)。经过一周折腾,全部成功部署 Ollama,实现了手机端本地推理。
这篇文章把整个过程记录下来,包括硬件选型、模型选择、常见坑和最终推荐配置。
一、硬件清单:三台设备概况
| 设备 | RAM | 处理器 | 系统 | 定位 |
|---|---|---|---|---|
| vivo Y300i | 12GB | 天玑 | Android + Termux | 日常随身机,性能最强但会带出门 |
| OnePlus 3 | 6GB | 骁龙 820 | Kali NetHunter | 固定 7×24 局域网服务器 |
| 华为畅享 9 Plus | 4GB | 麒麟 710 | EMUI + Termux | 极弱,勉强跑 |
关键结论:
- 12GB 内存(vivo Y300i):可以流畅跑 7-8B 模型,体验接近 GPT-3.5。但这是日常主力手机,会带出门,所以不能当固定服务器。
- 6GB 内存(OnePlus 3):刷了 Kali 不吃灰,跑 3-4B 模型刚好。这才是真正的 7×24 服务器——扔家里插着电,电脑随时连。
- 4GB 内存(华为):只能跑 0.5B 极限小模型,聊胜于无。
二、环境准备
2.1 安装 Termux(普通安卓)
# 通过 F-Droid 安装 Termux(不要用 Google Play 版本,太旧)
# 安装后更新并安装基础工具
pkg update && pkg upgrade
pkg install wget proot # proot 用于运行 Linux 环境
2.2 Kali NetHunter(OnePlus 3 专属)
OnePlus 3 刷了 Kali NetHunter,自带完整 Linux 环境,不需要 Termux 那一层。
作为固定服务器优势明显:
- 不日常使用,可以一直插电丢家里
- 骁龙 820 功耗低,24 小时开着不心疼
- 完整 Linux,跑
ollama serve暴露给局域网,电脑随时连
2.3 安装 Ollama
# 所有设备通用安装命令
curl -fsSL https://ollama.com/install.sh | sh
# 安装后验证
ollama --version
如果官方脚本不兼容(常见于 ARM 设备),手动下载 ARM64 二进制:
# 下载 ARM64 版本
wget https://github.com/ollama/ollama/releases/latest/download/ollama-linux-arm64.tar.gz
tar -xzf ollama-linux-arm64.tar.gz
# OnePlus 3 手动安装示例
mkdir -p ~/Ollama/bin
mv ollama ~/Ollama/bin/
三、模型选型与 L 等级
3.1 什么是 L 等级
L 等级是我根据社区经验和实测得出的能力分级:
| 等级 | 能力描述 | 对标 |
|---|---|---|
| L1 | 闲聊、讲笑话、极简单问答 | 无 |
| L2 | 知识问答、简单写作、基础理解 | GPT-3 |
| L3 | 复杂推理、代码生成、长文写作 | GPT-3.5 |
| L4 | 强推理、专业代码、接近人类专家 | GPT-4o / Claude Sonnet |
手机端一般能达到 L2-L3,日常使用足够了。
3.2 vivo Y300i(12GB)可用模型
| 模型 | 大小 | L等级 | 拉取命令 |
|---|---|---|---|
| qwen3:8b | 5.2GB | L3+ | ollama pull qwen3:8b |
| qwen2.5-coder:7b | 4.7GB | L3 | ollama pull qwen2.5-coder:7b |
| qwen2.5-coder:14b | 9.0GB | L3+ | ollama pull qwen2.5-coder:14b |
| qwen3:14b | 9.3GB | L3+ | ollama pull qwen3:14b |
| qwen3:4b | 2.5GB | L2+ | ollama pull qwen3:4b |
推荐组合:
ollama pull qwen3:8b # 通用主力,综合能力强
ollama pull qwen2.5-coder:7b # 写代码专用
14B 虽然能跑但接近内存上限,推理速度会明显下降,不太推荐。
3.3 OnePlus 3 Kali(6GB)可用模型
| 模型 | 大小 | L等级 | 拉取命令 |
|---|---|---|---|
| qwen3:4b | 2.5GB | L2+ | ollama pull qwen3:4b |
| qwen2.5-coder:3b | 1.9GB | L3 | ollama pull qwen2.5-coder:3b |
| qwen3:1.7b | 1.4GB | L2 | ollama pull qwen3:1.7b |
| qwen2.5-coder:1.5b | 986MB | L2 | ollama pull qwen2.5-coder:1.5b |
| qwen3:0.6b | 523MB | L1 | ollama pull qwen3:0.6b |
| tinyllama:1.1b | 638MB | L1 | ollama pull tinyllama |
推荐组合:
ollama pull qwen3:4b # 主力通用
ollama pull qwen2.5-coder:3b # 代码专家(这反而是 L3!)
注意:6GB 跑不了 8B 模型(需要 5.5GB 内存,系统不够用)。
3.4 华为畅享 9 Plus(4GB)可用模型
| 模型 | 大小 | L等级 | 拉取命令 |
|---|---|---|---|
| qwen2.5-coder:0.5b | 398MB | L1 | ollama pull qwen2.5-coder:0.5b |
| qwen3:0.6b | 523MB | L1 | ollama pull qwen3:0.6b |
| tinyllama:1.1b | 638MB | L1 | ollama pull tinyllama |
唯一实用选择:qwen2.5-coder:0.5b,能做简单代码补全。说实话 4GB 设备跑大模型的体验很差,建议考虑卖掉换钱。
四、启动与联网
4.1 暴露到局域网
默认情况下 Ollama 只监听 127.0.0.1,其他设备无法访问。需要修改启动参数:
# 暴露给局域网(所有设备都能连)
OLLAMA_ORIGINS=* OLLAMA_HOST=0.0.0.0:11434 ollama serve &
# OnePlus 3(手动安装版)
OLLAMA_ORIGINS=* OLLAMA_HOST=0.0.0.0:11434 ~/Ollama/bin/ollama serve &
4.2 获取手机 IP
# Termux / Kali 通用
ip addr show wlan0 | grep "inet " | awk '{print $2}'
# 输出类似:192.168.1.10/24 → IP 是 192.168.1.10
重要提醒:vivo Y300i 是随身机,每次出门再回家连上 WiFi,IP 大概率已经变了。路由器里绑定 MAC 地址可以固定家里 WiFi 的 IP,但出门连其他网络回来后能否拿到同一个 IP 取决于路由器。每次连之前最好确认一下当前 IP。
OnePlus 3 就没这个问题——它不出门,IP 是固定的。
4.3 从电脑连接
电脑端通过 Chatbox 等客户端连接手机上的 Ollama:
# 在电脑上测试连接(连 OnePlus 3 固定服务器最方便)
curl http://192.168.1.x:11434/api/tags
4.4 SSH 远程管理
# 从电脑 SSH 到 vivo(Termux)
ssh u0_a155@192.168.1.x -p 8022
# 从电脑 SSH 到 OnePlus 3(Kali,默认 22 端口)
ssh root@192.168.1.x
五、Chatbox 连接配置
Chatbox 是手机上常用的 AI 聊天客户端。
连接方式:选择「Ollama 原生模式」,不要选「OpenAI Compatible」。
| 配置项 | 值 |
|---|---|
| 协议 | HTTP |
| 主机 | 你手机的 IP(OnePlus 3 固定,vivo 每次查一下) |
| 端口 | 11434 |
| 模型路径 | 自动识别(不需要填 /v1) |
常见错误:如果选了 OpenAI 格式,会返回 403 错误——Chatbox 发的是 /v1/chat/completions,Ollama 不认。
六、踩坑实录 —— 我亲自趟过的雷
整个部署过程横跨三台设备、两种系统(Android Termux + Kali NetHunter),踩过的坑比成功多得多。以下是完整的「翻车记录 + 修复过程」。
坑① 第一次就跑 bf16 模型,直接被 OOM Kill
场景:vivo Y300i(12GB),满怀期待地在 Termux 里执行了第一条命令:
ollama run qwen3.5:2b-bf16
报错:
signal: killed
原因:bf16(bfloat16)是 HuggingFace 上的原始权重格式,qwen3.5:2b-bf16 并非 Ollama 标准 tag(标准 tag 是 qwen3.5:2b,默认 q4_K_M 量化)。bf16 加载到内存后实际占用 5-6GB,Android 的 OOM Killer 检测到进程吃太多内存,直接杀掉。
后来不死心又试了一次,这次侥幸加载成功了,但推理到一半又炸了:
unexpected EOF
——内存不够了,进程在回答中途被系统一刀切,连接断开。
修复:永远不要用 bf16 格式。手机上只能用 q4_K_M 或更低的量化版本。最终换成了 qwen2.5-coder:7b(q4_K_M),12GB 手机完美运行。
教训:手机上不跑任何非量化模型。q4_K_M 是甜点,q3_K_M 也能用但质量下降明显。
坑② 以为量化标签要写全,结果根本搜不到模型
场景:在 vivo 上拉模型,手写了完整量化标签:
ollama pull qwen2.5-coder:7b-instruct-q4_K_M
ollama pull qwen3:8b-q4_K_M
结果:前者拉下来了(碰巧 Ollama 做了模糊匹配),但后者和各种带 -instruct-q4_K_M 后缀的都严重混乱,根本不确定自己拉的是什么。
原因:Ollama 的官方拉取命令是不带量化标签的,写 qwen3:8b 就行,它会自动选最优量化版本(默认就是 q4_K_M)。
修复:统一用最简名称:
ollama pull qwen3:8b # ✅ 正确
ollama pull qwen2.5-coder:7b # ✅ 正确
ollama list 可以查看已安装模型的精确信息。
坑③ 把不存在的东西当存在,浪费大量时间搜索
这是最尴尬的坑——在 Ollama 官网上反复核实之前,推荐了多个根本不存在的模型。
| 我推荐过的(误报) | 真相 |
|---|---|
qwen3-coder:8b | qwen3-coder 系列只有 30B 和 480B,没有 8B |
qwen3-coder:8b-q4_K_M | 同上,不存在 |
tinyllama:1.1b-q4 | 正确名称是 tinyllama 或 tinyllama:1.1b,没有 -q4 tag |
OnePlus 3 跑 qwen3:8b | 一开始兴奋地说 6GB 能跑 8B,算完才发现 5.5GB 模型 + 系统开销 ≈ 6.5GB,根本不够 |
修复:去 ollama.com/search 逐模型核实。现在这篇文章里的所有模型名称都已验证。
坑④ OnePlus 3(Kali NetHunter)拉模型报 file does not exist
场景:OnePlus 3 刷了 Kali NetHunter,手动下载了 ARM64 版 Ollama 放在 ~/Ollama/bin/ 目录。执行拉取命令:
./bin/ollama pull qwen3:4b
报错:
Error: pull model manifest: file does not exist
原因:根本乌龙——ollama serve 没启动。普通 Termux 安装后 service 自动启动,但手动安装版必须手动启动服务。没 serve 就 pull,Ollama 找不到本地模型存储路径。
修复:
# 先启动服务
~/Ollama/bin/ollama serve &
# 再拉模型
~/Ollama/bin/ollama pull qwen3:4b
教训:Kali NetHunter 手动安装 Ollama 后,每次开机都要先 serve,且必须用全路径——系统不在 PATH 里。
坑⑤ Chatbox 连不上,一直 403
场景:手机端装好 Chatbox,想连上 vivo 的 Ollama。
Chatbox 的「添加模型」里有一个「OpenAI Compatible」选项。我心想 Ollama 的 API 格式不就是兼容 OpenAI 的吗?果断选了。
填上 http://192.168.1.11:11434/v1,点击测试连接——403 Forbidden。
原因:选 OpenAI Compatible 模式后,Chatbox 实际发的请求路径是 /v1/chat/completions。但 Ollama 的 API 路径是 /api/chat,完全不同。
修复:在 Chatbox 中选择 「Ollama 原生模式」(不是 OpenAI Compatible),协议填 HTTP,端口填 11434,模型路径留空让它自动识别。
坑⑥ 下载中断留下损坏文件,死活拉不下来
场景:vivo 上拉 qwen3:8b,网络波动导致下载中断。重新执行 ollama pull,每次都报错:
Error: pull model manifest: unexpected EOF
原因:中断留下了 .partial 损坏文件,Ollama 检测到已有文件就直接用了,导致每次都读损坏数据。
修复:
# 清理所有损坏的部分下载文件
rm -f ~/.ollama/models/blobs/*partial*
# 重新拉取
ollama pull qwen3:8b
坑⑦ 华为畅享 9 Plus 高估,以为能跑 1.5B 模型
场景:拿到华为畅享 9 Plus(4GB RAM)时想,虽然内存小但跑个 qwen2.5-coder:1.5b(约 1GB)总行吧?
结果拉是拉下来了,跑起来直接卡到手机发烫,终端一个字一个字往外蹦,比打字还慢。
原因:4GB 内存里系统就占了接近 2GB,剩下不到 2GB 可用。1.5B 的 q4 模型加载需要约 1.5GB,再加上推理时的上下文缓冲,内存直接爆炸,触发 swap 疯狂读写闪存。
修复:认命。4GB 设备唯一能用的就是 qwen2.5-coder:0.5b(398MB),输出质量勉强能看,做简单代码补全还行。旁边 6GB 的 OnePlus 3 跑 3B 模型都流畅,这就是硬件的残酷。
坑⑧ OLLAMA_HOST 忘了加 OLLAMA_ORIGINS
场景:服务启动成功,curl http://手机IP:11434/api/tags 在电脑上能返回数据。但 Chatbox 或其他 Web 客户端连过去就是报跨域错误。
原因:只设了 OLLAMA_HOST=0.0.0.0:11434 开放网络,但没设 OLLAMA_ORIGINS=* 允许跨域请求。Chatbox 前端发的是浏览器请求,浏览器有 CORS 限制。
修复:
# 两个环境变量要一起设
OLLAMA_ORIGINS=* OLLAMA_HOST=0.0.0.0:11434 ollama serve &
# ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# 允许跨域 允许局域网访问
# 缺一不可! 缺一不可!
踩坑总结
| 编号 | 坑 | 关键词 | 血泪指数 |
|---|---|---|---|
| ① | bf16 直接 OOM Kill | 量化格式 | 🩸🩸🩸 |
| ② | 量化标签写太全反而搜不到 | 模型名称 | 🩸🩸 |
| ③ | 推荐不存在的模型 | 模型名称 | 🩸🩸🩸🩸 |
| ④ | OnePlus 3 忘记 serve 就 pull | 手动安装 | 🩸🩸🩸 |
| ⑤ | Chatbox 选错模式 403 | 客户端连接 | 🩸🩸 |
| ⑥ | 下载中断 partial 损坏 | 网络 | 🩸🩸 |
| ⑦ | 高估 4GB 手机能力 | 硬件上限 | 🩸🩸🩸 |
| ⑧ | 忘记设 OLLAMA_ORIGINS | CORS | 🩸🩸 |
如果这些坑能帮你少走弯路,那这周折腾就值了。
七、最终推荐方案
vivo Y300i(随身机)
vivo 是日常主力机,会带出门。所以在家时它是最强推理设备,出门后电脑就连不上了。
# 在家时的启动命令
OLLAMA_ORIGINS=* OLLAMA_HOST=0.0.0.0:11434 ollama serve &
📱 手机端用 Chatbox 选 Ollama 原生模式,地址填 127.0.0.1:11434——不管有没有 WiFi 都能连,因为是本机回环。
OnePlus 3 Kali(固定 7×24 服务器)
这才是真正好用的方案——扔家里插着电,装上模型后就一直开着,电脑随时连。
# 安装
~/Ollama/bin/ollama pull qwen3:4b # L2+ · 通用主力
~/Ollama/bin/ollama pull qwen2.5-coder:3b # L3 · 代码专家
# 设为开机自启(写入 rc.local 或 crontab @reboot)
OLLAMA_ORIGINS=* OLLAMA_HOST=0.0.0.0:11434 ~/Ollama/bin/ollama serve &
优势:骁龙 820 功耗低,24 小时开着不心疼。IP 固定,电脑端配一次就一劳永逸。
华为畅享 9 Plus(放弃或极限使用)
ollama pull qwen2.5-coder:0.5b # L1 · 唯一实用
诚实建议:卖掉换钱。4GB 设备跑模型的体验太差了。
八、总结
| 设备 | 主力模型 | L等级 | 定位 | 实用场景 |
|---|---|---|---|---|
| vivo Y300i | qwen3:8b | L3+ | 随身机 | 在家时最强推理 + 出门自己用 Chatbox 连本机 |
| OnePlus 3 | qwen3:4b | L2+ | 固定服务器 | 7×24 不关机,电脑手机随时连 |
| 华为畅享 9 | 0.5b | L1 | 放弃 | 已无实用价值 |
几个关键认知:
- 6GB 是实用门槛——低于这个配置体验很差
- 8B 模型是甜点——能力接近 GPT-3.5,12GB 手机就能跑
- q4_K_M 量化最稳——兼顾质量与内存
- 随身机 + 固定服务器是最好的组合——家里跑推理用最强配置的 vivo,出门后 OnePlus 3 继续服务
- OnePlus 3 刷 Kali 是意外惊喜——功耗低、不出门、完整 Linux,完美 7×24 服务器
旧手机不需要吃灰。刷个 Kali,装个 Ollama,它就是你的私有 AI 服务器。
最后更新:2026-06-22
附录:模型名称验证记录
以下所有推荐模型均已通过 ollama.com 逐一核实(核查日期:2026-06-22):
| 模型名称 | 官方页面 | 验证状态 |
|---|---|---|
qwen3:0.6b | ollama.com/library/qwe… | ✅ 523MB |
qwen3:1.7b | ollama.com/library/qwe… | ✅ 1.4GB |
qwen3:4b | ollama.com/library/qwe… | ✅ 2.5GB |
qwen3:8b | ollama.com/library/qwe… | ✅ 5.2GB |
qwen3:14b | ollama.com/library/qwe… | ✅ 9.3GB |
qwen2.5-coder:0.5b | ollama.com/library/qwe… | ✅ 398MB |
qwen2.5-coder:1.5b | ollama.com/library/qwe… | ✅ 986MB |
qwen2.5-coder:3b | ollama.com/library/qwe… | ✅ 1.9GB |
qwen2.5-coder:7b | ollama.com/library/qwe… | ✅ 4.7GB |
qwen2.5-coder:14b | ollama.com/library/qwe… | ✅ 9.0GB |
tinyllama | ollama.com/library/tin… | ✅ 638MB |
tinyllama:1.1b | ollama.com/library/tin… | ✅ 同上(latest 即 1.1b) |