zhaohongxuan/dsh-weread:把微信讀書搬進 DeepSeek Harness

前言

如果你用 DeepSeek Harness(dsh)多個智能體或長期在 dsh 界面裏工作,想順手看一眼自己今天讀了什麼、去年今天劃過哪句話,就得在瀏覽器和微信讀書之間來回切。已有的做法是在微信讀書 App / 網頁裏看,或者把數據導出到別的工具;前者不在 dsh 裏,後者要手動同步。

zhaohongxuan/dsh-weread 是一個原生的 dsh Web 插件,由 zhaohongxuan 維護,解決的是「微信讀書的書架、劃線筆記、閱讀統計進 dsh 界面」這件事:左邊欄加一個「微信讀書」入口,裏面是今日閱讀、回顧、書架、年度書牆、統計五個標籤頁,並可用 dsh 內置模型生成 AI 總結。倉庫按 MIT 協議發佈,當前版本 0.3.0,GitHub 上 77 stars、5 forks(截至 2026-11-06)。社區目錄頁將其歸入「聯網工具」。

下面介紹這個插件。

功能概覽

插件的核心能力分五塊,都能在 dsh 界面裏直接看到:

  1. 今日:當日閱讀/收聽時長、今天讀過的電子書、當日劃線與想法、舊句重逢(隨機回看一句過去的劃線)。
  2. 回顧:按劃線和個人想法的創建日期展示筆記日曆,支持直跳月份、選日期、搜書名/作者/內容、篩劃線/想法,還有「那年今日」。
  3. 書架:封面網格,搜索、篩選、排序,顯示真實閱讀進度。有兩種數據源,可切換書架接口與筆記接口,書架模式下文件夾與書混排,文件夾用內部封面拼成縮略圖,還支持文件夾頁與有聲書(專輯)。
  4. 年度書牆與統計:按月份拼封面牆,一年一張,年份可切換;全年日常熱力圖(可切年份)、分類環形圖、24 小時時段鍾、偏愛作者/出版社、閱讀最多、年度趨勢。
  5. AI 總結:單本總結、劃線主題分析、書架閱讀畫像,走 dsh 的 ctx.llm 流式輸出,複用 dsh 已配置的模型,不需要額外密鑰。

所有微信讀書請求都在宿主側發出,瀏覽器只訪問同源 /api/weread/*;認證只有 API Key,不依賴 Cookie。

架構

插件是 dsh 的雙半側結構,瀏覽器側是個 React 經典腳本 bundle,掛 sidebar.panellist 圖標和 main 面板;宿主側是 Node ESM 的 Cordis 插件,負責路由、微信讀書網關調用、解析、緩存和 AI。

瀏覽器 (React 經典腳本 bundle)
  └─ sidebar.panellist 圖標 + main 面板  ── fetch('/api/weread/*')
宿主 (Node ESM, Cordis plugin)
  ├─ routes.ts       /shelf /bookshelf /book /chapters /highlights /reviews
  │                  /journal-cache /journal-notes /stats /heatmap /settings /auth /ai
  ├─ weread/gateway  微信讀書 Agent Gateway 客戶端(Bearer Key · undici + 可選代理)
  ├─ weread/parse    原始響應 → DTO
  ├─ store/cache     LRU + TTL + 請求單飛
  ├─ store/journalCache  按賬號 JSON 緩存 + 24 小時增量同步 + 斷點恢復
  └─ ai/             ctx.llm.stream 流式總結

兩點值得注意:一是 API Key 只存在宿主側 $DSH_HOME/storages/dsh-weread/config.json(權限 600),瀏覽器側只能看到 wrk-****1234 這樣的掩碼;二是筆記不用數據庫,按賬號隔離存成 JSON 緩存,刷新頁面和重啓 dsh 後都能複用。

對宿主環境的要求來自 package.json:node ^22.19.0 || >=24.0.0,dsh >=0.2.0-rc.2,瀏覽器 bundle 側 @deepseek-ai/cordis ^4.0.4 爲 peerDependency。

安裝與啓用

安裝走源碼拉取 + 構建 + 鏈接到 profile,沒有 dsh plugin add git... 這類一鍵命令。前提是 DSH_HOME 已配置(README 給的例子是 /volume2/docker/dsh/home),profile 爲 web。

git clone https://github.com/zhaohongxuan/dsh-weread.git
cd dsh-weread
npm install --cache ./.npm-cache      # 本機全局 npm cache 屬 root 時需換目錄
npm run build                         # 產出 lib/index.js + lib/client.js
bash scripts/link-profile.sh web      # 等價 dsh plugin --profile web add --save-prod file:$PWD

然後打開 dsh Web GUI → 設置 → 插件 → 打開 dsh-weread → 刷新頁面,左側欄就會出現「微信讀書」入口。

安裝前建議先確認插件運行在 dsh 當前進程的權限下,並檢查 config.json、proxy 之類的寫入位置是否符合你的預期。

配置 API Key

插件用微信讀書的 Agent Gateway Key,不在插件界面裏填。步驟:

  1. 打開 dsh 全局設置 → 微信讀書。
  2. 訪問 https://weread.qq.com/api/skills/apikeyGet(已登錄微信讀書時直接返回 apikey),複製粘貼到輸入框。
  3. 點「保存並校驗」,顯示已授權即可。

如果提示「網絡出口被風控攔截(403)」而 Key 本身有效,說明當前出口 IP 被微信讀書限制,可以在 config.json 的 proxy 字段配置能訪問微信讀書的代理。

書架數據源與緩存行爲

設置頁的「書架數據源」開關決定書架標籤頁讀哪一份數據,默認書架模式:

模式 接口 內容
書架模式(默認) /shelf/sync 書架上的全部書、文件夾(書單)、有聲書(專輯);文件夾與書混排
筆記模式 /user/notebooks 只列出有筆記的書,帶筆記/想法數量,可按分類與閱讀年份分組

幾點實際使用上的差別:

  • 切換後要點面板右上角的 ⟳ 刷新才生效,選擇持久化在 $DSH_HOME/storages/dsh-weread/config.json。
  • 「有筆記」篩選和筆記角標只在筆記模式出現,因爲書架接口不返回每本書的筆記數。
  • 有聲書卡片不可點擊:albumId 和 bookId 是兩個 id 空間,書籍詳情頁取不到專輯數據。
  • 默認每 24 小時自動同步一次;進入頁面直接讀緩存,過期後保留舊內容並在後臺同步,「今日/回顧」共享同一次同步。首次跨書筆記按每批 6 本掃描,逐批顯示進度;退出頁面不中斷宿主同步,失敗保留已緩存內容並可重試。
  • 日期跟隨瀏覽器本地時區,閱讀時長跟隨微信讀書上游的日級統計分桶,跨時區使用時兩者的日期邊界可能不同。

適用場景與注意

適合已經在 dsh 裏工作、同時用微信讀書做個人閱讀記錄的人,尤其是想在一個界面裏完成「今天讀了什麼 → 回顧舊劃線 → 年度書牆 → 讓模型總結」這條鏈路的場景。

需要注意的幾點:插件以 dsh 當前進程權限運行,會讀寫插件數據目錄、保留 API Key、訪問微信讀書接口,安裝前應檢查源碼與 MIT 許可證;AI 總結依賴 dsh 側已配置的模型(默認 provider=magpie、model=workbuddy/deepseek-v4.1-flash),不是插件自己帶模型;回顧日曆只表示有筆記的日期,不代表這些日期的完整閱讀流水;今日書單隻覆蓋當前書架可識別的電子書,不能據此推算每本書當天的閱讀時長。

結尾

這個插件的價值在於把微信讀書的個人數據接進 dsh 界面,並順手用 dsh 的模型做總結,配置只有 API Key 一項。需要自己構建鏈接,適合願意看源碼、能接受源碼級安裝方式的用戶。

  • 目錄頁:https://www.skillhub.cn/plugins/zhaohongxuan/dsh-weread
  • GitHub:https://github.com/zhaohongxuan/dsh-weread
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜