SuperAPI AI 工具集

ux-walker-native

测试与质量

查看项目

更新于 10-30 07:23

技能介绍

用途

UX Walker (native macOS) 用于对一个正在运行的 SwiftUI/AppKit 应用做端到端 UX 走查:把 UX 故事目录中的每条故事当作真实用户旅程逐项执行,检查功能是否正确、视觉是否合格、交互是否顺畅,并留下截图与发现记录。它是 /ux-walker 的原生 macOS 对应版本,同一套 UX 评分与分级规则与网页版共享。

主要能力

  • 以辅助功能树为检查基础:每个控件都有角色(如 AXButton、AXTextField)、标签、值和 frame,可据此判断屏幕内容、可操作性与布局。
  • 驱动操作:snapshot 列出可交互元素,click、type、key 执行点击、输入与快捷键,screenshot 截取应用窗口,geometry 做布局审计,resize 调整窗口,window 查询窗口。
  • 原生专项检查:键盘可达性(能否不用鼠标走完故事)、菜单栏覆盖与快捷键是否正确、窗口缩放行为与尺寸记忆、无障碍标签缺失(无标签元素对 VoiceOver 不可见)、平台惯例(⌘N、⌘W、⌘,、菜单栏、sheet 而非自定义模态、跟随深色模式的系统颜色)。
  • 窄窗口回流检查:在故事主界面把窗口调整为 700×600,观察控件重叠、标签裁切、面板塌陷或内容不可达,随后恢复原尺寸。
  • 读取应用自身日志(如 log show 按进程过滤)以发现 UI 未暴露的崩溃、异常与失败请求。
  • 产出每故事的 walk-report.md、findings.json,以及汇总的 latest-report.md;发现按严重程度(critical/high/medium/low/suggestion)与类别(simplicity、disclosure、layout、visual、consistency、hierarchy、flow、happy-path、a11y、keyboard、platform、error-handling)记录。

使用方式

  1. 预检:运行 driver/install.sh 编译 ~/.claude/bin/nativeui 并查看权限状态;若 accessibility_trusted 为 false,需在“系统设置 › 隐私与安全性 › 辅助功能”中为运行 Claude Code 的终端授权,然后完全退出并重开终端,用 nativeui doctor 验证。若无权限,不得静默以仅截图方式替代;用户拒绝时只能明确提供“仅视觉”的缩减模式并标注每份报告。
  2. 启动应用:若不在 nativeui apps 中则启动,优先使用项目自带运行方式(run 技能、Makefile 目标或 README 中的 scheme),等应用出现后再继续。
  3. 建立基线:依次执行 nativeui focus、window、snapshot、screenshot,并用 Read 工具查看基线截图;若应用处于报错、空状态或登录页,先解决再走查。
  4. 目录检查:读取故事目录(默认 docs/ux-paths/catalog.md),不存在则提示先运行 /ux-paths-native,不得自行编造故事。
  5. 逐故事走查:每个故事由一个子代理执行,并行批次为 3–4 个;由于应用只有一个焦点和一个光标,超过该批次会相互干扰,不可提高批次。每个步骤依次快照、操作、截图、实际查看截图、验证预期结果并做 UX 审计;等待时轮询快照而非盲目睡眠,约 30 秒仍未出现视为失败并记录当时屏幕内容与稳定耗时。每个不同界面状态运行 geometry 并对照截图确认,每故事做一次窄窗口回流检查并恢复原尺寸。
  6. 分级与修复:小而明确、低风险的修复可直接进行;结构性、模糊或涉及设计的改为提交 GitHub issue。修改 SwiftUI 视图后须保持项目可构建、测试通过,并重走受影响故事确认,不能仅凭 diff 判定已修复。
  7. 报告:使用共享模板写 latest-report.md,并补充 Platform 章节,说明键盘可达性、菜单栏覆盖与快捷键正确性、窄窗口回流结果、无障碍标签缺口;在开头明确说明哪些检查未运行及原因。

适用场景

适用于需要对原生 macOS 应用(SwiftUI/AppKit)做系统化用户体验审查的开发者与设计团队,尤其适合有故事目录、需要可复现证据与结构化发现的走查流程。

限制

  • 必须先获得辅助功能权限,否则无法驱动应用。
  • 没有网络空闲(networkidle)概念,只能轮询界面状态。
  • 原生端不存在响应式断点与网络瀑布图,不能照搬网页检查,报告中应如实说明。
  • 并行能力受单焦点、单光标限制,故事共享应用时须串行执行并在报告中说明。
  • 不得报告未亲眼所见的发现,每个发现须对应截图;无法到达的界面应标记为阻塞而非推断。