OpenCLI 是一款開源 CLI 運行框架,能把網站、Electron 桌面應用和本地工具統一封裝成命令行介面,讓 AI Agent 用結構化指令取代瀏覽器操作,從根本上解決 Token 消耗過高和反爬蟲封鎖的問題。 截至 2026 年 4 月,OpenCLI 在 GitHub 累積超過 15,000 顆星,內建 87 個以上的網站適配器,涵蓋 Twitter/X、Reddit、Bilibili、知乎、小紅書、YouTube、HackerNews 等 55 個以上平台。它的 Rust 重寫版本 AutoCLI 更把執行速度拉高到原版的 12 倍,記憶體用量壓到十分之一,編譯後只有 4.7 MB 的單一執行檔。
對於正在用 Claude Code 或 OpenClaw 搭建自動化工作流的開發者來說,OpenCLI 填補了一個關鍵缺口:AI Agent 需要從外部網站取得即時資訊時,不再需要啟動瀏覽器、載入整個 DOM、解析數千行 HTML,而是一行指令就拿到結構化資料。
AI Agent 操作網頁的三個結構性問題
目前多數 AI Agent 透過 Browser Use 或類似方案操作網頁,實務上會碰到三個問題,而且這三個問題會疊加放大。
第一是 Token 成本失控。一個典型的網頁載入後,DOM 結構加上無關的廣告區塊、導航列、頁尾,動輒塞進數萬個 Token。Claude Sonnet 4 的 API 定價是每百萬 input token USD 3,每百萬 output token USD 15。如果 Agent 每次任務要處理 5-10 個網頁,光 input token 就可能燒掉 USD 0.5-1。做一百次就是 USD 50-100,而且大部分 Token 花在解析跟任務無關的 HTML 結構上。
第二是反爬蟲機制。知乎、小紅書、微博這類平台有驗證碼、登入檢查和行為偵測。用 Playwright 或 Puppeteer 自動化瀏覽器,稍有不慎就被封帳號。Reddit 和 Twitter/X 的 API 更是越來越貴——Twitter API 的 Basic 方案月費 USD 100,Pro 方案 USD 5,000,對個人開發者和小團隊來說根本不划算。
第三是輸出不確定性。瀏覽器操作依賴 DOM 選擇器,網站一改版,選擇器就失效。Agent 拿到的資料品質和格式每次都不一樣,後續處理的錯誤率很高。
| 問題 | Browser Use 方案 | OpenCLI 方案 |
|---|---|---|
| 每次操作 Token 消耗 | 數萬(整個 DOM) | 數百(結構化輸出) |
| 反爬蟲風險 | 高(自動化瀏覽器特徵明顯) | 低(複用 Chrome 登入態 + 反偵測) |
| 輸出格式 | 不確定(HTML 片段) | 確定(JSON / YAML / CSV / Markdown) |
| 執行速度 | 慢(要等頁面渲染) | 快(直接攔截 API 回應) |
| 每次任務 API 成本 | USD 0.5-1+ | 接近零(不消耗 LLM Token) |
OpenCLI 的運作機制
OpenCLI 的核心思路是:與其讓 AI 去「看」網頁,不如直接給它一個確定性介面。
具體來說,OpenCLI 透過一個輕量的 Chrome 擴充功能(Browser Bridge)加上本地 daemon 程序,複用使用者已經登入的 Chrome 瀏覽器狀態。它不需要另外啟動無頭瀏覽器,也不需要儲存任何帳號密碼。當你執行 opencli bilibili hot --limit 10 -f json 這樣的指令時,OpenCLI 會透過 CDP(Chrome DevTools Protocol)在背景攔截網頁的 API 請求,擷取結構化的回應資料,然後以你指定的格式輸出。
這裡有幾個技術細節值得注意。
反偵測方面,OpenCLI 會修補 navigator.webdriver 屬性、偽造 window.chrome 物件、清除 ChromeDriver 和 Playwright 的全域變數痕跡,還會從 Error stack trace 裡移除 CDP 相關的 frame。這些措施讓平台端的風控系統很難分辨操作是人為還是自動化的。
適配器架構方面,OpenCLI 用聲明式的 YAML 檔案定義每個網站的操作管線(pipeline):fetch → extract → transform → output。新增一個網站的支援,只要寫一個 YAML 檔案放到 clis/ 資料夾,就會自動註冊為可用指令。不需要寫 TypeScript 或 JavaScript 程式碼。
AI 驅動探索方面,碰到還沒有內建適配器的網站,OpenCLI 提供四個指令讓 AI Agent 自己去探索:explore 會攔截網路請求並分析 API 結構,synthesize 根據探索結果自動生成適配器,cascade 會嘗試五個層級的認證策略(PUBLIC → COOKIE → HEADER → SESSION → OAUTH),generate 則是一鍵完成從探索到註冊的全流程。
實際指令與輸出範例
以下是幾個常見的使用場景和對應指令:
| 場景 | 指令範例 | 輸出說明 |
|---|---|---|
| 抓取 HackerNews 熱門文章 | opencli hackernews top --limit 5 |
公開 API,不需要瀏覽器 |
| 抓取 Bilibili 熱門影片 | opencli bilibili hot -f json |
JSON 格式,可直接 pipe 給 jq 或 LLM |
| 下載小紅書筆記 | opencli xiaohongshu download abc123 |
自動轉為 Markdown,含配圖 |
| 下載 Twitter 使用者內容 | opencli twitter download elonmusk --limit 20 |
含推文內容和媒體檔案 |
| 搜尋 Reddit 特定子版 | opencli reddit hot --subreddit MachineLearning |
結構化的貼文清單 |
| 查詢 Yahoo Finance 股價 | opencli yahoo-finance quote --symbol AAPL |
即時報價資料 |
| 控制 Electron 桌面應用 | opencli cursor send "重構這個函數" |
直接操作 Cursor IDE |
所有指令都支援 --format 參數,可以輸出 table(預設)、json、yaml、csv、md 五種格式。對 AI Agent 來說,json 和 yaml 是最實用的,因為結構化資料可以直接解析,不需要額外的 Token 去理解非結構化的 HTML。
分層載入:為什麼 CLI 比 MCP 和 Skill 更省 Token
這是 OpenCLI 架構設計裡最聰明的一個決策。
傳統的 MCP(Model Context Protocol)做法是把所有工具的 schema 一次塞進 LLM 的 context window。如果你有 50 個工具,每個工具的 schema 平均 200 Token,光工具描述就佔掉 10,000 Token。而且這些 Token 每輪對話都要重複送。
Skill 檔案(像 Claude Code 的 SKILL.md)也有類似問題。一個完整的 Skill 說明可能有數百行,AI Agent 不管用不用得到,都要先讀完才能判斷。
OpenCLI 的做法是分層載入。AI Agent 的 AGENT.md 或 .cursorrules 裡只需要寫一行:「用 opencli list 查看可用工具。」Agent 真的要用工具時,先跑 opencli list 拿到指令清單(大概 200-300 Token),確認需要哪個站台的功能後,再跑 opencli <site> --help 拿到該站台的詳細參數說明。
這種按需載入的方式,讓 Agent 在處理 87 個以上站台的指令時,context window 裡只需要保留當前任務相關的幾百個 Token,而不是全部工具的完整描述。
| 載入方式 | 初始 Token 佔用 | 擴展成本 |
|---|---|---|
| MCP 全量載入 | 5,000-15,000+ | 每新增一個工具 +100-300 Token |
| Skill 全量載入 | 3,000-10,000+ | 每個 Skill +200-500 Token |
| OpenCLI 分層載入 | 約 50(一行指示) | 用到時才加載,約 200-500 Token |
安裝與整合
安裝 OpenCLI 需要三個步驟。
第一,透過 npm 全域安裝主程式:
npm install -g @jackwener/opencli
第二,安裝 Chrome 擴充功能。到 GitHub Releases 頁面下載最新的 opencli-extension.zip,解壓後在 chrome://extensions 裡開啟開發者模式,點「載入未封裝項目」選擇解壓後的資料夾。
第三,整合到你的 AI Agent。如果是 Claude Code,安裝 Skill:
npx skills add jackwener/opencli
如果是 Cursor 或其他支援 AGENT.md 的工具,在設定檔裡加一行告訴 Agent 可以透過 opencli 存取網站資料就行了。
跑 opencli doctor 可以一鍵診斷安裝狀態,確認 daemon、擴充功能和瀏覽器連線都正常。
OpenCLI 生態系:TypeScript 原版 vs. Rust 重寫版
OpenCLI 目前有兩個主要版本。原版由 jackwener 維護,用 TypeScript 寫成,是功能最完整的版本(v1.7.2,2026 年 4 月 11 日更新),有 87 個以上的適配器。
Rust 重寫版叫 AutoCLI,由 nashsu 開發。它跟原版功能對等,但效能提升很明顯:執行速度快 12 倍,記憶體用量少 10 倍,編譯後只有 4.7 MB 的單一 binary 檔案,零 runtime 依賴。如果你的 Agent 工作流對效能敏感,AutoCLI 是更好的選擇。
另一個值得關注的相關專案是香港大學(HKUDS)開發的 CLI-Anything。CLI-Anything 和 OpenCLI 的思路類似但目標不同:OpenCLI 專注於把網站和 Electron 應用 CLI 化,CLI-Anything 則是把專業軟體(GIMP、Blender、FFmpeg、LibreOffice)CLI 化,讓 AI Agent 可以直接操作這些軟體的完整功能。兩者可以互補。
| 比較項目 | OpenCLI(TypeScript) | AutoCLI(Rust) | CLI-Anything |
|---|---|---|---|
| GitHub 星數 | 15,000+ | 3,000+ | 5,000+ |
| 適配器數量 | 87+ 網站 | 55+ 網站(持續增加) | 專業軟體為主 |
| 執行速度 | 基準 | 12x 更快 | 依軟體而異 |
| 安裝大小 | 需要 Node.js | 4.7 MB binary | 需要 Python |
| 主要用途 | 網站 + Electron 應用 | 網站 + Electron 應用 | 專業軟體 CLI 化 |
| AI Agent 整合 | Claude Code / Cursor / OpenClaw | Claude Code / OpenClaw | Claude Code / Codex / Copilot |
這代表什麼:CLI 模式的結構性優勢
從 Browser Use 到 MCP 再到 CLI,AI Agent 操作外部系統的方式一直在演進。CLI 模式的結構性優勢在於三點。
確定性。同一個指令、同一組參數,每次跑出來的輸出 schema 都一樣。這讓 Agent 的後續處理邏輯可以寫死,不用每次都靠 LLM 去理解不同格式的回應。
可組合性。CLI 指令天然支援 pipe。opencli hackernews top -f json | jq '.[] | .title' 這樣的組合在 shell 裡直接就能跑。Agent 可以用 bash 腳本串聯多個指令,不需要 LLM 介入每一步。
零邊際成本。OpenCLI 在 runtime 不消耗 LLM Token。跑一萬次 opencli bilibili hot 的成本跟跑一次一樣——都是零。這對需要大量重複性資料擷取的工作流來說,差異非常大。
但 CLI 模式也有限制。它只能操作已經有適配器的網站。碰到沒有適配器的網站,要嘛用 opencli explore 生成新適配器(需要一定技術能力),要嘛退回 Browser Use 方案。另外,OpenCLI 的反偵測措施雖然比裸跑 Playwright 好很多,但對風控特別嚴格的平台(像是銀行、政府網站),還是有被偵測到的風險。
OpenCLI 目前支援哪些平台?
OpenCLI 內建 87 個以上的適配器,涵蓋社群媒體(Twitter/X、Reddit、Facebook、Instagram)、內容平台(Bilibili、YouTube、知乎、小紅書、微博)、開發者工具(HackerNews、V2EX)、電商平台(1688)、金融資訊(Yahoo Finance、雪球)和桌面應用(Cursor、Notion、ChatGPT、Antigravity)。完整清單可以用 opencli list 查看。
OpenCLI 和 MCP Server 有什麼不同?
MCP Server 透過 JSON Schema 定義工具介面,需要 LLM 在 context window 裡載入完整的工具描述。OpenCLI 是 CLI 介面,Agent 只需要知道指令名稱和參數就能執行,不佔用 context window。另一個差異是 MCP Server 需要另外部署和維護,OpenCLI 裝好就能用。
安裝 OpenCLI 需要什麼前置條件?
需要 Node.js 環境和 Chrome/Chromium 瀏覽器。大部分需要登入的平台指令(Bilibili、知乎、Twitter 等)要求你在 Chrome 裡已經登入對應網站。公開 API 的指令(HackerNews、V2EX)不需要瀏覽器。
OpenCLI 會不會導致帳號被封?
OpenCLI 內建多層反偵測機制,包括修補 webdriver 屬性、偽造 Chrome 物件和清除自動化痕跡。因為是複用你真實的 Chrome 登入態,而不是用自動化瀏覽器登入,風控被觸發的機率比傳統爬蟲方案低很多。但任何自動化操作都有風險,建議控制請求頻率,避免短時間內大量操作。
Rust 版 AutoCLI 跟 TypeScript 版有什麼差異?
功能完全對等,差異在效能:AutoCLI 快 12 倍、記憶體少 10 倍、編譯後只有 4.7 MB。如果你的工作流需要頻繁執行大量指令,或是在資源受限的環境(像 CI/CD pipeline)裡跑,AutoCLI 更適合。TypeScript 版的適配器數量目前比較多(87+ vs. 55+),生態也更成熟。
引用來源
Author Insight
我們團隊在把內容產出工作流從手動操作遷移到 Claude Code + MCP 架構的過程中,最大的痛點就是外部資料擷取。搭 MCP Server 來接 Twitter API 和 Reddit API,光 API key 管理和 rate limit 處理就花了不少時間,而且每個平台的 API 格式都不一樣,Agent 要花額外的 Token 去解析。
後來改用 OpenCLI 之後,外部資料擷取這一段幾乎不佔 context window 了。Agent 跑一行 opencli hackernews top -f json 就能拿到結構化資料,不用再透過 LLM 去理解 HTML。我們實測一個完整的內容研究任務(搜尋 5 個平台、擷取 20 篇相關內容),Token 消耗從原本的 15,000-20,000 降到 3,000-5,000,成本降了七成以上。
比較讓我在意的是安全面。OpenCLI 的反偵測機制做得不錯,但它本質上還是在操作你的瀏覽器。如果你的 Chrome 裡同時登入了很多敏感帳號,建議用 Chrome Profile 做隔離,或是在獨立的 Chromium 裡跑 OpenCLI 的任務。
如果你正在建構 AI Agent 工作流,想評估 OpenCLI 或 MCP 哪個方案更適合你的場景,歡迎跟 Tenten 團隊預約諮詢。我們最近協助幾家企業客戶設計了結合 Claude Code、OpenCLI 和 MCP Server 的混合架構,在不同場景下各取其長。
