/ 프로젝트 / AI / Mobile Mirror AI
🪞
베타

Mobile Mirror AI

자연어로 여러 폰 동시 제어·학습

말 한마디로 연결된 여러 안드로이드/iOS 폰을 실제 조작하는 AI 오퍼레이터. 반복 작업은 한 번 녹화·학습하면 임베딩으로 기억했다가 LLM 없이 즉시 재실행합니다. PyQt5 데스크톱 + 로컬 LLM(Ollama) + mobile_mirror Flutter 앱(:28080) 연동.

PyQt5Ollama임베딩 회상ADBFlutterOCR
×다중 기기 제어
다중 기기 제어

배경

여러 대의 안드로이드/iOS 폰을 PC 앞에서 한꺼번에 다루려면 기기마다 손이 가고, 같은 조작을 매번 반복해야 합니다. 자연어 한 문장으로 연결된 폰을 조작하고, 자주 하는 일은 한 번만 가르치면 스스로 재실행하도록 만드는 것이 목표입니다.

핵심 기능

  • 자연어 명령 → 실제 조작 (Ollama LLM 의도 해석 + ReAct 실행 루프)
  • 임베딩 회상 — 명령을 768차원 벡터로 임베딩해 학습 시나리오와 코사인 매칭(≥0.88), LLM 없이 재실행
  • 동작 녹화 → JSON 저장/불러오기/재실행 + '학습하기'로 말로 실행되게 등록
  • 복합 명령 플랜 분해 — '크롬 실행 후 유튜브 실행'을 결정적으로 나눠 오회상 방지
  • 다중 기기 발견 — 와이파이 서브넷 스캔 + USB(adb forward) 병행, 미러링 꺼진 기기 감지·앱 자동 실행
  • 자연어 스크롤 — '대출 메뉴에서 멈춰'(찾을 때까지)·'끝까지 스크롤'
  • OCR 인증 — ARS/웹 OTP를 OCR 서버로 추출해 키패드까지 자동 입력
  • 잠금 해제 — 사용자가 그린 패턴/PIN을 학습해 재현
  • 실시간 MJPEG 미러링 + 기기 상태(배터리·CPU·메모리·온도·저장공간) 상시 표시

동작 방식

PyQt5 데스크톱이 QThread 워커로 여러 기기를 동시에 다룹니다. 명령이 들어오면 ① 복합 명령을 플랜으로 분해하고 ② nomic-embed 임베딩으로 학습 시나리오를 회상하며 ③ 못 맞추면 Ollama(qwen2.5:7b)가 의도를 해석하고 ReAct로 단계 실행합니다. 실제 조작은 각 폰의 mobile_mirror Flutter 앱 HTTP 서버(:28080)로 전달되며, 접근성 트리(/tree)로 버튼을 객체 단위로 이해하고 /tap·/swipe·/stroke·/click_node 로 조작합니다. USB 기기는 adb forward 로, 인증번호는 별도 OCR 서버로 처리합니다.

사용 방법

  1. 폰에서 mobile_mirror 앱을 실행하고 'Start Mirroring' 을 누른다
  2. PC 앱에서 스캔(와이파이+USB) 후 원하는 기기들을 연결한다
  3. 자연어로 명령하면 연결된 기기가 즉시 조작된다
  4. 반복 작업은 녹화·학습해 두고, 다음엔 말 한마디로 재실행한다

한눈에 보기

PC의 파이썬 데스크톱(PyQt5)이 자연어 명령을 받아, 각 폰에서 도는 mobile_mirror Flutter 앱의 HTTP 서버(:28080)로 실제 조작(탭·스와이프·스트로크)을 내려보냅니다. 화면은 MJPEG로 실시간 미러링되고, 접근성 트리(/tree)로 버튼·메뉴를 '객체'로 이해합니다. 한 번 가르친 반복 작업은 임베딩으로 기억했다가 다음엔 LLM 호출 없이 즉시 재실행합니다.

자연어 명령
  ├─ 플랜 분해 (복합 명령 결정적 파싱)
  ├─ 임베딩 회상 (nomic-embed 768d · 코사인 ≥0.88)
  └─ 의도/ReAct (Ollama qwen2.5:7b)
      ↓ 액션 플랜
mobile_mirror :28080  →  접근성 서비스  →  📱 실제 폰

엔지니어링 하이라이트

  • 임베딩 기반 학습·회상 — 명령을 768차원 벡터로 임베딩해 학습 시나리오와 코사인 매칭(≥0.88). 같은 뜻의 다른 표현도 LLM 없이 재실행합니다.
  • 플랜 우선 복합 명령 — "크롬 실행 후 유튜브 실행"처럼 이어진 명령을 회상보다 먼저 결정적으로 분해해 오회상을 막습니다.
  • 다중 기기 발견 — 와이파이 서브넷 스캔 + USB(adb forward)를 병행. 미러링이 꺼진 기기는 감지해 앱을 전면에 띄우고 안내합니다.
  • 자연어 스크롤 제어 — "대출 메뉴에서 멈춰"(찾을 때까지 스크롤)·"끝까지 스크롤"을 기존 이벤트로 구현.
  • OCR 인증 연동 — ARS/웹 OTP를 OCR 서버로 추출해 키패드까지 자동 입력.
  • 잠금 해제 — 사용자가 한 번 그린 패턴/PIN을 학습해 재현합니다.
  • GPU 상주 — Ollama keep_alive로 모델을 GPU에 상주시켜 응답 지연을 최소화합니다.
실기기 3대(SM-A546S · SM-G950N · SM-A826S)로 스캔·연결·미러링·자연어 제어·상태 표시(배터리/CPU/메모리/온도)를 검증했습니다.
분류: AI · 원본 경로: D:\python_Project\mobile_mirror_ai