Skip to content

docs: el nuevo stack de browser automation para coding agents (2026)#35

Open
SirMinionBot wants to merge 2 commits into
mainfrom
docs/browser-automation-stack-coding-agents
Open

docs: el nuevo stack de browser automation para coding agents (2026)#35
SirMinionBot wants to merge 2 commits into
mainfrom
docs/browser-automation-stack-coding-agents

Conversation

@SirMinionBot

Copy link
Copy Markdown
Collaborator

Resumen: investigación (8.633 palabras) sobre los cuatro stacks maduros de browser automation para coding agents: CDP-first (ChromeDevTools/chrome-devtools-mcp), WebDriver BiDi (microsoft/playwright-mcp), vision-LLM wrapper (browser-use/browser-use) y OS-level (trycua/cua). Cuándo usar uno, cuándo combinar varios, decisión accionable para engineering leads.

Tipo / estado del frontmatter: tipo: investigacion + estado: pendiente-revision (convención CSS para estado del arte).

Cambios: 1 archivo nuevo (src/content/ensayos/browser-automation-stack-coding-agents.md, 65 KB). Sin tocar otros archivos.

Material de fondo:

  • chrome-devtools-mcp clonado a ~/proyectos/chrome-devtools-mcp (npm install + build verificado, --help ejecutado).
  • playwright-mcp, browser-use, trycua/cua clonados y leídos (sin ejecutar) por el subagente escritor.
  • Investigación chrome-devtools-mcp completa en ~/.hermes/repo-investigations/chrome-devtools-mcp.md (30 KB).

Notas para la revisión:

  • Trim quirúrgico mío: 8.719 → 8.633 palabras (el subagente justificó el overrun pero quería mantener substance alta en TL;DR ejecutivo y tabla 'Verificación de claims').
  • Sección 'Verificación de claims' al final: tabla transparente ✅/⚠️ para 10 claims del artículo. Útil para engineering lead que pide cifras exactas antes de budget.
  • Demo de 'Reference over value' en §3 (Stack 1) — depende de si conviene mantenerlo o cortar.

Relacionado: companion a 'governance-vs-prompt-safety' y 'tres-escuelas-anti-ai-slop' (PRs aparte).

Review de 8 agentes en paralelo sobre los 6 ensayos nuevos y la
infraestructura asociada. Este commit cierra los 6 bloqueantes, los 6
problemas de prioridad alta y la mayoría de los de prioridad media.

## Bloqueantes

- B1: la-escalera-de-confianza: tag \`orquestacion\` → \`orquestación\`
  (sin tilde generaba página de tag duplicada con un solo ensayo;
  ahora se une a las otras 5 en \`/ensayos/tags/orquestación/\`).
- B2: browser-automation + multi-repo: quitados \`tipo\` y \`estado\`
  del frontmatter — no están en el esquema Zod de
  \`src/content.config.ts\` y ningún template los consume. Zod 4
  los descartaba en silencio, pero la intención editorial no estaba
  respaldada por código.
- B3: multi-repo: Graphify \`talops/graphify\` (404) →
  \`Graphify-Labs/graphify\` con atribución a Safi Shamsi.
- B4: multi-repo: MockLoop \`mockloop.dev\` (refused) →
  \`github.com/mockloop/mockloop-mcp\` con nota del problema.
- B5: multi-repo: Fallo 8 reescrito — la sección 5.6 ya existe, no
  prometía una inexistente; ahora apunta a 5.6 y reorienta la
  mitigación a ownership operacional.
- B6: multi-repo: quitado párrafo final que pedía PRs a un repo
  ficticio \`product-specs/\`.

## Fact-check del flagship (browser-automation-stack-coding-agents)

- H1: tabla de chrome-devtools-mcp reescrita con conteos de
  \`docs/tool-reference.md\` upstream (51 tools / 10 secciones, no
  los 55/14 inflados del grep local).
- H2: fila de Edge matizada a \`⚠️ no oficial\` con link al issue
  #1235 (era \`✅\` a pesar de que el README oficial sólo garantiza
  Chrome stable y Chrome for Testing).
- H3: stars de browser-use unificadas a ~90k con disclaimer; borrada
  la afirmación "0→100k en <18 meses" que el propio cuadro de
  verificación marcaba como ⚠️.
- H4: guía de telemetría endurecida — \`ANONYMIZED_TELEMETRY=False\`
  debe estar antes del primer \`import browser_use\` (issues #939
  y #1584). Ejemplos Dockerfile y GitHub Actions añadidos.

## Contenido

- H5: cuatro typos (\`ejecutución\`, \`grpear\`, \`vendidos\`, \`ataño\`).
- H6: disclosure explícito de que el benchmark 412K vs 3.4K es de
  primera parte (DeusData = mantenedor de codebase-memory-mcp).
- L1: comillas consistentes en \`autor:\` en los 6 ensayos.
- L2: tiebreaker alfabético es en el sort de tags del cloud.
- L7: agent-sprawl-gobernanza movido a 2026-06-13 (ya no colisiona
  con la-escalera-de-confianza 2026-06-14).
- M10: cross-links añadidos en el ensayo multi-repo a
  \`/ensayos/codebase-memory-mcp-motor-grafos-agentes\` (×2) y
  \`/ensayos/agent-sprawl-gobernanza\` (×1) donde el texto ya
  mencionaba esos conceptos sin enlazarlos.

## Scripts (scripts/og-card/render.mjs)

- M1: lista de Chrome extendida con paths Linux
  (\`/usr/bin/{google-chrome,google-chrome-stable,chromium,
  chromium-browser}\`, \`/snap/bin/chromium\`) y fallback
  \`command -v\`. Antes sólo funcionaba en macOS.
- M2: \`chrome.on('error', ...)\` con mensaje accionable; antes
  fallaba con un "DevTools no respondió" confuso cuando el binario
  no existía o le faltaban shared libs.
- M3: \`rmSync(userDataDir, ...)\` en cleanup + handlers
  SIGINT/SIGTERM; antes se filtraba un profile de Chrome por
  ejecución en \$TMPDIR.
- M6: \`og-card.html\` usa \`var(--og-w, 1200px) / var(--og-h, 630px)\`;
  \`render.mjs\` inyecta las vars en runtime para soportar tamaños
  custom sin tocar el HTML.

## UI / accesibilidad

- M4: \`aria-pressed\` actualizado al cambiar el filtro activo
  (lectores de pantalla oyen qué filtro está aplicado).
- M5: tag-cloud son \`<a href="/ensayos/tags/{tag}">\` reales; el
  JS intercepta para filtrar en cliente, pero sin JS funcionan
  como navegación estática. Antes eran \`<button>\` inertes sin
  href.
- M7: \`favicon.svg\` con \`role="img"\` + \`aria-label\`.
- M8: rama vacía inalcanzable quitada de
  \`src/pages/ensayos/tags/[tag].astro\` (\`getStaticPaths\` ya
  garantiza \`ensayos.length >= 1\`).
- M9: \`src/components/Owl.astro\` extraído como componente
  compartido; Header e index.astro ya no duplican el SVG inline.

## Build

\`pnpm build\` verde: 72 páginas, 16 ensayos indexados por
Pagefind, 43 páginas de tag únicas. \`/ensayos/tags/orquestación/\`
lista 6 ensayos. \`/ensayos/tags/orquestacion/\` ya no existe.

## Fuera de scope (no tocado)

- L3 \`encodeURIComponent\` defensivo en \`[tag].astro\`
- L4 DRY de \`.tag--active\`/hover
- L5 longitud descripción cc-switch (297 chars)
- L6 split del ensayo multi-repo a 1383 líneas en serie
- L8 algunas citas pendientes (Kilo Code 25T tokens, IBM 1.600
  agentes, EU AI Act agosto 2026, FalkorDB 72-80%, Sogl enterJS)
- L9 duplicación de fallos 1 y 4 con 5.1
- L10 OpenSpec stars stale

Estos quedan para una iteración editorial posterior — no son
defectos, son decisiones de scope.
@github-actions github-actions Bot added size/XL and removed size/XL labels Jul 9, 2026
@TellMeAlex

Copy link
Copy Markdown
Contributor

Cierra los hallazgos del code review paralelo (8 agentes)

Este push (bb1e3c0) cierra los 6 bloqueantes y los 6 problemas de prioridad alta del review que se ejecutó en paralelo sobre esta PR. La PR original (los 6 ensayos nuevos + la infraestructura) sigue intacta; este commit sólo arregla.

Bloqueantes (6/6)

  • B1la-escalera-de-confianza.md: tag orquestacionorquestación. Sin tilde generaba página de tag duplicada con un solo ensayo; ahora se une a las otras 5 en /ensayos/tags/orquestación/.
  • B2browser-automation-stack-coding-agents.md y gestion-producto-multi-repo-agentes-ia.md: quitados tipo y estado del frontmatter (no están en el esquema Zod, sin consumidores). Zod 4 los descartaba en silencio, pero la intención editorial no estaba respaldada por código.
  • B3 — Multi-repo: Graphify talops/graphify (404) → Graphify-Labs/graphify con atribución a Safi Shamsi.
  • B4 — Multi-repo: MockLoop mockloop.dev (refused) → github.com/mockloop/mockloop-mcp con nota.
  • B5 — Multi-repo: Fallo 8 reescrito — la sección 5.6 ya existe, no prometía una inexistente.
  • B6 — Multi-repo: quitado párrafo final que pedía PRs a un repo ficticio product-specs/.

Fact-check del flagship (4/4)

  • H1 — Tabla de chrome-devtools-mcp reescrita con conteos del docs/tool-reference.md upstream (51 tools / 10 secciones, no los 55/14 inflados del grep local).
  • H2 — Fila de Edge matizada a ⚠️ no oficial con link al issue #1235.
  • H3 — Stars de browser-use unificadas a ~90k con disclaimer; borrada la afirmación 0→100k en <18 meses que el propio cuadro de verificación marcaba como ⚠️.
  • H4 — Guía de telemetría endurecida: ANONYMIZED_TELEMETRY=False debe estar antes del primer import browser_use (issues #939 y #1584). Ejemplos Dockerfile y GitHub Actions añadidos.

Otros

  • H5 Cuatro typos en headers de ensayos publicados.
  • H6 Disclosure de que el benchmark 412K vs 3.4K es de primera parte.
  • M1–M3 render.mjs ahora funciona en Linux (Chrome path), atrapa spawn errors con mensaje accionable, y limpia el user-data-dir de $TMPDIR.
  • M4 + M5 Tag-cloud con ARIA aria-pressed y <a href> reales (sin JS funciona como navegación estática).
  • M6 og-card.html con CSS vars; render.mjs inyecta dimensiones en runtime.
  • M7 favicon.svg con role="img" + aria-label.
  • M8 Rama inalcanzable quitada de [tag].astro.
  • M9 Owl.astro extraído como componente compartido (Header + index.astro).
  • L1, L2, L7, L10 Consistencia de comillas en autor:, tiebreaker alfabético es en sort de tags, fechas distintas entre los dos ensayos que colisionaban, cross-links entre ensayos.

Verificación

$ pnpm build
[build] 72 page(s) built in 902ms
[build] Complete!
[pagefind] Indexed 16 pages / 5537 words

/ensayos/tags/orquestación/ lista 6 ensayos. /ensayos/tags/orquestacion/ ya no existe.

Fuera de scope

Quedan para una iteración editorial posterior (no son defectos del PR):

  • L3 encodeURIComponent defensivo en [tag].astro.
  • L4 DRY de .tag--active/:hover.
  • L5 descripción cc-switch a 297 chars.
  • L6 split del ensayo multi-repo (1383 líneas → serie).
  • L8 algunas citas pendientes (Kilo Code 25T tokens, IBM 1.600 agentes, EU AI Act agosto 2026, FalkorDB 72-80%, Sogl enterJS).
  • L9 duplicación de Fallos 1/4 con 5.1.
  • L10 OpenSpec stars stale.

Diff: 13 archivos cambiados, +226/-122.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants