前言¶
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