DSH-RSS: RSS/Atom Feed Tool Plugin for DSH

Preface

The DSH (DeepSeek Harness) plugin ecosystem emphasizes “everything is a plugin.” For agent developers, if a model needs to read external information, the common approach is to have the model or agent make HTTP requests itself, parse XML, and handle dates and relative links. These steps are not inherently complex, but they tend to be inconsistent across different feeds.

dsh-rss encapsulates these tasks as DSH plugin tools: managing feeds, fetching and parsing RSS/Atom entries, and supporting OPML import/export.

What This Is

dsh-rss is an RSS/Atom subscription tool plugin for DSH. The repository owner is STARDUSTLC666, the repository path is STARDUSTLC666/dsh-rss, and the license is MIT.

It has been verified on @deepseek-ai/dsh@0.1.1-rc.2 (2026-08-26) and does not import any internal @deepseek-ai/* modules at runtime.

The problem it solves is specific: providing a set of directly callable RSS/Atom tools for models in DSH, reducing the need to manually assemble fetching, parsing, and subscription maintenance logic.

Core Capabilities

The following are the verified capabilities.

  • Subscription Management: rss_list, rss_add, rss_remove.
  • Fetch and Parse: rss_fetch fetches and parses feeds; rss_check validates addresses; rss_search searches entries across feeds by keyword.
  • OPML: rss_opml_export exports OPML 2.0 text; rss_opml_import bulk-imports feeds from OPML 2.0 text.
  • Self-check: rss_health provides plugin self-check with no parameters.
  • Persistence: The subscription list is stored in the feedsYaml field of the dsh-rss namespace in settings; rss_add / rss_remove automatically read, write, and persist it.
  • Output Normalization: Dates are uniformly converted to ISO 8601 UTC, with the original text preserved in pubDateRaw; relative links are resolved to absolute links based on the feed address; summaries have HTML tags removed and are truncated to 500 characters; the body retains up to 20000 characters.
  • Security Boundaries: Does not parse DTD/external entities, content is only extracted as text; response size limit is 5MB; default fetch timeout is 15000 milliseconds.
  • Configuration Options: proxyUrl, timeoutMs, maxBodyBytes, userAgent, feedsYaml.

Regarding format scope, the README overview mentions RSS 0.9x / 1.0 / 2.0 and Atom; the verified parsing capabilities confirm RSS 2.0, RSS 1.0 (RDF), and Atom. The specific support scope for RSS 0.9x is not fully detailed in the materials available, so it is recommended to verify target sources with rss_check and rss_fetch before integration.

Installation and Activation

  1. Add the plugin to the target profile:
dsh plugin --profile web add dsh-rss
  1. Restart the Web service after installation.

To remove it:

dsh plugin --profile web remove dsh-rss

Restart the Web service after uninstallation. If you previously manually overrode the plugin line in cordis.patch.yml for this profile, you can manually remove the corresponding configuration.

Configuration

The plugin can be loaded with default settings, or you can override defaults with configuration. In the cordis.patch.yml of your own profile, override the config for id: rss, name: dsh-rss:

- 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: Example Feed
    #     category: Technology

The example above is for illustration only and is not required configuration.

  • timeoutMs: Fetch timeout in milliseconds, default 15000.
  • maxBodyBytes: Feed response size limit, default 5MB.
  • proxyUrl: Configures a proxy for this plugin’s fetch requests; only affects this plugin, not other plugins in the same process.
  • feedsYaml: Pre-configured subscription list, can also be added dynamically with rss_add.
  • userAgent: Custom UA for fetching; if needed, confirm the value according to the current repository documentation and the actual package version.

Typical Usage

Below is the sequence of “validate, add, fetch, search, export/import.”

Validation and Adding

rss_check { url: https://example.com/feed.xml }
rss_add { url: https://example.com/feed.xml, name: Example Feed }

The url field of rss_check is required. The url field of rss_add is required, while name / category are optional.

Fetching and Removing

rss_fetch { name: Example Feed, limit: 10 }
rss_list
rss_remove { name: Example Feed }

rss_fetch requires at least one of url or name, with limit ranging from 1-100 and a default of 20. rss_remove requires at least one of url or name.

Search and Self-check

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

The query field of rss_search is required; name / url / since / limit are optional. rss_health takes no parameters.

OPML Import/Export

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

The path field of rss_opml_export is optional; the opml field of rss_opml_import is required.

Proxy and Storage

If some feeds require a special proxy to be reachable, you can set proxyUrl to a local proxy address, such as http://127.0.0.1:7890, and then restart the Web service. The proxy only applies to dsh-rss fetch requests and does not affect other plugins in the same process.

The subscription list is stored in the dsh-rss namespace (the feedsYaml field) in settings. For feeds with the same name, it is recommended to distinguish them by url; you can also use the configured feedsYaml to pre-configure an initial list.

Applicable Scenarios and Notes

It is suitable for connecting RSS/Atom information sources to models in the DSH Web profile, especially in scenarios requiring unified parsing, stable fetching, and bulk OPML list imports.

Before use, it is recommended to:

  • The plugin runs with the permissions of the current dsh process. Check the source code, dependencies, and license before installation.
  • In the verified materials, dependencies include fast-xml-parser, schemastery, undici, and yaml; the engines field in package.json requires Node >= 22, and the current package version is 0.3.0.
  • This plugin only performs RSS/Atom text extraction and does not parse DTD/external entities; do not use it to execute scripts, render pages, or handle arbitrary binary content.
  • If fetching fails with a prompt indicating a proxy is needed, then consider configuring proxyUrl.
  • The repository materials also list pre-release gates: dangerous pattern scanning, manifest self-checks, pnpm audit --prod, full test suites, and real startup smoke tests on a fresh profile.

Related Links

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

Directory page: The verified materials do not provide a directly usable directory page URL; the DSH community directory is an independent site with no official affiliation to DeepSeek / High-Flyer.

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

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

Xiaoye