
Agente de automatización de Android en lenguaje natural que controla dispositivos reales mediante ADB, captura Logcat y capturas de pantalla, y expone un servidor MCP para IDE de IA y pipelines de pruebas de CI.
Permite que los asistentes de IA y las suites de pruebas usen teléfonos reales como lo haría un humano.
English • 中文文档 • Workflow Showcase • Quick Start • MCP for IDEs • Benchmarks • Discord Community
Demo en vivo: Configura rutas de conducción y calcula las duraciones totales en Google Maps, luego abre YouTube para reproducir una canción de Coldplay.
Antigravity usa ARTEMIS a través de MCP para convertir una solicitud de prueba en un plan, la ejecución en el dispositivo y un informe de diagnóstico:
Asegúrate de que haya un dispositivo Android conectado (con la depuración USB habilitada) o un emulador. El script de inicio con un solo clic hará automáticamente lo siguiente:
uv).rules.md) en tus IDE de IA (Antigravity, Cursor, Claude Code, Codex, Windsurf, VS Code, Cline/Roo, OpenClaw).# 1. Clone repo & navigate to directory
git clone https://github.com/google/artemis.git && cd artemis
# 2. One-click launch
./start.sh
# 1. Clone repo & navigate to directory
git clone https://github.com/google/artemis.git
cd artemis
# 2. One-click launch
.\start.bat
PowerShell no busca scripts ejecutables en el directorio actual de forma predeterminada, así que usa
.\start.batsin una barra invertida final. En el símbolo del sistema (CMD), usastart.baten su lugar.
Consejo: Abre
http://localhost:8000en tu navegador predeterminado con un asistente de conexión de dispositivos, espejo de pantalla en vivo, sandbox de prompts y repeticiones de ejecución. También puedes ejecutar directamente desde la CLI:uv run artemis run "Open Settings, find Battery and tell me current level" --profile flash.
ARTEMIS incluye un servidor nativo del Model Context Protocol (MCP). Conecta tu teléfono real directamente a los IDE de IA:
Ejecutar ./start.sh (macOS/Linux) o .\start.bat (Windows PowerShell) te pedirá configurar el MCP global y las reglas de prueba para los IDE detectados (o puedes instalarlos/actualizarlos manualmente en cualquier momento con los comandos siguientes):
# Auto-install MCP server & global rules for Antigravity / Jetski:
uv run artemis mcp --install antigravity
# Or install for all supported AI IDEs (including Codex):
uv run artemis mcp --install all
Consejo: También puedes configurar MCP de forma interactiva durante la configuración inicial mediante
uv run artemis init. Consejo Pro: Si quieres usar el comandoartemisglobalmente sinuv runen cualquier directorio, ejecutauv tool install -e .una vez en la raíz del proyecto.
Instala el cliente sin dependencias en tiempo de ejecución en la máquina de desarrollo. ADB, los agentes, los modelos y el procesamiento de imágenes permanecen en el host del dispositivo:
uv add "artemis-client @ git+https://github.com/google/artemis.git#subdirectory=packages/artemis-client"
import asyncio
from artemis_client import ArtemisClient
async def main():
client = ArtemisClient(
"http://artemis-host:8000",
device_serial="emulator-5554", # optional: target specific device serial
default_profile="flash", # "flash" (fast reactive) or "pro" (deep reasoning)
)
result = await client.run(
"Open System Settings, go to 'Battery', verify battery percentage is displayed, and check for any crash dialogs.",
)
assert result.succeeded, f"Test failed: {result.error or result.status}"
print(f"✅ Test Passed! Device: {result.device_serial} | Trace ID: {result.trace_id}")
if __name__ == "__main__":
asyncio.run(main())
Vista general de la consola: ① Conmutador de vista (Home / Workspace) · ② Modelo y repetición (estado Flash/Pro y repetición de vídeo) · ③ Flujo del agente en vivo (percepción de acciones, coordenadas objetivo y resultados estructurados) · ④ Dock de prompts (envío en lenguaje natural) · ⑤ Cola de tareas y panel (ciclo de vida e historial)
uv run artemis ui): Proyección de pantalla en tiempo real y panel interactivo, con soporte para el envío de pruebas en lenguaje natural, telemetría de razonamiento en vivo, trayectorias de acciones y repetición de ejecuciones; gestiona el ciclo de vida del servidor en cualquier momento desde cualquier terminal con uv run artemis restart, uv run artemis stop y uv run artemis status;uv run artemis run): Ejecución directa desde la terminal para casos de prueba automatizados, inspección exploratoria de estabilidad o benchmarks de AndroidWorld con una salida de terminal estructurada de alta fidelidad;La primera tarea en un dispositivo instala el Artemis Accessibility Helper, un pequeño
servicio de accesibilidad que lee el diseño de la pantalla sin tomar la
conexión de UiAutomation. Las herramientas que usan UiAutomation pueden suprimir el helper a menos
que habiliten FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES. Verás
una notificación contraída "Artemis test helper is running" y una nueva entrada en
Settings > Accessibility; ambas son ese helper. Solo escucha en el propio teléfono
y no envía nada a ningún otro lugar.
uv run artemis helper installuv run artemis helper status / uv run artemis doctoruv run artemis helper uninstallARTEMIS_HIERARCHY_BACKEND=uiautomator en .envARTEMIS_HELPER_AUTO_INSTALL=false en .envSi el helper falla en algún momento durante una tarea, ARTEMIS recurre a UIAutomator2 y lo indica
en la línea de tiempo de la tarea, en el estado de mobile_manage_task y en el informe final.
Artemis logró una tasa de finalización superior al 99 % en AndroidWorld, el benchmark de Google Research que abarca más de 20 aplicaciones y más de 100 tareas de varios pasos.
ARTEMIS admite dos perfiles de ejecución adaptados a diferentes requisitos de automatización:
--profile flash): Bucle reactivo rápido y eficiente en tokens (~3–5 s por paso): un modelo observa la pantalla en vivo, piensa y actúa, sin orquestación de grafos. Ideal para tareas de interfaz rutinarias y deterministas. El bucle no tiene límite de forma predeterminada (agent.flash.max_turns, 0 = ilimitado) porque el historial se comprime en lugar de limitarse: Flash comparte el registro de transcripción de sesión de Pro (reloj relativo a la sesión T+mm:ss, capturas de pantalla plegadas en resúmenes visuales, pasos más antiguos agrupados en eras y recuperables bajo demanda mediante search_history / replay_steps) y puede consultar la grabación de la sesión a través de video_analyzer. La interfaz transitoria (barras de control que se desvanecen automáticamente, toasts) se gestiona encadenando toques en un único click_sequence. Limitaciones: Sin plan de tareas ni notas, sin red de seguridad previa a la ejecución, sin verificación de puntos de control ni informe final, y sin shell de ADB.--profile pro): Un flujo de trabajo de planificación y verificación (~15–40 s por paso), construido como un grafo multiagente. Un Planner mantiene un plan de tareas vivo en Markdown con hitos y elementos de verificación verify / ; el lo ejecuta con el conjunto completo de herramientas (fundamentación del Explorer cuyo nivel / / es una configuración de usuario por perfil — / en o — nunca elegido por el agente; notas, recuperación del historial, análisis de vídeo, diagnóstico de ADB). Cada acción individual pasa por una previa a la ejecución (primero XML, con alternativa por píxeles), mientras que las de múltiples acciones se disparan consecutivamente para superar la latencia de turno en interfaces transitorias. Una acción bloqueada o fallida abre un que permanece en el contexto del Operator hasta que una acción posterior tiene éxito, por lo que la recuperación la gestiona el propio Operator sin un agente de reparación independiente. Un de solo lectura verifica los puntos de control del plan y ejecuta una revisión final de salida contra el objetivo original (: / (predeterminado) / / ), y las ediciones de hitos del plan reciben una revisión orientativa. Gestiona flujos de trabajo de horizonte largo de más de 100 pasos, monitorización y un informe escrito opcional.¡Las contribuciones son muy bienvenidas!
Este proyecto está licenciado bajo la Apache License 2.0.
Este proyecto incluye código fuente desarrollado por Minitap, Inc..
|
1. Entrada del prompt (envío de tarea) Describe tu escenario de prueba y las métricas objetivo en Antigravity
|
2. Generación del plan de prueba Formula un plan de prueba paso a paso y una arquitectura para su revisión
|
|
3. Ejecución autónoma de la prueba Controla el dispositivo real, navega por la interfaz y perfila el rendimiento
|
4. Informe final Entrega hallazgos de auditoría estructurados, tablas de métricas y conjuntos de datos sin procesar
|
Si prefieres configurarlo manualmente, ejecuta uv run artemis mcp --generate-config <client> (por ejemplo, codex o antigravity) para generar el fragmento TOML o JSON correspondiente. Reemplaza /path/to/artemis con la ruta real de tu repositorio y apunta command a tu ejecutable de Python de .venv:
~/.codex/config.toml):[mcp_servers.artemis]
command = "/path/to/artemis/.venv/bin/python"
args = ["-m", "mcp_server"]
cwd = "/path/to/artemis"
[mcp_servers.artemis.env]
PYTHONUNBUFFERED = "1"
PYTHONPATH = "/path/to/artemis"
~/.gemini/jetski/mcp_config.json):{
"mcpServers": {
"artemis": {
"command": "/path/to/artemis/.venv/bin/python",
"args": ["-m", "mcp_server"],
"cwd": "/path/to/artemis",
"env": {
"PYTHONUNBUFFERED": "1"
},
"tools": {
"mobile_run_task": { "eager": true },
"mobile_manage_task": { "eager": true },
"mobile_get_device_state": { "eager": true },
"mobile_inspect_trace": { "eager": true },
"mobile_diagnose": { "eager": true }
}
}
}
}
claude_desktop_config.json):{
"mcpServers": {
"artemis": {
"command": "/path/to/artemis/.venv/bin/python",
"args": ["-m", "mcp_server"],
"cwd": "/path/to/artemis"
}
}
}
Para garantizar que tu asistente de programación con IA actúe con el rigor de un ingeniero sénior de pruebas móviles y nunca alucine interacciones de interfaz, proporcionamos un archivo de reglas dedicado al enfoque de pruebas en mcp_server/rules.md (que cubre la exploración activa antes de programar, la estrategia de enrutamiento Flash vs. Pro, la compensación de latencia y tiempos y el patrón de localización "Dynamic-First, Coordinate-Fallback").
Puedes montar o copiar mcp_server/rules.md en la configuración de reglas de tu IDE de IA:
rules.md a tus Workspace Rules, la configuración de Global Rules o las instrucciones del agente.artemis mcp --install claude para instalar las reglas en ~/.claude/rules/artemis.md (instálalas en una sola ubicación — Claude Code carga tanto ~/.claude/CLAUDE.md como ~/.claude/rules/*.md, por lo que duplicar las reglas desperdicia contexto)..cursorrules o crea un archivo de reglas en .cursor/rules/artemis.mdc.~/.codex/AGENTS.md (o al AGENTS.override.md activo).Para obtener más detalles sobre el enfoque de pruebas y la arquitectura de MCP, consulta el README del servidor MCP.
En Codex, Antigravity o Claude Code, simplemente escribe:
"Compila los últimos cambios en un APK, instálalo en el dispositivo conectado, abre la pantalla de inicio de sesión con una cuenta de prueba, verifica si hay ventanas emergentes inesperadas después de iniciar sesión y devuelve capturas de pantalla de la página final."
assertflashproultrapro.explorer.modeflash.explorer_modeconfig/artemis.jsonc--explorer-pro-mode--verification-levelofffinalcheckpointsstrict[Loop:continuous]