Agent Desktop 은 접근성 트리를 읽어 에이전트가 제대로 누르게 한다
요약
에이전트가 데스크톱에서 막히는 까닭은 화면을 못 읽어서가 아니라 원하는 지점을 못 눌러서다. Agent Desktop 은 접근성 트리를 읽어 요소를 참조로 지정하고, 기본값으로는 마우스와 키보드를 건드리지 않는다.
추천- 이름
- Agent Desktop
- 버전
- 1.0.2
- 요금
- 무료
- 오픈소스
- 오픈소스
- 운영체제
- WindowsmacOSLinux
- 업데이트
- 2026-11-03 23:00
에이전트에게 컴퓨터를 다루게 하면 실제로 막히는 지점은 화면을 못 읽는 것이 아니라 원하는 곳을 정확히 누르지 못하는 것이다. 화면 캡처에서 좌표를 계산하는 방식은 해상도가 바뀌고 창이 움직이고 색 구성이 달라지는 순간 저장해 둔 좌표가 전부 무용지물이 된다. Agent Desktop 은 다른 길을 간다. 픽셀을 보지 않고 운영체제가 원래 앱에 알려 주는 구조를 그대로 읽는다.

읽는 것은 접근성 트리
Agent Desktop 은 Vercel Labs 가 공개한 오픈 소스 데스크톱 조작 도구로, 형태는 명령줄과 C 라이브러리의 조합이고 Apache-2.0 라이선스를 쓴다. 하는 일은 말로 하면 단순하다. 화면을 찍지 않는다. 운영체제가 보조 기술을 위해 마련해 둔 접근성 창구에 물어, 지금 열려 있는 앱의 화면 구조를 가져온다. 어떤 버튼이 있고 어떤 입력란이 있으며 어떤 목록 항목이 있는지, 각 요소가 어떤 조작을 받는지까지. 사람이 키보드나 화면 낭독기로 닿을 수 있는 것은 여기서도 닿는다.
이 길의 장점은 안정성이다. 요소를 구조로 찾기 때문에 창 크기가 달라지고 표시 배율이 바뀌고 색 구성이 달라져도 같은 요소는 그대로 같은 요소다. 대가는 구조가 온전한 앱만 본다는 점이다. 화면을 전부 직접 그리고 접근성 정보를 전혀 내보내지 않는 프로그램은 이 도구에게 빈 화면일 뿐이다.
스냅숏, 동작, 다시 스냅숏
작업 고리는 세 단계다. 먼저 스냅숏을 요청하면 조작할 수 있는 요소마다 참조 식별자가 붙은 구조화 데이터가 돌아온다. 다음으로 그 식별자에 동작을 보낸다. 클릭, 입력, 값 설정, 체크 전환, 스크롤. 끝나면 다시 스냅숏을 떠서 화면이 실제로 어떻게 바뀌었는지 확인한다. 이 흐름 어디에도 좌표를 누르는 단계가 없으니 좌표를 추측하다 틀리는 실패도 없다.
참조는 스냅숏에 묶여 있다. 이 부분의 설계는 꼼꼼해서, 앞선 스냅숏의 식별자는 새 상태에서 이미 무효일 수 있고 그때는 아무 곳이나 누르는 대신 참조가 만료되었다는 것, 대상이 하나로 정해지지 않는다는 것을 분명히 돌려준다. 창이 여러 개일 때도 같다. 후보 창을 늘어놓고 하나를 지정할 때까지 기다린다.

기본값은 마우스와 키보드를 빼앗지 않는다
이 세부는 따로 다룰 만하다. 기본은 헤드리스로 동작한다. 동작은 접근성 창구로 나가고 포인터는 움직이지 않으며 창을 앞으로 끌어오지도 않는다. 다시 말해 뒤에서 에이전트가 어떤 앱을 다루는 동안 같은 컴퓨터로 다른 일을 할 수 있다. 물리 입력을 실제로 흉내 내려면 스위치를 분명히 켜야 하고, 그때서야 포인터가 움직이고 키 입력이 주입된다.
또한 명령줄 호출은 매번 별도 프로세스에서 돈다. 상주하지 않고 뒤에 서비스를 남기지 않으며 끝나면 사라진다. 일을 여러 단계로 쪼개 외부에서 순서대로 호출하는 방식에는 이런 무상태 구조가 오히려 붙이기 쉽다.
세 플랫폼, 세 가지 토대
macOS, Windows, Linux 를 모두 지원하지만 바닥의 창구는 저마다 다르다. macOS 는 시스템의 접근성 경로를 쓰고 처음에는 권한을 직접 줘야 한다. Windows 는 터미널과 같은 무결성 단계라면 일반 앱을 다루는 데 추가 허가가 필요 없다. Linux 는 그래픽 세션과 접근성 버스에 기대고, X11 과 Wayland 는 닿는 범위가 조금 다르다. 할 수 있는 일도 고르지 않다. 알림 읽기는 세 곳 모두 되지만 시스템 트레이와 메뉴 막대 아이콘 같은 영역은 지원 폭이 각각 다르다.
명령의 범위는 넓다. 이름이 모두 예순 개이고 그중 쉰여섯 개는 바로 실행된다. 남은 네 개는 키나 마우스 버튼을 계속 누르고 있는 것이라, 뒤의 상주 프로세스가 놓는 것을 보장할 수 있을 때만 허용된다. 스냅숏, 찾기, 값 읽기, 화면 캡처는 관찰 쪽이고 클릭, 입력, 설정, 체크, 스크롤은 동작 쪽이다. 그 밖에 창 관리, 클립보드, 알림, 대기, 묶음 처리가 있다.
출력 형식은 프로그램이 읽는다
모든 명령은 형태가 같은 데이터를 하나만 내놓는다. 성공이면 결과를, 실패면 오류 코드와 대응 방식, 그리고 제안 하나를 담는다. 오류에는 이 실패를 안전하게 다시 시도할 수 있는지를 알려 주는 항목이 따로 있어, 부르는 쪽은 그것을 보고 다시 시도할지, 대상을 바꿀지, 멈추고 보고할지 정한다. 자동화를 쓰는 사람에게 이 약속이 반갑다. 실패한 뒤에 무엇을 할지를 추측에서 항목 읽기로 바꿔 주기 때문이다.
같은 창구는 C 라이브러리로도 제공되고 플랫폼별 동적 라이브러리가 함께 온다. 프로그램은 자기 프로세스 안에서 곧바로 부를 수 있어, 동작마다 자식 프로세스를 띄우지 않아도 된다. 에이전트가 읽도록 쓴 설명 문서도 함께 있어, 이 고리를 스스로 익힐 수 있다.
누구에게 맞는가
일반 사용자를 위한 소프트웨어가 아니다. 화면이 없고, 무엇이든 한 번에 끝내 주는 버튼도 없다. 손으로 눌러야만 하는 클라이언트를 모아서 처리하거나, 사내 도구에 프로그램이 닿을 입구를 붙이거나, 시험 환경에서 에이전트가 실제 화면을 차례로 밟게 하는 일을 하는 사람을 위한 것이다. 조수가 파일을 정리해 주면 되는 정도라면 이 도구는 층이 너무 낮다. 재현되고 검증되며 실패했을 때 위치를 짚을 수 있는 데스크톱 자동화가 필요하다면 바로 이 층이 답이다.
프로젝트는 시월 말에 1.0.2 를 내놓았고 x64 와 ARM64 두 아키텍처의 네이티브 패키지를 함께 제공한다. Vercel Labs 의 실험적 오픈 소스 프로젝트라 창구는 아직 바뀔 수 있지만 방향은 분명하다. 에이전트가 데스크톱을 다룰 수 있는가 하는 물음을, 영상 인식의 확률 문제에서 구조화된 창구의 결정성 문제로 옮기는 것이다.