Phone Copilot
项目介绍
Phone Copilot 是一个参考 Open-AutoGLM 的基于 AI 构建的手机端智能助理框架,它能够以多模态方式理解手机屏幕内容,并通过自动化操作帮助用户完成任务。
系统通过 ADB 或 HDC 来控制 Android 和 HarmonyOS 设备,以视觉语言模型进行屏幕感知,再结合智能规划能力生成并执行操作流程。用户只需用自然语言描述需求,如“打开高德地图,导航至南京南高铁站”,Phone Agent 即可自动解析意图、理解当前界面、规划下一步动作并完成整个流程。
https://github.com/user-attachments/assets/e60e118e-7cec-4bba-9e8a-38054069cc9f
环境准备
- Python >= 3.12
- Android 设备需要安装 adb,并配置环境变量。HarmonyNext 设备需要安装 hdc,并配置环境变量
- 手机需要启动开发者模式,并且打开 USB 调试选项
- 如果 Android 设备需要输入中文,需要额外安装 ADB Keyboard
- 本地通过
vllm部署模型,或者使用远端模型 API, 建议使用AutoGLM-Phone-9B
快速开始
uv (recommend)
pip install uv
# 使用 model scope api, https://modelscope.cn/models/ZhipuAI/AutoGLM-Phone-9B
uvx phone-copilot "打开高德地图,导航至南京南高铁站" --base-url "https://api-inference.modelscope.cn/v1" --model "ZhipuAI/AutoGLM-Phone-9B" --api-key "替换为你的 Token" --json "demo.json" --html "demo.html"
pip
pip install phone-copilot
# 使用 model scope api, https://modelscope.cn/models/ZhipuAI/AutoGLM-Phone-9B
phone-copilot "打开高德地图,导航至南京南高铁站" --base-url "https://api-inference.modelscope.cn/v1" --model "ZhipuAI/AutoGLM-Phone-9B" --api-key "替换为你的 Token" --json "demo.json" --html "demo.html"
命令行参数
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
task(位置参数) |
是 | - | 要执行的任务描述(自然语言)。示例:"打开高德地图,导航至南京南高铁站" |
--base-url |
是 | - | 模型 API 的 Base URL(OpenAI 兼容)。示例:https://api-inference.modelscope.cn/v1 或本地 http://localhost:8000/v1 |
--model |
是 | - | 使用的模型名称。示例:ZhipuAI/AutoGLM-Phone-9B |
--api-key |
否 | 空字符串 | 调用模型 API 的鉴权 Token / API Key。若使用本地部署或无需鉴权可不传 |
--device, -d |
否 | 自动选择 | 目标设备 ID。不指定时默认选择第一个已连接设备 |
--lang, -l |
否 | zh |
系统提示词语言:zh 或 en |
--max-steps |
否 | 100 |
Agent 最大执行步数,超过后停止 |
--ccf |
否 | 1000 |
坐标/压缩因子(用于适配不同模型的坐标系)。通常:Qwen 系列设为 0,AutoGLM 系列设为 1000 |
--json |
否 | - | 保存执行过程的 JSON 报告路径;会自动使用 .json 后缀(例如传 demo 也会保存为 demo.json) |
--html |
否 | - | 保存执行过程的 HTML 报告路径;会自动使用 .html 后缀 |
--adb-keyboard |
否 | false |
启用 Android 的 ADB Keyboard(用于中文输入等)。会自动安装 ADB Keyboard 并设置为当前键盘 |
代码运行
通过 High API 使用
from pathlib import Path
from phone_copilot.api import run_task
agent = run_task(
task='打开高德地图,导航至南京南高铁站',
base_url='https://api-inference.modelscope.cn/v1',
model='ZhipuAI/AutoGLM-Phone-9B',
api_key='替换为你的 Token'
)
agent.export_html(Path('demo.html'))
agent.export_json(Path('demo.json'))
通过 Agent 和 Model Client 使用
from pathlib import Path
from phone_copilot.agent import Agent
from phone_copilot.device import detect_device
from phone_copilot.model_client import ModelClient
agent = Agent(
device=detect_device(),
model_client=ModelClient(
base_url='https://api-inference.modelscope.cn/v1',
model='ZhipuAI/AutoGLM-Phone-9B',
api_key='替换为你的 Token'
),
)
agent.run(task='打开高德地图,导航至南京南高铁站')
agent.export_html(Path('demo.html'))
agent.export_json(Path('demo.json'))
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
phone_copilot-0.1.2.tar.gz
(27.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file phone_copilot-0.1.2.tar.gz.
File metadata
- Download URL: phone_copilot-0.1.2.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00d2de11773351d047a351f75e71d8986d8fa52782cf56c9f69aa830f73622e1
|
|
| MD5 |
542ccf0639d738536fb34499021549e0
|
|
| BLAKE2b-256 |
0959b0891d9cb53224299dfa735ff67f875450af9ffa01dff6124e1f97b6de16
|
File details
Details for the file phone_copilot-0.1.2-py3-none-any.whl.
File metadata
- Download URL: phone_copilot-0.1.2-py3-none-any.whl
- Upload date:
- Size: 31.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
816cea4832203c0e316276269a5a3259db80c78b8928bf486ba110a0c303655d
|
|
| MD5 |
77c45c4f8b020426bd28fc1bf6f0eef9
|
|
| BLAKE2b-256 |
5545a0414783b9792ac1a2e1400c561e599e3de5715c9cbc50e77120c22d62ac
|