模型 / 資料集
Player-YN/PawWork_ZhuaZhua avatar
Player-YN/PawWork_ZhuaZhua

爪爪 PawWork:把已登入的 Chrome 當成可程式化機器,選取後直接產出 Office 檔案

Paw Work - selection-first web agent for Chrome: select on the live page, describe the outcome, take away an editable office file. BYOK, sandboxed, no server.

2,596 個 Star10 個 ForkJavaScriptMIT
GitHub

秒懂

它是什麼?
PawWork_ZhuaZhua 是一個 Chrome MV3 的 unpacked 擴充,用側邊面板驅動代理操作當前分頁,並把結果留在 Univer 表格與文件中。它的定位不是選取小工具,而是 BYOK、無伺服器的工作流代理,代價是你得自己載入資料夾、自己管金鑰。
適合誰用?
如果你需要的是在已登入狀態下操作當前分頁、把抓到的資料直接落成 Univer 表格或文件,而且能接受自行 load unpacked、自行提供 BYOK 金鑰,PawWork 值得載入試一個任務。若你需要 Chrome Web Store 安裝、託管模型、或現成腳本商店,這個專案明確不提供,請不要繞路。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 6 天前。
用什麼語言寫的?
主要是 JavaScript(依據 GitHub 的語言統計)。

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

開源專案深度解析

選取之後要留下什麼:爪爪瞄準的缺口

多數瀏覽器代理停在「回答你」這一步。你看完一段文字、一張表格、一個後台列表,然後自己複製貼上到 Excel 或簡報。PawWork 把終點往後推:README 的標題句是「Treat the already-logged-in Chrome as a programmable computer」,而交付物是「an editable office file」。選取是第一動作,產出檔案是最後動作,中間由代理操作當前分頁完成。

目標讀者是已經有 LLM API 金鑰、願意載入 unpacked 擴充的工程師或重度網頁工作者。README 寫得很直白:不是 selection widget、不是 Chrome Web Store app。它假設你熟悉 chrome://extensions 的開發者模式,也接受 BYOK 這件事。

它鎖定的情境有一個共同特徵:頁面需要登入才看得到內容。README 的 use cases 列出「Scrape a logged-in view」、「Download with page identity」,兩者都靠 sys.fetch 以頁面身分發出請求。這正是純後端爬蟲做不到、而使用者腳本做得到的那塊地。

側邊面板到 offscreen:四層的資料流

README 給的架構鏈是 side panel → service worker → offscreen SessionWorkspaceService → AI SDK 的 ToolLoopAgent。側邊面板只是介面,真正持有工作階段狀態的是 offscreen 文件中的 SessionWorkspaceService,代理迴圈則交給 AI SDK 的 ToolLoopAgent 驅動。

工具面分成幾組。action 針對當前分頁:先 snapshot 取得畫面狀態,再用那一代的 ref 加上 rev 做變更。這裡的 ref 與 rev 是綁定世代的,snapshot 之後頁面若變動,舊 ref 就不該再拿來用,這是設計上避免誤操作已消失元素的機制。run 是沙箱 JavaScript 的入口,客體端提供 sys 物件,涵蓋 tabs、eval、fetch、cdp、download、screenshot。sheet 與 doc 分別對應 Univer 表格與 Univer 文件,web 則以 data-paw-kind=site 標記站點畫布。另有 inspect、acquire、clarify 三個讀取與暫停用的工具。

有一點 README 特別強調:sys 不是模型工具。也就是說,模型不能直接呼叫 sys.fetch,必須透過 run 裡面的客體程式碼去用。這個分層讓模型只能寫程式,不能任意直接碰瀏覽器 API,是權限收斂的做法。登入、cookie、captcha 這些情境,README 指向的解法是 run 內的 sys.fetch({ as: "page" }),用頁面自身身分發請求。

載入與 BYOK:實際要下的指令與鍵名

安裝路徑只有一條,且沒有商店版本。README 的步驟是:從 release 下載 zip,或 clone 後使用 extension/ 資料夾;開啟 chrome://extensions,打開 Developer mode,按 Load unpacked,指向那個資料夾,manifest.json 必須在資料夾根目錄;接著打開側邊面板,貼上 BYOK 金鑰,金鑰的設定鍵是 pagewand_providers,然後在一般的 http(s) 頁面上送出任務。

載入後你應該會看到名為「爪爪 · 完全解放版」的側邊面板代理。README 說明,若你改動了載入資料夾內的檔案,要在擴充卡片上按「重新載入」,並補一句「No daily npm」,意思是這個專案沒有需要天天跑的建置流程。

開發者測試方面,README 在 Next 段落給了一行指令:node --test tests/runtime-regression.test.mjs。這是唯一出現在 README 裡的測試入口,其他測試結構在提供的材料中看不到。

打包好的 playbook 只有一個:page-restyle。README 明說「There is no userscript store」,所以不要預期有現成套件可挑。

CDP_BUSY、NEED_PAGE 與版本門檻:會擋下第一個任務的條件

限制寫得很具體,而且直接決定你第一次送任務會不會成功。Chrome 需要 135 以上。若你要用 sys.eval 或頁面 fetch,Chrome 138 以上還要在擴充詳細資料裡開啟 Allow User Scripts。目標分頁若開著 F12,CDP 會忙碌並回傳 CDP_BUSY,README 的建議是關掉再試。chrome:// 與 Chrome Web Store 這類受限頁面會回傳 NEED_PAGE。

這幾個錯誤碼的意義不只是錯誤訊息,它們標出了這個代理的邊界:它只能在普通 http(s) 頁面上工作,而且同一時間只能佔用一個分頁的 CDP 通道。批次處理多個分頁時,這個序列化特性會限制吞吐。

README 的 Limits 表格自己把期待落差列出來:想要 CWS 安裝,沒有;想要託管模型,沒有,只有 BYOK;想要 Tampermonkey 那樣的腳本目錄,沒有,只有 page-restyle 一個 skill。這張表其實就是這個專案對自己的定位聲明。

什麼時候不該用:需要穩定重複與無人看管的場合

PawWork 的執行單元是「你選取、你描述、它產出」。這個模式不適合無人看管的重複排程。README 沒有任何排程、佇列或背景常駐任務的描述,release 也只到 v1.0.0-unpacked 這個階段,最近的釋出標籤是 unpacked-f2a02f0 與 unpacked-af56da4 這類以 commit 為名的建置。

另一個要留意的是 BYOK 帶來的成本與資料流向。金鑰存在擴充設定裡,請求由你指定的供應商處理,README 明確寫「No server」,這在資料主權上是優點,但同時表示沒有任何中間層幫你過濾或快取,token 用量完全取決於模型在 ToolLoopAgent 迴圈裡跑了幾輪。

如果你的任務是每天固定抓同一批頁面、格式完全一致,用 Tampermonkey 寫一支固定腳本會更便宜也更可預期。PawWork 的價值在於任務描述會變、頁面結構會變、而你又不想每次都重寫選擇器。

與 Tampermonkey 的實際差異:範圍相同,觸發方式不同

README 自己下了對照:「Anything a Tampermonkey userscript could do is in scope. There is no userscript store.」這句話把兩者的關係講清楚了:能力範圍重疊,差別在於誰來決定要做什麼。

Tampermonkey 的模式是你先寫好腳本,綁定網址,之後每次進站自動執行。行為在部署前就固定了,除錯靠 console。PawWork 的模式是你在當下用自然語言描述結果,代理在 ToolLoopAgent 迴圈中決定要 snapshot、要 run 哪段客體程式、要不要開 sheet。行為在執行時才成形。

代價是確定性。固定腳本每次跑一樣的邏輯,PawWork 每次可能選不同工具路徑。反過來說,當頁面改版、DOM 結構換掉,固定腳本的選擇器會壞掉需要人工修,而 PawWork 的 action 是靠當下的 snapshot 與該世代 ref 定位,README 描述的就是這個「先快照再操作」的流程。

如果你要的是可版控、可審查、行為固定的自動化,Tampermonkey 或直接寫 Puppeteer 腳本仍然更合適。PawWork 補的是探索性與一次性任務那一段。

維護成本與 MIT 授權的實際含義

這是一個 unpacked 擴充,所以更新不是自動的。README 要求你在改動載入資料夾後手動按「重新載入」,換版本也得重新下載 release 或 pull 後重載。沒有商店的更新通道,也就沒有自動回滾。

相依面上,README 提到 AI SDK 的 ToolLoopAgent,並說「No daily npm」,意思是日常使用不需要跑建置。但這也代表若上游 AI SDK 有破壞性變更,你得自己重新載入新版本來吸收。提供的材料沒有說明相依鎖定策略或版本範圍。

授權是 MIT,LICENSE 檔案在倉庫根目錄。實務上 MIT 允許你修改與再散布,但這個專案是 BYOK 且無伺服器,散布時要留意你的金鑰處理方式,不要把 pagewand_providers 的值連同打包的擴充一起交出去。以上是對授權條文的一般性描述,不構成法律意見,實際條款仍以 LICENSE 原文為準。

維護節奏方面,材料只顯示 2026 年 9 月有數個 unpacked 標籤的釋出,以及 v1.0.0-unpacked。沒有長期支援分支或版本政策的說明,採用前應把這一點列入評估。

編輯結論

如果你需要的是在已登入狀態下操作當前分頁、把抓到的資料直接落成 Univer 表格或文件,而且能接受自行 load unpacked、自行提供 BYOK 金鑰,PawWork 值得載入試一個任務。若你需要 Chrome Web Store 安裝、託管模型、或現成腳本商店,這個專案明確不提供,請不要繞路。動手前先確認三件事:Chrome 版本是否達 135(要 sys.eval 或頁面 fetch 則看 138 並開啟 Allow User Scripts)、目標分頁是否為 chrome:// 或 Web Store 這類會回傳 NEED_PAGE 的頁面、以及目標分頁的 F12 是否已關閉以免 CDP_BUSY。

官方來源

  1. Issues
  2. License: MIT
  3. Player-YN/PawWork_ZhuaZhua on GitHub
  4. README
  5. Releases
社群筆記

社群筆記