lexmount/moli
Rust0 / 0
DOM을 먼저 처리하고 layout·paint는 필요할 때만 실행하는 Rust 기반 headless browser입니다.
TL;DR
Moli는 Rust로 작성한 standalone headless browser kernel이자 CLI tool로, AI agent의 웹 추출과 browser automation을 위해 설계됐습니다. 기본값에서는 native DOM과 style 상태를 직접 읽어 layout·paint를 생략하고, geometry·coordinate input·screenshot이 필요할 때만 `--layout`으로 최신 layout tree와 frame을 생성합니다. CLI·CDP·WebDriver Classic·WebDriver BiDi를 지원하고 Playwright를 CDP로 연결할 수 있어 기존 자동화 client를 활용하기 쉽습니다. 공개 benchmark에서 Moli는 Chrome보다 task success rate와 웹 호환성이 낮지만, 측정 조건에서 더 작은 RSS와 peak memory를 기록했습니다. Chrome 수준의 pixel parity와 Canvas/WebGL·media playback이 필요하지 않고 구조 중심의 crawling·retrieval·evaluation workload를 운영한다면 검토할 가치가 있습니다.
핵심 포인트
- Moli는 Chromium wrapper가 아닌 Rust 기반 standalone headless browser kernel이며 CLI와 CDP·WebDriver Classic·WebDriver BiDi를 한 바이너리로 제공합니다. Linux·macOS·Windows에서 실행되고 Playwright는 CDP로 연결할 수 있습니다. 별도 ChromeDriver나 geckodriver 없이 AI agent의 웹 추출과 자동화 작업에 사용할 수 있습니다.
- 기본 동작은 DOM과 style 상태를 직접 읽어 layout과 paint를 건너뛰는 구조이며 시각 정보가 필요할 때만 `--layout`으로 계산합니다. geometry 요청은 최신 `FrozenLayoutTree`를 보존하고 screenshot·screencast는 새 layout과 frame을 만든 뒤 폐기합니다. 이 방식은 지속적인 시각 상태가 필요 없는 crawling·retrieval·evaluation workload의 자원 사용을 줄이는 데 초점을 둡니다.
- `moli fetch`는 HTML·Markdown·JSON·semantic text tree와 screenshot·PDF를 출력하고 selector·script·response wait와 network tracing을 지원합니다. `moli serve`는 CDP·WebDriver Classic·WebDriver BiDi endpoint를 제공하며 `--resource`로 image·font·audio·video 같은 선택 자원을 켤 수 있습니다. 기본값에서 고비용 시각 처리를 끄고 필요한 기능만 명시적으로 활성화하는 운영 모델입니다.
- README의 공개 비교에서 Moli는 192개 URL 중 유용한 페이지 103개와 53.6% 성공률을 기록했으며 median RSS는 73 MiB였습니다. Lexbench 비교에서는 1,308개 comparable task 기준 81.9%로 Chrome 99.8%보다 낮았지만 Kitesurf 62.1%·Lightpanda 53.3%·Obscura 44.9%보다 높았습니다. 반면 전체 1,928개 corpus 기준 수치가 아니며 Chrome 수준의 pixel parity·Canvas/WebGL·media playback은 목표 범위가 아닙니다.
벤치마크
| 벤치마크 | 지표 | 값 | 비교 |
|---|---|---|---|
| Mixed public-web crawl test | success rate | 53.6% | Moli의 192개 public URL 측정값이며 Chrome Headless 52.6%, Lightpanda 44.3%, Obscura 29.7%와 비교됐다. |
| Mixed public-web crawl test | useful pages | 103 | Moli의 유용한 페이지 수이며 Chrome Headless 101, Lightpanda 85, Obscura 57과 비교됐다. |
| Mixed public-web crawl test | median RSS | 73 MiB | Moli의 측정값이며 Chrome Headless 773 MiB, Lightpanda 40 MiB, Obscura 39 MiB와 비교됐다. |
| Sample agent workload | CDP ready | 34.85 ms | Moli의 측정값이며 Chromium 169.37 ms와 비교됐다. |
| Sample agent workload | Episode active p50 | 33.40 ms | Moli의 측정값이며 Chromium 57.13 ms와 비교됐다. |
| Sample agent workload | Peak PSS | 102.46 MiB | Moli의 측정값이며 Chromium 348.82 MiB와 비교됐다. |
| WPT tests | passed tests | 1.612 million | Moli의 현재 agent-browser scope 검증용 WPT full run 수치이며 다른 엔진과의 비교값은 README에 없다. |
| Lexbench-Headless-Browser | task success rate | 81.88% (1,071/1,308 tasks) | Moli 0.1.1의 1,308개 comparable task 측정값이며 Chrome 99.85%, Kitesurf 62.08%, Lightpanda 53.29%, Obscura 44.88%와 비교됐다. |
| Lexbench-Headless-Browser | median CPU time per task | 100.6 ms | 네 로컬 엔진이 모두 수행한 별도 557-task run의 Moli 측정값이며 Chrome 687 ms와 비교됐다. |
| Lexbench-Headless-Browser | median peak memory per task | 92 MiB | 네 로컬 엔진이 모두 수행한 별도 557-task run의 Moli 측정값이며 Chrome 697 MiB와 비교됐다. |
이미지 분석




853
Stars
53
Forks
+206
Trending
0
조회수
853 watchers20 open issuesApache License 2.0
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.