# Agente de IA para Android: de la instrucción a la macro

> Describe una tarea, deja que el agente de IA para Android de MAS explore la app en un emulador o en la nube y recibe una macro en Python validada y editable.

Source: https://automationmacro.com/es/docs/agent (MAS Agent, updated 2026-09-05)

MAS Agent es el agente de IA para Android que vive dentro de Macro Automation Studio (MAS). Le describes una tarea con tus palabras y el agente de IA para Android explora la app en un dispositivo, construye un mapa de sus pantallas, captura de la pantalla en directo los botones y las lecturas que necesita, y escribe una macro estándar de MAS en Python con imágenes de plantilla y regiones OCR. Después valida la macro con 3 ejecuciones de validación en el mismo dispositivo y te la entrega. A partir de ahí la macro se repite sin ningún modelo de por medio, a cero créditos.

## Antes de empezar

- MAS instalado y con sesión iniciada, con la prueba gratuita o un plan de pago. Consulta [Instalación](/docs/install).
- Un dispositivo que el agente pueda controlar: un emulador en marcha añadido en **Grupos de dispositivos**, o un dispositivo en la nube en estado **Listo**.
- La app que quieres automatizar instalada en ese dispositivo y con la pantalla de inicio de sesión ya superada.
- Créditos de IA en tu cuenta. La página [Facturación](/docs/billing) explica cómo funcionan los créditos.

## Iniciar una sesión con el agente de IA para Android

1. Abre **Agente** en la barra lateral.
2. Elige el **Dispositivo**. La lista tiene dos grupos, **Emuladores locales** y **Dispositivos en la nube**. Haz clic en **Actualizar dispositivos** si falta un emulador que acabas de iniciar.
3. Elige el **Proveedor** y el **Modelo**. Los **Modelos en la nube** se ejecutan en los servidores de MAS y se cobran de tus créditos de IA.
4. Escribe la tarea en el cuadro de instrucción, por ejemplo "Recoge la recompensa diaria y cierra todos los avisos", y haz clic en **Generar**.

Dónde se ejecuta la sesión depende del dispositivo:

- **Emulador local**: MAS inicia el motor del agente en tu máquina ("Iniciando el motor del agente..."). El motor habla con el emulador por adb, así que el emulador y la app siguen abiertos.
- **Dispositivo en la nube**: la sesión arranca en los servidores de MAS junto al dispositivo ("Ejecutándose en nuestros servidores"). Puedes cerrar la app y volver más tarde; la conversación se guarda en tu cuenta. Un dispositivo en la nube usa siempre **Modelos en la nube**.

Solo se ejecuta un agente por dispositivo a la vez. Si otro chat está ocupado en el mismo dispositivo, MAS ofrece **Ir a ese chat** o **Detenerlo y continuar aquí**.

## Fases: cómo genera el agente una macro a partir de la instrucción

La pestaña **Resumen** muestra la fase actual y la lista **Progreso** la sigue con palabras sencillas.

| Fase | Qué hace el agente | Hito que ves |
|---|---|---|
| SCOUT | Explora la app y aprende sus pantallas | Notas en el chat |
| PLAN | Escribe el plan y te pide que lo apruebes | "Planificando la automatización..." |
| HARVEST | Recorta imágenes de plantilla y mide regiones OCR en la pantalla en directo | "Capturando los botones y lecturas que necesitará la macro..." |
| CODIFY | Escribe el proyecto de Python | "Escribiendo tu macro..." |
| REVIEW | Revisa el borrador frente a lo que observó | "Revisando el código generado frente a lo observado..." |
| VALIDATE | Ejecuta la macro en tu dispositivo | "Probando la macro en tu dispositivo..." |
| REPAIR | Corrige lo que encontró la prueba y vuelve a HARVEST o CODIFY | "Corrigiendo un problema encontrado en las pruebas..." |
| DONE | Te entrega la tarjeta de resultado | "Hecho", con "graduada" cuando todas las ejecuciones pasaron |

Mientras hay una tarjeta de pregunta abierta, la fase se muestra como WAITING_FOR_USER y el reloj de la sesión se detiene. La reparación está limitada por el progreso, no por un número: cuando el mismo fallo se repite con el código sin cambios, la validación se pausa hasta que el agente trae un diagnóstico nuevo o te pregunta. Un tope de 25 ciclos de reparación cierra una sesión que de otro modo seguiría en bucle.

## Preguntas, el plan y las correcciones

El agente pregunta en lugar de adivinar. Cuando la pantalla admite dos lecturas, o un paso gastaría o destruiría algo, se detiene y te plantea la pregunta.

- Una tarjeta titulada **El agente necesita tu respuesta** contiene de una a cuatro preguntas. Elige una opción o escribe una respuesta propia y haz clic en **Enviar respuestas**.
- El plan es el contrato de la sesión: el objetivo, el bucle principal y la comprobación de éxito. Cualquier gasto dentro del juego necesita un límite que apruebes antes de que el agente gaste nada en la app.
- Para corregir el rumbo a mitad de sesión, escribe en el cuadro de texto mientras trabaja y haz clic en **Redirigir**. El mensaje entra en la siguiente decisión del agente.
- **Detener** termina la sesión al instante. El trabajo se guarda; envía un mensaje de seguimiento en el mismo chat para continuar.

## Presupuestos y créditos

El panel **Presupuestos** muestra los pasos, los créditos (o el coste), los tokens y el gasto dentro del juego de la sesión. Un presupuesto de 0 significa sin límite, y ese es el valor por defecto en todos los ejes: tu saldo de créditos es el límite real. Cuando el saldo llega a cero, MAS rechaza más llamadas al modelo y la sesión se detiene con lo que tiene.

Los créditos se gastan solo mientras el agente explora, escribe y prueba. Una macro terminada se ejecuta a cero créditos en cualquier dispositivo. El indicador **Créditos** de la página Agente se actualiza mientras la sesión avanza, y **Recargar créditos** abre la página Suscripción. El funcionamiento está en la página [Facturación](/docs/billing); las tarifas, en la [página de precios](/pricing).

## El mapa de menús

Un mapa es la memoria que el agente tiene de una app: cada pantalla que ha visto y los botones que las conectan. Crece solo mientras el agente trabaja, y la pestaña **Mapa** lo muestra como un grafo con recuentos de pantallas, transiciones, toques y botones sin explorar.

- **Mapear esta app** recorre los menús de forma deliberada (unos 8 minutos); **Pasada profunda** abre menús más profundos (unos 20 minutos). Ambas son solo navegación: el agente retrocede ante cualquier cosa que venda algo.
- **Compartir mis mapas** junta tus pasadas con las de otras cuentas que mapean la misma app. Las contribuciones se mantienen privadas hasta que otra cuenta las corrobora, y puedes retirar una desde **Mis contribuciones**. Con el uso compartido apagado, tus mapas siguen ayudando a tus propias sesiones.

## Añadir a mis macros

Cuando la tarjeta de resultado muestre **Hecho**, haz clic en **Añadir a mis macros**. MAS crea el proyecto en tu carpeta de proyectos, sube cada imagen de plantilla a tu biblioteca de imágenes dentro de una carpeta `agent/`, reescribe los id de imagen dentro del código e inicializa git. El chat ofrece entonces **Abrir en el IDE**, **Ejecución de prueba** en el mismo dispositivo y una tarjeta de programación (**Una vez**, **Diaria** o **Semanal**, y luego **Crear programación**). Las ejecuciones programadas usan los argumentos guardados en la tarjeta del dispositivo.

Para cambiar una macro más adelante, elígela en **Mejorar** en la lista del espacio de trabajo y describe qué añadir o cambiar. El agente parte del proyecto existente y lo actualiza en el sitio.

## Qué contiene el proyecto

| Archivo | Propósito |
|---|---|
| `src/app.py` | La macro: el registro `mas.images({...})`, una función por pantalla y el bucle principal |
| `src/script_args.py` | El analizador de argumentos generado a partir del formulario |
| `script_runner.uibproj` | El formulario de argumentos para UI Builder |
| `images/manifest.json` | Mapa de nombre a archivo de cada plantilla capturada; los archivos se quedan tras la instalación |
| `task.yaml` | La especificación de validación |
| `agent_session.json` | Qué sesión creó el proyecto, usado por sesiones de mejora posteriores |
| `README.md` | El objetivo y la tabla de argumentos |

`task.yaml` registra el nombre de la tarea, la instrucción, el paquete de la app, el dispositivo, una precondición de entrada (una plantilla que debe verse al empezar), un tiempo límite, `script_runs: 3`, los argumentos de prueba y las comprobaciones. Los tipos de comprobación son `exit_code`, `template`, `ocr_region`, `storage`, `adb_shell`, `element_visible` y `element_text`, cada uno con `when: active`, `idempotent` o `always`. La validación es una prueba de humo: el bucle principal se limita a dos iteraciones. El entorno de ejecución de Studio nunca lee `task.yaml`.

Tras la instalación editas como cualquier otro proyecto: el flujo en `src/app.py` con el SDK completo, las imágenes de plantilla en [Asset Lab](/docs/asset-lab) y la biblioteca de imágenes, las regiones OCR en el código y el formulario de argumentos en [UI Builder](/docs/ui-builder). El [recorrido por Studio](/docs/studio) cubre el editor, las ejecuciones y el depurador.

## Una IA que juega juegos móviles y cualquier otra rutina de pantalla

MAS Agent se encarga de rutinas basadas en la pantalla en emuladores y dispositivos en la nube: los avisos e interrupciones que encontró durante la exploración, contadores y temporizadores leídos con OCR para que la macro espere o salte, y la misma rutina en todo un grupo de dispositivos según un horario. Te pregunta por las decisiones que no puede leer de la pantalla, por el presupuesto antes de empezar, y antes de cualquier acción destructiva o de cualquier compra.

Trabaja solo desde la pantalla. Nunca modifica un APK ni lee la memoria de un juego, y necesita un dispositivo que pueda ver. Ninguna herramienta de automatización está libre de riesgos al 100 %, así que automatiza con responsabilidad y bajo tu propio criterio.

El mismo agente está disponible desde Claude Code, Cursor, Codex y otros clientes a través del [servidor MCP](/docs/mcp), que expone `author_macro`, `get_agent_session`, `answer_agent_session`, `stop_agent_session` y `get_map`.

## Solución de problemas

### El agente hace una pregunta y espera

La sesión está en pausa a propósito y el reloj detenido, así que no se gasta nada. Abre la pestaña **Chat**, responde a la tarjeta y haz clic en **Enviar respuestas**. Una tarjeta marcada como "Pregunta caducada" pertenece a una sesión que ya terminó; responde en el cuadro de texto y el seguimiento arranca con la conversación completa.

### La validación sigue fallando

Lee la comprobación fallida en el chat: una plantilla que nunca llegó a verse, un patrón OCR que no coincidió o un valor de almacenamiento que la macro nunca guardó. Redirige al agente con lo que sepas o responde a su pregunta. Si el emulador se cerró de golpe, el agente se detiene tras cinco errores de dispositivo seguidos; reinicia el emulador y escribe en el chat para continuar.

### Presupuesto alcanzado

La sesión terminó porque se agotó un presupuesto que fijaste o porque tu saldo de créditos llegó a cero. El trabajo se guarda. Recarga créditos desde la página Suscripción, o sube el presupuesto, y envía un mensaje de seguimiento en el mismo chat.
