GitHub - rounak/PhoneAgent: An AI agent that can get things done across iPhone apps.
요약
상세 내용
이 시스템의 핵심 기능은 다음과 같습니다. 사용자는 "Click a new selfie and send it to {Contact name} with a haiku about the weekend", "{app name} from the App Store", "Send a message to {Contact name}: my flight is DL 1715", "Call an Uber X to SFO", "Open Control Center and enable the torch"와 같은 프롬프트를 통해 작업을 지시할 수 있습니다. 에이전트는 앱의 accessibility tree를 "볼" 수 있으며, UI 요소를 탭하고, 스와이프하고, 스크롤하고, 텍스트 필드에 타이핑하고, 앱을 열 수 있습니다. 작업 완료 후 알림에 답장하여 후속 작업을 지시할 수 있으며, 마이크 버튼을 사용하여 에이전트와 대화하거나, 앱이 백그라운드 상태일 때도 "Agent"와 같은 wakeword로 프롬프트를 인식하는 "Always On" 모드를 지원합니다. OpenAI API key는 기기의 keychain에 안전하게 저장됩니다.
PhoneAgent의 작동 방식은 iOS 앱의 sandboxing 제약 조건을 극복하는 데 중점을 둡니다. 이 프로젝트는 탈옥(jailbreak)이 필요 없이 Xcode의 UI testing harness를 활용하여 앱 및 시스템과 상호 작용합니다. 에이전트의 두뇌는 OpenAI의 GPT-4.1 모델이며, 이 모델은 앱의 accessibility contents만을 사용하여 아이폰을 능숙하게 사용하는 것으로 알려져 있습니다. GPT-4.1 모델은 다음과 같은 도구에 접근할 수 있습니다: 현재 앱의 콘텐츠를 가져오는 기능, UI element를 탭하는 기능, 텍스트 필드에 타이핑하는 기능, 앱을 여는 기능. 이 시스템의 중요한 기술적 세부 사항은 PhoneAgent라는 호스트 앱이 TCP Server를 통해 UI test와 통신하여 프롬프트를 트리거한다는 점입니다. 이를 통해 에이전트가 사용자 명령을 받아 실제 기기 UI에 대한 작업을 수행할 수 있습니다.
현재 시스템에는 몇 가지 제한 사항이 있습니다. 키보드 입력 기능이 개선될 여지가 있으며, 애니메이션이 진행 중일 때 뷰 계층(view hierarchy)을 캡처하는 것이 모델을 혼란스럽게 할 수 있습니다. 또한, 모델은 장시간 실행되는 작업이 완료될 때까지 기다리지 않고 성급하게 작업을 포기할 수 있습니다. 현재 모델은 화면의 이미지 표현을 직접 볼 수 없지만, XCTest API를 통해 구현할 가능성은 열려 있습니다. 이 프로젝트는 실험적인 개인 소프트웨어이며, 격리된 환경에서 실행하는 것이 권장됩니다. 앱 콘텐츠는 OpenAI의 API로 전송되며, 모델이 때때로 오류를 범할 수 있습니다.