An AI-powered mobile task automation assistant with support for both Android and HarmonyOS.
Project description
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'))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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.1.tar.gz.
File metadata
- Download URL: phone_copilot-0.1.1.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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 |
dc8cb77e953db1e7219ee074ef5e0526f74df42315db11f270419c9d595dadb2
|
|
| MD5 |
e4feb42011f7aeab22490439692d77b2
|
|
| BLAKE2b-256 |
89e10a4938e21a8e770a8525f85cf3b84d4ddc763f5a7c1ecd0e4da2a17b2c8f
|
File details
Details for the file phone_copilot-0.1.1-py3-none-any.whl.
File metadata
- Download URL: phone_copilot-0.1.1-py3-none-any.whl
- Upload date:
- Size: 31.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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 |
c88487117e65b350e0b6f0ff237ed8361ff57d03a54e9305d2a23e4d160e7b92
|
|
| MD5 |
a5da0d1855f2247a3a19076c57443a41
|
|
| BLAKE2b-256 |
d05574ce30ab5abd4a7a8dba0da463cf6f39240303445f8daaa190aef3e2c2db
|