OpenSource-Hub

artemis

CLI 도구

google/artemis

자연어 명령을 신뢰할 수 있는 Android 자동화로 변환하는 AI 에이전트.

개요

ARTEMIS는 자연어 명령을 신뢰할 수 있는 안드로이드 엔드투엔드 자동화 워크플로로 변환하는 AI 에이전트로, 멀티모달 요소 탐지와 비주얼 폴백을 사용합니다. 네이티브 MCP 서버를 통해 AI 코딩 어시스턴트와 원활하게 통합되어 실제 디바이스를 제어하고 로그와 스크린샷을 수집할 수 있으며, AndroidWorld 벤치마크에서 99% 이상의 작업 완료율을 달성했습니다.

README 미리보기

\n  \n\n\n\n  Let AI assistants and test suites use real phones like a human.\n\n\n\n  English •\n  中文文档 •\n  Workflow Showcase •\n  Quick Start •\n  MCP for IDEs •\n  Benchmarks •\n  Discord Community\n\n\n\n  \n  \n  \n  \n  \n\n\n\n\n  \n  \n  Live Demo: Setup driving routes and calculate total durations in Google Maps, then open YouTube to play a Coldplay song.\n\n\n## Key Highlights\n\n* **Cross-App Automation**: Executes testing workflows and everyday tasks on Android from natural language instructions.\n* **Multimodal Targeting**: Uses element indices when available, with coordinate and visual locating fallbacks for custom interfaces.\n* **IDE Diagnostics**: **Model Context Protocol (MCP)** integration lets **Antigravity, Claude Code, and Windsurf** drive test devices and collect **Logcat** output and screenshots.\n* **Flash Execution**: A reactive observe-and-act loop with asynchronous history summaries, typically **3–5s per step**.\n* **Pro Exploration**: Checks targets before individual actions and returns blocked actions to the Operator for recovery. Supports long-running exploratory and stability tests.\n* **AndroidWorld Results**: **99%+ task completion** on Google Research's **AndroidWorld** benchmark (100+ multi-step tasks).\n\n\n## Antigravity × ARTEMIS: Autonomous Testing Workflow\n\n**Antigravity** uses **ARTEMIS** through MCP to turn a test request into a plan, device execution, and a diagnostic report:\n\n\n  \n    \n      1. Prompt Input (Task Dispatch)\n      Describe your test scenario and target metrics in Antigravity\n      \n    \n    \n      2. Test Plan Generation\n      Formulates a step-by-step test plan & architecture for review\n      \n    \n  \n  \n    \n      3. Autonomous Test Execution\n      Drives real device, navigates UI, and profiles performance\n      \n    \n    \n      4. Final Report\n      Delivers structured audit findings, metric tables, and raw datasets\n      \n    \n  \n\n\n\n## Quick Start\n\nEnsure an Android dev

FAQ (3)

문제 해결
Google Artemis를 설정할 때 ./start.sh가 'uv sync' 단계에서 실패하는 이유는 무엇이며, 어떻게 해결할 수 있나요?

이 오류는 리포지토리의 uv.lock이 Google 내부 Artifact Registry 프록시(airlock-proxy.uplink.goog)를 잘못 가리키고 있기 때문에 발생합니다. 이 프록시는 Google 네트워크 외부에서는 접근할 수 없으므로 uv sync가 종속성을 다운로드하지 못하고 .venv/가 비어 있는 상태로 남게 됩니다. 해결 방법: uv가 PyPI에서 종속성을 해결하도록 설정을 실행하기 전에 lock 파일을 삭제하세요:

rm uv.lock
./start.sh

이후 유지 관리자들이 업스트림에서 uv.lock 파일을 수정했으므로, 리포지토리의 최신 버전을 가져와도 문제가 해결됩니다.

원본 Issue #28
문제 해결
Windows 11에서 PowerShell로 start.bat을 실행할 때 'Unexpected token' ParserError를 해결하는 방법

최신 main 브랜치로 업데이트하고(commit 38a2de6에서 수정됨) start.bat을 다시 실행하세요. 이 오류는 Node.js 감지 문제가 아니며, PowerShell이 scripts/start.ps1을 파싱하는 동안 발생합니다. Windows PowerShell 5.1은 BOM이 없는 스크립트를 시스템 ANSI 코드 페이지(cp1252)로 읽기 때문에, 스크립트 내의 UTF-8 기호가 따옴표 구분자로 잘못 디코딩되어 Unexpected token 및 The output stream for this command is already redirected 오류가 연쇄적으로 발생했습니다. 이 수정은 두 Windows 부트스트랩 스크립트를 모두 ASCII 전용 상태 레이블로 변환하며, 회귀 테스트가 이들을 ASCII 전용으로 유지하도록 합니다. artemis 폴더에서 git pull을 실행한 다음 start.bat을 다시 실행하세요.

원본 Issue #15
문제 해결
OpenAI 호환 프로바이더를 사용할 때 Artemis Flash 프로필이 'ChatGoogleGenerativeAI missing Google credentials' 오류로 실패하는 이유는 무엇인가요?

이것은 알려진 버그입니다: 기본 모델이 Google이 아닌 모델(예: openai 프로바이더를 통한 MiniMax-M3)이더라도, Flash 프로필 내부 여러 곳에서 Gemini 클라이언트가 하드코딩되어 있어 Google 자격 증명이 없으면 시작 시점에 실패합니다. 해결 방법:

1. **빠른 해결책**: 사용되지 않더라도 Google/Gemini API 키(GOOGLE_API_KEY)를 설정하여 하드코딩된 클라이언트가 초기화될 수 있도록 합니다.

2. **하드코딩된 경로 패치** (보고자가 검증함):
- artemis/agents/flash/summarizer.py: VisualStepSummarizer가 get_google_llm()을 직접 호출합니다 — 구성된 summarizer 모델 노드와 그 폴백을 사용하도록 변경하세요.
- artemis/memory/chunking.py: StepCapsuleLens가 기본/폴백 용도로 get_google_llm()을 호출합니다 — 구성된 노드를 통해 라우팅하세요.
- artemis/agents/flash/runner.py: _init_llm()이 초기화 오류 발생 시 하드코딩된 Gemini 모델로 조용히 폴백합니다 — 이 폴백을 제거하여 실제 구성 오류가 표면에 드러나도록 하세요.
- artemis/config/llm.py: validator_pixel_safety_net 및 planner_validation 노드를 사용 중인 프로바이더로 명시적으로 구성하세요. 그렇지 않으면 경량 Gemini 모델이 기본값으로 사용됩니다.

3. 또는 배포 환경이 허용한다면 Flash 스텝 요약기와 히스토리 압축을 비활성화하세요.

참고: 최신 댓글 기준으로 이 이슈는 업스트림에서 여전히 해결되지 않았으므로, 로컬 패치가 필요합니다.

원본 Issue #179