前言¶
DSH(DeepSeek Harness)的插件生態強調「一切皆插件」。對智能體開發者來說,如果模型要讀取外部資訊,常見做法是讓模型或代理自行發 HTTP 請求、解析 XML、處理日期和相對鏈接。這些步驟本身不復雜,但容易在不同訂閱源上出現不一致。
dsh-rss 把這些工作封裝成 DSH 插件工具:管理訂閱源,抓取並解析 RSS/Atom 條目,並支持 OPML 導入導出。
這是什麼¶
dsh-rss 是 DSH 的 RSS/Atom 訂閱工具插件。倉庫 owner 爲 STARDUSTLC666,倉庫路徑爲 STARDUSTLC666/dsh-rss,許可證爲 MIT。
它在 @deepseek-ai/dsh@0.1.1-rc.2 上驗證過(2026-08-26),運行時不 import 任何 @deepseek-ai/* 內部模塊。
它解決的問題比較具體:給 DSH 中的模型提供一組可直接調用的 RSS/Atom 工具,減少手動拼裝抓取、解析和訂閱維護邏輯。
核心能力¶
下面介紹已覈實的能力。
- 訂閱管理:
rss_list、rss_add、rss_remove。 - 抓取解析:
rss_fetch抓取並解析訂閱源;rss_check校驗地址;rss_search跨訂閱源按關鍵詞搜索條目。 - OPML:
rss_opml_export導出 OPML 2.0 文本;rss_opml_import從 OPML 2.0 文本批量導入訂閱源。 - 自檢:
rss_health提供插件自檢,無參數。 - 持久化:訂閱列表保存在 settings 的
dsh-rss命名空間feedsYaml字段中,rss_add/rss_remove會自動讀寫並持久化。 - 輸出歸一化:日期統一轉
ISO 8601 UTC,原始文本保留在pubDateRaw;相對鏈接按訂閱源地址解析爲絕對鏈接;摘要去 HTML 標籤並截斷到 500 字符;正文保留最多 20000 字符。 - 安全邊界:不解析 DTD/外部實體,內容只做文本抽取;響應體積上限 5MB;抓取超時默認 15000 毫秒。
- 配置項:
proxyUrl、timeoutMs、maxBodyBytes、userAgent、feedsYaml。
關於格式範圍,README 概述提到 RSS 0.9x / 1.0 / 2.0 與 Atom;已覈實的解析能力部分確認 RSS 2.0、RSS 1.0(RDF)和 Atom。RSS 0.9x 的具體支持範圍在本次資料中未完全展開,接入前建議先用 rss_check 和 rss_fetch 驗證目標源。
安裝與啓用¶
1、在目標 profile 中添加插件:
dsh plugin --profile web add dsh-rss
2、安裝後重啓 Web 服務。
如果需要移除:
dsh plugin --profile web remove dsh-rss
卸載後重啓 Web 服務。如果之前在本 profile 的 cordis.patch.yml 中手動覆蓋過插件行,可以再手動刪除對應配置。
配置¶
插件可以缺省加載,也可以用配置覆蓋默認值。在你自己的 profile 的 cordis.patch.yml 中,覆蓋 id: rss、name: dsh-rss 的 config:
- id: rss
name: 'dsh-rss'
config:
timeoutMs: 15000
# proxyUrl: http://127.0.0.1:7890
# maxBodyBytes: 5242880
# feedsYaml: |
# - url: https://example.com/feed.xml
# name: 示例訂閱
# category: 技術
上面示例只做說明,不是必須配置。
timeoutMs:抓取超時,毫秒,默認 15000。maxBodyBytes:訂閱源響應體積上限,默認 5MB。proxyUrl:給本插件抓取請求配置代理;只作用於本插件,不影響同進程其他插件。feedsYaml:預置訂閱列表,也可以用rss_add動態添加。userAgent:自定義抓取 UA;如需使用,按倉庫當前文檔和實際包版本確認取值。
典型用法¶
下面按“校驗、添加、抓取、搜索、導出導入”的順序介紹。
校驗與添加¶
rss_check { url: https://example.com/feed.xml }
rss_add { url: https://example.com/feed.xml, name: 示例訂閱 }
rss_check 的 url 必填。rss_add 的 url 必填,name / category 可選。
抓取與刪除¶
rss_fetch { name: 示例訂閱, limit: 10 }
rss_list
rss_remove { name: 示例訂閱 }
rss_fetch 的 url 或 name 至少提供一個,limit 範圍 1-100,默認 20。rss_remove 的 url 或 name 至少提供一個。
搜索與自檢¶
rss_search { query: "DeepSeek", limit: 20 }
rss_health
rss_search 的 query 必填,name / url / since / limit 可選。rss_health 無參數。
OPML 導入導出¶
rss_opml_export { path: subscriptions.opml }
rss_opml_import { opml: "<?xml version=\"1.0\"?>..." }
rss_opml_export 的 path 可選;rss_opml_import 的 opml 必填。
代理與存儲¶
如果部分訂閱源需要特殊代理才能連通,可以將 proxyUrl 配成本地代理地址,例如 http://127.0.0.1:7890,然後重啓 Web 服務。代理只作用於 dsh-rss 的抓取請求,不影響同進程其他插件。
訂閱列表保存在 settings 的 dsh-rss 命名空間(feedsYaml 字段)裏。同名訂閱建議用 url 區分;也可以用配置的 feedsYaml 預置初始列表。
適用場景與注意¶
適合在 DSH Web profile 中給模型接入 RSS/Atom 資訊源,尤其是需要統一解析、穩定抓取、批量導入 OPML 列表的場景。
使用前建議:
- 插件以當前 dsh 進程權限運行。安裝前應檢查源碼、依賴和許可證。
- 已覈實資料中依賴包括
fast-xml-parser、schemastery、undici、yaml;package.json的engines要求Node >= 22,當前包版本爲0.3.0。 - 本插件只做 RSS/Atom 文本抽取,不解析 DTD/外部實體;不要用它執行腳本、渲染頁面或處理任意二進制內容。
- 如果抓取失敗且提示需要代理,再考慮配置
proxyUrl。 - 倉庫資料還列出發佈前門禁:危險模式掃描、manifest 自檢、
pnpm audit --prod、全量測試,以及全新 profile 的真實啓動冒煙測試。
相關入口¶
GitHub:https://github.com/STARDUSTLC666/dsh-rss
目錄頁:已覈實資料中未提供可直接給出的目錄頁 URL;DSH 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。