Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

開源 Mac 客戶端「艾特閱讀」把微信讀書網頁版包進 4MB 的 Tauri 安裝檔,用系統 WebKit 取代 Electron,搭配插件化擴充骨架與可簽章驗證的自動更新。從原始碼、授權與實際下載體積聊它適合誰。
用 AI 摘要這篇文章:
讀微信讀書最常見的兩種方式,剛好是兩個極端:一種是把 weread.qq.com 開成一個瀏覽器分頁,跟所有工作中的網頁混在一起,分頁一多就找不到哪一個是正在讀的書;另一種是裝一個 Electron 打包的桌面客戶端,把整個 Chromium 引擎再塞一次進系統,記憶體與硬碟空間都付兩遍。開源專案「艾特閱讀」(dengcb/weixin-reader-desktop)走的是中間路線:用 Tauri v2 包一層薄薄的 Rust 殼,把官方網頁讀版原樣載入,再用注入腳本補上桌面該有的視窗記憶、自動翻頁、深色模式。本文把它放回這三條路的對比裡檢視,並從原始碼與實際下載體積聊它真正適合誰。
「安裝檔只有 4MB」是這個專案最常被引用的數字,但它同時也是最容易誤讀的數字。下載 v0.9.0 的安裝包(weixin-reader-0.9.0-aarch64.dmg),實際體積是 3.72MB;Intel 版(x86_64.dmg)則是 4.01MB。專案 README 同時寫明「安裝包僅 ~5MB」「記憶體佔用低至 100MB」這兩個數值,所以「4MB」指的是安裝檔,不是執行時的記憶體。把它講成「佔用 5MB 記憶體的閱讀器」會混淆這兩個概念。
之所以能壓到 4MB 左右,是因為 Tauri v2 沒有像 Electron 那樣把 Chromium 一起打包進安裝檔,它直接呼叫 macOS 既有的系統 WebKit(WKWebView)來渲染介面。後端用 Rust 寫,前端邏輯編譯成一份 inject.js(在 repo 中約 106KB)注入到 weread.qq.com 頁面上。換句話說,這 4MB 裝的是「外殼+選單+腳本」三件事,渲染引擎跟著系統走,所以小得很合理。如果我們先前評測過的 Open Claude Cowork 是把 Web 介面塞進 Electron 桌面殼的典型範例,艾特閱讀則示範了當目標網站本來就是網頁時,可以用更輕的方式達成差不多的事。
把「瀏覽器分頁」「Electron 客戶端」「Tauri 客戶端」擺在一起看,差異就清楚了。瀏覽器分頁的優點是零安裝,缺點是沒有獨立視窗狀態、沒有全域快速鍵、容易被誤關。Electron 客戶端(如不少第三方閱讀器或我們 先前討論瀏覽器瘦身時 提到的同類打包思維)能解決視窗與快速鍵問題,但代價是另一個 100MB 以上的安裝檔與另一份 Chromium 記憶體。艾特閱讀走的中間路線是:給你獨立視窗、選單列、視窗位置記憶、深色模式、自動翻頁,但不安裝新引擎,記憶體佔用落在 100MB 上下(與系統 WebView 共用),安裝檔 4MB。
| 維度 | 瀏覽器分頁 | Electron 桌面殼 | 艾特閱讀(Tauri v2) |
|---|---|---|---|
| 安裝檔體積 | 0(已內建) | 常見 80MB 以上 | v0.9.0 aarch64.dmg 為 3.72MB |
| 渲染引擎 | 瀏覽器核心 | 打包一份 Chromium | macOS 系統 WebKit |
| 獨立視窗與選單列 | 無 | 有 | 有 |
| 視窗狀態記憶 | 無 | 視實作而定 | 內建(tauri-plugin-window-state) |
| 自動更新簽章驗證 | 瀏覽器更新 | 視實作而定 | 內建 minisign 公鑰驗證 |
| 離線可用 | 視瀏覽器快取 | 相同 | 相同(仍需連得到官方伺服器才能驗證內容授權) |
這條路的前提是「目標網站本來就有完整網頁版」,而微信讀書剛好符合。官方 weread.qq.com 本身就是功能完整的網頁閱讀器,支援 WeChat 與 QQ 登入,分類藏書涵蓋文學、歷史、電腦等數萬冊。艾特閱讀並不重新實作閱讀引擎,所有書籍內容、版權驗證、閱讀進度都走官方 API 與官方頁面,它只是在周圍加了一圈桌面該有的作業系統整合。
從原始碼看,這個專案真正有意思的部分其實在 2026 年 1 月底的 v0.8.0 改版,那次把整套架構從「微信讀書專用殼」重構成「可插拔閱讀框架」。在 src/scripts/inject.ts 的進入點裡可以看到「微信讀書只是內建預設插件」的設計:載入流程會掃過 builtinPluginFactories,挑出符合目前網址的插件來啟用,沒有符合的就跳警告。配套的 plugin_loader.ts、plugin_registry.ts、plugin_types.ts(型別定義就超過 12KB)與 Rust 端的 plugin_manager.rs 一起撐起這套插件生命週期,支援 .atrd 格式的插件包安裝與卸載。v0.9.0 又補上視覺化插件編輯器,讓你在 app 內用表單填寫插件資訊、用內建程式碼編輯器寫腳本,不必另外開 IDE。
這個設計意圖可以從倉庫結構再驗證一次。README 的「前端模組」章節列了六個管理器(IPCManager、AppManager、MenuManager、StyleManager、ThemeManager、TurnerManager),但實際打開 src/scripts/managers/ 目錄會看到第七個:remote_manager.ts。同一份 README 也說「外掛化架構」與「本地閱讀(EPUB/TXT)能力」是未來方向,但對應的 adapters/ 目錄其實已經有 reading_site_adapter.ts(base 介面)、weread_adapter.ts(微信讀書實作)與 progress_tracker.ts(跨站進度追蹤,三級事件優先級 HIGH/MEDIUM/LOW)。也就是說,這個專案的程式碼比 README 走得更前面,已經把「支援其他閱讀網站」的骨架搭好,等於是把自己定位成閱讀網站殼框架,而不只是微信讀書一個網站的工具。
v0.9.0 加入的視覺化插件編輯器是另一個把「框架」性格說清楚的訊號。設定選單裡有「插件管理 → 新建插件」入口,進去之後是一個表單:基本資訊(ID、名稱、版本、描述)、站點配置(網域、URL 模式)、功能能力(寬屏、深色、翻頁等勾選)、以及一個有 TypeScript 語法高亮的多檔案標籤式程式碼編輯器。換句話說,作者把「開發一個新站點適配器」這件事從「clone 倉庫改碼重新編譯」降到「在 app 內填表加寫腳本」。這個降檻動作本身就在告訴你:作者把這個專案定位成可以被陌生人擴充的平台,並非要做出只能讀微信讀書的單一工具。
從讀者角度,這個骨架的實際意義有兩個。第一,微信讀書這條功能軸不會被插件系統拖慢,因為它就是預設裝好的內建插件,不需要額外設定。第二,未來若有人寫出蝦皮讀書、起點中文網或其他閱讀網站的 .atrd 插件,同一套視窗、自動翻頁、深色模式邏輯可以直接沿用。這是一個比起單純「縮小安裝檔」更值得記錄的設計選擇。
在平台支援上,雖然 README 寫了從 macOS 交叉編譯 Windows 版的指令(用 LLVM、cargo-xwin、x86_64-pc-windows-msvc target),但 v0.9.0 的實際發布資產只有 macOS 兩個架構的 .dmg 與 .app.tar.gz,沒有 Windows 安裝檔。截至 2026 年 7 月,這是一個 macOS 限定工具;Windows 使用者想用,得自己照 README 編譯,而 issue #2 還通報 Windows 編譯版登入二維條碼被遮擋的問題待修。
在維護節奏上,v0.9.0 在 2026 年 2 月 7 日發布,是到本文截稿前最後一次更新,main 分支最後一次 commit 也是同一天,距今約五個多月沒有新提交。倉庫本身活著:453 顆星、33 個 fork、2 個 open issue 都還算健康,作者在其他專案也活躍。但如果期待它每個月出新功能,目前的節奏跟不上。把它當成「夠用就先放著」的工具更合理。Issue #1 通報的「切換到滾動閱讀後沒有劃線」這類小問題也就還掛著。比較友善的訊號是 README 自承的「332+ 測試用例」並非空話,Cargo 與 Bun Test 的測試目錄在 src-tauri/tests/ 與 src/scripts/core/__tests__/ 都真的存在,這對一個業餘專案來說是相對認真的工程紀律。
與「官方」的關係是另一條值得講清楚的限制。艾特閱讀是第三方客戶端,README 的免責聲明講得很清楚:與騰訊及微信讀書團隊無關、不收集隱私、不植入廣告、無商業用途。授權方面,根據 GitHub 倉庫根目錄的 LICENSE 檔與 API 回傳的 SPDX 標示,是有效的 MIT 授權。帳號登入流程仍走官方 weread.qq.com 的 WeChat/QQ 登入頁面,這個殼不代理、不修改帳號資料。所有圖書內容的版權驗證、試讀限制、會員資格也都在官方側處理。換句話說,這個工具不會讓你「免費看到付費書」,它改變的只是「怎麼打開那個網頁」。
更新檢查是這類第三方工具容易忽略的一環。tauri.conf.json 內建的 updater 設定了三個 endpoint:GitHub 直連與兩個 ghproxy.com 鏡像。鏡像是為了讓中國大陸使用者繞過 GitHub 下載不穩而設計的,本地讀者走 GitHub 直連就好,不會被強制走鏡像。簽章驗證用的是 Tauri 內建的 minisign 公鑰(同樣寫在 tauri.conf.json 裡),更新檔會先驗過簽章才安裝,這是避免被偷換更新檔的基本資安措施,不是所有同類小工具都會做。
另外值得記一筆的是 progress_tracker.ts 對騰訊伺服器的禮貌設計。三級事件系統(HIGH 進入閱讀頁、MEDIUM 章節切換、LOW 翻頁)只在「第一次打開書籍」時呼叫一次官方 getProgress API 取得當前位置,章節資料直接從頁面既有的 __INITIAL_STATE__ 全域變數讀取、不再發額外請求,之後所有翻頁動作都是本地記憶體計算。換句話說,它不會因為翻頁就不停打 API,這對「第三方殼會不會被官方判定為異常流量然後封號」這條讀者最常問的疑慮,是一個比較負責任的設計。
綜合以上,艾特閱讀的甜區是「Mac 使用者、長期讀微信讀書、不喜歡為了讀書再裝一個 Electron 應用、能接受第三方殼」。如果你的工作機是 Mac,習慣把閱讀跟其他工作視窗分開,又在乎安裝檔與背景記憶體佔用,這個工具明顯比 Electron 同類產品更值得裝,也比我們 先前介紹過的知識庫型閱讀工具 更貼近「讀微信讀書」這個明確使用場景。
反過來說,如果你是 Windows 使用者(目前沒有現成安裝檔)、極度依賴騰訊官方客服與支援(這是第三方工具無法提供的)、或你需要的是「把不同來源的電子書統一在一個書架」(這個專案的 adapters/ 還在預留階段,目前實際能用的只有微信讀書一個),那麼艾特閱讀目前不會是最佳選擇。官方 weread.qq.com 網頁版本身已經很完整,沒有非用第三方殼不可的需求,記得把「我到底為什麼不想用瀏覽器分頁」先想清楚,再決定要不要裝。
用這個第三方殼會被騰訊封號嗎? 從原始碼看,艾特閱讀不修改請求、不繞過版權驗證、不代理帳號,所有內容仍走官方 weread.qq.com,帳號登入頁面也是官方的。它做的事情更接近「把瀏覽器包起來加一些桌面整合」,而不是「破解會員限制」。但這仍然是第三方工具,最終解釋權在騰訊,無法給出絕對保證。
Windows 版什麼時候出? 倉庫 README 有交叉編譯指令,但 v0.9.0 沒有附 Windows 安裝檔,issue #2 還通報 Windows 編譯版的登入二維條碼被遮擋。作者目前沒有給出 Windows 版的時間表,五個多月沒有新 commit 也是事實。Windows 使用者短期內比較實際的做法是直接用瀏覽器開 weread.qq.com。
4MB 是不是偷工減料? 看角度。小安裝檔來自 Tauri v2 用系統 WebKit、不打包 Chromium 的架構選擇,功能並沒有因此少一塊。對應的代價是「渲染引擎跟著作業系統走」,在不同 macOS 版本上呈現可能略有差異,這個代價對絕大多數讀者不構成問題。
跟直接用瀏覽器開 weread.qq.com 差在哪? 主要差在桌面整合:獨立視窗、視窗位置與大小記憶、選單列、全螢幕、自動翻頁、深色模式、寬屏排版、隱藏側欄、觸控板雙指滑動翻頁。如果這些對你沒有吸引力,繼續用瀏覽器分頁完全沒問題。如果你 習慣把常用工具裝成 Mac 原生 app、不愛在瀏覽器裡讀書,這個殼的價值才會浮現。
最後給一個務實的判斷:艾特閱讀不是「取代」微信讀書官方網頁版或官方客戶端的產品,它是「把網頁版變成更像桌面 app」的一個薄殼。它真正解決的問題很窄,但在這個窄範圍裡做得相當收斂:MIT 授權、可簽章驗證的更新、低調的 API 使用、插件化的擴充預留。如果你的使用情境落在它的甜區,4MB 換來一個乾淨的桌面閱讀視窗,這個交易算合理。