Jev Ultrafast, 화면 요소를 번호로 인덱싱해 브라우저 작업을 7초대로 단축
browser-use 조직이 공개한 Jev Ultrafast는 자연어 목표 하나를 던져주면 브라우저를 직접 조작해 작업을 끝내는 에이전트다. 눈에 띄는 특징은 "동적 인덱스 액션 공간"이라는 설계다. 페이지를 관찰할 때마다 조작 가능한 요소를 번호가 붙은 표로 새로 만들고, 모델은 그 표 안에서 수행할 동작과 대상을 고른다. 텍스트 생성은 동작이 TYPE_TEXT일 때만 작은 LLM이 맡는다.
동작 집합은 CLICK, TYPE_TEXT, SELECT, SCROLL_UP, SCROLL_DOWN, WAIT, DONE, BLOCKED 여덟 가지다. 정책은 지원되는 동작과 그에 맞는 대상만 후보로 제시한다. 결정은 동작 헤드와 대상 헤드로 나뉘어 네트워크 왕복 한 번에 처리되며, 대상 헤드에는 호환되는 요소만 들어간다. 네이티브 드롭다운 선택지는 관찰된 요소/옵션 인덱스를 함께 달고 다닌다. 사이트별 액션 스크립트나 미리 준비된 입력 문자열은 정책 어디에도 없다.
성능 수치는 Google Flights에서 취리히→런던 편도를 찾는 작업 기준 7,073ms다. 동일한 모델과 설정으로 두 버전을 6회 교차 실행한 결과 양쪽 모두 3/3을 통과했고, 중앙값 작업 시간은 9.450초에서 7.092초로 25% 줄었다. 중앙값 브라우저 프로토콜 호출은 1,092회에서 101회로 떨어졌다. 다만 이는 하나의 브라우저 프로필에서 한 가지 작업을 세 번 반복한 측정이지 일반적인 신뢰성 벤치마크가 아니다. 같은 정책으로 위키백과의 괴델 불완전성 정리 문서를 여는 데는 2.798초, 로컬 호텔 검색·필터 작업에는 1.896초가 걸렸다.
기존 브라우저 에이전트는 보통 스크린샷을 모델에 넣고 좌표를 뱉게 하거나, DOM 전체를 텍스트로 밀어 넣는 방식을 쓴다. 둘 다 토큰 소비와 지연이 크고, 화면이 조금만 바뀌어도 예측이 흔들린다. Jev는 기본 에이전트 루프에서 스크린샷을 아예 쓰지 않고 구조화된 상태만 소비한다. 인스펙터가 선택적으로 스크린샷을 켜고, 데모 영상은 별도의 연속 스크린캐스트로 만든다. 스크린샷 렌더러는 라벨을 나중에 덧붙일 뿐 브라우저를 구동하지 않는다.
실행 계층의 설계도 눈여겨볼 부분이다. 스냅샷 한 번에 브라우저 호출 한 번으로 보이는 컨트롤의 이름·값·텍스트를 원자적으로 읽고 실제 DOM 노드 참조를 유지한다. 클릭 시에는 문서, 폼 값, 대상, 주변 문맥을 검증하고 현재 기하를 다시 계산해 가려진 컨트롤을 거부한다. 애니메이션이 재생됐다는 이유만으로 재예측을 강제하지는 않는다. 콤보박스에 입력한 뒤에는 보이는 제안을 최대 200ms까지 기다리고, 다른 상호작용은 최대 두 애니메이션 프레임 또는 50ms로 제한한다. 이런 읽기는 실행이 로그에 기록된 뒤에 일어난다. 숨은 탭도 렌더링을 유지하도록 포커스 에뮬레이션을 쓰고, 화면 밖 본문이나 푸터는 모델 컨텍스트에 넣지 않는다.
안전 경계도 명시돼 있다. 실행되는 모든 대상은 관찰된 노드에서 해석되며, 실행기가 페이지 신선도와 클릭 가림 여부를 다시 확인한다. 모델 출력은 셀렉터나 좌표, 셸 명령, 실행 가능한 자바스크립트로 변환되지 않는다. 텍스트 헬퍼의 출력은 타이핑 전에 작은 JSON 객체로 파싱돼야 한다. 중단된 텍스트 요청은 텍스트 헬퍼 입력 전체가 그대로일 때만 재사용된다.
직접 써보려면 저장소를 클론한 뒤 TYPESAFE_API_KEY와 TEXT_MODEL_API_KEY를 설정하고 http://127.0.0.1:8766에서 Start demo → Run automatically를 누르면 된다. 인스펙터는 번호가 붙은 요소, 동작 확률, 대상 확률, 실행된 동작을 보여주며 "Choose next"로 실행 직전에 멈춰 세울 수 있다. Chrome 연결은 uv sync로 설치되는 Browser Harness를 거치고, uv run browser-harness --doctor로 상태를 점검한다. 예제 설정에서 TEXT_MODEL_API_KEY는 OpenRouter 키이며 데모는 inception/mercury-2.5를 reasoning 비활성으로 사용한다. Gemini, GLM, DeepSeek도 OpenAI 호환 텍스트 헬퍼로 연결할 수 있다. 파이썬에서는 Agent에 URL과 목표를 넘기고 state["elapsed_ms"], state["status"]를 확인하는 식이며, uv run --env-file .env python your_script.py로 실행한다.
한계도 분명하다. DONE을 선택했다고 해서 결과가 검증되는 것은 아니어서 별도의 독립 검증이 필요하다. DOM 리더는 일반적인 HTML과 ARIA 컨트롤을 다루지만 접근성 이름 명세 전체를 구현하지는 않는다. 섀도 루트, 프레임, 캔버스, 업로드, 팝업 탭, 중첩 스크롤, 임의의 키보드 위젯은 이번 MVP 범위 밖이다. 소유한 탭은 기존 Chrome 프로필을 공유한다. 테스트는 오프라인으로 돌아가며 check_guards.py는 모델 호출 없이 로컬 브라우저의 실제 컨트롤을 검사한다. 반면 라이브 예제와 녹화 스크립트는 유료 API 호출을 발생시킨다.
관련 글
- Jev에게 '다음 글자'만 물어 챗봇으로 만든 실험, jevchat 공개결정 모델 Jev에게 매 단계 다음 기호를 묻고 확률 분포에서 샘플링해 문장을 만들어내는 실험 도구 jevchat이 공개됐다. 여러 샘플링 전략과 알파벳, 빔 탐색을 지원하며 오프라인 테스트 158개를 갖췄지만 비용은 비현실적이고 결과는 재미를 위한 것이다.
- 에이전트 라우팅에 70B 모델은 과하다는 Laya와 Jev 비공식 비교가 나왔다Convai Innovations가 공개한 421M 결정 모델 Laya와 TypeSafe의 상용 엔진 Jev를 비교한 비공식 평가가 나왔다. 속도와 캘리브레이션 수치가 공개됐지만, 통제된 대조 실험이 아니라는 전제가 붙는다.
- 결정 전용 모델 'Jev' 활용 사례 20여 개 모은 사이트 공개중국 개발자 커뮤니티 V2EX에 결정 특화 모델 Jev를 활용한 프로젝트 20여 개를 모은 사이트가 공개됐다. 생성형 모델과 달리 분류·라우팅·점수화 같은 판단 작업을 전담하는 Jev의 실제 쓰임새를 사례로 보여준다.
- tinystruct, LLM을 타입 안전 자연어 진입점으로 감싸는 SDK 공개자바 프레임워크 tinystruct에 자연어 입력을 타입 안전하게 연결하는 tinystruct-typesafe-sdk가 공개됐다. 모델이 코드를 생성하는 대신 기존 @Action 중 하나를 고르고 강타입 인자만 추출하는 구조를 지향한다.