com um clique
harmonyos-ui-inspect
采集 HarmonyOS 设备/模拟器上的 UI 截图与控件树,执行交互场景验证,输出差异报告和迭代建议
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
采集 HarmonyOS 设备/模拟器上的 UI 截图与控件树,执行交互场景验证,输出差异报告和迭代建议
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
仓颉语言 HarmonyOS 开发的入口路由。遇到仓颉语法、HarmonyOS API、编译构建等问题时自动加载,引导使用正确的 skill
编译构建仓颉 HarmonyOS 应用,执行 ohpm 依赖安装、仓颉资源同步和 HAP 包打包。用户说编译、构建、build、打包时触发
编译纯仓颉 cjpm 库项目(非 HarmonyOS 应用)。自动检测仓颉 SDK,执行 cjpm build 与 cjpm test。在库目录下说编译/构建/build/打包/跑测试时使用
将任意语言的三方库/SDK/工具包翻译为纯仓颉 cjpm 包。关注 API 面、依赖策略、包骨架与构建验证;不涉及 HarmonyOS 应用资源与 UI
将其他语言代码翻译为仓颉语言。支持 ArkTS、Swift、Java、Python 到仓颉的转换,记录翻译经验和等价写法差异
从 GitCode 下载最新仓颉语言和 HarmonyOS 原始文档。当 cangjie-kernel 和 cangjie-harmony 未覆盖所需内容时作为兜底使用
Baseado na classificação ocupacional SOC
| name | harmonyos-ui-inspect |
| description | 采集 HarmonyOS 设备/模拟器上的 UI 截图与控件树,执行交互场景验证,输出差异报告和迭代建议 |
| allowed-tools | Bash(python3 *), Bash(hdc *), Read |
| argument-hint | [--scenario scenario.json] [--emulator port] [--no-screenshot] |
在应用构建成功并安装到设备后,采集截图与控件树,执行真实交互验证,输出可落地的 UI 迭代建议。
| # | 检查项 | 检查方式 | 未通过时 |
|---|---|---|---|
| 1 | 模型能力确认 | 参照 base-skill 第 1 步自检 | 纯文本 → 后续全程加 --no-screenshot;多模态 → 可选读截图 |
| 2 | 构建已通过 | 确认最近一次 /build 输出 BUILD SUCCESSFUL | 先执行 /build 完成构建 |
| 3 | 设备已连接 | hdc list targets 有输出 | 启动模拟器或连接 USB 设备(见 Step 0) |
| 4 | HAP 就绪 | 有 .hap 文件或应用已安装 | 使用 --auto-hap 或 --hap <路径>(见 Step 0.5) |
| 5 | .env 中 DEVECO_HOME 已配置 | 读取 .env | 提示用户补充 |
模型能力已在「前置检查」#1 中确认。以下规则基于该结论执行。
默认行为:只依赖文本产物(ui_summary.md + layout.json),不读取 screenshot.png。
ui_summary.md 与 layout.json 已包含控件类型、文本、尺寸、间距、可点击性、屏幕利用率等完整结构化信息,足以覆盖绝大多数 UI 验证场景。
| 模型能力 | 行为 |
|---|---|
| 纯文本 | 加 --no-screenshot 跳过截图采集,禁止 Read screenshot.png |
| 多模态 | 默认产出 screenshot.png,但仅在文本信息不足时才 Read 它 |
| 不确定 | 按纯文本处理,先读 ui_summary.md |
hdc list targets
127.0.0.1:5555 → 模拟器,后续加 --emulator 55550123456789ABCDEF → USB 设备,无需 --emulatorEmpty → 先启动模拟器或连接设备.hap 文件:后续步骤中使用 --hap <路径> 指定安装--auto-hap 自动搜索 entry/build/ 下最新 HAP--no-launch 跳过安装与启动| 目标 | 使用模式 |
|---|---|
| 验证界面外观、排查白屏/缺件 | 模式 A:基础采集 |
| 逐步操作验证(推荐) | 模式 B:逐步交互 |
cd <鸿蒙项目目录>
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --out ./ui_capture_output
# 纯文本模型:加 --no-screenshot 跳过截图
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-screenshot --out ./ui_capture_output
常用参数:
| 参数 | 说明 |
|---|---|
--emulator 5555 | 连接本地模拟器 |
--hap <路径> | 安装指定 .hap 包 |
--auto-hap | 自动搜索 entry/build/ 下最新 .hap 安装 |
--no-launch | 应用已在前台时跳过启动 |
--no-screenshot | 跳过截图采集,仅产出控件树与文本摘要(纯文本模型必选) |
--wait N | 启动后等待 N 秒(默认 3) |
--hilog | 同时抓取 HiLog 日志 |
--timestamp | 输出目录追加时间戳,防止多次运行互相覆盖 |
产物:
ui_capture_output/
├── screenshot.png # 视觉截图(加 --no-screenshot 后不生成)
├── layout.json # 控件树(hdc dumpLayout 原始输出)
└── ui_summary.md # 摘要:类型分布、尺寸间距、屏幕利用率
默认读取顺序(纯文本优先):
ui_summary.md — 包含控件分布、文本/Hint/Key、尺寸、可点击性、屏幕利用率、间距分析layout.jsonscreenshot.png按"分析维度"输出报告。
核心原则:不预先生成场景文件,而是看一步、做一步。每次执行单个动作后重新采集,根据实际结果决定下一步。
# 标准(带截图)
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-launch --out ./ui_capture_output
# 纯文本模式
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-launch --no-screenshot --out ./ui_capture_output
读取 ui_summary.md 了解当前控件树(仅在需要视觉确认且模型支持时再读 screenshot.png)。
使用 --do 参数执行一个动作,执行完自动重新采集。--no-screenshot 对 --do 同样生效:
# 点击(按文字查找控件)— 纯文本模式
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-launch --no-screenshot \
--do click --target '{"text":"下一步"}' \
--out ./ui_capture_output
# 点击(按类型+索引)
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-launch \
--do click --target '{"type":"ListItem","index":0}' \
--out ./ui_capture_output
# 输入文本(先按 hint 找输入框)
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-launch \
--do input --target '{"type":"TextInput","index":0}' --input-text "13800138000" \
--out ./ui_capture_output
# 输入文本(按 hint 定位)
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-launch \
--do input --target '{"hint":"Message"}' --input-text "Hello!" \
--out ./ui_capture_output
# 向上滑动
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-launch \
--do swipe --swipe-dir up \
--out ./ui_capture_output
# 返回
python "${CLAUDE_SKILL_DIR}/ui_capture.py" --emulator 5555 --no-launch \
--do back \
--out ./ui_capture_output
--do 支持的动作:click / long_click / double_click / input / swipe / fling / back / home
--wait-after N(默认 1.5s):动作后等待 N 秒再采集,页面跳转等场景可适当加大(如 --wait-after 3)。
每次 --do 执行后,layout.json 和 ui_summary.md 会被覆盖为最新状态(screenshot.png 仅在未加 --no-screenshot 时覆盖)。读取 ui_summary.md 确认结果,再决定下一步动作。
控件查找失败时(FAIL 未找到目标控件):先用模式 A 重新采集,读取 ui_summary.md 查看当前可用控件,再调整 --target。
无论哪种模式,输出结论均覆盖以下维度(全部可从 ui_summary.md + layout.json 推导):
clickable/scrollable 状态是否正确、关键控件是否设置了 key≥14fp、标题 ≥18fp、同级间距差异不超 2 倍、可点击尺寸 ≥48×48vp## UI 反馈分析报告
### 当前状态
<一句话描述界面当前表现>
### 交互验证结果(模式 B)
**断言通过率**: X/Y
- ✅ <通过的断言>
- ❌ <失败的断言> → 原因 + 修复建议
### 发现的问题
1. [严重程度: 高/中/低] <问题描述> → 建议修复方式
### 迭代建议
- [ ] <具体可执行的开发任务>
### 无需改动
<确认正常的部分,避免过度修改>
截图是桌面/系统页,不是目标应用
--hap 或 --auto-hap)hdc -t 127.0.0.1:5555 shell aa start -b <bundle> -a <ability>module.json5 中 EntryAbility.skills 是否含多余的 entity.system.homelayout.json 确认目标 bundleName 是否出现(过滤后窗口数 ≥ 1)Read 截图时报错 / 模型不支持图像
加 --no-screenshot 重跑,全程只用 ui_summary.md + layout.json。
手动等价命令(脚本不可用时)
hdc shell aa start -a EntryAbility -b com.example.app
sleep 3
hdc shell uitest screenCap -p /data/local/tmp/screen.png
hdc file recv /data/local/tmp/screen.png ./screenshot.png
hdc shell uitest dumpLayout -p /data/local/tmp/layout.json
hdc file recv /data/local/tmp/layout.json ./layout.json
ui_summary.md + layout.json 能回答的问题,不要读截图evolution/cangjie/ 对应主题文件(如 arkui.md、state.md)