GitHub - browser-use/browser-harness: Browser Harness | Self-healing harness that enables LLMs to complete any task.
핵심 포인트
- 1Browser Harness는 LLM이 Chrome DevTools Protocol (CDP)을 통해 실제 브라우저와 직접 상호작용하며 복잡한 웹 작업을 자유롭게 수행할 수 있게 하는 도구입니다.
- 2이 시스템은 실행 중 agent가 누락된 코드를 스스로 작성하고 매 실행마다 학습하여 개선되며, agent가 생성하는 site-specific `domain-skills`를 통해 특정 웹사이트에서의 작업 효율성을 높입니다.
- 3궁극적으로 사용자의 브라우저 직접 조작을 최소화하고, 커뮤니티의 `domain-skills` 기여를 통해 다양한 웹 자동화 기능을 확장하는 것을 목표로 합니다.
Browser Harness는 Large Language Model (LLM)을 실제 브라우저와 직접 연결하여 복잡한 브라우저 작업을 자율적으로 수행할 수 있도록 돕는 경량의 CDP (Chrome DevTools Protocol) 하네스입니다. 이 시스템은 LLM이 브라우저와 상호작용하는 데 필요한 모든 것을 자체적으로 생성하고 개선하도록 설계되었으며, 사용자는 브라우저를 직접 조작할 필요가 없어집니다.
핵심 방법론은 다음과 같습니다:
Browser Harness는 단일 웹소켓을 통해 Chrome 브라우저에 직접 연결되며, LLM과 브라우저 사이에 중간 계층이 최소화됩니다. LLM은 작업을 수행하는 과정에서 필요한 기능이나 도우미 코드가 부족할 경우, 이를 감지하고 실시간으로 해당 코드를 작성하여 (agent-workspace/agent_helpers.py 파일에 추가) 실행합니다. 예를 들어, 파일 업로드에 필요한 특정 로직이 없을 경우, LLM이 직접 해당 로직을 생성하여 작업을 완료합니다. 이러한 방식으로 하네스는 매 실행마다 스스로 개선하고 학습합니다. 이는 LLM의 코드 생성 능력을 활용하여 동적으로 에이전트의 기능을 확장하는 메타 프로그래밍 패러다임을 따릅니다.
아키텍처는 주로 네 가지 핵심 파일에 약 1천 라인 규모로 구성되어 있습니다:
install.md: 초기 설치 및 브라우저 부트스트랩 과정을 안내합니다.SKILL.md: 일상적인 사용 방법을 설명합니다.src/browser_harness/: 보호된 핵심 패키지로, CDP 통신 및 브라우저 제어 로직을 포함합니다.agent-workspace/agent_helpers.py: 에이전트 (LLM)가 동적으로 수정하고 추가하는 도우미 코드가 위치합니다.agent-workspace/domain-skills/: 에이전트가 특정 웹사이트(예: Amazon, LinkedIn)에 대한 재사용 가능한 기술(skill)을 저장하고 관리하는 디렉토리입니다.
"Domain Skills"는 이 시스템의 중요한 학습 메커니즘입니다. 에이전트가 특정 사이트에서 작업을 성공적으로 수행하면서 비자명한 요소 선택자, 작업 흐름, 예외 처리 방법을 파악하게 되면, 이 정보는 경로에 자동으로 새로운 'skill' 파일로 생성됩니다. 이 skill은 LLM이 직접 생성한 것으로, 실제 브라우저 환경에서 작동하는 가장 효율적인 방법을 반영합니다. 사용자는 이 skill들을 직접 작성하는 대신, 에이전트가 작업을 수행하도록 함으로써 자동으로 skill이 생성되도록 유도합니다. 이 skill들은 LLM이 이전에 학습한 내용을 재활용하여 새로운 작업에 더 효율적으로 적응하고 성능을 향상시키도록 돕는 역할을 합니다. 환경 변수를 설정하여 이 기능을 활성화할 수 있습니다.
설치 과정은 install.md를 따르며, Chrome의 chrome://inspect/#remote-debugging 페이지에서 원격 디버깅을 허용하고, Chrome 144 이상 버전에서는 per-attach 팝업에 "Allow"를 클릭해야 합니다. 또한, Browser Use Cloud를 통해 클라우드 브라우저를 활용할 수도 있으며, 이는 동시에 여러 브라우저를 사용하거나 프록시, Captcha 해결 등의 추가 기능을 제공합니다.
기여는 주로 에이전트가 생성한 agent-workspace/domain-skills/ 폴더를 pull request를 통해 공유하는 방식으로 이루어지며, 이는 커뮤니티가 특정 사이트에 대한 에이전트의 지식을 확장하는 데 기여합니다.