편집자 노트

xiayuhkust/dsh-visual-probe

Visual-verification tools for DeepSeek Harness (dsh): flicker, visual regression, and WCAG contrast as numbers a text-only agent can read.

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

dsh-plugin-browser-probe

English | 中文

DeepSeek Harness(dsh)的视觉验收工具。它跑一个无头浏览器,把三类 UI 检查转成数值,让纯文本 agent 靠读指标验证,而不必"看"页面:

工具回答的问题返回
flicker_detect页面闪不闪?有多少帧对在变、变多少
visual_diff我的改动动到了不该动的地方吗?差异多少、在哪个屏幕分区
contrast_probe有没有文字太浅看不清?每个文字元素的 WCAG 对比度、哪些不达标

每个都返回数据而非图片——agent 读数值自己判断。基于 Playwright + pngjs。

运行环境:dsh 0.1.x 开发者预览,接口可能随 dsh 迭代变动。

安装

依赖重(Playwright 会下载浏览器),故独立成一个包。

dsh plugin --profile web add -w dsh-plugin-browser-probe
npx playwright install chromium-headless-shell   # 一次性下载浏览器

在 profile 的 cordis.patch.yml 挂载(用 - insert: 插入新行,不是裸 - id:):

- insert:
    - id: browser-probe
      name: dsh-plugin-browser-probe
      config:
        frames: 10        # flicker:采集帧数,默认 10
        intervalMs: 150   # flicker:帧间隔毫秒,默认 150
        settleMs: 400     # 加载后、截帧前的等待,默认 400

重启 dsh web 生效。dsh --profile web --dump-config 可确认插件行已在。

工具

flicker_detect

采集页面连续帧,量帧间变化的像素比例。判定为 FLICKER 需变化反复出现(≥2 个帧对超阈)——单个变化帧对是一次性的加载过渡,不算闪烁。

参数说明
url要检查的页面(file://http://)。
frames采集帧数。默认 10。
intervalMs帧间隔毫秒。默认 150。
settleMs加载后、首帧前的等待。默认 400。
selector可选 CSS 选择器;把测量裁到该元素的包围盒——抓小控件闪烁的可靠办法。
region可选 {x, y, width, height} 矩形;四值 ≤1 为视口分数,否则为像素。

整帧测量能可靠抓到覆盖约 ≥8% 屏面积的闪烁。对小元素闪烁(光标、细线),传 selectorregion,比例便在该区域内计算。

返回 hotPairs/totalPairsmaxChangedRatioisFlickeringscopeverdict

visual_diff

比对两个渲染状态——两个 URL,或两张已存 PNG——报差异有多少以及在哪。整帧切成 8×6 网格,变化的分区以上/中/下 × 左/中/右报出,小改动也能带位置浮现。

参数说明
a基准状态:http/file URL,或一张 .png 的路径。
b对照状态:同上。
settleMsURL 输入时,加载后截图前的等待。默认 400。

返回 changedRatiochangedZoneschangedCells(最严重在前)、dimensionsMatchverdict。典型用法:留一个已知良好的 URL(或改动前先截一张),改动后 diff 对照,确认只有预期分区变化。

contrast_probe

从 DOM 读每个文字元素的字色与有效背景色,按 WCAG 公式算客观对比度,报哪些文字不达标(AA 正常字需 4.5:1、大字 3:1)。大字按字号/字重识别;半透明前景先按 alpha 混合到背景上。

参数说明
url要检查的页面(file://http://)。
selector可选 CSS 选择器,把扫描限定在一块区域。省略则全页扫。
standardAA(默认,4.5/3)或 AAA(7/4.5)。
settleMs加载后、读样式前的等待。默认 400。

返回 checked(数量)、worstRatiofailures(各含对比度、要求值、实际前景/背景色)、verdict

命令行

各工具核心也能独立跑,便于快速检查或 CI:

node src/flicker-detect.mjs <url> [frames] [intervalMs] [settleMs] [region:x,y,w,h | sel:CSS]
node src/visual-diff.mjs <a-url-or-png> <b-url-or-png> [settleMs]
node src/contrast-probe.mjs <url> [selector] [AA|AAA]

testpages/ 有可直接指过去的样例页(会闪的页、改动前后一对、分级对比度文字)。

说明

  • @deepseek-ai/dsh-* import:dsh 0.1.x-rc 的加载器不为第三方插件解析 host 内部 import,故用 ctx.tools.register 手工构造工具对象注册。
  • 截图前不用 networkidle——会轮询的实时应用可能永不 idle;改用固定 settleMs 等待。

License

MIT

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.