前言¶
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 / 幻方无官方从属关系。