<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Page-Agent on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/page-agent/</link>
        <description>Recent content in Page-Agent on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Sun, 12 Jul 2026 12:14:00 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/page-agent/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Cómo hacer que la IA opere páginas web con Page-Agent: GUI Agent integrado, automatización de formularios y límites de permisos</title>
        <link>https://knightli.com/es/2026/07/12/page-agent-in-page-gui-agent-form-automation-permission-guide/</link>
        <pubDate>Sun, 12 Jul 2026 12:14:00 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/07/12/page-agent-in-page-gui-agent-form-automation-permission-guide/</guid>
        <description>&lt;p&gt;Page-Agent no equivale a dar a un Agent el control de todo el navegador: inserta JavaScript en tu página para que la página tenga su propio GUI Agent. Según la documentación, usa principalmente operaciones DOM textualizadas y no depende de capturas, modelos multimodales, Python ni headless browser. Para tareas multipágina ofrece una extensión de Chrome y un MCP Server Beta. &lt;a class=&#34;link&#34; href=&#34;https://github.com/alibaba/page-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;README del proyecto&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Es útil para añadir asistencia de «completar una secuencia con una frase» a ERP, CRM, formularios administrativos y herramientas internas, pero no evita permisos del producto. Cada acción sigue sometida a autorización existente, validación del servidor y confirmación humana.&lt;/p&gt;
&lt;h2 id=&#34;cuándo-elegir-page-agent-o-automatización-de-navegador&#34;&gt;Cuándo elegir Page-Agent o automatización de navegador
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Objetivo&lt;/th&gt;
          &lt;th&gt;Opción más adecuada&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Integrar un asistente de lenguaje natural en tu producto Web&lt;/td&gt;
          &lt;td&gt;Page-Agent&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pruebas de regresión, scraping entre sitios, scripts deterministas&lt;/td&gt;
          &lt;td&gt;Playwright o Puppeteer&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hacer que un coding agent revise red, consola y rendimiento&lt;/td&gt;
          &lt;td&gt;Chrome DevTools MCP&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Controlar el Chrome real del usuario conservando su sesión&lt;/td&gt;
          &lt;td&gt;Herramientas como browser-harness&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Consulta también la &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/24/browser-harness-playwright-puppeteer-comparison/&#34; &gt;comparativa de browser-harness, Playwright y Puppeteer&lt;/a&gt;. Page-Agent no sustituye un framework de pruebas: convierte la capacidad de operar en una función de producto.&lt;/p&gt;
&lt;h2 id=&#34;configura-una-instancia-mínima-desde-npm&#34;&gt;Configura una instancia mínima desde NPM
&lt;/h2&gt;&lt;p&gt;Instala primero el paquete:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install page-agent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Crea la instancia en el punto de entrada del frontend. El endpoint del modelo, la clave y las operaciones permitidas deben gestionarse en el servidor o en configuración de seguridad; no escribas una clave de producción en código del navegador.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;PageAgent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;page-agent&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;agent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;PageAgent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;qwen3.5-plus&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;baseURL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;https://your-compatible-api.example/v1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;USE_A_SCOPED_KEY&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;language&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;zh-CN&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;agent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;在当前页面找到“新建客户”按钮，但不要提交表单&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El ejemplo solo comprueba reconocimiento DOM y ubicación del botón. En un entorno real, &lt;code&gt;apiKey&lt;/code&gt; debe ser temporal, limitado y revocable. No entregues secretos universales, tokens de usuario ni credenciales administrativas al script de la página.&lt;/p&gt;
&lt;h3 id=&#34;orden-recomendado-lectura-borrador-y-envío&#34;&gt;Orden recomendado: lectura, borrador y envío
&lt;/h3&gt;&lt;p&gt;Empieza por una página con pocos campos y pocos permisos, como un filtro de clientes o un borrador de ticket. En la primera fase permite solo localizar elementos, leer texto visible y sugerir operaciones. Usa datos de prueba para confirmar que el Agent distingue registros homónimos y estados. No permitas guardar, subir adjuntos ni navegar a dominios externos.&lt;/p&gt;
&lt;p&gt;En la segunda fase permite rellenar formularios. Limita la entrada a parámetros estructurados, como ID de cliente, porcentaje de descuento y fecha de vigencia, en vez de una petición vaga. Muestra los campos que el Agent va a escribir; el servidor vuelve a validar si el rol puede editarlos y si el valor está dentro del rango. Solo tras confirmar la página llama al API de negocio existente, sin una vía trasera para el Agent.&lt;/p&gt;
&lt;p&gt;Considera el envío solo en la tercera fase. Debe pasar por el mismo API, registro de auditoría y doble confirmación que el botón humano. Tras completarse, lee y muestra el ID, la versión y los errores devueltos. Así un malentendido del modelo queda detenido por la vista previa, permisos o validación del servidor.&lt;/p&gt;
&lt;h2 id=&#34;divide-las-tareas-en-etapas-auditables&#34;&gt;Divide las tareas en etapas auditables
&lt;/h2&gt;&lt;p&gt;En la automatización de formularios, el problema suele ser el objeto o el efecto lateral, no el clic. Divide el proceso:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Buscar&lt;/strong&gt;: leer únicamente campos visibles y registros candidatos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rellenar un borrador&lt;/strong&gt;: escribir solo en el formulario local, sin enviar ni subir adjuntos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mostrar diferencias&lt;/strong&gt;: presentar al usuario los campos y valores que se escribirán.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enviar&lt;/strong&gt;: ejecutar solo tras confirmación del usuario y autorización del servidor.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No entregues directamente al Agent «crea un descuento del 20% para el cliente A». Haz que cree el borrador, muestre ID, regla y vigencia, y permite que una persona autorizada lo envíe.&lt;/p&gt;
&lt;h3 id=&#34;reduce-capacidades-a-una-lista-permitida-de-acciones&#34;&gt;Reduce capacidades a una lista permitida de acciones
&lt;/h3&gt;&lt;p&gt;No trates cada elemento DOM como una herramienta invocable. Define acciones de negocio como &lt;code&gt;searchCustomer&lt;/code&gt;, &lt;code&gt;fillDiscountDraft&lt;/code&gt;, &lt;code&gt;previewDiscount&lt;/code&gt; y &lt;code&gt;submitDiscount&lt;/code&gt;, indicando si son de lectura, reversibles o con efectos. El Agent elige la acción y el frontend realiza la interacción. No registres acciones de alto riesgo—borrar, reembolsar, invitar miembros o exportar datos—o exige siempre confirmación manual.&lt;/p&gt;
&lt;p&gt;Registra usuario, página, acción, resumen de entrada, resultado y motivo de fallo. Los registros deben estar redactados y no guardar claves completas, cookies ni campos sensibles. Ante un error, deben responder qué vio y propuso el Agent y quién confirmó al final.&lt;/p&gt;
&lt;h2 id=&#34;límites-de-inicio-de-sesión-multipágina-y-mcp&#34;&gt;Límites de inicio de sesión, multipágina y MCP
&lt;/h2&gt;&lt;p&gt;Page-Agent puede usar la sesión existente de la página, pero eso no justifica ampliar permisos. Evita:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Permitir que extraiga o muestre cookies, contraseñas o códigos de verificación desde lenguaje natural.&lt;/li&gt;
&lt;li&gt;Enviar datos autenticados a un endpoint de modelo no revisado.&lt;/li&gt;
&lt;li&gt;Saltar doble confirmación, confirmación de pago o aprobación de roles con «automatización».&lt;/li&gt;
&lt;li&gt;Abrir capacidades multipágina para todos los usuarios por defecto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Al usar la extensión oficial de Chrome o MCP Server para multipágina o control por Agent externo, establece listas permitidas de dominios y acciones y registros de auditoría. Prueba las capacidades Beta antes de conectarlas a administración de producción.&lt;/p&gt;
&lt;h2 id=&#34;valida-con-tareas-reales-antes-del-lanzamiento&#34;&gt;Valida con tareas reales antes del lanzamiento
&lt;/h2&gt;&lt;p&gt;Elige de tres a cinco tareas de bajo riesgo de soporte u operaciones, como filtrar clientes pendientes, completar campos de un ticket o ir de un pedido a su cliente. Para cada una prepara casos de éxito, ambigüedad y falta de permisos: el éxito llega a vista previa; la ambigüedad pregunta o se detiene; la falta de permisos la rechaza el backend sin filtrar datos adicionales.&lt;/p&gt;
&lt;p&gt;No compruebes solo si pulsó el botón correcto. Comprueba tiempo de primera respuesta, explicabilidad del fallo, corrección del borrador tras recargar y conservación de datos no enviados ante cortes o timeout del modelo. Amplía el alcance solo después de superarlo.&lt;/p&gt;
&lt;h2 id=&#34;lista-de-solución-de-problemas&#34;&gt;Lista de solución de problemas
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Problema&lt;/th&gt;
          &lt;th&gt;Qué hacer&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;No encuentra botón o campo&lt;/td&gt;
          &lt;td&gt;Revisa renderizado dinámico, iframe o capas superpuestas, y estabilidad del texto.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;El Agent eligió el registro equivocado&lt;/td&gt;
          &lt;td&gt;Añade ID único, vista previa de solo lectura y eco de resultado; no coincidas solo por nombre.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Falló la llamada al modelo&lt;/td&gt;
          &lt;td&gt;Revisa API compatible, cuota, CORS y punto de inyección de clave; nunca registres secretos en frontend.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;El formulario está lleno pero el resultado es incorrecto&lt;/td&gt;
          &lt;td&gt;Separa rellenar de enviar y lee la respuesta del servidor tras enviar.&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;El objetivo de Page-Agent no es que una página entienda una frase, sino limitar las acciones en lenguaje natural a flujos observables, reversibles y aprobables. Valida primero consultas de solo lectura y borradores, y abre efectos laterales gradualmente.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
