如何通过自定义插件,让扣子 Agent 调用你外部云手机的 ADB 接口扣子 Coze Agent 对接外部云手机 ADB 完整思路
核心逻辑:扣子 SaaS 不能直连 ADB 端口,ADB 是 TCP 协议;扣子插件只支持 HTTP/HTTPS 调用。 需要中间代理层:自建 HTTP 网关服务,网关执行 adb 命令,扣子调用网关 http 接口,网关转发指令到你的外部云手机GitHub。 数据流:扣子 Bot(下发自然语言)→扣子自定义插件 HTTP 请求→你的自建 API 网关→网关执行 adb shell→外部云手机执行动作→截图 / 结果原路返回扣子对话。- 采购第三方云手机(阿里云 / 星界 / 其他),在厂商控制台开启网络 ADB,配置 IP 白名单,拿到 adb connect ip:port 连接地址。
- 一台中转 Linux 服务器(轻量 ECS,用来跑网关程序),中转服务器能访问云手机 adb 端口。
- 中转服务器安装 adb 工具,测试连通:adb connect 云手机IP:端口;adb devices确认设备在线。
⚠️禁止直接把 adb 5555 端口对公网暴露,极易被扫描入侵,必须走网关 + token 鉴权。
步骤 2:搭建极简 HTTP‑ADB 网关(2 种选型)- adb‑mcp‑server / Hermes‑Agent‑Phone,已经封装好 http 接口:执行点击、滑动、输入文字、截图、shell 命令,自带 token 鉴权GitHub。
headers: Authorization: Bearer 你的密钥tokenbody: {"adb_cmd":"input tap 300 800"}网关收到后本地调用 subprocess 执行 adb 命令,返回 stdout、截图 base64、执行状态。选型 B:极简 Python FastAPI 最小 Demo(快速验证)from fastapi import FastAPI,HTTPExceptiondef adb_run(token:str,cmd:str): raise HTTPException(status_code=401,detail="鉴权失败") res = subprocess.run(["adb","shell",cmd],capture_output=True,text=True,timeout=15) return {"stdout":res.stdout,"stderr":res.stderr,"returncode":res.returncode}@app.post("/adb_screenshot")def adb_screenshot(token:str): """截图返回base64,给扣子视觉模型识别画面""" raise HTTPException(status_code=401) subprocess.run(["adb","exec‑out","screencap","‑p","/dev/stdout"],capture_output=True)中转服务器安全配置:只开放 443/80 端口,开启 HTTPS,禁止 adb 端口公网放行。
步骤 3:扣子平台创建【云侧自定义 HTTP 插件】
1.扣子空间→资源库→插件→创建插件,类型:基于已有服务(OpenAPI)2.插件根 URL 填写你的网关域名 https://xxx.yourdomain.com- 工具 1:run_adb_shell入参:token、adb_command(adb shell 后面的指令,例如input tap 200 500)
- 工具 2:get_phone_screenshot入参:token,返回图片 base64,供 Agent 做视觉推理。
4.请求头固定带上鉴权 token,填写在插件认证配置,不要每次入参手动传。5.插件调试,测试调用接口,确认能拿到 adb 返回结果。
你拥有调用外部安卓云手机的能力,不要编造设备状态。1. 用户给出操作手机的自然语言指令,你不要直接执行,先翻译成合法adb shell命令;2. 调用run_adb_shell工具下发指令;3. 调用get_phone_screenshot获取手机屏幕截图;5. 把执行结果、屏幕画面情况整理自然语言回复用户。- 如果工具返回报错,如实反馈错误,不要虚构成功;- 坐标基于该云手机屏幕分辨率,点击tap需要提供正确x,y。 | | |
| Bot 完全跑在扣子云端,随时随地对话控制云手机;需要维护中转服务器 | |
| Coze‑bridge 本地 Agent(本地电脑跑 adb) | 不需要公网服务器;缺点电脑必须一直开机在线,网络断开就失效 | |
1.扣子 SaaS 插件不能访问内网地址、127.0.0.1,网关必须有公网 HTTPS 域名,http 明文在扣子会被拦截。2.ADB 本身没有鉴权,所有安全全部由你的网关层 token 做防护,千万不要裸奔公网 adb 端口。3.adb 命令执行会有超时,网关必须增加 timeout,防止卡死进程。4.扣子工具调用有输出长度限制,adb 返回大 logcat 要做截断处理。5.截图返回 base64 不要过大,否则超出扣子工具返回 payload 上限。- 官方扣子云手机:不用管服务器、adb,按量扣积分,黑盒,不能自定义安卓镜像。
- 这套自建方案:你掌控云手机实例,可以自选各家云厂商;但是你要承担服务器、网络、设备稳定性维护,扣子只是下发指令的调度大脑。
我是喻一一
以心驱笔,以墨为欢,从记录和感悟中获取力量,人海茫茫,很高兴能在我的文字里与你相遇,在这纷繁复杂的世界里,我们一起碎碎念,一起走走看!