dsh-testhud:在待测应用上方显示自动化测试进度

前言

在 DeepSeek Harness(DSH)里用智能体驱动 GUI、对比截图或批量渲染时,人往往只能盯着屏幕等:当前跑到哪一步、这一步期望什么、是否已经失败、以及更实际的问题——现在能不能再动鼠标和键盘。终端日志可以事后查,但很难在运行中一眼回答「别打断测试」还是「可以接手了」。

下面介绍社区插件 dsh-testhud(维护者 yijiezhong):在 macOS 上于被测应用之上绘制一块始终置顶、可穿透点击的进度面板,并通过 DSH 工具 test_hud 与同名 CLI 驱动更新。插件分类为客户端;npm 包版本 0.1.1,许可证 MIT。

这是什么

dsh-testhud 是 DSH 的客户端插件:自动化测试进行时,在屏幕角落(尽量避开被测窗口)显示标题、目标、开始时间与已用秒数,以及逐步的期望与实际结果(✓ / ✗ / ⏳ / •)。面板顶部有一条固定提示:运行中为「正在进行:先别动鼠标键盘,以免打断测试」(白字红底 #FF3B30),结束后为「✓ 已结束,可以收回鼠标键盘的控制权了」(黑字绿底 #34C759),用颜色直接表达是否安全操作输入设备。

面板不抢焦点:除顶部色带(可拖拽)和内容溢出需滚动时外,鼠标可穿透;不在 Dock 与 ⌘Tab 中列出;左上角 macOS 风格三键可关闭、折叠或扩至可用区域上限。智能体侧通过 test_hud 上报;Shell 与 CI 可用 testhud 子命令读写同一套进度逻辑。

核心功能

智能体工具 test_hud

action 作用 主要参数
start 开启一次运行并弹出面板 title(必填),target,anchor
step 上报一步检查 name(必填),expect,actual,state:ok / fail / run / info
note 在底部追加一行 text
done 写入结论并结束 failed(布尔),conclusion
stop 立即关闭面板 —

面板按内容自适应宽高;仅步骤列表区域滚动,页眉固定。调用 done 后约 12 秒自动消失,便于阅读结论。

约定(README 中的 The rule)

若正在做验证,面板必须处于打开状态:不要「只跑命令」而不开 HUD;一系列运行之间,在上一次 done 之后、下一次操作之前应再次 start。测试结束后应 done,并正常退出为测试启动的应用(不要用 kill -9),再把浏览器或 DSH 窗口切回前台,避免被测应用一直占屏。

CLI testhud

与工具共用同一套进度文件,便于脚本与 CI:

testhud start "Movable toolbar layout" "Movable main window" [anchor]
testhud step  "toolbar is centred" "centre == window centre" "962pt, centred" ok
testhud note  "left to the user to decide"
testhud done  ok "3 of 3 checks passed"
testhud stop
testhud status

可选配置

在 profile 的 cordis.patch.yml 中可覆盖插件行(示例 id 为 testhud):

- id: testhud
  config:
    announceToAgent: true     # 向每个会话注入「长测试应在屏幕上汇报」的短约定
    defaultAnchor: auto       # auto | center | left | right
    topInset: 155             # 顶边距屏幕顶部的距离(pt),默认避开浏览器标签栏等区域

定位优先级(资料原文顺序):尽量不遮挡前台应用窗口 → 若无遮挡则居中 → 否则优先左侧再右侧。垂直方向默认距屏幕顶 155 pt(topInset);CLI 可用环境变量 DSH_TESTHUD_TOP_INSET 覆盖。

安装与启用

插件须出现在 profile 的 dsh.profile.bundles 中(dsh plugin add 会写入)。可用 dsh --profile <profile> --dump-config 确认是否出现 # == dsh-testhud 层标记;该 profile 下每个会话应提供 test_hud 工具及相关提示约定。

官方 README 给出的安装方式:

dsh plugin --profile <profile> add github:yijiezhong/dsh-testhud   # straight from GitHub
dsh plugin --profile <profile> add link:/path/to/dsh-testhud       # from a local checkout
dsh plugin --profile <profile> add dsh-testhud                     # from npm (published as 0.1.1)

Desktop 应用可在插件设置中用同样方式安装;其插件管理器可热挂载新 bundle。通过 CLI 启动的 profile 在启动时组合 bundle 列表,一般需重启一次 profile,除非你的 profile 已支持 live reload。

包声明 @deepseek-ai/dsh-tools 为 peer dependency(约 ~0.2.0-rc.2):由运行中的 DSH 解析宿主自带的 defineTool;若宿主版本不在声明范围内,整个 bundle 会拒绝加载而非半加载。

卸载示例(README):

dsh plugin --profile web remove dsh-testhud

运行环境要求 Node.js >= 20(见 package.json 的 engines)。

典型用法

1、在目标 profile 安装插件并确认 dump-config 中有 dsh-testhud 层。

2、智能体在长时 GUI 验证开始时调用 test_hud 的 start,传入 title 与可选 target、anchor。

3、每完成或进行一步检查,调用 step,填写 name、expect、actual 与 state。

4、需要补充说明时用 note;全部结束时 done,并根据结果设置 failed 与 conclusion。

5、纯 Shell 流程可改用 testhud 子命令,参数与语义与上面对应。

适用场景与注意

适合:在 macOS 上用 DSH 智能体或脚本做 GUI 自动化、截图对比、批量渲染等需要「人在旁边等」的流程;需要屏幕级提示「勿动键鼠 / 可接手」而不遮挡操作被测应用本身。

注意:

  • 插件关键词与行为描述均指向 macOS;在其他系统上是否可用,资料未说明,部署前请自行核对源码与运行环境。
  • DSH 插件以当前 dsh 进程权限运行;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全与合规要求。
  • 社区目录 SkillHub 插件页 与 GitHub 为独立信息源;SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系,不宜当作官方应用商店。

结尾

dsh-testhud 把「测什么、每一步怎样、能否动键鼠」放到被测应用上方的只读 HUD 里,并用 test_hud / testhud 统一驱动,减少长测试等待时的不确定性。进一步了解可访问目录页 https://www.skillhub.cn/plugins/yijiezhong/dsh-testhud 与仓库 https://github.com/yijiezhong/dsh-testhud。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye