安装后填写模型密钥:编辑 /opt/phone-use/pu/.qwen/settings.json 中的 env.OPENAI_API_KEY。
Overview
安装后填写模型密钥:编辑 /opt/phone-use/pu/.qwen/settings.json 中的 env.OPENAI_API_KEY。 请求字段:text(必填)、device(默认 auto)、max_steps(步数上限,可选)。 异步作业的 status 取值:running / done / failed / cancelled。 本机 MCP 工具面另提供 phone_task(text, device, max_steps, timeout_s),走同一异步接口,字段与上表一致。 网络 MCP 服务 phone-mcp 监听 8903,路径 /mcp,传输 streamable-http,工具面与上表一致: 客户端只需配置该地址;接入方法与工具清单见 docs/MCP.md。鉴权可选,设置 /opt/phone-mcp/mcp.env 的 PHONE_MCP_TOKEN 后需带 Authorization: Bearer 。 逐项体检 USB 调试、点击能力、自动连网、电量、时间同步等;检查项与解决办法见 docs/ONBOARD.md。 新增机型适配写入 /opt/phone-use/work/adapt/ .yaml。
README
phone-use
用一句话驱动真机安卓手机完成 WLAN 测试任务,并返回结论与证据。
输入 连 test-portal2 做 portal 认证,账号 zjb 密码 123456
输出 RESULT: PASS
证据:SSID / BSSID / 频点 / RSSI / MAC / IP / 认证返回码 / 外网核验 / 截图路径
轨迹:/opt/phone-use/pu/logs/run-.jsonl
1. 环境要求
| 项 | 要求 |
|---|---|
| 主机 | Linux,systemd,Python 3.10 以上 |
| 手机 | 数据线连接并授权 USB 调试;无需 root,无需安装应用 |
| 模型 | OpenAI 兼容接口,默认 deepseek-flash |
| 依赖 | adb、curl、node |
2. 安装
# 1) 部署服务
scp src/*.py deploy/*.env deploy/phone-farm deploy/phone-use deploy/install-all.sh \
deploy/install-frozen-base.sh deploy/units/*.service \
docs/SKILL-phone-use-wlan.md docs/ONBOARD.md docs/AGENT-PROMPT.md tools/pu-node.py \
root@:/tmp/
ssh root@ bash /tmp/install-all.sh
# 2) 冻结底层并生成校验清单
ssh root@ bash /tmp/install-frozen-base.sh
# 3) 安装任务主体并生成项目级配置
scp deploy/install-qwen-agent.sh root@:/tmp/
ssh root@ bash /tmp/install-qwen-agent.sh
安装后填写模型密钥:编辑 /opt/phone-use/pu/.qwen/settings.json 中的 env.OPENAI_API_KEY。
3. 启动与状态
phone-farm start # 启动全部服务
phone-farm status # 服务、端口、终端就绪情况
phone-farm logs phone-agent # 查看服务日志
phone-farm config # 查看生效配置
端口与页面:
| 端口 | 用途 |
|---|---|
| 8910 | 浏览器界面:查看画面、按键、派任务、体检 |
| 8902 | 一句话任务接口 |
| 8901 | 终端清单、能力集、占用状态、体检接口 |
| 8000 | 手机画面视频流,由浏览器界面内嵌 |
| 8903 | 手机工具面 MCP(streamable-http,路径 /mcp),供平台 AI 调用 |
浏览器访问 http://:8910/。
4. 使用
4.1 一句话任务
phone-use "连 test-portal2 做 portal 认证,账号 zjb 密码 123456"
phone-use "连 928wpa2-psk 密码 12345678"
phone-use "连 HY-CJ1-WPA2-L 做 1X 认证,账号 hx 密码 123456"
phone-use "体检一下 57ada8"
参数:
| 参数 | 说明 |
|---|---|
--device |
指定终端;省略时自动选择空闲可用终端 |
--timeout |
运行超时,默认 900 |
--no-trace |
不保存轨迹 |
--user |
运行任务主体所用的系统用户,默认 phonebot |
logs [时间戳] |
查看历史运行的摘要与事件 |
每次运行在 /opt/phone-use/pu/logs/ 生成三个文件:
| 文件 | 内容 |
|---|---|
run-.jsonl |
完整事件轨迹:每一步工具调用与返回 |
run-.md |
可读摘要:工具调用序列、关键命令、最终结论 |
run-.err |
标准错误输出 |
4.2 原语
原语为单步动作,供任务主体调用,输出单行 JSON。
phone-hand state # 设备状态
phone-hand wifi # 当前连接信息
phone-hand probe # 门户拦截探测
phone-hand scan portal # 扫描指定关键字
phone-hand tap 540 600 # 坐标点击
phone-hand click-text "登录" # 按文本点击
phone-hand settext --id !account zjb # 输入文本
phone-hand shot /sdcard/s.png # 截图
phone-hand pull /sdcard/s.png /tmp/s.png
phone-hand wifi-connect wpa2 --bssid
phone-hand jar portal-login
完整列表见 phone-hand --help。
4.3 屏幕识别
phone-look "当前是什么页面?"
phone-look --coord "WLAN 列表中的 test-portal2"
输出页面与控件的文本结论;使用 --coord 时附带可点击坐标。
4.4 HTTP 接口
同步调用,短任务使用:
curl -X POST http://:8902/task -H 'Content-Type: application/json' \
-d '{"text":"连 928wpa2-psk 密码 12345678","device":"auto","max_steps":40}'
异步调用,长任务使用:先取作业号,再轮询,可随时取消。
curl -X POST http://:8902/tasks -H 'Content-Type: application/json' \
-d '{"text":"连 test-portal2 做 portal 认证,账号 zjb 密码 123456","device":"auto"}'
# → {"id":"job003","status":"running", ...}
curl http://:8902/tasks/job003 # 查进度与结果
curl -X POST http://:8902/tasks/job003/cancel # 取消并释放终端
请求字段:text(必填)、device(默认 auto)、max_steps(步数上限,可选)。
返回字段,同步与异步一致:
| 字段 | 说明 |
|---|---|
verdict |
PASS / FAIL / ANSWER / TIMEOUT / BLOCKED |
ok |
verdict 为 PASS 或 ANSWER 时为 true |
serial |
实际使用的终端 |
delegated |
受理任务的执行体,固定为 phone-use |
steps |
实际工具调用步数 |
elapsed |
耗时(秒) |
trace |
轨迹文件路径 |
answer |
结论与证据全文 |
异步作业的 status 取值:running / done / failed / cancelled。
本机 MCP 工具面另提供 phone_task(text, device, max_steps, timeout_s),走同一异步接口,字段与上表一致。
网络 MCP 服务 phone-mcp 监听 8903,路径 /mcp,传输 streamable-http,工具面与上表一致:
工具:devices_list · phone_task · phone_exec · phone_skill · lease_device · release_device
地址:http://:8903/mcp
客户端只需配置该地址;接入方法与工具清单见 docs/MCP.md。鉴权可选,设置 /opt/phone-mcp/mcp.env 的 PHONE_MCP_TOKEN 后需带 Authorization: Bearer 。
4.5 新机接入
phone-doctor
逐项体检 USB 调试、点击能力、自动连网、电量、时间同步等;检查项与解决办法见 docs/ONBOARD.md。
5. 技能与提示词
任务主体的行为由以下文件决定:
| 文件 | 作用 |
|---|---|
/opt/phone-use/base/SKILL.md |
任务手册:认证路线、成功判据、机型注意事项 |
/opt/phone-use/base/AGENT-PROMPT.md |
系统提示词,安装时复制为 /opt/phone-use/pu/.qwen/system.md |
/opt/phone-use/pu/.qwen/agents/ |
子任务定义 |
/opt/phone-use/pu/.qwen/settings.json |
模型、接口、记忆开关配置 |
新增机型适配写入 /opt/phone-use/work/adapt/.yaml。
6. 目录结构
src/ 服务源码:原语、农场 API、任务入口、体检、浏览器界面
deploy/ 部署文件:安装脚本、统一入口 CLI、配置、systemd 单元
tools/ 辅助脚本
ops/ 运维与排障脚本
docs/ 使用与实现文档
legacy/ 已淘汰组件
| 文档 | 内容 |
|---|---|
docs/ONBOARD.md |
新机接入检查清单 |
docs/SKILL-phone-use-wlan.md |
任务手册全文 |
docs/MCP.md |
MCP 用法:客户端接入、工具清单、示例、排障 |
docs/ARCHITECTURE.md |
架构、动作后端、占用规则、已知限制 |
7. 常见问题
| 现象 | 处理 |
|---|---|
phone-use 提示"未知命令" |
原语命令为 phone-hand,见 4.2 |
| 任务返回 BLOCKED | 终端被占用,用 phone-farm status 查看占用者或改用空闲终端 |
| 浏览器无画面 | 手机屏幕休眠,先唤屏;离线终端不显示画面 |
| 模型调用 401 | 检查 /opt/phone-use/pu/.qwen/settings.json 中的密钥 |
| 底层文件校验失败 | 启动器会拒绝执行,按 docs/ARCHITECTURE.md 第 5 节恢复 |
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add zhangjiabin12/phone-use