penink-pilot
v1.0.0 MIT AI Agent

penink-pilot

一款開源的 AI Agent 瀏覽器駕駛工具,透過 MCP 協定讓 AI 直接操控本機 Chrome。支援真實滑鼠事件、結構化頁面快照及多分頁操作,無需 API 金鑰,確保隱私與登入狀態永續。

wh-penink.pages.dev/projects/penink-pilot/
下載完整原始碼(ZIP)
MCP ServerBrowser AutomationChrome DevToolsOpen Source

作 品 介 紹

名 稱 : penink-pilot ・ 讓 AI「駕駛」瀏覽器的瀏覽器

類 型 : AI Agent 工具・MCP Server(100% 免費・開源,MIT 授權)

官 網 : https://wh-penink.pages.dev/projects/penink-pilot/

技 術 : Python / Chrome DevTools Protocol (CDP) / MCP

平 台 : macOS・Windows・Linux(需本機 Chrome)

一、這是什麼

penink-pilot 是一套「瀏覽器駕駛員」:只要安裝在任何一個 AI

agent 或桌面 agent(Claude Desktop、opencode、Cursor…)上,

AI 就會像 OpenAI Codex 一樣,打開你電腦裡真實的 Chrome、

前往任何網站、讀取網頁、點擊、輸入、按 Enter、捲動、多分頁

操作、執行 JavaScript、截圖確認——一切都是「真人等級」的

操作,不是模擬器。

核心特色

  • 真實 Chrome:開出可見視窗,你可以先登入任何網站
  • 結構化頁面快照:把整頁整理成「編號元素清單+內文」,

AI 不靠圖片也能精準掌握頁面狀態

  • 真實滑鼠事件:用座標點擊元素中心,SPA / React 都能吃
  • 完整工具組:導覽、點擊、輸入、按鍵、捲動、選單、分頁、

任意 JS、截圖……共 23 支 pilot_* 工具

  • 標準 MCP:Agent 社群的共通協定,裝上就能用
  • 開箱即用:不需要 API key、不需要付費、不寄送任何資料
  • 登入永續:瀏覽器設定檔獨立保存,登入狀態下次續用

二、製作過程

開發思路(先讓「讀」對,才有「操控」可言)

1. CDP 底座 cdp.py

用最短的程式碼接上 Chrome DevTools Protocol 的

WebSocket,負責發送/接收指令,支援 browser 與分頁

兩層通訊。

2. 瀏覽器管理 chrome.py

自動尋找本機 Chrome/Chromium,用獨立 profile 啟動

一個「駕駛艙」,等待 debug 埠就緒。

3. 網頁側 JS js.py

注入三小段 JS:掃描可互動元素並標上編號、依編號

重新定位座標、幫輸入框聚焦。

4. 動作翻譯 pilot.py

把 navigate / snapshot / click / type / scroll /

screenshot / 分頁管理 全部翻譯成 CDP 指令。

5. MCP 外殼 server.py

把高階動作包成 23 支 pilot_* 工具,任何 agent 都能呼叫。

6. 驗證

寫了一組 e2e 測試,真的開 headless Chrome,驗證

「導覽→快照→輸入→點擊→讀回 DOM→截圖」整條鏈路。

技術筆記

  • 點擊不是 JS click(),而是用 CDP Input.dispatchMouseEvent

送出「真實」滑鼠事件,hover / 拖曳 / SPA 狀態都正常。

  • 輸入用 Input.insertText,中文與特殊字元不會壞掉。
  • 全程不含任何金鑰、帳號、API key,乾淨開源。

三、使用教學

① 安裝

pip install penink-pilot

若系統找不到 Chrome,設定環境變數 CHROME_PATH 指向

Chrome 執行檔。

② 掛進 agent(三選一)

  • Claude Desktop:把 examples/claude_desktop_config.json

的內容貼進 claude_desktop_config.json

  • opencode:貼進 opencode.json(也附範例)
  • 其他 MCP 桌面 agent:依該軟體 MCP 設定方式,命令列

打 penink-pilot 即可

③ 開始使用(AI 會自動這樣做)

1. pilot_navigate("https://你要去的網站")

2. pilot_snapshot() ← 取得頁面所有元素編號

3. pilot_click(編號) ← 點擊

4. pilot_type(編號, "內容", enter=True) ← 輸入

5. pilot_screenshot() ← 截圖確認

④ 常用指令

pilot_new_tab / pilot_switch_tab / pilot_list_tabs

pilot_evaluate(JS) / pilot_press("Enter")

pilot_scroll("down", 400) / pilot_back / pilot_reload

pilot_stop 關瀏覽器(登入狀態會保留)

四、注意事項(重要)

  • 版權與隱私:本工具不收集、不寄送任何網頁或輸入資料,

所有網頁內容只存在你自己的 Chrome 裡。

  • AI 到底操控了什麼,你全程看得到——瀏覽器是可見的,

隨時可以直接接手。

  • 「編號 ref」在每次 pilot_snapshot 後重新產生,頁面一

變動就要重新 snapshot 再操作。

  • 登入狀態存在本機 profile 資料夾,若想「完全乾乾淨淨」

重來,刪除對應的 penink-pilot profile 即可。

  • 授權為 MIT,可自由使用、修改、散佈、商用(見 LICENSE)。

五、保存資訊

本資料夾內容即專案完整原始碼:

penink_pilot/ 套件主體(cdp / chrome / js / pilot / server)

tests/ e2e 自動測試(可直接 pytest)

examples/ Claude Desktop 與 opencode 設定範例

pyproject.toml 打包與依賴(mcp + websockets)

README.md 完整文件

LICENSE MIT 授權

本機開發:

pip install -e ".[dev]"

pytest tests/

文件完成・以上為公開資訊,不含任何私密資料

問小墨 AI