14 điểm bởi GN⁺ 2025-12-25 | 1 bình luận | Chia sẻ qua WhatsApp
  • Dự án mã nguồn mở tự động hóa trình duyệt do Jason Huggins, người đã phát triển Selenium cách đây 21 năm, xây dựng lại với AI agent trong tâm trí
  • Vibiumhạ tầng tự động hóa trình duyệt cho AI agent, quản lý vòng đời trình duyệt và giao thức WebDriver BiDi bằng một binary duy nhất, đồng thời cung cấp máy chủ MCP
  • Clicker, binary Go đơn khoảng 10MB, tự động phát hiện và khởi chạy Chrome, cho phép mô hình AI hoặc client JS điều khiển trình duyệt thông qua proxy BiDi và máy chủ MCP
  • Client JS/TS hỗ trợ cả API đồng bộ và bất đồng bộ, có thể cài bằng npm install vibium và dùng ngay lập tức
  • Các agent LLM như Claude Code có thể thêm khả năng điều khiển trình duyệt chỉ với một lệnh claude mcp add vibium
  • Phù hợp cho cả tự động hóa AI lẫn tự động hóa kiểm thử, cung cấp môi trường điều khiển trình duyệt không cần cấu hình

Tổng quan về Vibium

  • Vibiumhạ tầng tự động hóa trình duyệt dành cho AI agent và người dùng
    • Tích hợp quản lý trình duyệt, proxy WebDriver BiDi và chức năng máy chủ MCP trong một binary Go duy nhất
    • Tương thích với nhiều mô hình LLM như Claude Code, Codex, Gemini
  • Cấu trúc hoạt động ngay không cần quy trình cài đặt, có thể dùng trong môi trường AI agent hoặc tự động hóa kiểm thử

Thành phần

  • Clicker: binary Go khoảng 10MB, thực hiện các chức năng sau
    • Tự động phát hiện Chrome và chạy ở chế độ BiDi
    • Chuyển tiếp lệnh bằng máy chủ proxy BiDi dựa trên WebSocket
    • Giao tiếp với agent LLM thông qua máy chủ MCP
    • Tính năng Auto-Wait để chờ phần tử trước khi tương tác
    • Cung cấp tính năng chụp ảnh màn hình
  • Client JS/TS: được cung cấp dưới dạng gói npm, hỗ trợ cả API đồng bộ (browserSync) và bất đồng bộ (browser)
    • Điều khiển trình duyệt bằng các lệnh đơn giản như vibe.go(), vibe.find(), vibe.click(), vibe.quit()
    • Bao gồm các tính năng tự động hóa cơ bản như lưu ảnh chụp màn hình, tìm phần tử, nhấp chuột

Tích hợp AI agent

  • Lệnh thêm khả năng điều khiển trình duyệt vào Claude Code:
    claude mcp add vibium -- npx -y vibium  
    
    • Chrome sẽ được tự động tải xuống nên không cần cấu hình riêng
  • Danh sách lệnh được cung cấp
    • browser_launch: khởi chạy trình duyệt
    • browser_navigate: chuyển tới URL
    • browser_find: tìm phần tử bằng CSS selector
    • browser_click: nhấp vào phần tử
    • browser_type: nhập văn bản
    • browser_screenshot: chụp viewport
    • browser_quit: thoát trình duyệt

Cài đặt cho người dùng

  • Tự động cài đặt bằng lệnh npm install vibium
    • Tải binary Clicker, Chrome for Testing và chromedriver theo từng nền tảng vào bộ nhớ đệm
    • Linux: ~/.cache/vibium/, macOS: ~/Library/Caches/vibium/, Windows: %LOCALAPPDATA%\vibium\
  • Có thể bỏ qua tải trình duyệt bằng biến môi trường VIBIUM_SKIP_BROWSER_DOWNLOAD=1

Hỗ trợ nền tảng

  • Hỗ trợ Linux x64, macOS (Intel/Apple Silicon), Windows x64

Bắt đầu nhanh

  • Ví dụ sử dụng thư viện
    import { browser } from "vibium";  
    const vibe = await browser.launch();  
    await vibe.go("https://example.com");  
    const el = await vibe.find("a");  
    await el.click();  
    await vibe.quit();  
    
  • Ví dụ tích hợp Claude Code
    • Sau khi cài đặt, có thể điều khiển trình duyệt bằng lệnh như “Go to example.com and click the first link”

Lộ trình

  • V1: tập trung vào điều khiển trình duyệt thông qua MCP và client JS
  • Kế hoạch V2
    • Client Python và Java
    • Cortex (lớp bộ nhớ và điều hướng)
    • Retina (tính năng mở rộng ghi hình)
    • Ghi video, tính năng tìm phần tử dựa trên AI

1 bình luận

 
GN⁺ 2025-12-25
Ý kiến trên Hacker News
  • Selenium đã mang lại thay đổi lớn cho sự nghiệp của tôi. Thật lòng rất biết ơn
    Dạo này tôi dùng Playwright, nhưng khá tò mò về cách tiếp cận mới của Vibium

    • Playwright đã đạt bước tiến lớn nhờ điều khiển trình duyệt tốc độ cao dựa trên WebSockets+JSON. Vibium đang sử dụng tiêu chuẩn W3C WebDriver BiDi tương ứng. Mục tiêu là mang đến trải nghiệm phát triển tuyệt vời kiểu Playwright, nơi “chỉ vài cú nhấp là xong”
    • Nếu bạn đã dùng Playwright, tôi khuyên nên thử Stagehand. API khá tương tự, nhưng được thiết kế cho tự động hóa chứ không phải kiểm thử
  • Tôi muốn biết Vibium có hỗ trợ tiêm JS, chỉnh sửa DOM, theo dõi và thay đổi các request mạng hay không. Khi dùng Playwright tôi gần như luôn dùng các tính năng này

    • Hiện chưa hỗ trợ, nhưng đã có trong roadmap. Mục tiêu là tiếp thu những điểm mạnh của Playwright rồi mở rộng hơn nữa
    • Cá nhân tôi chỉ cần có theo dõi request mạng là cũng đủ rồi. Ứng dụng Flutter + Amazon AppSync quá khó debug
  • Khá thú vị. Gần đây tôi dùng dev-browser và thấy tiết kiệm context, tăng tốc độ. Tôi cũng sẽ thử Vibium

    • Vibium cũng có kế hoạch hỗ trợ kiểu khả năng mở rộng dựa trên skill như vậy
  • Với tư cách là người đã kiếm sống bằng tự động hóa UI hơn 10 năm, tôi biết ơn Selenium. Giờ Playwright gần như là tiêu chuẩn thực tế, nhưng Selenium mới là driver trình duyệt nguyên bản. Tôi tò mò Vibium khác Playwright ở điểm nào

    • Về mặt “tốc độ”, Playwright đang đi trước, nhưng Selenium vẫn có hệ sinh thái bám rễ rất sâu trên toàn cầu. Vibium dự định tạo ra cây cầu để người dùng Selenium có thể tự nhiên chuyển sang agent coding thế hệ tương lai
  • Tôi là người từng giúp mở rộng phần kiểm thử của Atlassian bằng Selenium. Hình như chúng ta đã nói chuyện đâu đó 13~15 năm trước. Rất vui khi thấy bạn vẫn còn hoạt động trong lĩnh vực này

  • Tôi tò mò nếu chuyển các script Selenium cũ sang Vibium thì có tận dụng được tính năng tự phục hồi (self-heal) khi test fail hay không

    • Nói ví von thì hiện tại tôi đang xây một resort trên đảo. Cây cầu (đường di trú) sẽ làm sau. Trước hết nếu resort đủ hấp dẫn thì sẽ có lý do để bắc cầu. Hiện giờ tôi tập trung xây resort, nhưng cũng rất muốn làm cây cầu đó
  • Tôi muốn biết agent sau khi chụp màn hình bằng browser_screenshot thì sẽ tìm CSS selector để click như thế nào. Chỉ từ screenshot thì khó biết loại phần tử là gì

    • Hiện tại máy chủ MCP còn thiếu khả năng khám phá tự chủ hoàn chỉnh. Trong fork của tôi, tôi đã thêm công cụ browser_evaluate để lấy cây accessibility bằng JS và cho phép điều hướng dựa trên đó. Xem thêm trong roadmap V2
  • Để cho các công cụ như Claude tự do dùng tự động hóa trình duyệt, cần có tính năng khóa trình duyệt chỉ cho phép một số URL nhất định. Tôi muốn biết tính năng này có trong roadmap không

    • Nếu dùng Claude Code thì có thể kiểm soát đơn giản bằng hook browser_navigate. Một script whitelist chỉ mất 5 phút để thiết lập. Các chính sách phức tạp hơn có thể triển khai bằng cupcake và Rego. Tham khảo: tài liệu Claude Code Hooks
    • Tôi hiểu rất rõ rủi ro “blast radius” của Claude. Bản thân tôi cũng phát triển Vibium trong UTM VM. Tôi cũng đang cân nhắc thêm quy tắc mạng. Tôi đã đăng roadmap V2 rồi, có lẽ cũng nên chuẩn bị bản nháp V3
    • Cách chắc ăn nhất là chạy trong container có firewall và chỉ cho phép một whitelist ngắn
  • Tôi cũng từng định làm thứ gì đó giống Skyvern, nhưng tôi tò mò vì sao lại không mở rộng Selenium mà lại tạo Vibium mới

    • Tôi đã giải thích một phần trong bài công bố Vibium v1. Selenium hay Playwright không được thiết kế xoay quanh AI. Vibium thì ngay từ đầu đã được thiết kế với kiến trúc tối ưu cho “vibe coding” dựa trên AI
  • Tôi muốn biết họ xử lý vấn đề phình context (context bloat) giữa trình duyệt và LLM như thế nào. Cũng hỏi liệu họ có định cho lộ file tracing như Playwright hoặc cho phép thực thi JS không

    • Việc phơi bày trình duyệt sẽ được mở rộng dần. Vấn đề phình context thì hiện vẫn chưa có nơi nào giải quyết hoàn hảo. Về dài hạn, câu trả lời có thể là “đi theo hướng không dùng MCP”. Hiện Vibium cung cấp cả máy chủ MCP và API JS/TS. Với API JS/TS thì có thể chạy JS tùy ý. Một cách lách để giảm tải context có thể là để agent viết rồi chạy script Vibium