Fastest and cheapest web agent
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
[!IMPORTANT]
Browser Use Cloud 대기자 명단이 열렸습니다. 클라우드에서 초고속 브라우저 에이전트를 조기에 사용해 보세요.
대기자 명단 참여 →
동적이고 인덱스화된 액션 공간을 갖춘 브라우저 에이전트.
목표 하나만 주면 됩니다. TypeSafe의 Jev가 오퍼레이션과 엘리먼트를 선택합니다. 소형 LLM은 오퍼레이션이 TYPE_TEXT일 때만 텍스트를 작성합니다.
Google Flights에서 취리히 → 런던까지 7.1초. 자연어 목표 하나, 실제 텍스트 생성, 로딩 대기까지 포함한 시간입니다.
MP4 보기 · 측정값 · 루프 읽기
모든 관측은 새로운 엘리먼트 테이블을 생성합니다:
[1] button Change ticket type · Round trip
[2] combobox Where from? · San Francisco
[3] combobox Where to? · empty
[4] textbox Departure · empty...
오퍼레이션은 CLICK, TYPETEXT, SELECT, SCROLLUP, SCROLL_DOWN, WAIT, DONE, BLOCKED입니다. 지원되는 오퍼레이션과 대상만 제시됩니다.
one TypeSafe request
┌───────────────────────────┐
page → element table → operation │
│ click_target │
│ type_text_target │
│ select_target, if present │
└─────────────┬─────────────┘
use the matching target
│
CLICK [7] ─────┤──→ browser
TYPE_TEXT [3] ─────┘
↓
small LLM → text → browser
대상 질문은 추론적입니다. 오퍼레이션이 CLICK이면 click_target만 실행될 수 있습니다. 두 가지 결정, 한 번의 네트워크 왕복. 각 대상 헤드는 호환되는 엘리먼트만 포함합니다. 네이티브 드롭다운 선택지는 관측된 엘리먼트/옵션 인덱스를 가집니다.
정책에는 사이트별 액션 스크립트나 미리 준비된 필드 문자열이 없습니다. Flights 예제는 목표를 제공하고 결과를 독립적으로 검증합니다. 스크린샷 렌더러는 나중에 라벨을 추가할 뿐, 브라우저를 구동하지 않습니다.
git clone https://github.com/browser-use/jev-ultrafast.git
cd jev-ultrafast
uv sync
cp.env.example.env
# Add TYPESAFE_API_KEY and TEXT_MODEL_API_KEY.
uv run jev
http://127.0.0.1:8766 을 열고 Start demo → Run automatically 를 클릭하세요. 인스펙터는 번호가 매겨진 엘리먼트, 오퍼레이션 확률, 대상 확률, 실행된 액션을 보여줍니다. Choose next 는 실행 전에 일시정지합니다.
Chrome은 uv sync로 설치되는 Browser Harness를 통해 연결됩니다. 연결이 필요하면 uv run browser-harness --doctor를 실행하세요. 메시지가 표시되면 Chrome에서 원격 디버깅을 허용하세요.
TEXTMODELAPI_KEY는 예제 구성에서 OpenRouter 키입니다. 현재 데모는 추론이 비활성화된 inception/mercury-2.5를 사용합니다. Gemini, GLM, DeepSeek도 OpenAI 호환 텍스트 헬퍼를 사용할 수 있습니다. 적절한 모델, 엔드포인트, 추론 설정을 구성하세요.
from jev_ultrafast import Agent
with Agent(
"https://www.google.com/travel/flights?hl=en",
"Find one-way flights from Zurich to London on September 20, 2026, "
"for one adult in economy. Stop when matching flight options are visible.",
) as agent:
for state in agent.run():
print(state["elapsed_ms"], state["status"])
uv run --env-file.env python your_script.py로 실행하세요. 동일한 정책으로 다른 작업을 실행할 수 있습니다:
uv run --env-file.env python examples/run.py \
--url https://en.wikipedia.org/wiki/Main_Page \
--goal 'Find and open the Wikipedia article about Gödel’s incompleteness theorems.'
uv run --env-file.env python examples/flights.py --keep-open은 항공편 검색을 수행하고 실제 경로/날짜/결과를 확인한 뒤 트레이스를 저장합니다. 항공편을 선택하거나 예약하지는 않습니다.
실행된 모든 대상은 관측된 노드에서 해석됩니다. 실행기는 페이지 신선도와 클릭 가림을 재확인합니다. 모델 출력은 절대 선택자, 좌표, 셸 명령, 실행 가능한 JavaScript가 되지 않습니다. 텍스트 헬퍼 출력은 입력 전에 작은 JSON 객체로 파싱되어야 합니다.
| 파일 | 역할 | ||
|---|---|---|---|
| agent.py | 전체 루프와 텍스트 헬퍼 핸드오프 | ||
| snapshot.js | 원자적 DOM 스냅샷, 인덱스된 컨트롤, 신선도 가드 | ||
| browser.py | 브라우저 연결, 현재 지오메트리, 실행 | ||
| model.py | 동적 오퍼레이션/대상 헤드와 텍스트 생성 | ||
| questions.py | 모델 지침 | ||
| demo.py | 로컬 인스펙터 |
현재 비디오는 7,073ms의 Google Flights 실행입니다. 타이밍은 초기 페이지 관측 후 시작되며 모델 호출, 생성된 텍스트, 브라우저 작업, 오래된 결정, 로딩 대기를 포함합니다. 새로운 독립 검사는 편도 설정, 취리히, 런던, 2026년 9월 20일, 보이는 항공편 옵션을 확인합니다. 비디오는 1×로 재생되며 시작 홀드 없이 0.5초의 최종 홀드가 있습니다.
동일한 모델과 설정으로 6번의 교대 실행에서 두 버전 모두 3/3 통과했습니다. 중앙값 작업 시간은 9.450초 → 7.092초로 25% 감소했고, 중앙값 브라우저 프로토콜 호출은 1,092 → 101로 감소했습니다. 이는 하나의 브라우저 프로필에서 하나의 작업을 세 번 반복한 것이지 일반적인 신뢰성 벤치마크가 아닙니다.
동일한 정책은 요청된 Wikipedia 문서를 2.798초에 열었고 로컬 호텔 검색/필터 작업을 1.896초에 통과했습니다. 실행, 실패, 소스 해시, 측정 경계는 performance.md에 있습니다.
DONE 선택은 여전히 독립적인 결과 검증이 필요합니다. DOM 리더는 일반적인 HTML 및 ARIA 컨트롤을 처리하지만 전체 접근 가능한 이름 명세는 아닙니다. Shadow root, 프레임, 캔버스, 업로드, 팝업 탭, 중첩 스크롤, 임의 키보드 위젯은 이 MVP 범위 밖입니다. 소유된 탭은 기존 Chrome 프로필을 공유합니다.
uv run ruff check.
uv run pytest
node --check jev_ultrafast/static/app.js
node --check jev_ultrafast/snapshot.js
uv build
테스트는 오프라인입니다. uv run python scripts/checkguards.py는 모델 호출 없이 로컬 브라우저에서 실제 컨트롤을 확인합니다. 라이브 예제와 녹화 스크립트는 유료 API 호출을 합니다. scripts/recordflights.py는 원본 브라우저 타임스탬프를 캡처하고, scripts/render_demo.py는 검증된 실행을 1×로 렌더링하고 Google 계정 스트립을 잘라냅니다. 자격 증명과 원시 트레이스는 무시됩니다.
Browser Use · Browser Harness · TypeSafe speculative fan-out