dsh-verify

La puerta de calidad para aplicaciones web construidas por agentes: pruebas de aceptación en navegador real con veredictos de APROBADO/REPROBADO y recibos de capturas de pantalla.

Documentación

dsh-verify

中文 | English

Witness — El navegador es el juez. El control de calidad para aplicaciones web construidas por agentes. Los agentes dicen que está listo; el navegador lo demuestra. (Witness es el nombre del producto; dsh-verify es el nombre del paquete — es lo mismo.)

ci npm MCP server awesome-dsh-plugin GitHub stars self-acceptance

Si Witness detecta algo por ti, ⭐ dale una estrella al repositorio — así es como este proyecto se mantiene vivo.

Le pediste a una IA que construyera una aplicación web. Dijo "listo". ¿Realmente funciona?

dsh-verify abre un navegador real y lo comprueba — para que nunca tengas que confiar en la palabra del agente.

dsh-verify — Agents say done. The browser proves it.

dsh-verify in action

El control de calidad para aplicaciones web construidas por agentes. Funciona con cualquier agente — DeepSeek Harness (dsh), Claude Code, Cursor, Copilot, Codex — y con cualquier CI. Escribes lo que un humano comprobaría en un navegador; un navegador real lo ejecuta y devuelve un veredicto de PASS/FAIL con evidencia (capturas de pantalla + imágenes de diferencias).

Ningún LLM juzga el resultado. El navegador es el juez.

Same task, same AI, two builds — only a real browser tells the difference

Misma tarea. Misma IA. Dos versiones. Una regla CSS faltante — la autoevaluación del agente pasó, un navegador real lo detectó.


Por qué existe esto

Ejecutamos un equipo web de 4 agentes (redactor de especificaciones → desarrollador frontend → QA → revisor). Su propia revisión dijo:

✅ "Todos los requisitos cumplidos. No se encontraron problemas."

En un navegador real, el interruptor de modo oscuro no hacía nada — la clase .dark se alternaba, pero la regla CSS nunca se escribió. Todas las autopruebas del agente pasaron porque no había nada en la página que los agentes pudieran ejecutar. Nadie abrió un navegador real.

Esa es la brecha: los agentes verifican contra lo que creen que construyeron, no contra lo que el usuario realmente experimenta. Las pruebas unitarias y las comprobaciones estáticas no pueden detectar una regla CSS faltante.

VersiónLo que dijeron los agentesLo que dice un navegador real
demo/buggy"No se encontraron problemas"FALLO — el fondo nunca cambia
demo/fixeduna regla CSS añadidaAPROBADO — el tema cambia

Misma página. Mismo JS. Una regla CSS faltante. Dos veredictos diferentes.

¿Por qué no simplemente...?

Lo que podrías usarSu punto ciegoLo que añade dsh-verify
Scripts de Playwright hechos a manoCada proyecto de agente reescribe el mismo código repetitivo; nada es revisable como especificaciónUna especificación JSON es todo el contrato — escribe una vez, reutiliza entre agentes y CI
Jueces LLM (evaluaciones estilo promptfoo)Un LLM dice "se ve bien" — no ejecuta la aplicación ni ve los píxelesUn navegador real ejecuta clics, entradas, estilos y devuelve capturas de pantalla como evidencia
Herramientas de navegador integradas en el agenteSon las manos del agente — comparten los mismos puntos ciegos que el código que acaban de escribirdsh-verify es un testigo independiente, no parte del agente que se está probando
Herramientas visuales solo de capturasDetectan deriva de píxeles, no "el botón no hace nada"Comprobaciones de comportamiento: clic, esperar cambio de texto/clase/estilo, errores de consola, errores de red

El agente calificó su propia tarea. dsh-verify la recalifica en un navegador real.

Úsalo de tres maneras

Punto de entradaPara qué sirveUna línea
Servidor MCPTu agente de IA verifica su propia entrega, a mitad de sesiónclaude mcp add dsh-verify -- npx -y -p dsh-verify dsh-verify-mcp
CLITú o tu CI verifican una compilación/URLnpx dsh-verify --spec demo/fixed.json
GitHub ActionCada push ejecuta comprobaciones en navegador realuses: 263311487-ux/dsh-verify/.github/actions/dsh-verify@main

Desde cualquier agente de IA (MCP)

claude mcp add dsh-verify -- npx -y -p dsh-verify dsh-verify-mcp

Luego dile a tu agente, en palabras simples:

Verifica http://localhost:3000 — haz clic en #dark-toggle, luego comprueba que body background-color cambió. Toma una captura.

Herramientas expuestas: verify_spec (ejecutar un JSON de especificación), verify_url (comprobaciones en línea, sin archivos), generate_and_verify (la IA redacta la lista de verificación, Chromium real la ejecuta), health.

En CI (GitHub Action)

- uses: 263311487-ux/dsh-verify/.github/actions/dsh-verify@main
  with:
    spec: demo/fixed.json       # spec file or glob
    # url: https://staging.example.com   # optional override
    # out: dsh-verify-out               # report output dir (default)

El repositorio lo usa internamente: el flujo de trabajo dogfood verifica que la compilación corregida pasa y que la compilación con errores falla en cada push.

En la línea de comandos

npm install -g dsh-verify          # or: npx dsh-verify
npx playwright install chromium    # one-time browser download
npx dsh-verify --spec 'specs/*.json'
# [PASS] specs/home.json (5/5)
# [FAIL] specs/cart.json (4/5)
#   ❌ expect_text #total: got "0" want "99"

Qué incluye

  • Juez determinista — un Chromium headless real (o Firefox / WebKit) ejecuta comprobaciones de estilo humano: clic, relleno, texto, clases, estilos calculados, URLs, errores de consola, errores de red, píxeles.
  • Evidencia, no sensaciones — cada ejecución genera un informe HTML autocontenido con capturas de pantalla e imágenes de diferencias resaltadas en rojo; --json para máquinas; código de salida 0/1 para CI.
  • Regresión visual — líneas base de capturas, diferencia de píxeles con umbrales (expect_screenshot), actualización con --update-baselines.
  • Listas de verificación redactadas por IAdsh-verify gen --url ... --prompt "..." aprende la página en un navegador real, un LLM redacta la lista de verificación y luego la ejecuta de forma determinista. La IA redacta; nunca juzga.
  • Multi-navegadorchromium | firefox | webkit por especificación o --browser.
  • Sin dependencia de frameworks — una especificación JSON es todo lo que hay. Sin lenguaje de configuración, sin SDK, sin proveedor.

Ejemplo de especificación

{
  "title": "my app",
  "serve": "dist",
  "browser": "chromium",
  "steps": [
    { "action": "goto", "path": "/index.html" },
    { "action": "click", "selector": "#count-btn", "count": 3 },
    { "action": "expect_text", "selector": "#count-btn", "text": "Clicked: 3" },
    { "action": "capture_style", "selector": "#page", "prop": "backgroundColor", "var": "bg_before" },
    { "action": "click", "selector": "#color-btn" },
    { "action": "expect_class", "selector": "#page", "class": "dark", "present": true },
    { "action": "expect_style_changed", "selector": "#page", "prop": "backgroundColor", "var": "bg_before" },
    { "action": "screenshot", "name": "final-state" }
  ]
}

Campos de nivel superior: title, serve (directorio estático) o base (URL objetivo), browser, steps. Ejecuta muchas a la vez con un glob; la salida es 0 solo si todas pasan.

El informe

Un informe HTML autocontenido — cada paso con una insignia de aprobado/fallo, selector y detalle, más capturas de pantalla:

dsh-verify report

Agent Arena — trae a tu agente

Benchmark de navegador real para aplicaciones web construidas por agentes: las mismas 3 tareas, las mismas comprobaciones humanas, entrada abierta. Ejecuta tu modelo en el tablero en ~10 minutos:

git clone https://github.com/263311487-ux/dsh-verify && cd dsh-verify
npm install && npx playwright install chromium
export LLM_API_KEY=sk-...          # any OpenAI-compatible model
node arena/run.mjs --agent "gpt-5/single" --task all --repeat 1 --submitter yourname

Tu configuración aparece en el ranking en vivo junto a DeepSeek v4-flash / v4-pro: agent-arena. Reglas completas en docs/ARENA.md.

Pruébalo (ejecútalo tú mismo)

git clone https://github.com/263311487-ux/dsh-verify && cd dsh-verify
npm install && npx playwright install chromium
npm run demo:fixed    # → PASS (11/11)
npm run demo:buggy    # → FAIL (exit 1) — the missing .dark rule, caught
npm test              # engine self-tests

El CI del propio repositorio ejecuta exactamente eso — autopruebas del motor, luego verifica que la versión corregida pasa y la defectuosa falla — para que la herramienta se verifique a sí misma en cada push.

Agent Arena — ¿pueden los agentes entregar aplicaciones web funcionales?

Misma tarea, mismo prompt, mismas comprobaciones humanas — diferentes agentes, calificados por dsh-verify en un navegador real. Última ejecución (2026-08-19): 44/48 ejecuciones aprobadas en 2 modelos × 2 estrategias × 3 tareas, 4 ejecuciones por celda. Dos hallazgos contraintuitivos: el más caro v4-pro de un solo intento obtuvo una puntuación inferior al más barato v4-flash de un solo intento (10/12 vs 11/12), y un bucle de autocomprobación en navegador real elevó a v4-pro a 12/12 — mientras que la autocomprobación de v4-flash falló una vez cuando su propio informe de verificación volvió como JSON corrupto. Cada fallo es reproducible e invisible para un juez LLM.

Agent Arena

Consulta docs/ARENA.md — metodología, las tareas y cómo ejecutar tu propio agente.

Insignia para tu aplicación construida por agentes

¿Construiste algo con un agente de IA? Pruébalo en un navegador real y muéstralo al mundo:

[![agent deliverable: browser-verified](https://img.shields.io/badge/agent_deliverable-browser_verified-brightgreen?logo=playwright&logoColor=white)](https://github.com/263311487-ux/dsh-verify)

Añade una especificación, conecta la GitHub Action, y la insignia se gana, no se reclama. Consulta docs/verified-badge.md.

Hoja de ruta

  • Servidor MCP · listas de verificación redactadas por IA · regresión visual · multi-navegador · GitHub Action · plugin dsh
  • Agent arena — un benchmark público: da la misma tarea a diferentes configuraciones de agentes, califícalos en navegadores reales, publica el ranking
  • Grabador de especificaciones (extensión de navegador: haz clic una vez → se genera la especificación)
  • Ejecuciones en la nube + enlaces de informes compartibles + comentarios en PR

Relacionados

  • dsh-doublecheck — control de calidad de entrega para DeepSeek Harness (/gate): interrogatorio de requisitos + disciplina de evidencia. Par complementario: /gate mantiene la evidencia honesta, dsh-verify mantiene el navegador honesto.
  • falsify — el protocolo de pensamiento científico para agentes de IA (hipótesis → falsificación → evidencia → conclusión calibrada). El par: falsify detecta la conclusión incorrecta, dsh-verify detecta la salida defectuosa.
  • Destacado en la comunidad de DeepSeek Harness — Show Your Plugins: dsh-verify (resultados de Agent Arena de 48 ejecuciones en el hilo)

Licencia

MIT