Claude Code에게 스마트폰을 쥐여줬습니다.
I gave Claude Code a phone.
핵심 요약
Claude Code가 안드로이드와 아이폰을 직접 조작해 앱 테스트와 자동화를 수행하는 오픈소스 도구 'phonedriver'를 개발했습니다.
- phonedriver 기능 — 화면을 읽고 탭, 타이핑, 스와이프를 수행하여 스마트폰을 자동 제어함
- 성능 최적화 — 기존 adb 방식보다 훨씬 빠른 13ms의 화면 읽기 속도와 효율적인 토큰 사용을 구현함
- 버그 탐지 — 회원가입 흐름 테스트 및 실제 배달 앱 주문 과정에서 스스로 버그를 찾아냄
- 오픈소스 공개 — 계정이나 추적 기능 없이 무료로 사용할 수 있는 도구로 배포됨

내 폰에 있는 앱들은 거의 다 API가 없다. Claude Code한테 뭘 누르라고 시켜도 절대 안 눌리더라. 그래서 내가 직접 phonedriver를 만들었다. 이걸 쓰면 Claude가 폰을 완전히 장악함. 화면 읽고, 터치하고, 타이핑하고, 스와이프까지 다 된다. 안드로이드든 아이폰이든 상관없음.
영상은 실제 구동 화면을 녹화해서 빠르게 편집하고 음악을 깐 거다. 주황색 점은 Claude가 터치한 위치를 표시한 거임. 사람이 직접 건드린 거 절대 아니다.
두 가지 테스트 결과:
버그 찾기. 회원가입 폼에 버그 두 개를 숨겨놨다. 하나는 이메일 마지막 글자가 잘리는 거고, 다른 하나는 제출 실패 한 번 뜨면 'Create' 버튼이 그다음 터치를 아예 씹어버리는 거다. Claude한테 "꼼꼼한 테스터처럼 회원가입 절차 테스트해봐"라고 시켰더니, 49초 만에 버그 두 개 다 찾아내고 재현 단계까지 번호 매겨서 정리하더라. 그전에도 벤치마크 9번 돌렸는데 다 찾아냈고, 심지어 내가 심어놓지도 않은 버그까지 두 개 더 잡아냄.
피자 주문. 실제 dominos.co.uk 사이트에서 Claude(Opus 5.5)가 레스터 스퀘어 근처 매장 찾아서, 라지 페퍼로니 피자 장바구니에 담고, 비회원 주문 정보 입력해서 6분 30초 만에 "Buy with GPay" 단계까지 갔다. phonedriver는 결제나 주문 버튼 누를 때 일단 멈추고 나한테 먼저 물어보게 설정해놨다. 그래서 내가 안 한다고 함.
작동 원리: Claude한테 스크린샷을 직접 보내는 게 아니다. 화면을 짧은 번호 리스트로 변환해서 보내고, Claude가 번호를 누르면 바뀐 줄만 다시 받아오는 방식임. 화면 읽는 데 13ms밖에 안 걸린다. `adb shell uiautomator dump` 쓰면 2.2초나 걸리는 거랑 비교하면 엄청 빠른 거임. Sonnet 5.5로 폰 작업 9번 돌렸을 때 658k 토큰으로 27번 다 성공했다. mobile-mcp는 4.57M 토큰으로 18번 중 17번 성공함.
Claude Code로 이거 만들면서 배운 거 두 가지:
- 툴 설명문은 진짜 짧고 굵게 써야 한다. Claude가 매번 턴마다 이걸 다시 읽거든. 에이전트가 한 번도 안 쓴 인자들 다 지워버리니까 툴 리스트가 10,987자에서 5,107자로 줄더라. 근데도 아무 문제 없음.
- Claude가 자기 데모에서 버그를 찾아냈다. 피자 주문 영상 찍을 때 결제 버튼 누르는 걸 액션 배치에 묶어버렸거든. 터치는 대기 상태로 들어갔는데 나한테 확인 요청이 안 온 거임. Claude Code가 툴 쓰다가 바로 잡아내더라.
무료 오픈소스고, 계정 가입이나 텔레메트리 같은 거 일절 없다.
`claude mcp add phonedriver -- npx -y phonedriver mcp`
![you are not running out faster , the weekly usage limit is shirking ~[ 20% drop ]](https://i.redd.it/duna97kife1i1.png)

