Decisiones técnicas
Ocho decisiones que dieron forma a Diwall, cada una con su razón y su precio. Incluida la que hace fallar su primera ejecución a propósito.
Cada decisión de esta página tiene un precio. Enumerar la ventaja sin el precio haría de esta página un anuncio, y no un documento que usted pueda evaluar.
Un número en lugar de una descripción
Set-of-Mark numera cada elemento interactivo y devuelve esos números junto con
la captura. Actuar es nombrar un número: {"id": 7}.
La alternativa — pedir a un modelo que describa el elemento que busca, o que genere un selector CSS a partir de una imagen — carga la identificación sobre el eslabón más débil. Un número es inequívoco por construcción: tres botones idénticos reciben tres números distintos.
El precio. Los números se calculan en cada captura y se desplazan cuando el
documento cambia. Un número vale para el estado en el que se leyó, nunca de una
sesión a otra. Desde la 1.24.0, la resolución mantiene un número ligado a su
elemento cuando puede: tras una captura Set-of-Mark hecha antes en el mismo
escenario, resuelve por el marcador data-dw-som-id que dejó esa captura; sin
ella, vuelve a indexar la página en su estado actual. Cualquier desacuerdo entre
las dos vías se señala en boussole.respect.som_derive_detectee, y
--som-brut restablece la indexación sola. La receta Hizo clic, pero no en el
elemento que usted quería lo
muestra en acción.
Local por defecto, remoto solo si usted lo decide
El análisis de imágenes se ejecuta en su máquina: --llm local, una instancia
de Ollama en localhost. --llm claude envía en cambio la imagen a una API
remota — la opción existe, está documentada y nunca es la predeterminada. Esto
vale para el análisis de imágenes que hace el propio Diwall; el modelo que
pilota Diwall lee la captura en cualquier caso, y adónde va después se explica
en Lo que Diwall no hace a sus espaldas.
La razón es sencilla: la captura de pantalla de una interfaz autenticada es uno de los elementos más sensibles que puede producir una herramienta. Adónde va debe ser una decisión, no un ajuste heredado.
El precio. Los modelos de visión locales son más pequeños que los alojados. Para lo que Diwall realmente necesita — localizar un elemento sin representación semántica — ha bastado. Para un razonamiento visual más fino, es un límite real.
Identidad declarada, no disfraz
Diwall no se hace pasar por un navegador humano por defecto. --stealth existe
para los casos en que usted decida otra cosa; hay que activarlo expresamente, y
la decisión es suya, porque usted responde del tráfico que envía.
El precio, y no es pequeño. Algunos sitios rechazan a un agente que se anuncia, cuando habrían servido a un navegador que no hubiera dicho nada. Un panel real de 23 sitios comerciales: el 39 % bloqueado por un WAF. Eso es lo que cuesta esta postura, medido y no supuesto.
Señales, nunca veredictos
Diwall informa de lo que ha advertido y le deja decidir.
etat.pret_a_agir: false significa he notado algo — una firma de WAF, una
deriva de sesión —, no me niego a funcionar. La detección de WAF se basa en
palabras clave y puede equivocarse; aparece como un recuento, nunca como una
excepción que detenga la ejecución.
El diseño contrario — una herramienta que bloquea en cuanto cree que algo va mal — convierte cada falso positivo en una avería y enseña a sus usuarios a desactivar la comprobación.
El precio. Hay que leer la respuesta. Quien llama y solo mira succes no
saca ningún provecho de estas señales.
El cerrojo que hace fallar su primera ejecución
Diwall se niega a ejecutarse mientras quien lo pilota no haya leído la guía y no pueda citar su número de versión.
Diwall no figura en los datos de entrenamiento de ningún modelo, y un modelo que no ha leído la guía improvisa. No es una hipótesis: causó un incidente de seguridad documentado, y este cerrojo es la respuesta. Cómo es la improvisación, y las dos reglas que la evitan →
El precio. Su primera llamada falla, a propósito, con
{"succes": false, "erreur": "guide_non_lu"}. Todo comando documentado lleva
--guide-version. Es una fricción, es deliberada, y es la decisión más
cuestionada del proyecto.
La guía nunca se traduce
La documentación para personas existe en cuatro idiomas. Las guías que leen los modelos existen solo en inglés, y no es un descuido.
Una guía traducida puede desincronizarse sin que nadie lo note. Su número de versión se actualiza mecánicamente mientras su contenido sigue en la versión anterior — y un agente pasa entonces el cerrojo habiendo leído instrucciones obsoletas. Es exactamente el fallo que el cerrojo debe impedir, reintroducido por la propia traducción.
Un modelo lee inglés de forma nativa, y el inglés consume menos tokens: el beneficio es nulo, el riesgo es real.
El precio. Un operador que no lee inglés y quiere entender lo que se le dijo a su agente tiene que leer inglés. La documentación para personas cubre ese hueco; la guía, no.
El orden se declara una sola vez
El PDF de referencia reúne varios documentos. Su orden se declara en un manifiesto, una sola vez, común a todos los idiomas — nunca se deduce del sistema de archivos.
Un orden implícito nunca es el orden pedagógico: así es como un manual acaba presentando la desinstalación antes que la instalación. Y si cada traducción declarara el suyo, cuatro PDF acabarían con tres órdenes distintos, y nadie se daría cuenta hasta que un lector siguiera el equivocado.
Todo documento del perímetro que no figure ni en el orden ni en las exclusiones justificadas hace fallar la compilación. De forma visible, en lugar de desaparecer del PDF en silencio.
Un proceso por llamada, no un servidor
Diwall es un comando que el modelo ejecuta en cada paso, no un servicio al que se conecta. Entre dos llamadas, nada está a la escucha. La primera pregunta de un ingeniero es por qué no es un servidor — uno que hable un protocolo como MCP, por ejemplo.
Lo que aporta esta elección: ningún servicio a la escucha en un puerto; una
llamada, una entrada en el registro de operaciones; el cerrojo
--guide-version comprobado en cada llamada; cualquier modelo capaz de
ejecutar un comando de shell pilota Diwall, sin cliente de protocolo que
instalar; un escenario sigue siendo un archivo declarativo, validado antes de
que arranque el navegador.
El precio. El estado vivo de la página no se mantiene entre dos llamadas.
Las cookies y el almacenamiento sí, mediante --sauver-session y
--reprendre-session; una casilla marcada o un formulario a medio rellenar,
no. De ahí la regla: una secuencia con estado debe ir en un único escenario.
→ La sesión no se mantiene entre dos llamadas
Lo que esta elección no cambia, porque la pregunta suele traerlo consigo:
- El transporte no decide dónde se resuelve una credencial. Una referencia
depuis_secretsseguiría siendo una referencia con cualquier protocolo. - Un protocolo no decide nada. Decide el agente, en ambos casos.
- Un modelo alojado que lee la captura la recibe, sea cual sea el medio que la transporte.
En resumen
- Un número es inequívoco; una descripción, no.
- Local por defecto, porque la captura de una página autenticada es sensible.
- Identidad declarada, y el 39 % de un panel real la rechazó.
- Señales en lugar de veredictos: usted decide, así que tiene que leer.
- La primera ejecución falla a propósito, y es intencionado.
- La guía no se traduce, porque una traducción obsoleta desactivaría el cerrojo.
- El orden de los documentos se declara una sola vez, y un documento olvidado hace fallar la compilación.
- Un proceso por llamada: nada está a la escucha, y el estado de la página va en un único escenario.