dsh-rss:DSH 的 RSS/Atom 訂閱工具插件

前言

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_listrss_addrss_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 毫秒。
  • 配置項:proxyUrltimeoutMsmaxBodyBytesuserAgentfeedsYaml

關於格式範圍,README 概述提到 RSS 0.9x / 1.0 / 2.0 與 Atom;已覈實的解析能力部分確認 RSS 2.0、RSS 1.0(RDF)和 Atom。RSS 0.9x 的具體支持範圍在本次資料中未完全展開,接入前建議先用 rss_checkrss_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: rssname: dsh-rssconfig

- 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_checkurl 必填。rss_addurl 必填,name / category 可選。

抓取與刪除

rss_fetch { name: 示例訂閱, limit: 10 }
rss_list
rss_remove { name: 示例訂閱 }

rss_fetchurlname 至少提供一個,limit 範圍 1-100,默認 20。rss_removeurlname 至少提供一個。

搜索與自檢

rss_search { query: "DeepSeek", limit: 20 }
rss_health

rss_searchquery 必填,name / url / since / limit 可選。rss_health 無參數。

OPML 導入導出

rss_opml_export { path: subscriptions.opml }
rss_opml_import { opml: "<?xml version=\"1.0\"?>..." }

rss_opml_exportpath 可選;rss_opml_importopml 必填。

代理與存儲

如果部分訂閱源需要特殊代理才能連通,可以將 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-parserschemasteryundiciyamlpackage.jsonengines 要求 Node >= 22,當前包版本爲 0.3.0
  • 本插件只做 RSS/Atom 文本抽取,不解析 DTD/外部實體;不要用它執行腳本、渲染頁面或處理任意二進制內容。
  • 如果抓取失敗且提示需要代理,再考慮配置 proxyUrl
  • 倉庫資料還列出發佈前門禁:危險模式掃描、manifest 自檢、pnpm audit --prod、全量測試,以及全新 profile 的真實啓動冒煙測試。

相關入口

GitHub:https://github.com/STARDUSTLC666/dsh-rss

目錄頁:已覈實資料中未提供可直接給出的目錄頁 URL;DSH 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

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

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

小夜