dsh-verifyWitness· 智能体说做完了,浏览器来证明
31.5/100
综合分
2
GitHub 星标
510
npm 周下载
—/5
用户评分
数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/263311487-ux/dsh-verify.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-verify @ 0.9.6
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 15:03:42
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 26 处,展示前 22 条)
- 执行外部命令来自配置/变量dsh/plugin.mjs:48
const r = spawnSync(process.execPath, argv, { encoding: 'utf8', timeout: 180000, maxBuffer: 16 * 1024 * 1024 }); - 读取本地文件bin/verify.mjs:70
try { entries = await readdir(dir, { withFileTypes: true }); } catch { return; } - 读取本地文件bin/verify.mjs:88
let st = await stat(fp).catch(() => null); - 读取本地文件bin/verify.mjs:90
const data = await readFile(fp); - 读取本地文件bin/verify.mjs:132
const spec = JSON.parse(await readFile(specPath, 'utf8')); - 写入本地文件bin/verify.mjs:212
await mkdir(outDir, { recursive: true }); - 写入本地文件bin/verify.mjs:214
await writeFile(fp, png); - 写入本地文件bin/verify.mjs:221
await mkdir(baseDir, { recursive: true }); - 写入本地文件bin/verify.mjs:222
await writeFile(join(baseDir, name + '.png'), png); - 写入本地文件bin/verify.mjs:230
await mkdir(baseDir, { recursive: true }); - 读取本地文件bin/verify.mjs:231
if (updateBaselines || !(await stat(basePath).catch(() => null))) { - 写入本地文件bin/verify.mjs:232
await writeFile(basePath, png); - 读取本地文件bin/verify.mjs:235
const base = await readFile(basePath); - 读取本地文件mcp/server.mjs:98
await access(chromium.executablePath()); - 写入本地文件mcp/server.mjs:138
await writeFile(specPath, JSON.stringify({ title: `verify ${url}`, base: String(url), steps }, null, 2)); - 写入本地文件mcp/server.mjs:164
await writeFile(specPath, JSON.stringify(spec, null, 2)); - 读取密钥环境变量bin/gen.mjs:120
const key = apiKey || process.env.DEEPSEEK_API_KEY || process.env.OPENAI_API_KEY; - 发起网络请求bin/gen.mjs:126
const res = await fetch(`${base}/chat/completions`, { - 读取本地文件bin/init.mjs:25
const contents = await Promise.all(names.map(name => readFile(new URL(`../templates/starter/${name}`, import.meta.url)))); - 写入本地文件bin/init.mjs:28
await mkdir(target); - 写入本地文件bin/init.mjs:37
await mkdir(join(target, "site")); - 写入本地文件bin/init.mjs:39
await writeFile(join(target, names[i]), contents[i], { flag: "wx" });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 真浏览器验收检查
- 支持命令行与MCP
智能体做的网页应用,质量把关靠它。真浏览器验收检查——命令行、MCP(Claude Code / Cursor / Copilot)、GitHub Action。智能体自测能过,真浏览器才说真话。
README
由 DeepSeek 最新模型翻译生成dsh-verify(Witness)· 智能体说做完了,浏览器来证明
MCP server
你让 DeepSeek Harness(或其他 AI)帮你写了个网页。它说"做完了"。你敢直接上线吗?
dsh-verify 会打开一个真实的浏览器,把你写好的检查清单一步步执行一遍:点击、输入、看样式、查控制台报错、对比截图。通过就是 PASS,不通过就是 FAIL,还附带截图证据。
评判者不是 AI,是真实浏览器。
如果 Witness 帮你抓到了问题,⭐ 给仓库点个星——这是这个项目活下去的方式。
首次成功:无需 API key
需要 Node.js 20+,首次需下载 Chromium。安装当前 npm 版本 npm install --save-dev dsh-verify@0.9.6 后运行 npx dsh-verify init。
展开完整文档(README 剩余 1 节)
dsh-verify(Witness)· 智能体说做完了,浏览器来证明 MCP server 你让 DeepSeek Harness(或其他 AI)帮你写了个网页。它说"做完了"。你敢直接上线吗? dsh-verify 会打开一个真实的浏览器,把你写好的检查清单一步步执行一遍:点击、输入、看样式、查控制台报错、对比截图。通过就是 PASS,不通过就是 FAIL,还附带截图证据。 评判者不是 AI,是真实浏览器。 如果 Witness 帮你抓到了问题,⭐ 给仓库点个星——这是这个项目活下去的方式。 首次成功:无需 API key 需要 Node.js 20+,首次需下载 Chromium。安装当前 npm 版本 npm install --save-dev dsh-verify@0.9.6 后运行 npx dsh-verify init。也可从源码运行: git clone https://github.com/263311487-ux/dsh-verify && cd dsh-verify npm ci npx playwright install chromium node bin/verify.mjs init cd dsh-verify-starter node ../bin/verify.mjs --spec dsh-verify.spec.json PASS (5/5),退出码 0 -> dsh-verify-out/report.html node ../bin/verify.mjs --spec dsh-verify.fail.json --out failed-report 故意失败:FAIL (4/5),退出码 1 -> failed-report/report.html 打开 HTML 报告时保留同级 PNG 图片。失败清单故意断言错误文字,可直接检查断言与截图;另有缺失 CSS 的失败报告。 init [目录] 只在新目录内写入本地网页和两份 JSON 清单,不调用模型、不启动浏览器、不下载资源。父目录必须存在;目标路径如已存在(包括空目录、文件、符号链接)会拒绝,不提供强制覆盖选项。从 GitHub 安装项目和首次下载浏览器需要联网,两份示例仅访问本机。gen 与 MCP generate_and_verify 是另行启用、需要模型 key 的功能。 验收自己的应用时编辑步骤;静态文件用 serve,已有网址用 base。serve 相对于执行命令的当前目录,不是清单所在目录。PASS 仅表示本次浏览器运行中所写断言通过,不证明需求全覆盖、安全、无障碍或规范作者独立。网页与规范可能出自同一 agent,需要独立性时应另行审核规范。报告保存断言细节与明确请求的截图,不是完整审计轨迹。 为什么需要它 我们跑了一个 4-agent 网页开发团队(需求 → 前端 → QA → 评审)。团队的自我评审结果是: ✅ "所有需求均已满足,无问题。" 但用真实浏览器打开后,暗色模式切换按钮完全没有反应——JS 切换了 .dark 类,但 .dark 的 CSS 规则根本没写。 每个 agent 的"自测"都通过了,因为页面上根本没有可运行的东西。没有人打开过真实浏览器。 | 构建 | agent 自评 | 真实浏览器结论 | | demo/buggy(少一条 CSS 规则) | "无问题" | ❌ FAIL —— 背景色永远不变 | | demo/fixed(补上一条 CSS 规则) | 已修复 | ✅ PASS —— 主题正常切换 | 同一页面、同一段 JS,只差一条 CSS 规则,两种完全不同的结论。 这次已有检查没有覆盖渲染后的样式行为;浏览器断言补上了这项覆盖。 怎么用(三种方式) ① 命令行(最直接) 一条命令:写个 JSON 检查清单,真实浏览器跑一遍 npx dsh-verify --spec spec.json 初始化后打开生成的 JSON 即可看到完整格式:顶层对象包含 serve 与 steps。样式变化断言需先用 capture_style 保存同名变量。 ② MCP 服务(给 Claude Code / Cursor / Copilot 用) 让 AI 自己也能"打开真实浏览器自查": - verify_spec —— 按 JSON 规范跑真实浏览器检查 - verify_url —— 直接检查一个网址 - generate_and_verify —— AI 起草检查清单,真实浏览器强制执行(AI 永远不给自己打分) 已收录于 glama.ai 与 awesome-dsh-plugin。 ③ GitHub Action(接入 CI) 一个步骤跑完验收,带报告产物: - uses: 263311487-ux/dsh-verify/.github/actions/dsh-verify@main with: spec: demo/fixed.json out: dsh-verify-out Arena 历史样本与限制 仓库记录时间为 2026-08-17–18 UTC:共 48 条记录,44 PASS、2 FAIL、2 ERROR。其中 46 条有浏览器判定:44 条通过、2 条失败;2 条 ERROR 是 runner 错误,不计入浏览器判定分母。记录覆盖两个模型标签 × 两种策略 × 三个静态任务,每格四条。自检策略最多额外修复两轮,计算预算不同,不能据此推断普遍可靠性、性价比或当前模型排名。 模型标签未经独立身份核验;历史记录未锁定验收器及依赖版本,生成网页、模型回复与本机报告未提交,无法仅凭仓库精确复现旧失败。0.9.5 与 0.9.6 发布均未重跑付费模型实验。 - Arena 历史看板 - 方法、版本与证据限制 特性一览 - ✅ JSON 规范,无框架:goto → click → expect_text → capture_style → expect_style_changed - ✅ 真实 Chromium(Playwright 驱动,默认无头) - ✅ 校验计算样式而不是 class 列表(正是能抓到"class 切了但 CSS 没写"的那类问题) - ✅ 视觉回归:像素级截图对比 + 红色高亮差异图 - ✅ AI 起草检查清单:dsh-verify gen --url <url> --run - ✅ MCP 服务 + GitHub Action + HTML 报告 + 退出码 0/1 - ✅ 多浏览器(Chromium / Firefox / WebKit) 快速开始 git clone https://github.com/263311487-ux/dsh-verify cd dsh-verify npm install npx playwright install chromium npm run demo:buggy # FAIL —— 本仓库最想展示的那个 bug npm run demo:fixed # PASS 常见问题 Q:和手写 Playwright 脚本有什么区别? A:JSON 规范本身就是"需求文档",一次编写,agent 和 CI 都能复用;而且不用每个项目重写一遍样板代码。 Q:与 LLM 评测、agent 浏览器工具有什么区别? A:其他工具也能集成浏览器;这里提供可保存、可重复执行的断言和报告。浏览器执行本身不保证规范独立或覆盖完整,AI 起草规范仍需审核。 生态收录 - awesome-dsh-plugin · DeepSeek Harness 插件商店 · glama.ai MCP 目录 · unStone/dsh-xray License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
263311487-ux/dsh-verify
dsh-verifyWitness· 智能体说做完了,浏览器来证明
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目