
Agente de automação Android em linguagem natural que controla dispositivos reais via ADB, captura Logcat e screenshots, e expõe um servidor MCP para IDEs de IA e pipelines de teste de CI.
Permita que assistentes de IA e suítes de teste usem telefones reais como um humano.
English • 中文文档 • Workflow Showcase • Quick Start • MCP for IDEs • Benchmarks • Discord Community
Demonstração ao vivo: Configure rotas no Google Maps e calcule as durações totais, depois abra o YouTube para reproduzir uma música do Coldplay.
O Antigravity usa o ARTEMIS através do MCP para transformar uma solicitação de teste em um plano, execução no dispositivo e um relatório de diagnóstico:
Certifique-se de que um dispositivo Android (com Depuração USB habilitada) ou emulador esteja conectado. O script de inicialização com um clique irá automaticamente:
uv).rules.md) em suas IDEs 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
O PowerShell não procura scripts executáveis no diretório atual por padrão, então use
.\start.batsem uma barra invertida no final. No Prompt de Comando (CMD), usestart.batem vez disso.
Dica: Abre
http://localhost:8000no seu navegador padrão com um assistente de conexão de dispositivo, espelhamento de tela ao vivo, sandbox de prompt e replays de execução. Você também pode executar diretamente pela CLI:uv run artemis run "Open Settings, find Battery and tell me current level" --profile flash.
O ARTEMIS inclui um servidor nativo do Model Context Protocol (MCP). Conecte seu telefone real diretamente nas IDEs de IA:
Executar ./start.sh (macOS/Linux) ou .\start.bat (Windows PowerShell) solicitará que você configure o MCP global e as regras de teste para as IDEs detectadas (ou você pode instalar/atualizar a qualquer momento depois manualmente usando os comandos abaixo):
# 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
Dica: Você também pode configurar o MCP interativamente durante a configuração inicial via
uv run artemis init. Dica Pro: Se você quiser usar o comandoartemisglobalmente semuv runem qualquer diretório, executeuv tool install -e .uma vez na raiz do projeto.
Instale o cliente sem dependências de runtime na máquina de desenvolvimento. ADB, agentes, modelos e processamento de imagem permanecem no host do 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())
Visão Geral do Console: ① Alternador de Visualização (Home / Workspace) · ② Modelo e Replay (status Flash/Pro e replay de vídeo) · ③ Stream do Agente ao Vivo (percepção de ação, coordenadas-alvo e resultados estruturados) · ④ Dock de Prompt (despacho em linguagem natural) · ⑤ Fila de Tarefas e Dashboard (ciclo de vida e histórico)
uv run artemis ui): Projeção de tela em tempo real e painel interativo, suportando despacho de testes em linguagem natural, telemetria de raciocínio ao vivo, trajetórias de ação e replay de execução; gerencie o ciclo de vida do servidor a qualquer momento de qualquer terminal usando uv run artemis restart, uv run artemis stop e uv run artemis status;uv run artemis run): Execução direta pelo terminal para casos de teste automatizados, inspeção exploratória de estabilidade ou benchmarks do AndroidWorld com saída de terminal estruturada de alta fidelidade;A primeira tarefa em um dispositivo instala o Artemis Accessibility Helper, um pequeno
serviço de acessibilidade que lê o layout da tela sem assumir a
conexão UiAutomation. Ferramentas que usam UiAutomation podem suprimir o helper a menos
que habilitem FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES. Você verá
uma notificação recolhida "Artemis test helper is running" e uma nova entrada em
Configurações > Acessibilidade; ambas são esse helper. Ele escuta apenas no próprio telefone
e não envia nada para outro lugar.
uv run artemis helper installuv run artemis helper status / uv run artemis doctoruv run artemis helper uninstallARTEMIS_HIERARCHY_BACKEND=uiautomator no .envARTEMIS_HELPER_AUTO_INSTALL=false no .envSe o helper falhar no meio de uma tarefa, o ARTEMIS recorre ao UIAutomator2 e informa
isso na linha do tempo da tarefa, no status de mobile_manage_task e no relatório final.
O Artemis alcançou uma taxa de conclusão de 99%+ no AndroidWorld, o benchmark do Google Research que abrange mais de 20 aplicativos e mais de 100 tarefas de múltiplos passos.
O ARTEMIS suporta dois perfis de execução adaptados para diferentes requisitos de automação:
--profile flash): Loop reativo rápido e eficiente em tokens (~3–5s por passo): um modelo observa a tela ao vivo, pensa e age, sem orquestração de grafo. Ideal para tarefas de UI rotineiras e determinísticas. O loop é ilimitado por padrão (agent.flash.max_turns, 0 = ilimitado) porque o histórico é comprimido em vez de limitado: o Flash compartilha o registro de transcrição da sessão do Pro (relógio relativo à sessão T+mm:ss, capturas de tela dobradas em resumos visuais, passos mais antigos agrupados em eras e recuperáveis sob demanda via search_history / replay_steps) e pode consultar a gravação da sessão através do video_analyzer. UI transitória (barras de controle com desaparecimento automático, toasts) é tratada encadeando toques em um único click_sequence. Limitações: Sem plano de tarefa ou notas, sem rede de segurança pré-execução, sem verificação de checkpoint ou relatório final, e sem shell ADB.--profile pro): Um fluxo de trabalho de planejamento e verificação (~15–40s por passo), construído como um grafo multiagente. Um Planner mantém um plano de tarefa Markdown vivo com marcos e itens de verificação verify / assert; o o executa com o conjunto completo de ferramentas (fundamentação do Explorer cujo nível / / é uma configuração do usuário por perfil — / em ou — nunca escolhido pelo agente; notas, recuperação de histórico, análise de vídeo, diagnósticos ADB). Cada ação individual passa por uma pré-execução (XML-first, fallback por pixel), enquanto multi-ação disparam em sequência para vencer a latência de turno em UI transitória. Uma ação bloqueada ou falha abre um que permanece no contexto do Operator até que uma ação posterior tenha sucesso, então a recuperação é tratada pelo próprio Operator sem um agente de reparo separado. Um somente leitura verifica os checkpoints do plano e executa uma revisão final de saída em relação ao objetivo original (: / (padrão) / / ), e edições de marcos do plano recebem uma revisão consultiva. Lida com fluxos de trabalho de longo horizonte com 100+ passos, monitoramento e um relatório escrito opcional.Contribuições são muito bem-vindas!
Este projeto está licenciado sob a Apache License 2.0.
Este projeto inclui código-fonte desenvolvido pela Minitap, Inc..
|
1. Entrada do Prompt (Despacho de Tarefa) Descreva seu cenário de teste e métricas-alvo no Antigravity
|
2. Geração do Plano de Teste Formula um plano de teste passo a passo e uma arquitetura para revisão
|
|
3. Execução Autônoma do Teste Controla o dispositivo real, navega pela UI e faz o profiling de desempenho
|
4. Relatório Final Entrega descobertas de auditoria estruturadas, tabelas de métricas e conjuntos de dados brutos
|
Se você preferir configurar manualmente, execute uv run artemis mcp --generate-config <client> (por exemplo, codex ou antigravity) para gerar o snippet TOML ou JSON apropriado. Substitua /path/to/artemis pelo caminho real do seu repositório e aponte command para o executável Python do seu .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 garantir que seu assistente de codificação de IA atue com o rigor de um engenheiro de testes mobile sênior e nunca alucine interações de UI, fornecemos um arquivo de regras de mentalidade de teste dedicado em mcp_server/rules.md (cobrindo Exploração Ativa antes de codificar, estratégia de roteamento Flash vs. Pro, compensação de Latência e Timing, e o padrão de localizador "Dynamic-First, Coordinate-Fallback").
Você pode montar ou copiar mcp_server/rules.md na configuração de regras da sua IDE de IA:
rules.md às suas Workspace Rules, configurações de Global Rules ou instruções do agente.artemis mcp --install claude para instalar as regras em ~/.claude/rules/artemis.md (instale em exatamente um local — o Claude Code carrega tanto ~/.claude/CLAUDE.md quanto ~/.claude/rules/*.md, então duplicar as regras desperdiça contexto)..cursorrules ou crie um arquivo de regras em .cursor/rules/artemis.mdc.~/.codex/AGENTS.md (ou ao AGENTS.override.md ativo).Para mais detalhes sobre a mentalidade de teste e a arquitetura do MCP, consulte o MCP Server README.
No Codex, Antigravity ou Claude Code, simplesmente envie o prompt:
"Build the latest changes into an APK, install it on the connected device, open the login screen with a test account, verify if there are any unexpected popups after login, and return screenshots of the final page."
flashproultrapro.explorer.modeflash.explorer_modeconfig/artemis.jsonc--explorer-pro-mode--verification-levelofffinalcheckpointsstrict[Loop:continuous]