vmos-edge-control-api について
VMOS Edge Android Control APIを通じて、単一のAndroidクラウド端末を操作するスキルです。画面の確認や端末操作を行うエージェント向けに、利用可能な接続経路に応じた「観察・計画・操作・検証」の手順を定めています。
主な機能
- 01接続情報に応じたAPI経路の選択
- 02エンドポイントの検出と詳細確認
- 03スクリーンショットとアクセシビリティ情報による確認
- 04タップ、スワイプ、文字入力、アプリ操作
- 05重要な操作後の再確認
活用シーン
- 01クラウド端末の画面確認とコントロールの特定
- 02Androidクラウド端末でのアプリ起動やインストール
- 03端末のブラウザーでのページ表示と内容確認
MCP 対応
MCPは必須ではなく、任意の接続手段です。このスキルは、エージェントがVMOS Edge Android Control APIでクラウド端末を操作する手順を示します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vmos-dev/ vmos-edge-skills --skill vmos-edge-control-apiインストール後、Claude Code で/vmos-edge-control-apiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
api-reference.mdclaude-code.mdcursor.mdcprompt.mdREADME.mdreferences/activity-and-package.mdapi-reference.mdapp-installation.mdbrowser-search-and-reading.mdconnection-and-discovery.mdinput-control.mdobservation.mdsystem-and-device.mdui-node.md詳細
VMOS Edge Android Control
VMOS Edge Android Control API を通じて単一の Android クラウド端末を制御する必要がある場合に、このスキルを使用します。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を優先します - LAN モードが有効になっているクラウド端末のみサポートします
- デフォルトではクラウド端末への直接接続
- 現在のセッションに
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 が公開されていないか、LAN モードが有効になっていないことを明確に伝えます
基本的な手順
- 常に
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 の状態、デバイス情報、位置情報、センサーを変更しないでください
コメント
Markdown 対応