Tóm tắt nhanh
- PinchTab là một HTTP server độc lập viết bằng Go (12MB, không phụ thuộc ngoài), cho phép AI agent điều khiển Chrome thông qua CLI hoặc HTTP API – không cần Node.js, không cần driver phức tạp.
- Hiệu quả token vượt trội: chỉ khoảng 800 tokens mỗi trang nhờ đọc Accessibility Tree thay vì HTML thô, tiết kiệm 5 đến 13 lần so với cách chụp ảnh màn hình hoặc parse DOM trực tiếp.
- Hỗ trợ multi-instance với profile cô lập – có thể chạy hàng chục phiên Chrome song song, mỗi phiên một tài khoản riêng, phù hợp cho các agent workflow quy mô doanh nghiệp.
- Stealth mode tích hợp sẵn: che navigator.webdriver, giả mạo Canvas và WebGL fingerprint, mô phỏng chuyển động chuột theo đường cong Bezier và gõ phím có độ trễ ngẫu nhiên.
- Hỗ trợ MCP (Model Context Protocol) qua plugin SMCP với 15 công cụ sẵn có, tối ưu cho tích hợp với các AI framework hiện đại.
- Cài đặt trong một lệnh duy nhất, chạy được trên macOS, Linux, Docker và Raspberry Pi (ARM64).
Selenium và Playwright được xây dựng cho QA tester con người. Chúng không được thiết kế để xử lý hàng trăm yêu cầu mỗi giây từ một AI agent đang cố gắng đọc hiểu nội dung trang web với chi phí token tối thiểu. Khi bạn gửi HTML thô của một trang thương mại điện tử cho một LLM, kết quả thường là 10.000 token trở lên – chưa kể các lớp wrapper Node.js nặng nề và thời gian khởi động tính bằng giây.
PinchTab xuất hiện để giải quyết đúng vấn đề đó: một server điều khiển trình duyệt được xây dựng từ đầu cho agentic workflow, nơi tốc độ, chi phí token và khả năng chống phát hiện là những ưu tiên hàng đầu, không phải tính năng thêm vào sau.

PinchTab là gì?
PinchTab là một standalone HTTP server viết bằng Go, đóng vai trò là bridge giữa AI agent và trình duyệt Chrome. Thay vì làm việc với DOM phức tạp, PinchTab đọc Accessibility Tree – cùng lớp dữ liệu mà screen reader sử dụng – và trả về cấu trúc phân cấp gọn nhẹ của trang với các tham chiếu phần tử ổn định như e0, e1, e5.
Kiến trúc này có ba hệ quả quan trọng:
- AI agent chỉ nhận đúng thông tin cần thiết để tương tác, không phải toàn bộ HTML nhiễu loạn.
- Các tham chiếu phần tử không thay đổi theo CSS hay cấu trúc DOM, loại bỏ vấn đề “flaky selector” phổ biến trong tự động hóa truyền thống.
- Lượng token gửi đến LLM giảm từ 10.000 xuống còn khoảng 800 mỗi trang.
PinchTab được phát hành theo giấy phép MIT, mã nguồn mở hoàn toàn tại github.com/pinchtab/pinchtab.
Cài đặt PinchTab
PinchTab hỗ trợ bốn phương thức cài đặt, tất cả đều nhanh và không yêu cầu cấu hình phức tạp.
macOS và Linux (khuyến nghị)
curl -fsSL https://pinchtab.com/install.sh | bashScript tự động phát hiện kiến trúc (x86_64 hoặc ARM64) và tải binary phù hợp.
npm
npm install -g pinchtabPhù hợp nếu bạn đã có môi trường Node.js và muốn quản lý qua package manager quen thuộc.
Docker
docker run -d -p 9867:9867 pinchtab/pinchtabLý tưởng cho môi trường server, CI/CD pipeline hoặc khi bạn muốn cô lập hoàn toàn. Cổng 9867 là cổng mặc định cho cả dashboard và API.
Build từ source
git clone https://github.com/pinchtab/pinchtab.git
cd pinchtab
./doctor.sh # Kiểm tra môi trường và cài dependencies
go build ./cmd/pinchtabYêu cầu Go đã được cài đặt. Script doctor.sh sẽ xác minh tất cả điều kiện cần thiết trước khi build.
Kiến trúc cốt lõi cần hiểu trước khi dùng
PinchTab tổ chức mọi thứ xung quanh bốn thực thể, hiểu rõ bốn thực thể này sẽ giúp bạn thiết kế workflow chính xác hơn:
| Thực thể | Mô tả | Định danh |
|---|---|---|
| Orchestrator | HTTP server chính, quản lý toàn bộ | Port 9867 |
| Instance | Một tiến trình Chrome đang chạy | inst_XXXXXXXX |
| Profile | Trạng thái trình duyệt (cookie, localStorage) | prof_XXXXXXXX |
| Tab | Một trang web trong một instance | tab_XXXXXXXX |
Quan hệ giữa các thực thể tuân theo quy tắc nghiêm ngặt: một instance chứa đúng một Chrome process và tối đa một profile, nhưng có thể có nhiều tab. Các instance hoàn toàn cô lập với nhau – không chia sẻ cookie, không rò rỉ session.
Instance được khởi tạo lazy: Chrome chỉ thực sự chạy khi có request đầu tiên gửi đến, không phải ngay lúc tạo instance. Điều này giúp tiết kiệm tài nguyên khi quản lý nhiều instance cùng lúc.
Hướng dẫn sử dụng cơ bản
Điều khiển bằng CLI
Khởi động server trước:
pinchtabSau đó mở terminal thứ hai và bắt đầu điều khiển:
# Điều hướng đến một trang
pinchtab nav https://example.com
# Lấy cấu trúc trang (chỉ các phần tử tương tác)
pinchtab snap -i -c
# Click vào phần tử có ref e5
pinchtab click e5
# Điền dữ liệu vào ô input có ref e3
pinchtab fill e3 "[email protected]"
# Nhấn phím Enter trên phần tử e7
pinchtab press e7 Enter
# Trích xuất toàn bộ văn bản trang (token-efficient)
pinchtab textLệnh snap trả về danh sách phần tử với ref ổn định. AI agent sử dụng các ref này để thực hiện hành động tiếp theo mà không cần quan tâm đến CSS selector hay XPath.
Điều khiển bằng HTTP API
Với HTTP API, bất kỳ ngôn ngữ lập trình nào cũng có thể tích hợp PinchTab:
# Tạo một instance mới với profile "work"
TAB=$(curl -s -X POST http://localhost:9867/instances \
-d '{"profile":"work"}' | jq -r '.id')
# Lấy snapshot chỉ các phần tử tương tác
curl "http://localhost:9867/instances/$TAB/snapshot?filter=interactive"
# Click vào phần tử e5
curl -X POST "http://localhost:9867/instances/$TAB/action" \
-d '{"kind":"click","ref":"e5"}'Từ Python, ví dụ đơn giản nhất:
import requests
res = requests.post("http://localhost:9867/instances",
json={"profile": "work"})
tab_id = res.json()["id"]
requests.post(f"http://localhost:9867/instances/{tab_id}/navigate",
json={"url": "https://example.com"})Multi-instance và quản lý profile
Đây là tính năng phân biệt rõ nhất PinchTab với các công cụ QA truyền thống. Bạn có thể chạy nhiều Chrome process song song, mỗi process mang một profile riêng biệt:
# Tạo hai instance với profile khác nhau
pinchtab instances create --profile=alice --port=9868
pinchtab instances create --profile=bob --port=9869
# Mỗi instance hoàn toàn độc lập
curl http://localhost:9868/text?tabId=X # Instance của alice
curl http://localhost:9869/text?tabId=Y # Instance của bobProfile lưu trữ toàn bộ trạng thái trình duyệt bao gồm cookie, localStorage, lịch sử và extension. Điều này có nghĩa là bạn chỉ cần đăng nhập một lần, và profile đó sẽ duy trì trạng thái đăng nhập qua tất cả các lần khởi động lại sau.
Với tab locking qua endpoint /tab/lock, nhiều agent có thể cùng làm việc trên một hệ thống mà không tranh giành quyền kiểm soát tab – tính năng quan trọng trong kiến trúc multi-agent.
Stealth mode và human-like actions
PinchTab tích hợp sẵn khả năng vượt qua các hệ thống chống bot như Cloudflare và DataDome thông qua biến môi trường BRIDGE_STEALTH.
Ở chế độ Full, PinchTab thực hiện:
- Che dấu thuộc tính
navigator.webdriver– dấu hiệu rõ nhất cho thấy trình duyệt đang bị điều khiển tự động. - Giả mạo Canvas fingerprint và WebGL fingerprint để mỗi phiên trình duyệt có “danh tính” phần cứng khác nhau.
humanClick: mô phỏng chuyển động chuột theo đường cong Bezier thay vì nhảy thẳng đến tọa độ.humanType: thêm độ trễ ngẫu nhiên (jitter) giữa các lần nhấn phím, giống như người gõ thực.
Kết hợp với việc sử dụng profile có lịch sử duyệt web thực, PinchTab tạo ra một dấu vết trình duyệt khó phân biệt với người dùng thông thường.
Tích hợp với AI agent qua MCP
PinchTab hỗ trợ Model Context Protocol (MCP) thông qua plugin SMCP có sẵn trong repository. Plugin này cung cấp 15 công cụ sẵn dùng bao gồm pinchtab__navigate, pinchtab__snapshot, pinchtab__action và nhiều công cụ khác.
Không cần runtime dependency ngoài thư viện chuẩn. Sau khi cấu hình các biến môi trường cần thiết, AI framework tương thích MCP có thể gọi trực tiếp các công cụ này trong vòng lặp tác vụ của mình.
Xem chi tiết tại plugins/README.md trong repository chính.
So sánh PinchTab với Playwright và Selenium
| Tiêu chí | PinchTab | Playwright | Selenium 4 |
|---|---|---|---|
| Token mỗi trang | ~800 | 4.500 – 12.000 | 10.000+ |
| Kích thước binary | 12MB (Go) | ~250MB (Node + drivers) | Nặng (JVM + drivers) |
| Stealth tích hợp | Có, native | Yêu cầu plugin ngoài | Dễ bị phát hiện |
| Thời gian khởi động | Dưới 100ms | ~1,2 giây | ~2,5 giây |
| Multi-instance | Có, cô lập hoàn toàn | Hạn chế | Không |
| Profile persistent | Có | Hạn chế | Không |
| Ngôn ngữ target | Bất kỳ (HTTP API) | JavaScript/TypeScript | Java, Python, C# |
| Phụ thuộc ngoài | Không | Node.js | JVM + WebDriver |
| ARM64 / Raspberry Pi | Tối ưu hóa sẵn | Hỗ trợ | Hạn chế |
| MCP integration | Có (15 tools) | Không | Không |
Playwright và Selenium được thiết kế để giải quyết vấn đề của QA engineer: kiểm thử đa trình duyệt, viết test case có thể tái sử dụng, tích hợp vào CI pipeline. PinchTab không cạnh tranh trực tiếp trên sân này – nó giải quyết vấn đề hoàn toàn khác: làm thế nào để AI agent tương tác với web nhanh nhất, rẻ nhất và ít bị phát hiện nhất có thể.
PinchTab đặt ra một cách tiếp cận khác với tự động hóa trình duyệt: thay vì bổ sung tính năng AI vào một công cụ QA cũ, nó xây dựng lại từ đầu với AI agent là đối tượng sử dụng chính. Binary 12MB không phụ thuộc, API HTTP phổ quát, Accessibility Tree thay cho DOM thô, và stealth mode tích hợp sẵn – đây là những lựa chọn kiến trúc có chủ đích, không phải tính năng thêm vào sau.
Nếu bạn đang xây dựng AI agent cần tương tác với web, hoặc đang tìm cách giảm chi phí token trong pipeline hiện tại, PinchTab là điểm khởi đầu xứng đáng để khảo sát.








