Hermes Desktop Cierra el Círculo: Llega el Navegador Integrado y el Agente por Fin Puede Leer la Página que Abrió

El 5 de agosto de 2026, Hermes Agent fusionó dos actualizaciones consecutivas que llenan el último blind spot del escritorio:
- PR #77705 — el navegador integrado y la preview rail se convirtieron en pestañas reales del layout tree
- PR #79482 — una nueva herramienta
read_previewpermite al agente leer el contenido de la página abierta actualmente en el navegador integrado
En una frase: el agente siempre pudo “abrir” una página web, pero no podía ver la página que abría — ahora sí puede leerla. Para cualquiera que desarrolle con Hermes Desktop, esto completa el ciclo de “generar UI → abrir preview → inspeccionar el resultado → arreglarlo tú mismo”.
Este artículo no repite las notas del PR. Profundiza en los detalles técnicos de ambos cambios, las decisiones de diseño detrás de ellos y cómo usarlos realmente.
Antecedentes: el agente abría las páginas “a ciegas”
Un vistazo rápido a la evolución de las herramientas deja clara la importancia de estos dos PRs:
- 22 de julio (PR #69519): llegaron
open_preview(url[, label])yfocus_pane(...). Por primera vez el agente pudo abrir activamente una URL, un servidor de desarrollo localhost o un archivo local en el panel de preview del escritorio. Pero ojo: solo podía abrir — el contenido de la página era una caja negra. - Casi al mismo tiempo,
read_terminal/close_terminalpermitieron al agente leer lo que se mostraba en el panel de terminal integrado — pero el lado web nunca recibió su contraparte de “lectura”. - 5 de agosto: ambos PRs llegaron juntos — la refactorización de la UI de pestañas del navegador más la herramienta
read_preview.
En palabras del propio mantenedor: open_preview podía abrir una página y read_terminal podía leer la terminal, pero “¿qué dice esta página?” no tenía respuesta. read_preview cierra esa brecha.
Actualización 1: el navegador integrado se convierte en una pestaña de primera clase
Antes del PR #77705, la preview rail del escritorio era una ciudadana de segunda clase de la UI:
- Renderizaba su propia barra de pestañas separada, con una altura distinta, su propio menú de cierre y su propio formato de etiquetas
- Tenía su propio comportamiento ⌘W, soldado a la zona del explorador de archivos (⌘J arrastraba la preview junto con él)
- Los toggles de consola/DevTools colgaban de la barra de título y su estado estaba controlado por click handlers — cerrar la ventana de DevTools directamente dejaba el botón atascado en “on”
La refactorización la integra por completo en el layout tree:
- Las pestañas de preview ahora son tiles del layout tree:
$previewTabsse refleja en las contribuciones de pane a través de la misma sesiónpaneMirrorque usan los tiles de rutas. Barra de pestañas, arrastre, stack, split, verbos de cierre compartidos, ⌘W normal — todo lo que tiene el área principal, lo tiene la preview. - Las pestañas de URL se titulan “Browser” — la pestaña nombra la superficie, no la página. Semántica más limpia.
- ⌘W / ⌃Tab ahora funcionan sobre las zonas de preview y página: antes, ⌘W sobre una preview solitaria vaciaba el chat principal. Arreglado.
- Los arrastres de sesión pueden aterrizar en las zonas de preview/página — la asimetría de arrastre ha desaparecido.
- El estado de DevTools es event-driven: el glifo se controla mediante los eventos
devtools-opened/closeddel webview, así que cerrar la ventana de DevTools directamente ya no deja un estado “on” obsoleto. - Bonus: se eliminaron las claves i18n duplicadas y todo el código de la rail independiente — reducción neta de código.
Nota técnica: la barra de pestañas se abstrajo en un conjunto de primitivas compartidas (PaneTabStrip, PaneStripGlyph/PaneStripTool, paneTabCloseItems), con glifos aportados como datos, igual que las herramientas de la barra de título. Los futuros tipos de preview reciben la experiencia de pestañas unificada de forma gratuita.
Actualización 2: read_preview — los ojos del agente
El PR #79482 es el núcleo funcional: una nueva herramienta read_preview que replica read_terminal de punta a punta. Sin maquinaria nueva — solo un segundo consumidor de la forma existente:
Capa de herramienta (tools/read_preview_tool.py):
- Limitada al escritorio mediante
check_fnenHERMES_DESKTOP— cero huella de schema fuera de la GUI, exactamente igual que las otras herramientas de pane del escritorio - Lecturas con ventana mediante
start/count(offsets de caracteres): las páginas largas se paginan en lugar de inundar la ventana de contexto
Puente gateway:
preview.read.request/preview.read.responda través del mismo puente de prompt bloqueante queterminal.read- Timeout de 45s,
allow_expiredy.expireal expirar — una respuesta tardía del renderer se resuelve en silencio en lugar de dar error
Renderer (preview-reader.ts):
- El pane de URL registra un lector de página:
executeJavaScriptdel webview → title + innerText visible readActivePreviewresuelve la pestaña activa, limitando una sola lectura a 24k chars- Las pestañas de archivo/artifact responden con su identidad más un puntero a la herramienta más adecuada (
read_fileo la propia conversación) — sin round-trip del webview para contenido para el que el agente ya tiene una herramienta mejor
La prueba manual del PR es un escenario de aceptación muy claro: abre Reddit en el Browser, pregunta “¿cuál es el post más votado?” — el agente llama a read_preview y responde desde la página.
Cómo usarlo realmente
1. Bucle de autoverificación para desarrollo local
El caso más práctico: estás ejecutando una app de React/Vue en localhost:3000 y le has pedido al agente que cambie un componente. Ahora puede:
open_preview(localhost:3000) # open the preview
# …edit code, restart the dev server…
read_preview() # read the page's current content and verify the change
Antes, el agente cambiaba código “a ciegas”. Ahora puede releer lo que la página renderiza de verdad y confirmar el arreglo él mismo.
2. Investigación web con seguridad de contexto
Después de abrir un artículo largo o una página de docs, el agente la lee con paginación start/count, trayendo a contexto solo los párrafos que necesita — mucho más barato que volcar la página entera.
3. Combinación con los Artifacts de v0.20
Si estás usando las previews de Artifacts en sandbox de Hermes v0.20, ahora puedes hacer que el agente lea el contenido realmente renderizado de las apps HTML generadas — convirtiendo “generar → preview → revisión humana” en “generar → preview → leer → revisar”.
4. Límites y fronteras (conviene saberlos)
- Solo escritorio:
read_previewexiste únicamente en Hermes Desktop (limitado porHERMES_DESKTOP); la CLI, la TUI y las plataformas de mensajería no lo tienen. Igual queopen_preview/focus_pane. - Solo texto visible: devuelve title + innerText — no el árbol DOM, no una captura de pantalla. Para “ver” cómo se ve una página todavía necesitas herramientas de screenshot/vision.
- Semántica de pestaña activa: lee la pestaña actualmente activa — con varias pestañas abiertas, ten en cuenta qué página está leyendo el agente.
- Límite de 24k chars: las lecturas individuales están limitadas; las páginas largas necesitan paginación.
Qué significa esto para los desarrolladores
Dos PRs — “una refactorización de UI y una herramienta” — pero juntos marcan un punto de inflexión en el modelo de interacción:
Antes, el flujo de trabajo del agente de escritorio era “yo genero, tú miras”. Producía HTML o abría una página y luego esperaba feedback humano. Ahora se convierte en “yo genero, yo abro, yo leo, yo arreglo” — un bucle autónomo. read_terminal cubría la terminal; read_preview cubre la web; combinadas con las herramientas de archivo existentes, el “sensorium” del agente en Hermes Desktop está prácticamente completo.
El siguiente paso natural (y lo que la comunidad está esperando): combinar read_preview con visión para que el agente no solo lea texto sino que realmente vea el resultado renderizado — momento en el que “leer una página web” se vuelve indistinguible de un humano conduciendo un navegador.
Cómo probarlo
- Actualiza a la última build de escritorio:
hermes update(o instala desde cero con la guía de instalación) - En Hermes Desktop, pídele al agente que haga
open_previewde una URL - Pregúntale “¿qué dice esta página?” — mira cómo llama a
read_previewpara responder
Para más capacidades de escritorio consulta la documentación de Hermes Desktop, y para la actualización completa de v0.20, nuestro análisis a fondo del lanzamiento Herald.