BrowserSkill: 사람이 사용하던 브라우저 상태 그대로 에이전트에게 사용할 수 있도록 하는 CLI 도구

BrowserSkill 소개

AI 에이전트가 브라우저를 직접 조작하게 하려면 보통 둘 중 하나를 감수해야 합니다. 매번 새 프로필로 로그인부터 다시 하는 헤드리스(headless) 브라우저를 쓰거나, 에이전트가 사용자의 실제 브라우저 창을 그대로 가져가 사람이 다른 작업을 하지 못하게 막는 방식입니다. 로그인이 필요한 사내 도구나 SaaS 관리 화면을 다루는 작업일수록 전자는 매번 인증 절차에 막히고, 후자는 에이전트가 작업하는 동안 정작 사람은 컴퓨터를 비워 둬야 합니다. BrowserSkill은 이미 로그인된 사용자의 실제 브라우저를 별도의 창으로 빌려주어, 로그인 세션은 재사용하면서도 사용자의 작업은 방해하지 않는 CLI 기반 브라우저 자동화 도구입니다.

BrowserSkill의 핵심 구조는 bsk라는 명령줄 인터페이스(CLI)와 브라우저 확장(extension)의 조합입니다. 에이전트는 셸 명령으로 bsk를 호출하고, bsk는 로컬 데몬(daemon)을 거쳐 브라우저 확장에 작업을 전달합니다. 이때 실제 조작은 사용자의 평소 창이 아니라 별도로 열리는 "에이전트 창(Agent Window)" 안에서만 일어나며, 에이전트가 사용자의 기존 탭을 건드리려면 명시적으로 탭을 "빌린(borrow)" 뒤 작업이 끝나면 돌려줘야 합니다. Claude Code, Cursor, Codex처럼 셸 명령을 실행할 수 있는 에이전트라면 특정 프레임워크나 모델에 종속되지 않고 bsk CLI로 BrowserSkill을 사용할 수 있습니다.

캡차, 로그인, 확인 대화상자처럼 사람만 처리할 수 있는 단계에 부딪히면 에이전트가 사용자에게 개입을 요청하고, 처리가 끝나면 다시 작업을 이어받는 휴먼인더루프(human-in-the-loop) 동작도 기본으로 제공합니다. macOS(Apple Silicon/Intel), Linux(x64/ARM64), Windows x64를 지원하며, 브라우저는 Chrome과 Microsoft Edge를 지원합니다.

BrowserSkill vs. Browser MCP

로그인된 실제 브라우저를 에이전트에게 빌려주는 접근은 BrowserSkill만의 것은 아닙니다. Browser MCP (:pytorch::kr: Browser MCP, 자동화된 테스트, 작업 자동화 등을 위한 브라우저 제어 MCP Server)도 브라우저 확장을 통해 사용자의 실제 브라우저 프로필과 로그인 세션을 그대로 활용합니다. 다만 두 프로젝트는 에이전트가 브라우저를 어떻게 빌리는지에서 갈립니다.

Browser MCP는 MCP(Model Context Protocol)를 통해 Cursor나 Claude 같은 MCP 클라이언트와 연결되고, 사용자가 이미 열어 둔 브라우저를 에이전트가 직접 제어합니다. 반면 BrowserSkill은 셸 명령만 실행할 수 있으면 어떤 에이전트 하네스와도 연결되며, 작업은 사용자의 창과 분리된 별도의 에이전트 창에서 진행됩니다. 즉 Browser MCP가 "내가 보고 있는 화면을 에이전트가 대신 조작하는" 방식이라면, BrowserSkill은 "같은 로그인 세션을 공유하되 화면은 따로 쓰는" 방식에 가깝습니다.

BrowserSkill을 사용하면 좋을 사용자

사내 관리 화면, SaaS 대시보드처럼 로그인이 필요한 사이트에서 에이전트를 계속 작업시키면서도 자신은 다른 브라우저 창에서 원래 업무를 이어가고 싶은 사용자에게 BrowserSkill이 적합한 선택지입니다. Claude Code, Cursor, Codex 등 서로 다른 에이전트 하네스를 오가며 같은 브라우저 자동화 도구를 쓰고 싶은 경우에도 CLI 하나로 통일할 수 있다는 이점이 있습니다. 반대로 CI에서 매번 깨끗한 상태로 웹 UI를 검증해야 하는 테스트 자동화라면, 로그인 세션이 없는 일회성 브라우저를 쓰는 도구가 더 맞고, Firefox를 주로 쓰는 사용자에게는 아직 BrowserSkill이 선택지가 아닙니다.

BrowserSkill의 동작 원리

BrowserSkill은 하나의 요청이 네 개의 계층을 거쳐 처리됩니다. 에이전트가 bsk click @e1 --tab-id 42 --session ab12처럼 셸 명령을 실행하면, bsk CLI는 로컬 데몬이 실행 중인지 확인하고 유닉스 도메인 소켓(또는 Windows의 named pipe)으로 JSON 요청 한 줄을 보냅니다. 데몬은 세션 ID로 연결된 브라우저 확장을 찾아 웹소켓으로 요청을 전달하고, 확장의 도구 디스패처가 샌드박스(sandbox) 규칙을 검증한 뒤 CDP(Chrome DevTools Protocol)로 실제 브라우저 동작을 수행합니다. 응답은 같은 경로를 거슬러 확장에서 데몬, CLI로 돌아옵니다.

세션은 별도의 에이전트 창과 세션 전용 참조 저장소(ref-store)를 가지며, 쓰기 작업은 기본적으로 에이전트 창 안의 탭에서만 허용됩니다. 사용자 프로필의 탭을 다루려면 명시적으로 빌려야 하고, 같은 세션 안의 도구 호출은 데몬이 순서대로 처리해 충돌을 막습니다. 세션을 여러 개 띄우면 각 세션마다 독립된 에이전트 창이 생성되어 서로 겹치지 않습니다.

기본적으로 꺼져 있는 "작업 감사(operation audit)" 기능을 켜면, 확장 팝업에서 작업별로 에이전트가 수행한 동작의 타임라인과 상태를 확인하고 JSON으로 내보낼 수도 있습니다. 이 기록은 로컬 연결이면 사용자의 기기에, 원격 연결이면 해당 서버에만 저장되며 BrowserSkill 개발사로 전송되지 않습니다.

BrowserSkill 설치와 사용

macOS와 Linux에서는 설치 스크립트로 bsk CLI를 받아옵니다:

curl -fsSL https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.sh | sh
export PATH="${BSK_INSTALL_DIR:-$HOME/.local/bin}:$PATH"

CLI 설치 후에는 Chrome 웹 스토어나 Edge 추가 기능에서 브라우저 확장을 설치합니다. Claude Code, Cursor, Codex 등에서는 다음 명령으로 해당 하네스가 bsk를 어떻게 호출하는지 알려주는 스킬을 바로 설치할 수 있습니다:

bsk install-skill

연결 상태는 bsk doctor로 점검하고, 이후 에이전트에게 다음과 같은 형태로 브라우저 작업을 요청하면 됩니다:

/browser-skill open example.com and summarize what is on the page.

DeepSeek Harness (:pytorch::kr: DeepSeek Harness: 에이전트 루프까지 설정으로 교체하는 플러그인 구조의 코딩 에이전트) 사용자를 위해서는 bsk install-skill 대신 전용 플러그인 @wxg-prc-cpg/browser-skill-dsh-plugin을 프로필에 추가하는 별도 경로가 마련되어 있습니다:

dsh plugin --profile web add @wxg-prc-cpg/browser-skill-dsh-plugin
dsh --profile web

BrowserSkill의 라이선스

BrowserSkill은 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:framed_picture: BrowserSkill 데모 영상

https://github.com/user-attachments/assets/db782c92-b1d4-4aae-a255-039675937a90

:github: BrowserSkill 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:에서 이런 글들을 계속 정리하고 있습니다. 회원 가입으로 주요 글들을 이메일:love_letter:로, 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로 새 글 알림을 받아보세요! :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요