Termux:在手机上跑Python AI应用的真实体验

我一直有个执念:能不能在手机上跑 AI 助手?不是调用云端 API,而是本地运行。

上周末我终于折腾成功了,用 Termux 在手机上跑起了 Python AI 应用。体验嘛......有惊喜,也有坑。

什么是 Termux?

Termux 是 Android 上的一个终端模拟器,但它不只是个终端------它是一个完整的 Linux 环境。

装上 Termux,你可以在手机上:

  • 运行 Python、Node.js、Ruby
  • 安装 apt 包(是的,真正的 apt)
  • 用 pip 安装 Python 库
  • 甚至跑 PostgreSQL、Nginx

对于想在手机上搞开发的程序员来说,Termux 就是神器。

安装配置:从零开始

第一步:安装 Termux

从 F-Droid 下载(别从 Play Store 下,那个版本太老了):

https://f-droid.org/packages/com.termux/

第二步:换源

国内直接用官方源很慢,换成清华源:

bash 复制代码
# 在 Termux 里执行
termux-change-repo
# 选择 Single mirror,然后选 mirrors.tuna.tsinghua.edu.cn

第三步:更新包管理器

bash 复制代码
pkg update && pkg upgrade

第四步:安装 Python

bash 复制代码
pkg install python
pkg install python-numpy  # 如果需要 numpy

第五步:安装 pip 包

bash 复制代码
pip install requests
pip install openai
pip install litellm

到这里,基本的 Python 环境就有了。

跑个 AI 助手试试

我写了个简单的 AI 助手脚本:

python 复制代码
# ai_assistant.py
from openai import OpenAI

client = OpenAI(
    base_url="https://api.openai.com/v1",
    api_key="your-api-key"
)

def chat(message):
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": message}]
    )
    return response.choices[0].message.content

if __name__ == "__main__":
    while True:
        user_input = input("你: ")
        if user_input.lower() in ["exit", "quit"]:
            break
        reply = chat(user_input)
        print(f"AI: {reply}")

运行:

bash 复制代码
python ai_assistant.py

能跑!但是......每次请求都要等好几秒,体验一般。

性能实测:手机 vs 笔记本

我做了个简单测试,调用同一个 API 100 次:

设备 平均响应时间 成功率
小米 14 (Termux) 3.2s 98%
MacBook Pro M1 2.8s 100%

差距不大,主要是网络延迟。但如果是本地模型......

本地模型?想多了

我试过在 Termux 里跑 Ollama,结果:

复制代码
ollama run llama2
Error: cannot allocate memory

手机内存不够,而且 Termux 不支持 GPU 加速。本地大模型基本没戏。

但是!小模型可以跑:

bash 复制代码
pip install transformers
python 复制代码
from transformers import pipeline

# 用 CPU 跑小模型
classifier = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("I love Termux!")
print(result)  # [{'label': 'POSITIVE', 'score': 0.9998}]

能跑,但速度感人。一条文本分类要 2-3 秒。

Termux 的优势场景

虽然跑不了大模型,但 Termux 在这些场景很有用:

1. 轻量级脚本

python 复制代码
# 每天早上推送天气
import requests
import json

def get_weather(city):
    url = f"https://wttr.in/{city}?format=j1"
    resp = requests.get(url)
    data = json.loads(resp.text)
    return data["current_condition"][0]

# 用 Termux:Task 插件,可以在通知栏显示结果

2. 远程控制

python 复制代码
# 通过 SSH 连接到服务器
import paramiko

client = paramiko.SSHClient()
client.connect("my-server.com", username="user", password="pass")
stdin, stdout, stderr = client.exec_command("ls -la")
print(stdout.read().decode())

3. 数据处理

python 复制代码
import pandas as pd

# 处理 CSV 文件
df = pd.read_csv("data.csv")
result = df.groupby("category").sum()
result.to_csv("output.csv")

踩坑记录

坑1:pip 安装失败

有些包需要编译,Termux 缺少头文件。

解决:安装编译工具

bash 复制代码
pkg install clang python-dev

坑2:存储权限

Termux 默认只能访问自己的目录。

解决:

bash 复制代码
termux-setup-storage
# 授权后可以访问 /sdcard/

坑3:后台运行

手机锁屏后 Termux 会被杀掉。

解决:用 tmuxnohup

bash 复制代码
pkg install tmux
tmux new -s ai
python ai_assistant.py
# Ctrl+B, D 分离会话

坑4:输入法问题

中文输入在某些情况下会乱码。

解决:用外接键盘,或者用 SSH 从电脑连接手机。

Termux + AI 的最佳实践

经过一番折腾,我的结论是:

手机端 :跑轻量级脚本,做数据采集、API 调用、远程控制
云端:跑大模型,提供 API 服务

架构:

复制代码
手机 Termux <--HTTP--> 云端 AI 服务 <--LLM--> 大模型

这样既利用了手机的便携性,又不用担心性能问题。

实际项目:手机上的 AI 助手

我做了个简单的项目:

python 复制代码
# mobile_assistant.py
import requests
import json

class MobileAssistant:
    def __init__(self, api_base, api_key):
        self.api_base = api_base
        self.api_key = api_key
    
    def chat(self, message):
        """调用云端 AI"""
        resp = requests.post(
            f"{self.api_base}/v1/chat/completions",
            headers={"Authorization": f"Bearer {self.api_key}"},
            json={
                "model": "gpt-3.5-turbo",
                "messages": [{"role": "user", "content": message}]
            }
        )
        return resp.json()["choices"][0]["message"]["content"]
    
    def get_location(self):
        """获取手机位置(需要 Termux:API)"""
        resp = requests.get("http://localhost:8080/location")
        return resp.json()
    
    def send_notification(self, title, message):
        """发送通知"""
        requests.post("http://localhost:8080/notification", json={
            "title": title,
            "content": message
        })

# 使用
assistant = MobileAssistant("https://api.openai.com", "your-key")
reply = assistant.chat("今天天气怎么样?")
assistant.send_notification("AI 回复", reply)

配合 Termux:API 插件,可以获取位置、发送通知、读取通讯录等。

写在最后

Termux 让手机变成了一个真正的开发环境,但受限于硬件性能,本地跑大模型还是不现实。

最佳实践是:手机做客户端,云端做计算

如果你也想尝试,建议:

  1. 先从简单脚本开始
  2. 用 SSH 连接,输入更方便
  3. 善用 Termux:API 扩展功能
  4. 别指望本地跑大模型

下一篇聊聊 Python 项目移植 Android 的 4 种方案对比,看看哪种最适合你。

相关推荐
23471021271 小时前
4.18 学习笔记
软件测试·笔记·python·学习
yaoxin5211238 小时前
384. Java IO API - Java 文件复制工具:Copy 示例完整解析
java·开发语言·python
Greyson18 小时前
Layui表格如何使用第三方插件实现树形展示.txt
jvm·数据库·python
2401_871696528 小时前
mysql行级锁失效的原因排查_检查查询条件与执行计划
jvm·数据库·python
xzal128 小时前
python中,turtle基础知识笔记1
笔记·python·turtle
Rubin智造社8 小时前
安全先行·自主编程|Claude Code Opus 4.7深度解读:AI开发进入合规量产时代
人工智能·anthropic·claude opus 4.7·mythos preview·xhigh努力等级·/ultrareview命令·自主开发ai
xinlianyq9 小时前
全球 AI 芯片格局生变:英伟达主导训练,国产算力崛起推理
人工智能
a9511416429 小时前
CSS如何实现元素隐藏不占位_使用display-none完全移除
jvm·数据库·python
ShineWinsu9 小时前
AI训练硬件指南:GPU算力梯队与任务匹配框架
人工智能