마우스 안 뺏기는 AI 컴퓨터 조작, 버셀 agent-desktop 살펴보기
화면 캡처와 좌표 추측 대신 운영체제 접근성 트리를 읽어 백그라운드에서 PC 작업을 돕는 버셀의 오픈소스 agent-desktop을 알아봅니다.
- 화면 캡처 대신 운영체제 접근성 트리를 읽어 정확하고 빠르게 버튼을 찾습니다.
- 마우스 포인터와 창 포커스를 가로채지 않아 에이전트가 일하는 중에도 내 작업을 이어갈 수 있습니다.
- 명령어 한 줄로 설치하고 클로드 코드 같은 터미널 에이전트에 바로 스킬로 연결합니다.
AI에게 내 컴퓨터 작업을 맡기면 마우스 커서가 튀어 다른 일을 하기 어렵습니다.
버셀 랩스(Vercel Labs)가 오픈소스 agent-desktop을 공개했습니다.
화면 캡처 대신 운영체제 접근성 정보(Accessibility Tree)를 읽어 이 문제를 해결했습니다.
이 글을 읽으면 마우스를 뺏기지 않고 백그라운드에서 일하는 AI 환경을 만들 수 있습니다.
- 이런 분께 맞습니다: AI 에이전트로 반복적인 PC 문서나 데이터 작업을 자동화하고 싶은 분
- 준비물: Node.js 18 이상, 터미널 환경(맥, 윈도우, 리눅스 모두 지원)
- 걸리는 시간: 약 10분
목차
화면 캡처 대신 접근성 트리를 읽는 이유
결론부터 말하면, 픽셀 좌표를 찍는 방식은 느리고 오차가 잦기 때문입니다.
기존 컴퓨터 조작 AI(컴퓨터 유즈, Computer Use)는 화면 전체를 캡처했습니다.
이 사진을 시각 인공지능 모델로 보내 마우스 좌표를 찾았습니다.
창 크기가 조금만 바뀌거나 화면 배율이 달라지면 엉뚱한 빈 바탕을 누르는 일이 잦았습니다.
매번 큰 사진을 주고받느라 응답 시간도 수 초씩 걸렸습니다.
agent-desktop snapshotJSON ref: "@calc:btn_7"agent-desktop click @refagent-desktop은 운영체제의 접근성 트리(Accessibility Tree)를 읽습니다.
웹 브라우저의 개발자 도구처럼 화면 요소 목록을 구조화해 가져옵니다.
맥의 AX API, 윈도우 UI 자동화, 리눅스 AT-SPI를 씁니다.
화면 속 버튼과 입력창 구조를 텍스트(JSON)로 바로 받아옵니다.
| 구분 | 기존 시각 모델 방식 (Computer Use) | 접근성 트리 방식 (agent-desktop) |
|---|---|---|
| 화면 인식 수단 | 전체 화면 캡처 이미지 (비전 토큰 소모) | 운영체제 네이티브 접근성 트리 (JSON) |
| 요소 지정 방식 | 픽셀 좌표 추측 ((x, y) 어림셈) | 고유 식별자 지정 (`@s8f3k2p9:e1` 같은 참조 ID) |
| 마우스 커서 동작 | 실제 사용자 마우스 포인터를 움직임 | 백그라운드에서 이벤트 직접 주입 (무헤드) |
| 응답 속도 및 비용 | 매 단계 고해상도 이미지 전송으로 느리고 비쌈 | 가벼운 텍스트 통신으로 밀리초 단위 즉시 반응 |
백그라운드 무헤드 제어의 원리
결론부터 말하면, 마우스를 화면 위에서 움직이지 않고 운영체제에 직접 행동 신호를 보내기 때문입니다.
일반적인 매크로는 마우스 커서를 물리적으로 움직여 클릭합니다.
AI가 일할 때 마우스를 건드리면 좌표가 어긋나 작업이 실패하곤 했습니다.
agent-desktop은 기본적으로 무헤드(Headless)로 동작합니다.
화면 창을 띄우거나 물리 마우스를 움직이지 않고 뒤에서 일합니다.
운영체제 접근성 API로 버튼에 직접 누름 신호를 보냅니다.
창이 다른 프로그램 뒤에 가려져 있어도 안정적으로 작동합니다.
에이전트가 어떤 버튼을 누르는지 눈으로 직접 확인하고 싶다면 명령어 뒤에 --headed 옵션을 붙이면 됩니다.
이 옵션을 켜면 물리적 마우스 포인터가 해당 위치로 이동해 실제로 누르는 동작을 보여 줍니다.
5분 설치와 기본 명령어 써보기
결론부터 말하면, 터미널에서 npm 명령 한 줄이면 바로 설치할 수 있습니다.
러스트(Rust) 언어로 만들어진 엔진이지만, npm 전역 패키지로 포장되어 있어 별도의 컴파일 도구 없이 누구나 설치할 수 있습니다.
1단계: 패키지 설치하기
터미널 창을 열고 아래 명령어를 입력합니다.
# agent-desktop 전역 설치 명령
npm install -g agent-desktop
설치가 끝나면 버전을 확인합니다.
# 정상 설치 여부 확인
agent-desktop --version
터미널 화면에 agent-desktop 0.1.x 형태의 버전 번호가 나오면 준비가 끝난 것입니다.
2단계: 실행 중인 앱의 화면 구조 읽기
메모장이나 계산기 앱을 켜 둔 상태에서 스냅샷(Snapshot) 명령을 내립니다.
# 계산기 앱의 UI 요소를 JSON 트리로 읽어오기
agent-desktop snapshot --app Calculator
화면에 아래와 같이 각 버튼에 고유 참조 번호가 붙은 JSON 결과가 출력되면 성공입니다.
{
"ref": "@calc:root",
"role": "window",
"name": "계산기",
"children": [
{ "ref": "@calc:btn_7", "role": "button", "name": "7" },
{ "ref": "@calc:btn_plus", "role": "button", "name": "더하기" },
{ "ref": "@calc:btn_equals", "role": "button", "name": "같음" }
]
}
3단계: 요소 번호로 클릭하기
식별 번호(ref)를 확인했다면 좌표 없이 바로 클릭할 수 있습니다.
# 7번 버튼을 클릭하는 명령어
agent-desktop click @calc:btn_7
계산기 화면에 숫자 7이 적히면 조작에 성공한 것입니다.
클로드 코드에 스킬로 붙이기
결론부터 말하면, agent-desktop 내장 설명서를 에이전트 지침에 주입하면 곧바로 컴퓨터 조작 비서가 됩니다.
터미널에서 작업하는 클로드 코드(Claude Code)나 코딩 에이전트는 셸 명령어를 실행할 수 있습니다.
agent-desktop은 에이전트가 스스로 사용법을 읽을 수 있도록 내장 스킬 문서를 제공합니다.
1단계: 스킬 문서 확인하기
터미널에 아래 명령어를 입력해 에이전트용 설명서를 출력해 봅니다.
# 에이전트가 읽을 표준 지침서 불러오기
agent-desktop skills get desktop
명령어 목록과 스냅샷 활용 규칙이 마크다운 형태로 출력됩니다.
2단계: 에이전트에 지시하기
클로드 코드 실행 창에서 아래와 같이 자연어로 업무를 요청합니다.
계산기 앱을 열고 125 곱하기 8을 계산한 뒤 결과를 알려줘.
agent-desktop CLI를 써서 스냅샷을 찍고 버튼을 눌러서 해결해.
클로드 코드는 스스로 snapshot을 찍어 버튼 번호를 알아내고, click 명령을 차례로 보낸 뒤 화면의 결과 텍스트를 읽어 답변을 돌려줍니다.
직접 해 보니
실제로 써 보며 가장 인상 깊었던 점은 속도와 반응성이었습니다.
기존 컴퓨터 유즈 모델은 한 번 클릭할 때마다 4초에서 8초가 걸렸습니다.
반면 agent-desktop은 텍스트 기반으로 통신하기 때문에 클릭과 입력이 0.2초 이내로 즉시 처리되었습니다.
슬랙(Slack)으로 메신저를 나누는 중에도 작업이 매끄러웠습니다.
뒤에서 브라우저 버튼을 누르고 데이터를 복사해 와도 커서가 튀지 않았습니다.
다만 한계도 분명했습니다.
포토샵 캔버스나 게임처럼 자체 엔진으로 그리는 화면은 목록에 잡히지 않았습니다.
운영체제 접근성 트리에 버튼 정보가 노출되지 않기 때문입니다.
노션, 엑셀, 크롬, 슬랙 같은 일반 업무용 소프트웨어는 매우 잘 다룹니다.
하지만 캔버스 그래픽 툴은 여전히 시각 모델(Vision)과의 조합이 필요합니다.
자주 막히는 곳
설치나 사용 중 자주 마주치는 문제와 해결 방법입니다.
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| 명령 실행 시 접근 권한 오류가 뜹니다 | 운영체제의 접근성 제어 허용이 꺼져 있음 | 맥의 경우 시스템 설정 → 개인정보 보호 및 보안 → 손쉬운 사용에서 터미널 앱을 켭니다 |
STALE_REF 에러가 발생합니다 |
창 내용이나 페이지가 바뀌어 이전 요소 번호가 만료됨 | agent-desktop snapshot 명령으로 새 스냅샷을 다시 가져옵니다 |
| 버튼이 너무 많아 토큰이 부족합니다 | 복잡한 프로그램의 트리 전체를 한 번에 조회함 | snapshot --skeleton으로 뼈대만 본 뒤 필요한 부분만 좁혀서 조회합니다 |
마무리
버셀의 agent-desktop은 화면 캡처 일색이던 AI 컴퓨터 제어 환경에 접근성 트리라는 실용적인 해법을 제시했습니다.
마우스 포인터를 빼앗기지 않고 가볍게 돌아가므로, 일상적인 PC 반복 업무를 백그라운드에 맡기기에 알맞습니다.
AI 에이전트와 도구 연동에 관심이 있다면 아래 글도 함께 읽어보시길 권합니다.
- 한 PC에서 AI 에이전트 여러 개 돌리기, agent-desktop 백그라운드 조작과 추천 작업
- 컴퓨터 유즈 에이전트 trycua 분석
- 클로드 추천 스킬 랭킹과 실전 활용법
- 미니멀 코딩 에이전트 하네스 구축기
📖 이 글에 나온 용어 모아 보기
- 접근성 트리(Accessibility Tree): 시각 보조 도구를 위해 운영체제가 프로그램의 버튼 구조를 정리해 둔 정보 지도
- 무헤드(Headless): 화면 창을 띄우거나 물리적인 마우스를 움직이지 않고 뒤에서 조용히 코드로만 동작하는 방식
- 스냅샷(Snapshot): 특정 시점의 프로그램 화면 구조를 그대로 사진 찍듯 저장해 놓은 텍스트 데이터
- 참조 번호(Reference ID): 화면 속 수많은 버튼과 입력창을 헷갈리지 않고 가리키기 위해 붙이는 고유한 이름표