图图智控 TUTU Smart Control
通过图图智控(TUTU)硬件设备,无需安装 App,USB 即插即用,让 AI 像人一样远程操控你的 Android 手机 — 截图、点击、滑动、输入、发短信、文件管理等 30+ 种操作。
⚠️ 首次使用:Token 配置(必读)
在执行任何操作之前,你必须先确认用户是否已提供 API Token。
Token 获取引导流程
请按以下步骤引导用户:
询问用户:"要使用图图智控(TUTU)远程控制功能,需要提供您的 API Token。请问您是否已有 Token?"
如果用户没有 Token,告知:
- "您可以在 https://tutuai.me 购买图图智控硬件并绑定设备后获取 Token。"
- "图图智控是一款 USB 即插即用的 AI 硬件,插入 Android 手机即可实现远程控制。"
- "Token 是一串加密字符串,由硬件设备自动生成,可在设备管理页面或扫描设备二维码获取。"
- "每个 Token 对应一台设备,已包含设备身份信息,无需额外提供设备序列号。"
用户提供 Token 后,直接调用
status接口验证设备在线状态。Token 中已加密包含设备信息,不需要用户另外提供设备 SN。验证成功后即可开始执行操作。
重要:
- 在用户提供 Token 之前,不要执行任何 API 调用
- 将 Token 保存在当前会话中使用
- Token 已加密包含设备身份,无需明文传输设备序列号,更加安全
连接信息
- API 地址:
https://tutuai.me/api/phone_action.php - 鉴权方式:
Authorization: Bearer <用户提供的Token> - 设备识别: Token 已加密包含设备信息,无需在请求中传递 SN
- 硬件要求: 图图智控 TUTU 硬件设备(USB-C 即插即用,无需安装 App)
- 屏幕分辨率: 默认 1080 x 2400(宽 x 高),坐标使用绝对像素
调用方式
使用 exec / Shell / run_shell 等工具执行 curl 命令调用 API。所有请求都是 POST + JSON 格式。
基础 curl 模板
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"<ACTION>", ...其他参数}'
Token 已加密包含设备信息,请求体中无需传递 SN 字段。
可用操作(完整列表 — 30 项)
一、基础 GUI 控制
1. 截图 — 查看手机当前屏幕
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"screenshot"}'
返回:
{
"success": true,
"action": "screenshot",
"screenshot_url": "https://tutuai.me/screenshots/<SN>_xxx.jpg",
"screenshot_base64": "data:image/jpeg;base64,...",
"width": 1080,
"height": 2400
}
截图是最重要的操作! 截图后用图像分析能力查看 screenshot_url 来理解屏幕内容,决定下一步操作。
2. 点击 — 点击屏幕上的指定位置
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"click", "x":540, "y":1200}'
参数:x(横坐标 0-1080)、y(纵坐标 0-2400),绝对像素。
3. 长按
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"long_press", "x":540, "y":1200}'
4. 输入文本
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"type", "text":"你好世界", "x":540, "y":600}'
参数:
text(必填):要输入的文本。中文自动使用剪贴板粘贴。末尾加\n表示输入后按回车。x、y(可选):输入框坐标,会先点击聚焦再输入。
5. 滚动
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"scroll", "x":540, "y":1200, "direction":"down"}'
参数:
direction:up、down、left、rightx、y:滚动起始点(默认屏幕中心)
6. 拖拽
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"drag", "x1":540, "y1":1800, "x2":540, "y2":600}'
7. 打开应用
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"open_app", "app_name":"微信"}'
支持中文应用名! 常用应用名:微信、抖音、支付宝、淘宝、京东、设置、相机、电话、短信、浏览器、地图、日历、时钟、文件管理。也可以用包名(如 com.tencent.mm)。
8. 按键操作
# 按 Home 键(回到桌面)
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"press_home"}'
# 按返回键
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"press_back"}'
# 按回车键
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"press_enter"}'
二、高级 UI 操作
9. 获取 UI 节点树
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"get_ui_nodes"}'
返回当前屏幕的 UI 元素树(JSON 数组),每个元素包含 cls(类型)、text(文本)、c(中心坐标)等信息。
10. 按文字点击 UI 元素
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"click_by_text", "text":"同意"}'
参数:text(必填):要查找并点击的文字内容(模糊匹配)。比手动截图+估算坐标+click 更精准,优先考虑使用。
11. 按资源 ID 点击 UI 元素
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"click_by_id", "id":"com.tencent.mm:id/btn_send"}'
12. 查找 UI 元素
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"find_element", "text":"搜索", "className":"android.widget.EditText"}'
参数(至少一个):text、id、className。返回元素列表含坐标信息。
三、系统信息与状态
13. 获取设备信息 — 电量、网络、内存、屏幕等
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"get_device_info"}'
返回:电量(battery.level/charging)、WiFi/移动网络状态、存储/内存用量、屏幕方向、前台应用包名、亮度、设备型号、Android 版本等。
14. 查询设备在线状态
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"status"}'
15. 获取服务端版本信息
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"get_server_info"}'
四、通讯功能
16. 发送短信
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"send_sms", "destination":"13800138000", "text":"你好"}'
17. 读取短信
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"read_sms", "limit":10}'
参数:limit(默认20)、box(inbox 收件箱 / sent 发件箱,默认 inbox)
18. 拨打电话
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"make_call", "number":"10086"}'
五、位置与通知
19. 获取 GPS 位置
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"get_location"}'
返回:latitude、longitude、accuracy、provider。
20. 读取系统通知
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"read_notifications", "limit":10}'
六、反馈输出
21. 震动
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"vibrate", "duration":500}'
22. 语音播报(TTS)
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"speak_tts", "text":"你好,世界"}'
七、文件管理
23. 列出文件目录
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"list_files", "path":"/sdcard/DCIM"}'
24. 读取文件
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"read_file", "path":"/sdcard/test.txt"}'
参数:maxSize(可选,最大读取字节数,默认 64KB)
25. 写入文件
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"write_file", "path":"/sdcard/test.txt", "content":"Hello World"}'
参数:append(可选,true 为追加模式,默认覆盖)
26. 删除文件
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"delete_file", "path":"/sdcard/test.txt"}'
27. 存储分析
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"analyze_storage"}'
28. 查找大文件
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"find_large_files", "path":"/sdcard", "minSize":10485760, "limit":20}'
八、媒体与 Shell
29. 搜索媒体文件
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"search_media", "mediaType":"image", "keyword":"screenshot", "limit":10}'
参数:mediaType(image/video/audio,默认image)、keyword(可选)、limit(默认20)
30. 执行 Shell 命令
curl -s -X POST https://tutuai.me/api/phone_action.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{"action":"execute_shell", "command":"ls /sdcard/"}'
参数:command(必填)、timeout(可选,默认30秒)。此接口超时为 35 秒。
操作流程(重要!)
执行手机任务时,严格遵循以下循环流程:
步骤 0:验证连接(首次必须)
- 确认用户已提供 Token 和 SN
- 调用
status验证设备在线 - 调用
get_device_info了解设备基本情况(电量、网络、前台应用、屏幕方向)
步骤 1:先截图看屏幕
每次操作前必须先截图,了解当前屏幕状态。
步骤 2:分析截图
使用图像分析能力查看截图 URL,理解当前屏幕:
- 当前在什么应用/页面?
- 目标元素在哪里?坐标大概是多少?
- 屏幕是否锁定?
- 是否有弹窗/对话框需要处理?
步骤 3:执行操作
根据分析结果选择合适的操作(参考上方 30 项操作列表)。
优先使用 click_by_text 而非手动坐标点击,精准度更高。
步骤 4:等待 + 再截图验证
操作后等待 2-3 秒让手机响应,然后再次截图验证操作结果。
重复步骤 1-4 直到任务完成。
坐标参考
屏幕分辨率 1080 x 2400:
- 屏幕中心:(540, 1200)
- 状态栏高度约:0-80px
- 导航栏高度约:2300-2400px
- 顶部区域:y < 400
- 中部区域:400 < y < 1800
- 底部区域:y > 1800
场景示例
场景 1:打开微信并发送消息
1. open_app("微信") → 等 3 秒 → screenshot
2. 分析截图,找到目标联系人 → click 或 click_by_text
3. 等 2 秒 → screenshot → 确认进入聊天
4. type("你好", x=输入框x, y=输入框y)
5. click_by_text("发送") 或 click(发送按钮坐标)
6. screenshot → 确认消息已发送
场景 2:微信自动回复
1. read_notifications(limit=5) → 检查是否有微信新消息通知
2. 如果有新消息 → open_app("微信")
3. screenshot → 分析聊天列表,找到未读消息
4. click_by_text(联系人名) → 进入聊天
5. screenshot → 阅读对方发来的消息
6. type("收到,稍后回复") → click_by_text("发送")
7. screenshot → 确认发送成功
场景 3:App 签到/打卡
1. open_app("目标App") → 等 3 秒 → screenshot
2. 分析截图,找到签到入口
3. click_by_text("签到") 或 click(签到按钮坐标)
4. screenshot → 处理可能的弹窗(点击"确定"/"关闭")
5. screenshot → 确认签到成功
场景 4:查看手机当前状态(综合巡检)
1. get_device_info → 获取电量、网络、内存、前台应用
2. analyze_storage → 查看存储空间
3. read_notifications(limit=10) → 查看未处理通知
4. screenshot → 查看当前屏幕
5. 向用户汇报完整的手机状态
场景 5:存储空间清理
1. analyze_storage → 了解总容量和可用空间
2. find_large_files(minSize=50MB) → 找到占空间的大文件
3. 向用户列出大文件,等待确认哪些可以删除
4. delete_file(path=用户确认的文件) → 逐个删除
5. analyze_storage → 再次确认清理效果
场景 6:发短信给某人
1. send_sms(destination="13800138000", text="明天下午开会")
2. 检查返回 success=true 确认发送成功
场景 7:查看最近收到的验证码
1. read_sms(limit=5, box="inbox") → 读取最近 5 条收件箱短信
2. 从短信内容中提取验证码数字
3. 向用户展示验证码
场景 8:获取手机位置
1. get_location → 获取 GPS 坐标
2. 向用户报告经纬度和大致位置描述
场景 9:解锁屏幕
如果截图显示锁屏:
1. click(540, 1200) → 唤醒屏幕
2. drag(540, 2000, 540, 800) → 上滑解锁(无密码锁屏)
3. screenshot → 确认已解锁
场景 10:手机找回/防丢失
1. get_location → 获取当前位置
2. vibrate(duration=3000) → 持续震动 3 秒
3. speak_tts("请注意,有人正在寻找这部手机") → 语音提示
4. screenshot → 截图记录当前屏幕状态
5. 向用户报告位置和操作结果
场景 11:批量处理通知
1. read_notifications(limit=20) → 获取所有通知
2. 按 App 分类整理通知内容
3. 向用户汇总:哪些是重要的、哪些可以忽略
4. 如用户要求,open_app 进入对应 App 处理
场景 12:手机上搜索和整理照片
1. search_media(mediaType="image", keyword="screenshot") → 搜索截图
2. 向用户列出找到的图片
3. 如需删除 → delete_file(path=图片路径) 逐个清理
场景 13:安装应用状态检查
1. execute_shell(command="pm list packages -3") → 列出所有第三方应用
2. 格式化展示已安装应用列表
3. 如用户要求,可通过 execute_shell 查看特定应用信息
场景 14:系统信息收集
1. get_device_info → 硬件信息
2. get_server_info → 服务端版本
3. execute_shell(command="getprop ro.build.display.id") → 系统版本
4. execute_shell(command="df -h") → 分区使用情况
5. 汇总为系统信息报告
场景 15:语音助手模式
1. 用户下达语音/文字指令
2. speak_tts("好的,正在为您执行") → 语音反馈
3. 执行对应操作(打开App、发短信、查信息等)
4. speak_tts("操作完成") → 语音通知结果
5. screenshot → 发送截图给用户确认
场景 16:社交应用内容浏览
1. open_app("抖音") → 等 3 秒 → screenshot
2. scroll(direction="up") → 上滑查看下一个视频
3. screenshot → 分析当前视频内容
4. 重复滑动浏览,或 click_by_text("关注"/"点赞")
场景 17:电商比价/下单辅助
1. open_app("淘宝") → 等 3 秒 → screenshot
2. find_element(className="android.widget.EditText") → 找到搜索框
3. click(搜索框坐标) → type("蓝牙耳机\n")
4. screenshot → 分析搜索结果,汇报价格和商品信息
5. 如用户要求,点击进入商品详情
注意事项
- 截图操作可能需要 3-5 秒,这是正常的(需要通过图图智控服务端中转)
- 操作后一定要截图验证,不要盲目连续操作
- 坐标是绝对像素,不是百分比。屏幕宽 1080、高 2400
- 中文输入会自动通过剪贴板粘贴,无需特殊处理
- 如果截图超时,先用
status检查设备状态 - 每次操作后等待 2-3 秒再截图(
open_app等待 3 秒) - 可通过
get_device_info的foregroundApp字段确认当前前台应用 - 执行网络相关任务前,先检查
network状态确认设备有网络连接 click_by_text比手动截图+估算坐标+click 更精准,优先使用execute_shell超时为 35 秒,适合运行较长命令find_large_files扫描大文件可能较慢(超时 30 秒)- 发短信
send_sms和打电话make_call依赖手机的 SIM 卡和信号 - 图图智控硬件通过 USB 连接手机,利用 ADB 协议控制,完全不影响手机日常使用
- 安全提示:不要在日志或对话中明文展示用户 Token