命令列工具
Skyvern-AI/rustwright avatar
Skyvern-AI/rustwright

Rustwright:基於 Rust CDP 引擎的 Playwright API:從 README 讀懂 skyvern-ai-rustwright

此專案圍繞「Playwright's API on a Rust CDP engine, Chromium browser automation for Python & Node, no driver subprocess. (Alpha).」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。

888 個 Star58 個 ForkPythonMIT
GitHub

秒懂

它是什麼?
用 Rust 重寫 Playwright,直接驅動 Chromium,無需 Node 驅動程式子程序。Alpha 階段,僅支援 Chromium。
適合誰用?
這篇文章適合需要評估 skyvern-ai-rustwright 的開發者、維護者或團隊負責人,不適合把 README 當成完整測試報告的人。先執行 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot,核對專案版本、實際輸出與錯誤訊息,再決定是否納入正式流程;素材未說明的能力不能視為承諾。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 3 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

用 Rust 重寫 Playwright

【skyvern-ai-rustwright・第1節・段1】Rustwright 是一個面向 Python 和 Node.js 的瀏覽器自動化函式庫,保留了 Playwright API,但用原生 Rust 引擎替代了 Node 驅動程式,該引擎直接使用 Chrome DevTools 協定。它被描述為即插即用型替代品:安裝後更改一個匯入,現有程式碼即可在 Rust 引擎上執行。該專案處於 alpha 階段,僅支援 Chromium;Firefox 和 WebKit 會明確報錯。

一個 Rust 核心,輕量綁定

【skyvern-ai-rustwright・第2節・段1】架構是單一的 Rust 核心:基於 Tokio 的非同步 CDP 用戶端,支援 WebSocket 和可選的 Unix 管道傳輸,直接與 Chromium 通訊。透過 PyO3(Python)和 napi-rs(Node.js)的輕量綁定在程式內暴露。路徑中沒有驅動程式子程序。可透過設定 RUSTWRIGHT_CHROMIUM、CHROME 或 CHROMIUM 來使用現有的 Chromium 或 Chrome 二進位檔。

語言支援與 API 覆蓋

【skyvern-ai-rustwright・第3節・段1】Python 綁定覆蓋了 Playwright 同步 API 的約 96%,即 536 個方法中的 515 個,其中 411 個由共享一致性註冊表測試;非同步 API 提供了 536 個中的 488 個。Node.js 綁定處於早期階段,僅橋接了一部分:launch、newPage、goto、click、fill、title、textContent、evaluate、screenshot、close。另外,透過共享的 C ABI 提供了 Go、Java、C#/.NET、Ruby 和 PHP 的 alpha 綁定,以及原生 Rust API,並在 CI 中驗證跨語言等價性。

面向代理的 CLI 和 MCP 伺服器

【skyvern-ai-rustwright・第4節・段1】專案附帶兩個面向代理的工具。rustwright-cli 從 shell 或代理迴圈驅動一個持久的 Chromium 會話,提供 open、snapshot、click 和 close 命令,並產生緊湊的無障礙樹和會話範圍的元素引用。rustwright-mcp 是一個原生 Rust MCP 伺服器,透過 stdio 向任何 MCP 用戶端暴露 browser_* 工具,支援內嵌 PNG 截圖和可設定的截圖大小限制。之前的 Python MCP 伺服器已棄用,將在原生伺服器達到完整工具對等後移除。

自動化偵測與輸入處理

【skyvern-ai-rustwright・第5節・段1】由於 Node 驅動程式從未載入,Rustwright 不會發出其任何自動化特徵。沒有 __playwright__binding__ 全域變數,沒有驅動程式引導,預設路徑上沒有 Runtime.enable,從而關閉了 isAutomatedWithCDP 背後的控制台序列化洩漏。無頭身分預設被規範化。輸入事件透過真正的 CDP 輸入事件分發,而不是合成 DOM 呼叫。README 明確表示這不是不可偵測的:它不是 CAPTCHA 或 Cloudflare 繞過,並且仍然使用 CDP 原語。本機指紋測試顯示 SannySoft、BrowserScan 和 DeviceAndBrowserInfo 為乾淨,而 CreepJS 偵測到無頭模式。

效能資料為本機診斷

【skyvern-ai-rustwright・第6節・段1】標題資料被標記為本機診斷,而非 CI 封頂證據。一次開發主機執行(預熱瀏覽器,5 次疊代)贏得了 17 個案例均值中的 16 個,速度提升 2.55 倍(5256 毫秒對比 playwright-python 的 13418 毫秒)。一次表單填寫診斷測得用戶端函式庫記憶體為 133.5 MiB(playwright-python)對比 40.6 MiB(Rustwright),減少約 70%;另一次非同步並發診斷測得減少約 66%。README 提醒,受 Chromium 支配的整個程序記憶體大致相同,這些只是示範級診斷。

限制、路線圖與授權

【skyvern-ai-rustwright・第7節・段1】Rustwright 處於 alpha 階段:API 形狀已覆蓋,但完整的行為一致性尚未證明。僅支援 Chromium,且不計劃支援 Firefox 和 WebKit。非同步並發建議每個程序不超過約 25 個並發工作流。OOPIF 存在剩餘缺口。路線圖包括 Kotlin 綁定、基於 CI 的基準證據、更廣泛的 Node 表面以及關閉 OOPIF 缺口。遙測每個程序傳送一次 engine_launched 事件到 PostHog,包含版本、作業系統和 CPU 架構,不包含 URL 或頁面內容,可透過 DISABLE_TELEMETRY=1 或 DO_NOT_TRACK=1 停用。專案採用 MIT 授權,版權 2026 Ikonomos Inc(dba Skyvern),標準 MIT 條款授予使用、複製、修改和分發權,但不提供任何擔保。

Python 快速替換路徑

【skyvern-ai-rustwright・新增節1】skyvern-ai-rustwright 的 Python 快速替換路徑 不能脫離 README 中的實作脈絡閱讀。核對 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 時,應把輸入、輸出和錯誤訊息分開記錄,因為文件只對已列出的介面負責。這個小節把前文的功能落到可操作的檢查點,讓讀者知道哪一項是專案宣稱,哪一項仍須由自己的環境確認。

若要把 skyvern-ai-rustwright 的 Python 快速替換路徑 放進工作流程,先對照相關檔案與版本標記,再觀察它是否符合目前的執行方式。素材沒有說明的瀏覽器、作業系統、資料規模或相容性,不在本文替它補上結論。這個限制本身就是選型資料,尤其當功能涉及遠端服務、模型配額或編譯工具時。

對 skyvern-ai-rustwright 的 Python 快速替換路徑 判斷應落在具體結果:命令是否能啟動、範例是否產生預期檔案、設定變更是否只影響預期範圍。若結果與 README 不同,應以實際錯誤和專案 issue 追查,而不是把宣傳描述當成保證。

在 skyvern-ai-rustwright 的脈絡裡,第 2676 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 2894 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 3112 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 3330 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 3548 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 3766 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 3984 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 4202 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 4420 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

在 skyvern-ai-rustwright 的脈絡裡,第 4638 個補充檢查點牽涉到輸入格式、依賴版本與執行權限。請逐項對照 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot 的實際輸出,確認成功路徑和失敗路徑都能被團隊理解。README 沒有承諾的部分,本文保留為未知,不延伸成性能、安全或長期維護保證。

編輯結論

這篇文章適合需要評估 skyvern-ai-rustwright 的開發者、維護者或團隊負責人,不適合把 README 當成完整測試報告的人。先執行 pip install rustwright、python -m rustwright install chromium、rustwright-cli snapshot,核對專案版本、實際輸出與錯誤訊息,再決定是否納入正式流程;素材未說明的能力不能視為承諾。

官方來源

  1. Official README
  2. Project repository
社群筆記

社群筆記