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-verifyes el nombre del paquete — es lo mismo.)
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.


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.

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ón | Lo que dijeron los agentes | Lo que dice un navegador real |
|---|---|---|
demo/buggy | "No se encontraron problemas" | ❌ FALLO — el fondo nunca cambia |
demo/fixed | una regla CSS añadida | ✅ APROBADO — el tema cambia |
Misma página. Mismo JS. Una regla CSS faltante. Dos veredictos diferentes.
¿Por qué no simplemente...?
| Lo que podrías usar | Su punto ciego | Lo que añade dsh-verify |
|---|---|---|
| Scripts de Playwright hechos a mano | Cada proyecto de agente reescribe el mismo código repetitivo; nada es revisable como especificación | Una 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íxeles | Un navegador real ejecuta clics, entradas, estilos y devuelve capturas de pantalla como evidencia |
| Herramientas de navegador integradas en el agente | Son las manos del agente — comparten los mismos puntos ciegos que el código que acaban de escribir | dsh-verify es un testigo independiente, no parte del agente que se está probando |
| Herramientas visuales solo de capturas | Detectan 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 entrada | Para qué sirve | Una línea |
|---|---|---|
| Servidor MCP | Tu agente de IA verifica su propia entrega, a mitad de sesión | claude mcp add dsh-verify -- npx -y -p dsh-verify dsh-verify-mcp |
| CLI | Tú o tu CI verifican una compilación/URL | npx dsh-verify --spec demo/fixed.json |
| GitHub Action | Cada push ejecuta comprobaciones en navegador real | uses: 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 quebodybackground-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;
--jsonpara máquinas; código de salida0/1para 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 IA —
dsh-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-navegador —
chromium|firefox|webkitpor 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:

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.
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:
[](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