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_fetchfetches and parses feeds;rss_checkvalidates addresses;rss_searchsearches entries across feeds by keyword. - OPML:
rss_opml_exportexports OPML 2.0 text;rss_opml_importbulk-imports feeds from OPML 2.0 text. - Self-check:
rss_healthprovides plugin self-check with no parameters. - Persistence: The subscription list is stored in the
feedsYamlfield of thedsh-rssnamespace in settings;rss_add/rss_removeautomatically read, write, and persist it. - Output Normalization: Dates are uniformly converted to
ISO 8601 UTC, with the original text preserved inpubDateRaw; 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¶
- Add the plugin to the target profile:
dsh plugin --profile web add dsh-rss
- 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 withrss_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, andyaml; theenginesfield inpackage.jsonrequiresNode >= 22, and the current package version is0.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.