Vercel ) agent-browser

개붕이·2026년 3월 6일

Tech

목록 보기
5/5
post-thumbnail

agent-browser 란 ?


AI 에이전트 전용으로 설계된 경량 브라우저 자동화 CLI 입니다. 기존 Playwright MCP 가 AI 컨텍스트 창을 지나치게 많이 소모하는 문제를 직접 겨냥하여 만든 도구입니다.

왜 기존 도구가 부족했는가?


Playwright MCP 는 기능이 강력하지만 매 액션마다 전체 접근성 트리를 반환합니다. 버튼 하나 클릭에도 12,000 이상의 토큰 + 스크린샷 한 장에는 15,000 이상의 토큰을 소모하는 사례가 실제로 보고되었고 깃허브 이슈로도 버전 하나 올리는 사이 토큰 소모가 6배나 증가하는 등의 문제가 문서화 되었습니다. 짧은 자동화 세션 몇 번에 5시간치 토큰 할당량을 모두 써버리는 상황이 발생한 것입니다.

근본적인 문제점은 도구가 사람을 위한 풍부한 디버깅 정보를 AI 에게도 그대로 전달한다는 점입니다. AI 는 페이지의 모든 DOM 속성이 필요한 것이 아니라 ‘이 버튼을 클릭할 수 있는가 ? ‘ 만 알면 됩니다.


핵심 설계 철학


구성성공률평균 시간평균 토큰
17개 전문화 툴80%274.8초~102,000
2개 범용 툴100%77.4초~61,000

툴이 많을수록 모델이 "어떤 툴을 써야 하나" 고민하는 데 추론 용량을 낭비합니다.

그래서 내린 결론이 단순한 인터페이스가 모델이 작업 자체에 집중하게 만든다는 결론입니다.



Snapshot + Ref 시스템


agent-browser의 핵심 개념입니다. snapshot -i 명령을 실행하면 상호작용 가능한 요소만 압축해서 반환합니다 :

- button "Sign In" [ref=e1]
- textbox "Email" [ref=e2]
- textbox "Password" [ref=e3]
- link "Documentation" [ref=e4]

같은 페이지를 Playwright MCP로 찍으면 8,000자 이상인 반면 agent-browser는 280자입니다 — 약 96% 감소. 이후 모든 조작은 @e1@e2 ref로 진행하므로 CSS 셀렉터나 XPath 없이 결정론적으로 요소를 특정합니다 .

이런 시스템 덕분에 동일한 컨텍스트 예산으로도 Playwright MCP 대비 6배 더 많은 테스트를 돌릴 수 있습니다.



아키텍처 구조


클라이언트 - 데몬 분리 구조로 동작합니다.

Claude Code (or bash)
		↓ 명령어 전달
	Rust CLI <- 경량, 즉시 파싱
		↓ IPC
	Node.js Deamon (Playwright) <- 기본 모드
	 or
	Rust Daemon (직접 CDP) <- native 모드
	 ↓
	Cromium	

데몬이 명령 사이에도 상주하므로 브라우저 세션 상태 (쿠키, localStorage, 열린 탭) 가 명령 간에 유지됩니다. 매 명령머다 브라우저를 새로 띄우지는 않습니다.


💡

IPC ?

OS에서 실행 중인 **서로 다른 프로세스들이 데이터를 주고받는 메커니즘** 전체를 IPC라고 합니다. 프로세스는 기본적으로 메모리 공간이 격리되어 있어서 직접 데이터를 공유할 수 없고, IPC를 통해서만 소통합니다.



컨텍스트를 덜 먹는 것이 중요한 이유


Self-Verifying Agent Loop 를 구성할 수 있기 때문입니다.

코드작성 → 배포 → 브라우저로 검증 → 실패 시 수정 → 재검증

의 루프를 구성할 때 컨텍스트 효율이 없이는 불가능 합니다. 검증 1회에 토큰을 수만 토큰을 사용한다면 컨텍스트 용량이 한계에 도달하기 때문입니다. agent-browser 는 이 루프를 수십번 반복 가능한 비용 구조로 만듭니다.



선택 기준


  • agent-browser 적합 : 긴 자율 에이전트 세션, 기본적인 네비게이션/폼/클릭 검증
  • Playwright MCP 적합 : 네트워크 인터셉트, PDF 생성, 멀티탭 워크플로우, 정교한 비동기 타이밍 제어, 기존 Playwright 테스트 코드 베이스 활용

이런 장단점이 존재하기 때문에 적합한 도구를 사용하면 될 것 같다.


💡

네이티브 버전 ?

베타버전으로 공개된 네이티브 버전이 존재한다. 이는 node.js 런타임 자체를 제거하고 직접 CDP 를 구현해서 사용하기 때문에 오버헤드와 의존성을 줄이는 방식이다. bash 나 cmd 에서 호출할 때 rust cli 를 불러와서 Daemon 을 선택할 때 CDP 클라이언트를 직접 구현한 순수 Rust 데몬을 사용하기 때문에 V8 초기화나 Playwright 로드 없이 CDP 호출을 할 수 있게 되는 것이다.



결론


Claude code 에서 멀티 에이전트를 사용해서 Haiku 나 Sonnet 을 사용하듯이 자가검증 에이전트 루프에서는 agent-browser 를 사용하고 기능 테스트나 문서화 작업이 필요할 때는 Playwright 를 사용하는 것이 최선의 방법인 것 같다.

profile
based on the records

0개의 댓글