dsh-reader:DSH 內置的 RSS 閱讀器插件

前言

DSH 的理念是「一切皆插件」,但日常排在讀長文這件事上,還得靠外部工具:把 RSS 鏈接丟給瀏覽器、或者開一個獨立閱讀器窗口,正文和當前會話、插件環境是割裂的。dsh-reader 把閱讀器放進 DSH 的右側欄,訂閱管理收在設置裏,數據落在本地文件,不需要額外服務,也不離開當前工作區。

它由 ShoWin2333 維護,分類屬於客戶端插件,定位是一個內置 RSS 閱讀器:三欄閱讀界面、正文渲染、已讀/收藏、搜索、OPML 導入導出。下面介紹它的功能、安裝方式和接口。

這是什麼

一句話:dsh-reader 是 DSH(DeepSeek Harness)的一個 RSS 閱讀器插件,在 DSH 界面內提供訂閱、閱讀、檢索和 OPML 備份能力,維護者是 ShoWin2333。

它解決的是「在 DSH 裏順手讀訂閱」的問題。閱讀器打開在右側欄而不是主屏幕,讀完可以回到會話繼續工作;插件不需要你自建數據庫或外部服務,狀態存成本地 JSON 文件。

核心功能

1、三欄佈局:訂閱源|文章列表|正文。點開一篇文章後,正文在右側 iframe 內渲染,使用了 sandbox 隔離,不執行頁面腳本,讀取的同時自動標記爲已讀。

2、訂閱管理:集中在 DSH 的 設置 → 訂閱管理(由插件的 settings.section 提供),支持搜索篩選、勾選後批量刷新/批量刪除、添加訂閱、導入導出 OPML。閱讀界面裏不再放單個源的刪除按鈕。

3、閱讀狀態:已讀/未讀、收藏、全部標爲已讀;狀態本地持久化,重啓不丟。

4、搜索與篩選:按標題/摘要/作者搜索,只看未讀,只看收藏,按源過濾。

5、OPML:導入(合併、去重)與導出備份。

6、自動刷新:打開面板時若數據超過 30 分鐘未更新,會後臺刷新一次。

面板寬度不足時會自動切成單欄(列表與正文之間帶返回按鈕),在窄窗口下也能用。

安裝與啓用

從 GitHub 直接安裝,裝完需要重開 DSH(或刷新窗口):

dsh plugin --profile desktop add github:ShoWin2333/dsh-reader

本地開發時也可以直接裝一個目錄:

dsh plugin --profile desktop add "C:\path\to\reader-plugin"

dsh-reader 的 package.json 裏聲明瞭 engines:node >=22.19.0、dsh >=0.2.1-rc.3。如果本機 DSH 版本低於這個要求,安裝前先升級。

安裝後從兩個入口使用:

  • 閱讀:會話標題欄右上角的 RSS 按鈕,或右側欄引導頁的「RSS 閱讀」卡片,會在右側欄打開閱讀器。
  • 訂閱管理:DSH 設置 → 訂閱管理,用於增刪訂閱、批量刷新、OPML 導入導出。

典型用法

先添加訂閱,再打開面板閱讀。

在 設置 → 訂閱管理 裏點添加訂閱,填 RSS 地址即可;有多份 OPML 時用導入功能合併,重複的源會自動去重。

進閱讀器後,左邊是訂閱源列表,中間是文章列表,右邊是正文。點一篇文章,正文在 iframe 中渲染並自動標記已讀;只想看未讀或只看收藏,用列表上方的篩選項;按標題/摘要/作者搜索的關鍵字填在搜索框裏。想臨時清空某個源的未讀狀態,在訂閱管理裏勾選該源後使用「全部已讀」。

插件把數據寫在一個本地文件裏,路徑是:

~/.dsh/storages/dsh-reader/data.json

可以用環境變量 DSH_HOME 指定 DSH 主目錄。每個源最多保留最近 120 篇,文章被裁剪時對應的已讀狀態會一併清理。想備份訂閱列表,用 OPML 導出。

接口

插件的後端在單個路由 /_dsh/dsh-reader/api 上,前端就是它的使用者。接口如下:

方法 參數 說明
GET op=state 訂閱列表 + 統計
GET op=items&feed=&unread=&starred=&q=&offset=&limit= 文章列表
GET op=item&id= 單篇正文
GET op=opml 導出 OPML
POST {action:'add', url} 添加訂閱
POST {action:'remove', id} 刪除訂閱
POST {action:'refreshAll'} / {action:'refresh', id} 刷新
POST {action:'read', id, read} / {action:'star', id, starred} 已讀/收藏
POST {action:'markAllRead', feedId} 全部已讀
POST {action:'import', opml} 導入 OPML

POST 請求需要帶 x-dsh-reader: 1 標記頭(瀏覽器跨站請求無法攜帶),並且接口只接受本機迴環訪問。寫一個腳本調這些接口時,記得補上這個頭。

適用場景與注意

適合這幾類人:

  • 想讓 DSH 會話旁邊順手讀訂閱、不想另開瀏覽器標籤頁的 DSH 用戶。
  • 用 OPML 管理多份訂閱源、需要定期導出備份的人。
  • 想在 DSH 內聯環境裏按已讀/收藏過濾文章,而不是用外部閱讀器來回切換的人。

需要注意的幾點:

  • 插件以當前 DSH 進程的權限運行。安裝第三方插件前先讀一遍源碼和許可證(該項目 package.json 中聲明的許可是 MIT),確認依賴和行爲符合預期再啓用。
  • 數據默認寫在 ~/.dsh/storages/dsh-reader/data.json,只有本地持久化,不會跨機器同步,換機器要用 OPML 導出再導入。
  • 正文渲染走 iframe + sandbox,不執行文章頁面腳本;但訂閱源本身是外部內容,仍建議只訂閱可信來源。
  • 這是社區目錄裏的第三方插件,與 DeepSeek / 幻方沒有官方從屬關係。

結尾

dsh-reader 把 RSS 閱讀收進 DSH 右側欄,訂閱管理放進設置頁,用本地 JSON 存狀態,提供了一條不離開當前工作區的讀長文路徑。如果你需要在 DSH 裏管理訂閱,可以先試試。

目錄頁:https://www.skillhub.cn/plugins/ShoWin2333/dsh-reader
代碼倉庫:https://github.com/ShoWin2333/dsh-reader

羽毛球分组比赛记分
小程序二维码

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

小夜