vmos-edge-control-api
Installation
SKILL.md
VMOS Edge Android Control
在需要通过 VMOS Edge Android Control API 控制单台安卓云机时使用这个 skill。MCP 是可选通道,不是前置依赖。
连接入口
- 如果用户已经明确给了
host_ip或cloud_ip,优先使用用户给的值 - 如果用户没有明确给 IP,先检查本地是否存在
cbs_go进程;存在则默认host_ip=127.0.0.1 - 如果用户没有明确给 IP,且本地没有
cbs_go,引导用户提供host_ip、cloud_ip,或在已知宿主机场景下提供db_id - 如果当前会话里同时安装了
vmos-edge-container-api:- 使用宿主机路由
http://{host_ip}:18182/android_api/v2/{db_id} - 必须先通过 container API 的
POST /container_api/v1/get_db或GET /container_api/v1/get_android_detail/{db_id}拿到目标db_id
- 使用宿主机路由
- 如果当前只有
vmos-edge-control-api:- 默认优先使用云机直连
http://{cloud_ip}:18185/api - 仅支持开启了局域网模式的云机
- 默认优先使用云机直连
- 如果当前只有
vmos-edge-control-api,而当前路径要走host_ip:- 如果用户已经给了
db_id,直接使用http://{host_ip}:18182/android_api/v2/{db_id} - 如果没有
db_id,明确说明还缺少db_id或vmos-edge-container-api
- 如果用户已经给了
- 如果直连
http://{cloud_ip}:18185/api/base/version_info连不上、超时,或返回5xx,明确说明当前云机没有暴露 Control API,或没有开启局域网模式
核心流程
- 始终遵循
Observe -> Plan -> Act -> Verify - 第一次连接先查
/base/version_info /base/version_info能成功返回,就视为当前环境支持 Control API;拿不到返回再说明当前环境不支持或没有暴露接口- 本地检查
cbs_go时,优先用精确匹配,例如pgrep -x cbs_go >/dev/null 2>&1 - 再用
/base/list_action做能力发现:- 需要低成本查看当前设备支持哪些接口时,先取接口列表
- 需要某个接口的详细用法时,再按
paths定向查询并带上detail
- 观察优先级:
- 截图接口
screenshot/format、screenshot/raw、screenshot/data_url /accessibility/dump_compact/accessibility/node的无动作查询/display/info、/activity/top_activity、/package/list
- 截图接口
- 观察策略:
- 需要看视觉布局、图标、颜色、弹窗遮挡、坐标点击位置时优先截图
- 需要低成本获取文本、层级、bounds,或要衔接
/accessibility/node时优先dump_compact - 能同时用时,先截图理解界面,再用
dump_compact/node做结构化定位 - 截图回显给用户时:先用 bash/exec 的
curl -o把截图落盘到 workspace 目录(如~/.openclaw/workspace/),再用 read 工具读取该文件让模型看到图片内容 - 回图时优先把
screenshot/format或screenshot/raw落成文件;只有screenshot/data_url可用时,再 base64 解码落盘 - 不要在文本回复里写
MEDIA:或直接贴 base64 / data_url —— 这些不会渲染为图片 - 如果需要把图片转发到消息渠道(Telegram 等),使用
message --media <路径>工具发送
- 不要把旧版无障碍导出 / 查找接口写进默认流程
- 交互优先级:
- 先根据截图、
dump_compact或/accessibility/node规划动作 - 结构化节点定位 / 操作优先
/accessibility/node - 点击 / 滑动优先
/input/click、/input/swipe、/input/scroll_bezier - 输入优先
/input/text - 启动应用优先
/activity/start;需要首启授权时优先/activity/launch_app - 浏览器 / 网页场景优先
/activity/start_activity打开指定浏览器;浏览器包名优先mark.via,没有再用com.android.chrome - 安装优先
/package/install_sync或/package/install_uri_sync - 读取或修改 Settings 优先
/system/settings_get、/system/settings_put
- 先根据截图、
- 每个关键动作后重新观察,不要做聚合式批量动作
- 没有专用接口时才考虑
/system/shell
必读参考
- 先看
references/api-reference.md里的索引,再按模块只打开需要的 reference 文件 - 优先先用
/base/list_action按需确认能力,再决定要不要展开更多接口细节 - 只有在需要精确路径、字段、示例请求时,才读取对应模块 reference
- 如果任务是“安装、下载并打开某个第三方应用”,再读取
references/app-installation.md - 如果任务是“在云机浏览器里搜索、打开网页、提取网页内容”,再读取
references/browser-search-and-reading.md
安全边界
- 删除应用、清数据、系统设置、权限修改、shell 操作前先确认用户意图
- 没有明确要求时,不要改时区、语言、国家、Google 状态、设备信息、定位或传感器
Related skills
More from vmos-dev/vmos-edge-skills
vmos-edge-container-api
Use this skill when managing VMOS Edge cloud phone containers through the Container API via the host machine IP (`host_ip`). Covers host queries, instance lifecycle, db_id/cloud_ip lookup, batch operations, app distribution, and async polling. If no IP is provided and local `cbs_go` is running, default `host_ip` to `127.0.0.1`. Use it to resolve `db_id` when `vmos-edge-control-api` needs host_ip-based routing.
8operate-vmos-edge-cli
Use when a task involves VMOS Edge Desktop — creating or controlling Android virtual devices on edge hosts, interacting with the Electron desktop UI via CDP, automating device workflows with YAML playbooks or batch JSON, or recovering from CLI error codes.
8