Vibe Testing落地:OpenGUI让DSH在同一对话中驱动安卓真机完成多设备走查
Vibe Coding 之后,生产端突然装上了火箭,验收端还在骑共享单车:AI 改一个 App,早上提需求中午就能交出三个版本,问题是第一版还没人点过,第三版已经在问要不要顺便重构。AI 写得这么快,谁来替它把按钮点完?于是 Vibe Testing 来了。
OpenGUI 是 DeepSeek Harness(下文简称 DSH)的一个手机测试插件,刚开源不久。它真正的价值在于工作流:代码本来就在 DSH 里改,改完之后不需要把需求复制到另一套手机 Agent 上,也不用重新解释刚才改的是哪个页面,直接在原对话里发指令:
@OpenGUI 在已选手机上走查当前 App 的启动、首页、搜索和设置流程,按设备分别汇总异常。遇到登录、支付或删除数据时先问我。
OpenGUI 会给每台选中的手机分一个绑定固定设备的子任务:看屏幕、点击、输入、滚动,再把执行过程和结果送回 DSH 的任务卡片。按钮点不了,就让 DSH 回去改,改好再让手机走一遍。写代码的 AI 后面,终于跟了一个会验货的。
它是补充,不是替代
GUI Agent 的结果受页面状态、网络、弹窗和模型判断影响,今天能点过去的流程,明天可能被一个活动弹窗堵住。所以单元测试、接口测试和稳定的 E2E 脚本都还得留着,确定性逻辑交给确定性测试。Vibe Testing 更适合补充这些场景:刚改完还没写脚本的页面、临时走查、探索式测试、多台真机上的重复回归。
同一个搜索框在一台手机上正常、在另一台小屏设备上被键盘挡住,同一个确认弹窗在某个系统版本上关不掉——这些问题不一定多难,纯靠人点又非常消耗精力。OpenGUI 可以把同一个任务发到多台已选设备上并行执行再汇总,默认最多并行 4 台,可配置 1 到 16 台。
部署很轻
OpenGUI 把能力塞进了 DSH 插件,不需要先部署完整后端,默认优先复用当前 DSH 会话选择的模型(需同时支持图像输入和工具调用,不兼容就配置独立视觉模型)。macOS 用户可以直接把安装指令交给 DSH,让它自动安装最新稳定版;Linux 和 Windows 用户走手动安装包。安装完成后在 DSH Web UI 发送 /opengui,返回 Usage: /opengui <task> 就表示加载完毕,然后保持安卓手机解锁、完成 USB 调试授权,在 OpenGUI Tab 里选择设备。
截至 2026 年 9 月 1 日,最新稳定版是 v0.1.7(8 月 31 日发布),验证过的 DSH 基线是 0.1.0-rc.7,Node.js 需要 ^22.19.0 或 >=24。
安全边界
权限设计很克制:任意 Shell、App 安装卸载、文件传输、权限修改、手机重启都不在开放范围内;每次切换页面必须以最新观察为基础,重复操作没有进展会被阻止;发送、发布、购买、删除这类有明显后果的动作不会因为名字里带 Agent 就自动豁免。这些限制让 Demo 少了一点"AI 接管世界"的气质,却让人更敢把真机接上去。
Vibe Testing 更像是 Vibe Coding 欠下的基础设施债。已经在用 DSH 的人可以装上试试;要试的话,第一天不用安排十个 App 的大工程,就让它把你今天刚改完的页面再点一遍。
开源地址:https://github.com/Core-Mate/OpenGUI