android-agent · git:20260912.6c490fd · 2026-09-12 · sha256 d86154dec5a3db7c

android-agent git:20260912.6c490fdB

Immutable. This exact content is served forever at /api/v1/blob/d86154dec5a3db7c.

---
name: android-agent
description: Android 设备控制 Skill。当用户想控制自有 Android 设备(截屏、点击、输入、滑动、启动 App、列出设备、ADB/UI 自动化)时使用。通过 CLI 脚本控制设备;有 android-agent 后端时走 REST API,否则降级 ADB 直连。
---

# Android Agent Skill

让 AI Agent 通过 `terminal` 调用 `android_ctl.py`,控制 **用户明确授权的自有 Android 设备**。

**边界(必读)**

- 仅用于你拥有或已获书面授权的设备与模拟器;禁止用于未授权访问他人设备。
- 默认假设本机已安装 `adb` 且设备已通过用户同意完成调试授权。
- 截屏、点击、输入可能暴露隐私;请在可信环境使用,并避免把含密钥的截图写入公开仓库。

**双模式**:检测 android-agent 后端(`:5055`)可用则 REST,否则 ADB。输出 JSON 的 `_mode` 标明模式。

## 前提条件

- **基础模式**:Python 3.8+ + `adb` 在 PATH + 至少一台已授权设备
- **增强模式(可选)**:android-agent 后端 `http://127.0.0.1:5055`
- **MCP(可选)**:见 `mcp/mcp-config.example.json`

脚本:`scripts/android_ctl.py` · 环境检查:`python scripts/check_env.py`

## 命令速查

```
python scripts/android_ctl.py <command> [args...]
```

| 命令 | 基础模式 | 增强模式 | 示例 |
|------|:--------:|:--------:|------|
| `devices` | ✅ | ✅ | `devices` |
| `screenshot <device> [--save path]` | ✅ PNG | ✅ JPEG | `screenshot emulator-5554 --save screen.png` |
| `elements <device>` | ✅ 基础 | ✅ 完整 | `elements emulator-5554` |
| `tree <device>` | ✅ XML | ✅ LLM 树 | `tree emulator-5554` |
| `tap <device> <x> <y>` | ✅ | ✅ | `tap emulator-5554 540 1200` |
| `type <device> <text>` | ✅ | ✅ | `type emulator-5554 "Hello"` |
| `swipe <device> <x1> <y1> <x2> <y2>` | ✅ | ✅ | `swipe emulator-5554 540 1500 540 500` |
| `back <device>` | ✅ | ✅ | `back emulator-5554` |
| `home <device>` | ✅ | ✅ | `home emulator-5554` |
| `key <device> <keycode>` | ✅ | ✅ | `key emulator-5554 ENTER` |
| `launch <device> <package>` | ✅ | ✅ | `launch emulator-5554 com.android.settings` |
| `stop <device> <package>` | ✅ | ✅ | `stop emulator-5554 com.android.settings` |
| `packages <device>` | ✅ | ✅ | `packages emulator-5554` |
| `health <device>` | ✅ 基础 | ✅ 完整 | `health emulator-5554` |

> **基础模式 vs 增强模式差异**:`elements` 基础模式解析 text/content-desc/resource-id/class/clickable/bounds(已足够定位和操作 UI 元素),增强模式额外提供 OCR 和完整屏幕树。`screenshot` 基础模式输出 PNG,增强模式输出 JPEG。

## 典型操作流程

### 1. 发现设备

```bash
python scripts/android_ctl.py devices
```

### 2. 查看屏幕状态

```bash
python scripts/android_ctl.py elements emulator-5554
python scripts/android_ctl.py tree emulator-5554
python scripts/android_ctl.py screenshot emulator-5554 --save screen.png
```

### 3. 操作设备

```bash
python scripts/android_ctl.py tap emulator-5554 540 1200
python scripts/android_ctl.py type emulator-5554 "Hello World"
python scripts/android_ctl.py swipe emulator-5554 540 1500 540 500
python scripts/android_ctl.py back emulator-5554
python scripts/android_ctl.py launch emulator-5554 com.android.settings
```

### 4. 循环操作(UI 自动化范式)

1. `devices` → 拿到设备 serial  
2. `elements` → 看当前屏幕有什么  
3. `tap` / `type` / `swipe` → 执行操作  
4. 重复 2–3 直到完成  

## 环境变量

| 变量 | 默认值 | 说明 |
|------|--------|------|
| `ANDROID_AGENT_URL` | `http://127.0.0.1:5055` | android-agent 后端地址 |
| `ADB_CMD` | `adb` | adb 命令路径(adb 不在 PATH 时指定完整路径) |

## 可选:MCP 配置

参考 `mcp/mcp-config.example.json`。详见 README.md。

## 注意事项

- **设备 serial**:从 `devices` 获取,模拟器通常是 `emulator-5554`
- **坐标**:从 `elements` 的 `center` 字段取
- **中文输入**:基础模式偏 ASCII;中文需增强模式 + ADBKeyboard
- **多设备**:所有命令都带 serial