Claude Code가 iPhone 설정 전체를 조작하게 한 경험
요약
AI 에이전트 Claude Code가 Mac 환경에서 iPhone 미러링을 활용하여 복잡한 iOS 설정(집중 모드, 알림 등)을 자동으로 조작하는 과정을 상세히 다루고 있습니다. 이는 AI가 단순히 안내를 넘어 실제 시스템 설정을 깊이 있게 제어할 수 있음을 보여줍니다. 특히, macOS Sequoia의 'iPhone 미러링'과 `cua-driver` 같은 CLI 도구를 결합하여, AI가 시각적 정보를 기반으로 단계적인 조작을 수행하는 방식에 초점을 맞추고 있습니다.
핵심 포인트
- AI 에이전트가 iPhone 미러링 및 CLI를 활용해 복잡한 iOS 설정을 자동화함.
- macOS Sequoia의 'iPhone 미러링' 기능과 `cua-driver` 같은 접근성 도구가 핵심 기술임.
- AI는 화면 스크린샷 기반으로 좌표를 지정하여 단계적 조작을 수행하는 능력을 보여줌.
- LINE 통화 등 외부 앱 연동 설정을까지 고려하여 완벽한 자동화를 구현함.
스마트폰에는 방해받고 싶을 시간이 있다. 전화나 알림도, 그 시간만큼은 일절 울리지 않기를 바란다. 아이폰이라면 '집중 모드(Focus Mode)'로 막을 수 있다.
그런데 설정 화면을 열어보면, '알림 허용 사람', '통화', '반복 통화', '집중 모드 상태 공유' 등 항목이 너무 많다. 어떤 것을 건드려야 멈추는지 매번 구글링을 다시 해야 한다. 솔직히 귀찮다.
그럼 AI에게 시키면 안 될까? 하고 Claude Code에게 "설정이 어려우니 대신 해줬으면 좋겠어"라고 던졌다.
첫 답변은 "Mac에서는 조작할 수 없으니, 절차를 안내해 드릴게요." 였다. 아니, 절차가 아니라 직접 해줬으면 좋겠다는 말이었다.
"너는 조작 못 하니?" 라고 되물었더니, Claude Code가 Mac 내부를 검색하기 시작하더니 표준 앱인 'iPhone 미러링(iPhone Mirroring)'을 찾아냈다. 거기서부터 끝까지 전부 처리해 주었다.
내가 한 일은 첫 연결 허용과 마지막으로 전화를 걸어 울리지 않는 것을 확인하는 것뿐이었다.
Mac에 비친 아이폰 화면을 보면서, Claude Code가 설정 앱을 톡톡 조작해 나간다.
먼저 집중 모드를 하나 새로 만든다.
알림 허용 연락처와 앱은 둘 다 '없음(0)'.
통화는 '알림 받을 연락처만'으로 하고, 그 연락처에는 아무도 넣지 않는다. 은근히 효과가 있는 것이 '반복 통화 허용'을 끄는 것이다. 이게 켜져 있으면 3분 이내에 두 번 걸려온 전화는 울린다. 모르면 보통 놓치는 부분이다.
그리고 또 하나의 함정은 LINE 통화다. LINE에는 '아이폰 기본 통화와 통합(Integration with iPhone Calls)'이라는 설정이 있는데, 이것이 켜져 있으면 LINE 통화가 일반 전화 취급을 받는다. Claude Code는 LINE 앱까지 열어서 여기도 껐다. 이렇게 하면 LINE 통화는 단순 알림이 되어 집중 모드에서 제대로 막힌다.
덧붙여 상대방의 메시지 앱에 '알림 중단'이라고 표시되는 '집중 모드 상태 공유'도, 이 피트니스만 제외하고 꺼두었다.
마지막으로 전화와 LINE 통화를 실제로 걸어보아도 둘 다 울리지 않는다. 이걸로 완료다.
핵심이 되는 것은 두 가지다.
- iPhone 미러링: macOS Sequoia부터 추가된 표준 앱. 아이폰 화면이 Mac의 창에 나타나고, Mac 마우스로 터치할 수 있다.
- cua-driver: AI 에이전트가 Mac 앱을 조작하기 위한 CLI(Command Line Interface).
cua-driver call click '{...}'
처럼 호출한다.
내 환경은 macOS 15.5, cua-driver 0.30.3이다. iPhone 미러링은 macOS 15 이후와 iOS 18 이후, 같은 Apple Account 등이 조건이 된다(자세한 조건은 Apple 페이지 참고). 사용하는 동안에는 아이폰 본체를 잠가두는 것이 좋다. 도중에 아이폰을 만지면 미러링이 끊겼다.
cua-driver는 평소 macOS의 접근성 트리(accessibility tree)를 읽어서 조작한다. 즉, "이 화면에 '저장' 버튼이 있다"라는 부품 목록으로, 이것만 있으면 버튼을 이름으로 지정해서 누를 수 있다.
그런데 iPhone 미러링 창에서 이걸 가져오면 비어있다.
"degraded_reason": "ax_window_unresolved: ... The tree is returned EMPTY on purpose"
"element_count": 0
아마 아이폰 화면은 영상으로 전송되는 것일 뿐, Mac에서는 버튼으로는 보이지 않는 것 같다.
그래서 Claude Code는 스크린샷을 찍고 보고, "여기"라고 좌표를 정해서 누른다. 누르면 다시 스크린샷을 찍어 화면이 바뀌었는지 확인한다. 사람이 눈으로 봐가며 터치하는 것을 한 번씩 성실하게 해내는 느낌이다.
한 번의 명령어는 이렇다.
# PID와 WIN은 `cua-driver call list_windows '{}'`로 알아낸 iPhone 미러링 창
# S는 `cua-driver call start_session '{
모두 실패했다. cua-driver는 해당 세션에서 한 번 `get_window_state`를 호출하지 않으면 좌표 클릭을 받아들이지 않는다. 오클릭 방지용이라고 생각한다. 위 명령어에서 매번 호출하는 것이 이 때문이다.
설정 앱의 검색창에 '집중 모드'라고 입력해서 바로 이동하려고 했더니, 이렇게 되었다.
| 시도한 것 | 결과 |
|---|---|
`type_text`로 '집중 모드' | '아아아아'가 됨 |
`type_text`로 'LINE' | 이것도 '아아아아' |
`hotkey`로 cmd+v | 'v'가 들어감 |
`invoke_menu`로 편집→붙여넣기 | '메뉴가 유효하지 않음'으로 거부|
완전 실패.
결국, 검색창을 탭하는 것만으로 나타나는 '제안'과 '최근 항목'을 이용했다. 이번에는 가고 싶은 항목이 우연히 여기에 나와 있어서 글자를 치지 않고 이동할 수 있었다. 나오지 않으면 목록을 스크롤해서 찾아야 한다.
LINE도 홈 화면 검색의 제안에 나온 아이콘에서 열었다.
LINE의 '통화' 설정은 설정 화면의 상당히 아래쪽에 있다. 여기까지 가는 것에도 애를 먹었다.
| 시도한 것 | 결과 |
|---|---|
`drag` (스와이프 의도) | 움직이지 않음 |
`scroll`을 줄 단위로 | 움직이지 않음 |
`scroll`을 `
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기