DeepSeek Harness plugin

dsh-news

DSH Web GUI 新闻插件:侧边栏入口 + 弹窗聚合浏览国际新闻、知识科普、历史科普、AI 大模型新闻。Host 端 RSS 抓取/正文提取/图片代理(SSRF 防护 + 缓存),Client 端弹窗三视图(列表/阅读/设置)。

Jump to install

Source facts

Repository
SongChengMing1/dsh-news
Latest update
Aug 15, 2026
Category
Memory
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/SongChengMing1/dsh-news
Plugin: dsh-news
Author: SongChengMing1

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.en.mdSource · read only
README language

dsh-news

中文 · English

> ⏳ Still staring at the progress bar? > > Long-running DSH tasks — crawling, training, batch processing — can take minutes or more. Instead of waiting idly, turn that waiting time into reading time: > > Open "News" in the sidebar and catch up on world news · AI-model updates · science explainers · history facts — all in one modal. Articles are readable right inside the GUI (no external jumps), with one-click Chinese ⇄ English translation of titles and full text, plus support for custom RSS sources — all without leaving your workflow. > > When your task finishes, you've already caught up with the world. 🌍

A news plugin for the DSH Web GUI: a sidebar entry opens a modal that aggregates world news, science, history and AI-model news from public RSS feeds, with in-place reading (no external jumps).

!DSH Web GUI !License !npm

Preview

![dsh-news card list UI](img.png)

---

Table of Contents

  • [Features](#features)
  • [Installation](#installation)
  • [Usage](#usage)
  • [Custom RSS Sources](#custom-rss-sources)
  • [Built-in Sources](#built-in-sources)
  • [Architecture](#architecture)
  • [Development](#development)
  • [Disclaimer](#disclaimer)
  • [License](#license)

Features

CapabilityDescription
Sidebar entry"News" entry in the left sidebar; opens a modal (overlay / Esc / close button)
Four categoriesWorld news · AI-model news · science · history (17 built-in public feeds)
List browsingCategory tabs, time-descending card stream (source badge / title / summary / relative time / thumbnail)
In-place readingReadability article extraction + whitelist sanitization; article images proxied through the Host (hotlink protection)
Bilingual translation"Translate list" toggle auto-translates cards in view as you scroll (title + summary, retry on failure); with the toggle on, opening an article auto-translates title + full text (switch back to the original anytime); free Google endpoint (gtx), follows the GUI language, 24h Host cache
Default-source managementSources affected by anti-bot / site redesigns (The Paper, Kepuchina, Zhihu Daily, Jiqizhixin, 36Kr) are disabled by default — re-enable them in settings
Custom sourcesAdd any public RSS / Atom feed and read it immediately — in-place reading and translation apply to custom sources too
SettingsEnable/disable built-in sources, add/remove custom sources, refresh interval, image proxy, summary-only mode, RSSHub instance
i18nChinese / English (follows the GUI language, switches instantly)
CacheHost-side in-memory LRU + disk cache (feed 15 min / article 24 h / images 7 d)
SecuritySSRF protection (internal / reserved IPs / .local rejected), concurrency rate limiting, timeouts and graceful degradation

Installation

Option 1: npm (Recommended)

npm i @wilond/dsh-news
dsh plugin --profile web add @wilond/dsh-news

Restart dsh web after installing (Ctrl+C, then dsh web again) and refresh the browser — the "News" entry appears in the sidebar.

Option 2: From a local checkout

git clone https://github.com/SongChengMing1/dsh-news.git
cd dsh-news
pnpm install
pnpm build
dsh plugin --profile web add link:$PWD

> When developing locally, every code change requires a re-run of pnpm build (Host half) and a dsh web restart (Client half).

Uninstall

dsh plugin --profile web remove @wilond/dsh-news

Usage

1. Click the "News" entry in the sidebar to open the modal. 2. Switch categories in the top bar (All / World / AI / Science / History); use "↻" to force-refresh (bypasses the cache). 3. Toggle "Translate list" at the top of the list: cards in view are auto-translated as you scroll (title + summary; failed cards show "Retry"; toggle off to restore the original). With the toggle on, opening an article also auto-translates its title + full text (use "Show original" to switch back; when the toggle is off, click "Translate" manually). The "Open original" link at the bottom opens the source site in a new tab. 4. Click "⚙" for settings: enable/disable built-in sources, add custom sources, adjust the refresh interval (minutes), image proxy, summary-only mode, and RSSHub instance.

Settings are stored in browser localStorage (key dsh.news.config.v1) and shared across tabs.

Custom RSS Sources

Beyond the built-in feeds, any public RSS / Atom URL can be added. Here's an example with Hacker News:

1. Open the news modal and click "⚙" in the top-right corner to enter Settings. 2. In the Custom sources section, fill in:

FieldValue
------
NameHacker News
RSS URLhttps://news.ycombinator.com/rss
CategoryChoose from the dropdown (e.g. "World" or "AI")

3. Click "Add source", then "Save" — back in the list you'll see the new source's content. In-place reading and translation work on it just the same.

More ready-to-use example feeds:

SourceRSS URLSuggested category
Ars Technicahttps://feeds.arstechnica.com/arstechnica/indexAI
The Vergehttps://www.theverge.com/rss/index.xmlWorld
NASA Breaking Newshttps://www.nasa.gov/rss/dyn/breaking_news.rssScience
Smithsonian Magazinehttps://www.smithsonianmag.com/rss/latest_articles/History

> Tips: > > - The URL must start with http:// or https://; duplicate URLs are rejected. > - For sites without a native RSS feed, generate one with a self-hosted RSSHub instance and add that feed URL. > - Custom sources and all settings live in browser localStorage (key dsh.news.config.v1), shared across tabs.

Built-in Sources

> Note: all sources below are public RSS/Atom feeds; individual feeds may be temporarily unavailable due to site redesigns, anti-bot measures or network conditions — the UI shows a per-source degradation notice. Disable them in settings, or replace them via custom sources / RSSHub routes.

🌍 World News (5)

SourceFeed URLLang
BBC Worldhttps://feeds.bbci.co.uk/news/world/rss.xmlen
BBC Chinesehttps://feeds.bbci.co.uk/zhongwen/simp/rss.xmlzh
The Guardian Worldhttps://www.theguardian.com/world/rssen
NYT Chinesehttps://cn.nytimes.com/rss/zh
The Paper (澎湃新闻)https://www.thepaper.cn/rsszh

🔬 Science (4)

SourceFeed URLLang
Kepuchina (科普中国)https://www.kepuchina.cn/rss.xmlzh
ScienceDailyhttps://www.sciencedaily.com/rss/all.xmlen
LiveSciencehttps://www.livescience.com/feeds/allen
Zhihu Daily (知乎日报)https://www.zhihu.com/rsszh

🏛️ History (2)

SourceFeed URLLang
World History Encyclopediahttps://www.worldhistory.org/rss/en
History Extra (BBC History)https://www.historyextra.com/feed/en

🤖 AI-Model News (6)

SourceFeed URLLang
Jiqizhixin (机器之心)https://www.jiqizhixin.com/rsszh
QbitAI (量子位)https://www.qbitai.com/feedzh
TechCrunch AIhttps://techcrunch.com/category/artificial-intelligence/feed/en
The Verge AIhttps://www.theverge.com/rss/ai-artificial-intelligence/index.xmlen
MIT Tech Review AIhttps://www.technologyreview.com/topic/artificial-intelligence/feeden
36Kr (36氪)https://36kr.com/feedzh

Architecture

┌─ Browser (Client) ───────────────────────┐   ┌─ DSH Host process ──────────────────┐
│ Sidebar entry: DOM injection + observer  │   │ /news/feed    batch fetch + parse   │
│ Modal (React): list / reading / settings │──▶│ /news/article extract + sanitize    │
│ localStorage: dsh.news.config.v1         │   │ /news/img     image proxy (hotlink) │
│ i18n: en/zh (dsh-client-locale)          │   │ Cache: memory LRU + disk            │
└──────────────────────────────────────────┘   │ systemPrompt section (toggleable)   │
                                                  └─────────────────────────────────────┘
  • The Host keeps no business state: configuration lives in the Client (localStorage) and the source list is submitted with each fetch request; cache keys are source URLs, so multiple tabs stay consistent naturally.
  • All Client fetching goes through Host routes (bypassing browser CORS and source-site hotlink protection).
  • Host routes share the /news/* prefix; SSRF protection + proxy awareness (respects HTTPS_PROXY / NO_PROXY environment variables).

Development

pnpm typecheck   # tsc --noEmit
pnpm test        # vitest run (68 tests: guard/cache/rss/article/routes/config/feed-state/reading)
pnpm build       # tsdown → lib/ (host ESM + client ModuleLoader bundle)
node scripts/smoke-host.mjs      # real-network acceptance (3 routes + SSRF + cache)
node scripts/verify-articles.mjs # read-through verification on major sources

Disclaimer

  • Lists are mainly "title + summary + source link"; article bodies are only a temporary reading cache (24h expiry) — no permanent archiving, no redistribution / export.
  • Please respect each source's robots protocol and terms of use; if heavy usage triggers source-side risk control, disable the corresponding source in settings.
  • This plugin is not affiliated with any content source; all content copyright belongs to the original authors / sites.
  • The public RSSHub instance (rsshub.app) is rate-limited; this plugin does not depend on public instances — configure a self-hosted instance if needed.

License

BSD-3-Clause. See [LICENSE](LICENSE).