MAS Agent
AI 매크로 만들기: 안드로이드 AI 에이전트 MAS Agent
Android 자동화 작업을 설명하면 MAS Agent가 에뮬레이터나 클라우드 기기에서 앱을 탐색하고, 검증을 거친 파이썬 매크로를 만들어 Studio에서 편집할 수 있게 합니다.
- Windows
- Mac
- 에뮬레이터
- 클라우드 기기
- 스튜디오
- MCP
이 페이지의 내용
MAS Agent는 Macro Automation Studio(MAS)에 내장된 안드로이드 AI 에이전트로, AI 매크로 만들기를 대신해 줍니다. 작업을 일상 언어로 설명하면 에이전트가 기기에서 앱을 탐색하고, 화면 지도를 만들고, 필요한 버튼과 수치를 실제 화면에서 캡처한 뒤, 템플릿 이미지와 OCR 영역이 포함된 표준 MAS 파이썬 매크로를 작성합니다. 그다음 같은 기기에서 검증 실행 3회로 매크로를 검증하고 넘겨줍니다. 그 뒤로 매크로는 모델 없이, 크레딧 0으로 반복 실행됩니다.
시작하기 전에
- MAS가 설치되어 있고 무료 체험 또는 유료 요금제로 로그인한 상태. 설치를 참고하세요.
- 에이전트가 조작할 기기: Device Groups에 추가된 실행 중인 에뮬레이터, 또는 Ready 상태의 클라우드 기기.
- 자동화할 앱이 그 기기에 설치되어 있고 로그인 화면을 지난 상태.
- 계정에 AI 크레딧. 크레딧 동작 방식은 결제 페이지에 있습니다.
에이전트로 안드로이드 자동화 세션 시작하기
- 사이드바에서 Agent를 엽니다.
- Device를 고릅니다. 목록은 Local emulators와 Cloud devices 두 그룹으로 나뉩니다. 방금 시작한 에뮬레이터가 없으면 Refresh devices를 클릭합니다.
- Provider와 Model을 고릅니다. Cloud models는 MAS 서버에서 실행되며 AI 크레딧에서 차감됩니다.
- 프롬프트 상자에 작업을 입력합니다. 예를 들어 “Collect the daily reward and close every popup”이라고 쓰고 Author를 클릭합니다.
세션이 실행되는 위치는 기기에 따라 다릅니다:
- 로컬 에뮬레이터: MAS가 내 컴퓨터에서 에이전트 엔진을 시작합니다(“Starting the agent engine…”). 엔진은 adb로 에뮬레이터와 통신하므로 에뮬레이터와 앱을 열어 두어야 합니다.
- 클라우드 기기: 세션이 기기 옆 MAS 서버에서 시작됩니다(“Running on our servers”). 앱을 닫고 나중에 확인해도 됩니다. 대화는 계정에 저장됩니다. 클라우드 기기는 항상 Cloud models를 사용합니다.
기기 하나에는 한 번에 에이전트 하나만 실행됩니다. 같은 기기에서 다른 채팅이 진행 중이면 MAS가 Go to that chat 또는 Stop it, continue here를 제안합니다.
단계: 에이전트가 프롬프트로 매크로를 만드는 과정
Overview 탭에 현재 단계가 표시되고, Progress 체크리스트가 쉬운 말로 진행 상황을 보여 줍니다.
| 단계 | 에이전트가 하는 일 | 표시되는 이정표 |
|---|---|---|
| SCOUT | 앱을 탐색하고 화면을 학습 | 채팅의 메모 |
| PLAN | 계획을 쓰고 승인을 요청 | ”Planning the automation…” |
| HARVEST | 실제 화면에서 템플릿 이미지를 자르고 OCR 영역을 측정 | ”Capturing the buttons and readouts the macro will need…” |
| CODIFY | 파이썬 프로젝트 작성 | ”Writing your macro…” |
| REVIEW | 관찰한 내용과 초안을 대조 | ”Reviewing the generated code against what I observed…” |
| VALIDATE | 기기에서 매크로 실행 | ”Testing the macro on your device…” |
| REPAIR | 테스트에서 발견한 문제를 고친 뒤 HARVEST 또는 CODIFY로 복귀 | ”Fixing an issue found during testing…” |
| DONE | 결과 카드 전달 | ”Done”, 모든 실행을 통과하면 “graduated” |
질문 카드가 열려 있는 동안 단계는 WAITING_FOR_USER로 표시되고 세션 시계가 멈춥니다. 수리는 횟수가 아니라 진전으로 제한됩니다. 바뀌지 않은 코드에서 같은 실패가 반복되면 에이전트가 새 진단을 내놓거나 질문할 때까지 검증이 멈춥니다. 무한 반복을 막는 최종 상한은 수리 25회입니다.
질문, 계획, 방향 조정
에이전트는 추측하지 않고 질문합니다. 화면을 두 가지로 읽을 수 있거나, 어떤 단계가 무언가를 소비하거나 파괴할 수 있으면 멈춰서 물어봅니다.
- The agent needs your input 카드에는 질문이 한 개에서 네 개까지 담깁니다. 선택지를 고르거나 직접 답을 입력한 뒤 Send answers를 클릭합니다.
- 계획은 세션의 계약입니다: 목표, 주 반복문, 성공 확인. 게임 내 지출은 에이전트가 앱에서 무언가를 쓰기 전에 승인한 한도가 있어야 합니다.
- 실행 중에 방향을 바꾸려면 작동하는 동안 작성창에 입력하고 Steer를 클릭합니다. 메시지는 에이전트의 다음 결정에 반영됩니다.
- Stop은 세션을 즉시 끝냅니다. 작업은 저장되며, 같은 채팅에서 후속 메시지를 보내면 이어집니다.
예산과 크레딧
Budgets 패널에 세션의 단계 수, 크레딧(또는 비용), 토큰, 게임 내 지출이 표시됩니다. 예산 0은 제한 없음을 뜻하며 모든 항목의 기본값입니다. 실제 제한은 크레딧 잔액입니다. 잔액이 0이 되면 MAS가 추가 모델 호출을 거부하고 세션은 그때까지의 결과로 멈춥니다.
크레딧은 에이전트가 탐색하고, 작성하고, 테스트하는 동안에만 소비됩니다. 완성된 매크로는 모든 기기에서 크레딧 0으로 실행됩니다. Agent 페이지의 Credits 표시는 세션 중에 갱신되고, Top up credits는 Subscription 페이지를 엽니다. 동작 방식은 결제 페이지에, 요율은 가격 페이지에 있습니다.
메뉴 지도
지도는 앱에 대한 에이전트의 기억입니다: 본 적 있는 모든 화면과 그것들을 잇는 버튼. 에이전트가 작업하는 동안 저절로 자라며, Map 탭에서 화면, 전환, 탭, 미탐색 버튼 개수와 함께 그래프로 볼 수 있습니다.
- Map this app은 메뉴를 차근차근 탐색하고(약 8분), Deep pass는 더 깊은 메뉴까지 엽니다(약 20분). 둘 다 이동만 하며, 에이전트는 무언가를 판매하는 화면에서는 빠져나옵니다.
- Share my maps는 같은 앱을 지도화하는 다른 계정과 탐색 결과를 모읍니다. 기여 내용은 다른 계정이 확인해 줄 때까지 비공개이며, My contributions에서 철회할 수 있습니다. 공유를 끄더라도 본인의 지도는 본인 세션에 계속 도움이 됩니다.
Add to My Macros
결과 카드에 Done이 표시되면 Add to My Macros를 클릭합니다. MAS가 프로젝트 폴더에 프로젝트를 만들고, 모든 템플릿 이미지를 Image Library의 agent/ 폴더에 올리고, 코드 안의 이미지 ID를 다시 쓰고, git을 초기화합니다. 그러면 채팅이 Open in IDE, 같은 기기에서의 Test run, 그리고 예약 카드(Once, Daily, Weekly 중 선택 후 Create schedule)를 제안합니다. 예약 실행은 기기 카드에 저장된 인수를 사용합니다.
나중에 매크로를 바꾸려면 작업 공간 목록의 Improve에서 매크로를 고르고 추가하거나 바꿀 내용을 설명합니다. 에이전트는 기존 프로젝트에서 시작해 그 자리에서 갱신합니다.
프로젝트 구성
| 파일 | 용도 |
|---|---|
src/app.py | 매크로: mas.images({...}) 레지스트리, 화면당 함수 하나, 주 반복문 |
src/script_args.py | 인수 폼에서 생성된 인수 파서 |
script_runner.uibproj | UI Builder용 인수 폼 |
images/manifest.json | 수집한 모든 템플릿의 이름과 파일 대응표. 설치 후에도 파일은 남습니다 |
task.yaml | 검증 명세 |
agent_session.json | 프로젝트를 작성한 세션. 이후 개선 세션이 사용합니다 |
README.md | 목표와 인수 표 |
task.yaml에는 작업 이름, 프롬프트, 앱 패키지, 기기, 시작 시 보여야 하는 템플릿인 진입 전제 조건, 타임아웃, script_runs: 3, 테스트 인수, 검사 항목이 기록됩니다. 검사 종류는 exit_code, template, ocr_region, storage, adb_shell, element_visible, element_text이며 각각 when: active, idempotent 또는 always를 가집니다. 검증은 스모크 테스트입니다. 주 반복문은 두 번으로 제한됩니다. Studio의 런타임은 task.yaml을 읽지 않습니다.
설치 후에는 다른 프로젝트처럼 편집합니다: src/app.py의 흐름은 전체 SDK로, 템플릿 이미지는 Asset Lab과 Image Library에서, OCR 영역은 코드에서, 인수 폼은 UI Builder에서. Studio 둘러보기에서 편집기, 실행, 디버거를 다룹니다.
모바일 게임과 그 밖의 화면 루틴을 대신 하는 AI
MAS Agent는 에뮬레이터와 클라우드 기기의 화면 기반 루틴을 처리합니다: 탐색 중에 만난 팝업과 방해 요소, 매크로가 기다리거나 건너뛸 수 있도록 OCR로 읽는 카운터와 타이머, 그리고 기기 그룹 전체에 예약된 같은 루틴. 화면에서 읽을 수 없는 결정, 시작 전의 예산, 그리고 파괴적이거나 구매가 발생하는 행동 전에는 사용자에게 물어봅니다.
화면만으로 동작합니다. APK를 수정하거나 게임 메모리를 읽지 않으며, 볼 수 있는 기기가 필요합니다. 100% 안전한 자동화 도구는 없으므로, 책임감을 가지고 본인의 판단에 따라 자동화하세요.
같은 에이전트는 MCP 서버를 통해 Claude Code, Cursor, Codex 등의 클라이언트에서도 쓸 수 있으며, author_macro, get_agent_session, answer_agent_session, stop_agent_session, get_map이 제공됩니다.
문제 해결
에이전트가 질문하고 기다림
세션이 의도적으로 멈춘 상태이며 시계도 멈춰 있으므로 아무것도 소비되지 않습니다. Chat 탭을 열고 카드에 답한 뒤 Send answers를 클릭합니다. “Question expired”로 표시된 카드는 이미 끝난 세션의 것입니다. 대신 작성창에 답하면 전체 대화를 이어받아 후속 세션이 시작됩니다.
검증이 계속 실패함
채팅에서 실패한 검사를 읽어 보세요: 끝내 보이지 않은 템플릿, 일치하지 않은 OCR 패턴, 매크로가 저장하지 않은 스토리지 값. 아는 내용으로 에이전트를 조정하거나 질문에 답하세요. 에뮬레이터가 충돌했다면 에이전트는 기기 오류가 연속 다섯 번 나면 멈춥니다. 에뮬레이터를 다시 시작하고 채팅에 메시지를 보내 이어 가세요.
예산 도달
설정한 예산이 소진되었거나 크레딧 잔액이 0이 되어 세션이 끝났습니다. 작업은 저장되어 있습니다. Subscription 페이지에서 크레딧을 충전하거나 예산을 올린 뒤 같은 채팅에서 후속 메시지를 보내세요.
다음 단계
관련 페이지
감사합니다. 잘못된 내용이 있으면 Discord에서 알려 주세요.
궁금한 점이 있으신가요? Discord에서 질문하기