로컬 AI 에이전트를 위한 누락된 Control Plane
Source: Dev.to
위에 제공된 텍스트 외에 번역할 내용이 없습니다. 번역이 필요한 전체 텍스트를 알려주시면 한국어로 번역해 드리겠습니다.
현재 모바일 AI 에이전트의 문제점
- 모델 우선 접근: 논의는 종종 모델 크기, 비용, 혹은 컨텍스트 윈도우에 초점을 맞추며, 에이전트가 이미 OS와 상호작용할 방법을 가지고 있다고 가정합니다.
- 플랫폼 제한:
- iOS 샌드박싱은 한 앱이 다른 앱을 제어하는 것을 차단합니다.
- Android 접근성 서비스는 무겁고, 무서운 권한을 요구하며, 합성 기능이 제한적입니다.
- 결과: 강력한 온‑디바이스 모델이라도 손이 없기 때문에 지도 앱을 열거나, “확인”을 탭하거나, 메시지를 입력할 수 없습니다.
제어 플레인이 제공하는 것
제어 플레인은 모델 아래에 위치하며 다음을 처리합니다:
- 관찰 – 화면 상태, UI 계층 구조, 현재 액티비티, 포그라운드 앱을 캡처합니다.
- 실행 – 탭, 입력, 스와이프, 그리기, 키 이벤트 또는 앱 실행과 같은 개별 동작을 수행합니다.
- 피드백 – 각 동작 후에 무엇이 변경되었는지 보고하여 모델이 다음 단계를 조정할 수 있게 합니다.
Drengr: 제어 평면의 한 구현
Drengr는 프로토콜을 지원하는 모든 AI 클라이언트(예: Claude Desktop, Cursor, Windsurf)가 사용할 수 있는 세 가지 간단한 MCP(Model‑Control‑Protocol) 도구를 제공합니다.
| Tool | Purpose |
|---|---|
drengr_look | 현재 화면 및 UI 트리를 관찰 |
drengr_do | 탭 / 입력 / 스와이프 등 실행 |
drengr_query | 구조화된 데이터(디바이스, 활동, 크래시) 읽기 |
이 세 가지 동사는 깨지기 쉬운 셀렉터, XPath 복잡성, 혹은 지속적으로 실행되는 Appium 데몬을 대체합니다.
Runtime Architecture
- 단일 정적 Rust 바이너리 – 네이티브 채널(안드로이드의 ADB, iOS 시뮬레이터의 WDA)을 통해 디바이스를 제어합니다.
- 크로스‑플랫폼 추상화 – 동일한 바이너리가 추가 의존성 없이 Android와 iOS 모두에서 동작합니다.
실전에서의 에이전트 루프
-
관찰
drengr_lookDrengr는 스크린샷을 캡처하고 UI 트리를 덤프한 뒤, 이미지 약 100 KB에 비해 약 300 토큰 정도의 간결한 텍스트 설명을 생성합니다.
-
결정
모델은 해당 설명을 처리하고 원하는 동작을 기술한 JSON 래퍼를 반환합니다.
-
실행 및 피드백
drengr_doDrengr는 동작을 수행하고 상황 보고서를 생성합니다(이전 상태와의 차이점). 이 보고서는 다음 반복을 위해 모델에 다시 전달됩니다.
상황 보고서는 대부분의 프레임워크가 놓치는 부분입니다; 이를 생략하면 모델이 단계 사이에 맹목적으로 동작하게 되어(예: 작동하지 않는 버튼을 반복해서 탭하는 등) 과잉 행동을 할 수 있습니다.
로컬 제어 플레인이 필수적인 이유
| 항목 | 클라우드 전용 어시스턴트가 겪는 문제 |
|---|---|
| Latency | 전화기를 잡고 있을 때 2초 왕복은 끊어진 느낌이다. |
| Privacy | 은행, 건강, 메신저 데이터는 기기에 머물러야 한다. |
| Network independence | 지하철, 비행기, 불안정한 Wi‑Fi가 어시스턴트를 마비시키면 안 된다. |
온‑디바이스 모델이 보편화됨에 따라 제어 플레인도 로컬에서 실행되어야 합니다. Drengr의 정적 바이너리 설계는 이 요구사항을 반영합니다.
실제 사용 사례
위의 세 가지 도구를 사용하면, 온‑디바이스 에이전트가 다음을 수행할 수 있습니다:
- Photos를 열어 최근 사진을 찾아 WhatsApp 메시지에 첨부합니다.
- 항공권 예약 앱을 모니터링하여 가격 하락을 감지하고 자동으로 재예약합니다.
- 저시력 사용자를 위해 화면 공유를 통해 은행 앱을 조작합니다.
- 사람들이 일반적으로 휴대폰에서 인간 비서에게 요청하는 다양한 작업을 수행합니다.
이러한 시나리오에는 새로운 모델 기능이 아니라 손‑눈 인프라가 필요합니다.
Drengr 시작하기
Drengr는 무료로 사용할 수 있습니다. 두 명령으로 설치하고 확인하세요:
# Claude Code를 통해 설치 (또는 직접 실행)
claude mcp add drengr -- npx -y drengr mcp
# 설치 확인
drengr doctor
AI 에이전트를 실행 중인 Drengr 인스턴스로 지정하고, 모델이 실제 손으로 행동하는 모습을 지켜보세요.
Rust 구현은 의도적인 선택이었습니다—자세한 내용은 별도 게시물을 참고하세요.