安全扫描
OpenClaw
可疑
high confidence该技能的指令与ADB调试工具相符,但其元数据缺少必需的binaries/env,且SKILL.md要求自动执行ADB操作(包括自动安装)而无需用户明确确认,这是一种存在风险且不一致的设计选择。
评估建议
此技能看似是一个合法的 ADB 助手,但在安装前请注意两个实际问题:
(1)元数据未声明需要 adb,也未说明会读取 $ANDROID_HOME/PATH——请确认环境并确保 adb 存在;
(2)运行时规则强制自动调用,若仅连接一台设备,将不经逐操作确认即执行 ADB 命令(包括安装、卸载、清数据、拉取文件、截图、重启)。
如要使用,务必让代理在修改设备状态或拉取文件前请求明确确认,限制自动触发,并确保设备已授权。若需更高安全性,请勿启用自主操作,或改用需要逐命令用户确认的技能。...详细分析 ▾
ℹ 用途与能力
名称/描述与 SKILL.md 始终将本 skill 描述为基于 ADB 的 Android 调试/部署 skill,所提供的命令与工作流也与此目的一致。然而,registry 元数据未声明任何必需的二进制文件或环境变量,而运行时指令却假定系统存在 'adb' 二进制,并引用 $ANDROID_HOME / PATH 配置——声明需求与实际所需能力不一致。
⚠ 指令范围
SKILL.md 明确指示 agent 运行大量 ADB 命令(install/uninstall、clear data、pull/push files、screencap、logcat、reboot、shell commands),这些均属于 ADB skill 的范畴。主要问题在于行为规则:(a) 当且仅当连接一台设备时,skill 会“直接执行”命令而不再询问用户;(b) 文档强制 skill 在众多上下文短语(“帮我装一下”“试一下”等)中被自动触发。这使得 agent 拥有广泛权限,可在无需逐项确认的情况下执行可能具破坏性或涉及隐私的操作(拉取文件、截屏、清除数据、卸载、重启)。
✓ 安装机制
该技能仅为指令型,无安装规范或代码文件。这是最低安装风险(技能包本身不会向磁盘写入任何内容)。
⚠ 凭证需求
声明的需求列表中未包含环境变量或二进制文件,但指令却调用 `which adb`、引用 ANDROID_HOME 并提供 PATH 配置说明——说明该技能需要访问本地环境变量和系统二进制。未声明所需二进制/变量存在不匹配。技能未请求云凭证或无关密钥,但假定可访问本地文件系统及设备 I/O(可能泄露敏感设备数据)。
⚠ 持久化与权限
该软件包未请求 'always:true',也未修改其他技能,但技能的内部规则要求在大量上下文线索下自动触发,并强制在单一已连接设备上自动执行。结合其可运行具有破坏性的 ADB 操作的能力,这种自主行为构成实质风险——代理可能在未经用户再次明确确认的情况下对设备执行操作。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/4/22
- android-adb-skill 初始版本发布。 - 提供分步 ADB 命令用法,涵盖设备检测、应用安装、logcat、设备信息、文件操作等。 - 编码任务完成后自动引导用户通过 ADB 验证 Android 代码变更。 - 确保每条 ADB 指令先检查设备,并支持多设备工作流。 - 附带详尽错误说明、用户提示及标准化输出规范,打造流畅的 Android 开发与调试体验。
● 无害
安装命令
点击复制官方npx clawhub@latest install android-adb-skill
镜像加速npx clawhub@latest install android-adb-skill --registry https://cn.longxiaskill.com
技能文档
概述
此技能通过调用系统环境变量中的adb 命令操作 Android 设备。执行任何 ADB 操作前,必须先执行「设备检测流程」。 ---
编码完成后的验证流程
每当完成 Android 端代码修改(包括 Flutter Android、原生 Android 等),必须在回复末尾主动附上以下提示:📱 代码已修改,建议通过 ADB 验证效果:不要等用户主动询问,编码任务完成即触发此提示。
1. 构建 APK:flutter build apk --debug/./gradlew assembleDebug
2. 检测设备并安装:(执行设备检测流程 → 自动安装)
3. 查看运行日志:adb logcat --pid=$(adb shell pidof <包名>)
> 需要我帮你执行安装和日志监控吗?
---
核心流程:设备检测
每次执行 ADB 操作前必须先运行设备检测。 ``bash
# 检测 adb 是否可用
which adb || echo "ADB_NOT_FOUND"
# 获取已连接设备列表
adb devices
`
设备数量判断逻辑
| 情况 | 处理方式 |
|------|---------|
| adb 命令不存在 | 提示用户安装 Android SDK Platform Tools,并给出下载地址 |
| 0 台设备 | 提示用户连接设备或开启 USB 调试,给出排查步骤 |
| 1 台设备 | 直接执行,无需用户确认 |
| 多台设备 | 展示设备列表,让用户选择目标设备,所有后续命令加 -s 参数 |
设备列表展示格式(多设备时)
`
检测到 N 台已连接的 Android 设备:
序号 设备序列号 状态 设备信息
1 emulator-5554 online [模拟器]
2 R3CT90BFXXX online [获取型号]
3 192.168.1.100:5555 online [无线连接]
请输入序号选择目标设备:
`
获取设备型号:
`bash
adb -s shell getprop ro.product.model
` ---
功能模块
1. 安装 APK
`bash
# 单设备
adb install -r
# 指定设备
adb -s install -r
# 常用参数说明:
# -r 允许覆盖安装(保留数据)
# -d 允许降级安装
# -g 自动授予所有运行时权限(Android 6.0+)
# -t 允许安装测试 APK
`
安装结果判断:
Success→ 安装成功,显示包名INSTALL_FAILED_→ 解析错误码并给出中文说明和解决方案
常见错误码对照表见 references/install-errors.md ---
2. 抓取 Logcat 日志
`bash
# 清除旧日志
adb [-s ] logcat -c
# 按包名过滤(需先获取 PID)
PID=$(adb [-s ] shell pidof )
adb [-s ] logcat --pid=$PID
# 按 Tag 过滤
adb [-s ] logcat -s :V
# 按级别过滤(V/D/I/W/E/F)
adb [-s ] logcat :E
# 保存到文件
adb [-s ] logcat --pid=$PID > logcat_$(date +%Y%m%d_%H%M%S).log
# 实时过滤关键词
adb [-s ] logcat | grep
`
用户输入包名时的标准流程:
先用pidof获取 PID- 若 PID 为空(应用未运行),提示用户先启动应用,或改用包名关键词 grep
- 提供实时输出与保存文件两个选项
---
3. 查看已安装应用列表
`bash
# 所有应用
adb [-s ] shell pm list packages
# 只看第三方应用(用户安装的)
adb [-s ] shell pm list packages -3
# 只看系统应用
adb [-s ] shell pm list packages -s
# 包含 APK 路径
adb [-s ] shell pm list packages -f
# 搜索关键词(如 "wechat")
adb [-s ] shell pm list packages | grep
# 获取应用详细信息
adb [-s ] shell dumpsys package
`
输出格式化:去掉 package: 前缀,每行一个包名,按字母排序后展示。 ---
4. 卸载应用
`bash
# 卸载(保留数据)
adb [-s ] shell pm uninstall -k
# 完全卸载
adb [-s ] uninstall
` ---
5. 清除应用数据
`bash
adb [-s ] shell pm clear
` ---
6. 启动/停止应用
`bash
# 启动应用(需要知道 MainActivity)
adb [-s ] shell monkey -p -c android.intent.category.LAUNCHER 1
# 强制停止
adb [-s ] shell am force-stop
# 启动指定 Activity
adb [-s ] shell am start -n /
` ---
7. 截图与录屏
`bash
# 截图并拉取到本地
adb [-s ] shell screencap /sdcard/screenshot.png
adb [-s ] pull /sdcard/screenshot.png ./screenshot_$(date +%Y%m%d_%H%M%S).png
# 录屏(最长3分钟,Ctrl+C 停止)
adb [-s ] shell screenrecord /sdcard/record.mp4
adb [-s ] pull /sdcard/record.mp4 ./record_$(date +%Y%m%d_%H%M%S).mp4
` ---
8. 文件操作
`bash
# 推送文件到设备
adb [-s ] push
# 从设备拉取文件
adb [-s ] pull
` ---
9. 设备信息查询
`bash
# 设备型号
adb [-s ] shell getprop ro.product.model
# Android 版本
adb [-s ] shell getprop ro.build.version.release
# API Level
adb [-s ] shell getprop ro.build.version.sdk
# 电池信息
adb [-s ] shell dumpsys battery
# CPU 信息
adb [-s ] shell cat /proc/cpuinfo
# 内存信息
adb [-s ] shell cat /proc/meminfo
# 应用内存占用
adb [-s ] shell dumpsys meminfo
# 设备 IP 地址
adb [-s ] shell ip addr show wlan0
` ---
10. 无线 ADB 连接
`bash
# USB 连接后,开启 TCP 模式(Android 11 以下)
adb [-s ] tcpip 5555
adb connect :5555
# Android 11+ 无线配对(设置 → 开发者选项 → 无线调试)
adb pair : # 输入配对码
adb connect :5555
` ---
11. 重启设备
``bash
# 正常重启
adb [-s ] reboot
# 重启到 Recovery
adb [-s ] reboot recovery
# 重启到 Bootloader
adb