DeepSeek Harness Hub
← 返回列表

RSS 订阅监控hgl011091/dsh-rss-monitor

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

定时抓取多源 RSS,过滤关键词并邮件推送新条目

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/11 · 已提供中文文档

DeepSeek Harness 原生 RSS 订阅监控插件:多源订阅、关键词过滤、定时检查去重、新条目邮件通知(缩略图 HTML 模板),SMTP 密码走凭据库永不落盘,原生设置页四页签体验。

综合分
30.2
GitHub 分
30.2
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add hgl011091/dsh-rss-monitor
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

📰 dsh-rss-monitor

DeepSeek Harness 原生 RSS 订阅监控插件 —— 定时检查、关键词过滤、新条目邮件通知,原生设置页体验

多源订阅 · 关键词过滤 · 智能去重 · HTML 邮件通知 · 凭据安全存储

DSH Plugin
Node
Tests
License

✅ 功能特点

| | 功能 | 说明 |
|---|---|---|
| 📰 | 多源订阅 | RSS 2.0 / Atom 均支持;添加前可"测试连接",预览标题与最新条目 |
| 🔳 | 关键词过滤 | 每源独立的"包含/排除"关键词(匹配标题与摘要),多个关键词逗号分隔 |
| ⏰ | 定时检查 | 间隔 1–1440 分钟可调(默认 5 分钟);顶部开关启停监控;随时手动"立检检查" |
| 🔄 | 智能去重 | md5(feedUrl\|guid\|\|link\|\|title) 前 16 位作为稳定 id,环形窗口上 1000 条 |
| 📧 | 邮件通知 | SMTP(SSL 465 等),精美 HTML 模板带缩略图卡片,3s/4s 指数退避重试,可发测试邮件 |
| 🧩 | 原生设置页 | 通过 slots 注入 Harness 设置界面:概览 / RSS 源 / 邮件通知 / 运行设置 四个标签,中英双语 |
| 🛳 | 概览面板 | 运行状态、上次/下次检查、最新发现(缩略图原比例、标题可点击)、检查历史(手动/自动、新条目数、错误) |
| 🎨 | 显示条数可调 | "最新发现"与"检查历史"各 1–100 行自行设置,已记录条目始终显示真实总数 |
| 🖧 | 自动刷新 | 设置页每 15 秒拉取状态,数据无变化不重渲染,窗口外后台自动暂停轮询 |
| 🔐 | 凭据安全 | SMTP 密码只存 Harness 凭据库(DSH_RSS_SMTP_PASS_*),配置文件中仅存引用 passRef,界面与磁盘均不见明文 |
| 🆕 | 🗓️ 时间窗口 | 自定义每周定时监控——按星期 + 时间段触发 |

🆕 v0.2.9 兼容性修复

本版本修掉了两个让设置页完全不可用的传输层问题(症状:加载报 cannot get property "webServer" without inject,或点任何按钮报 transport failure for /dsh-rss-monitor/: HTTP 405):

- RPC 挂载方式重构 — 不再用插件自定义通道 connection.rpc.handle('/dsh-rss-monitor', …),改为在共享 /api 通道下按端点注册精确 Fetch 路由(/api/dsh-rss-monitor.,共 11 条)。原因有三:
1. 注册自定义通道会在 dsh-client-connection 内部触及 webServer 服务;桌面端加载器直接应用条目、忽略模块级 inject 声明,所以服务未就绪时直接加载失败;
2. 当前桌面版本上,发往插件自定义通道的浏览器请求可能落进静态前端兜底(对 POST 一律回 405);
3. connection.fetch.register 完全不依赖 webServer,没有任何启动时序竞争;精确路由优先于内置网关拦截器,且与其它设置页共用同一套浏览器认证围栏。
- 客户端同步 — 浏览器端改用 connection.rpc.call('/api', 'dsh-rss-monitor.', …),与其它正常工作的设置标签页走同一条传输。
- 宿主版本声明 — peerDependencies 补充 @deepseek-ai/dsh-host-webserver 兼容版本(含 0.1.5-rc.1),商店的宿主要求检查不再告警。

宿主要求(v0.2.10 起精确声明):engines.dsh >= 0.1.2-rc.1——DSH Desktop 2.0.9(内嵌 host 0.1.5-rc.1)实测可用。0.1.2-rc.1 是 dsh-client-connection 引入 Fetch 路由 API(本插件传输层所依赖、同时移除 rpc.handle)的版本,经 npm 逐版本核实;更老的 0.1.0/0.1.1 线宿主无法运行,市场会在安装前直接拦截。另注:市场侧的清单事实有 24 小时缓存(profiles\desktop\.dsh-market\discovery-compatibility-v1.json),发布新版本后若商店显示未刷新,删除该缓存文件并重启 DSH 即可。

升级提示:从 ≤0.2.8 升级请先完全退出 DSH Desktop 再安装,重启后强刷页面(Ctrl+Shift+R)。

🆕 v0.2.0 新增

- 🗓️ 时间区间(按星期 + 时间段) — 自由勾选星期、设置开始/结束时间,仅在窗口期内执行 RSS 检查与邮件通知
- ⏯ 跨午夜支持 — 22:00-06:00 这类跨天窗口自动正确处理
- 🪟 窗口状态实时显示 — UI 上直观显示"窗口内 / 窗口外 / 未启用"
- 💾 单次保存 — 把"运行设置"的所有字段合并为一个保存按钮
- 🎛 移出方框的保存按钮 — 时间区间的保存按钮在方框外、右对齐
- 🌐 移除时区选择器 — 时区统一跟随系统时区
- ⚡ 5 轮性能优化 — rpcCall 稳定身份、5 个 React.memo、i18n Map 缓存、Fingerprint 差异比对、Slim lastKnownStatus、ConfigStore/StateStore snapshot 缓存、Controller.status() memo 化

🖼 界面预览

📥 安装

先选对你的客户端。 DSH 有两种发行版:

| 客户端 | 长什么样 | 插件如何被发现 |
|---|---|---|
| DSH Web(dsh web,Node 套) | 浏览器打开 localhost:9191 | 启动时官方 boot 组合自动发现已安装的 dsh.bundle 插件 |
| DSH Desktop(DSH Desktop.exe,Electron 桌面端) | 系统托盘的窗口 | 重启时官方 boot 组合 + 内置 dshmarket 的 shim-mount 完成发现 |

两种客户端都提供官方 dsh plugin 命令(desktop 上是 desktop-cli.js,内部把参数转发给 profile 目录里的 pnpm)。安装前先完全退出 DSH Desktop(托盘 → 退出)—— Windows 中 DSH 运行时持有的文件锁会让 pnpm 改名失败。

选哪条路径:

| 你的情况 | 路径 | 网络要求 |
|---|---|---|
| 本包已发到 npm(v0.2.0 起),任何网络 | 方式一(推荐) | npm registry(国内可达) |
| 能直连 GitHub(境外、有代理) | 方式二 | codeload.github.com |
| 想用预构建包、不想等 npm | 方式三 | github.com Releases |
| 离线 / 开发联调 / 发布前的脚底 | 方式四 | 无(本地 clone) |

方式一:npm 安装(推荐;Web / Desktop 通用)

前提:本包已发布到 npm(发布步骤见 PUBLISH.md)。

DSH Desktop(务必带 @精确版本 + --save-exact,见下方 ⚠)
dsh plugin --profile desktop add -wE "dsh-rss-monitor@0.2.10"

DSH Web
dsh plugin --profile web add dsh-rss-monitor

完成后启动 DSH Desktop(或刷新 dsh web 页面),设置 → "RSS 监控"。

⚠️ Desktop 专属坑:依赖必须是精确版本。 桌面端的 bundle 加载器只解析 dsh.profile.bundles 中精确版本的 profile 依赖:pnpm 默认写入的 ^0.2.9 范围值会被静默跳过——装完、重启都不生效,且无任何报错。所以请:
1. 安装时带 @0.2.9 并加 -E(--save-exact);
2. 装完自查:打开 %USERPROFILE%\.dsh\profiles\desktop\package.json,dependencies 里应是 "dsh-rss-monitor": "0.2.10"(没有 ^),且 dsh.profile.bundles 数组里含 "dsh-rss-monitor";
3. 若版本带 ^,用 pnpm remove -w dsh-rss-monitor 再 pnpm add -wE "dsh-rss-monitor@0.2.10" 重装(需先完全退出 DSH)。

方式二:GitHub 源安装(需直连 GitHub)

dsh plugin --profile desktop add -w github:hgl011091/dsh-rss-monitor

原理:pnpm 从 codeload.github.com 拉取源码 tarball。中国大陆网络实测连不上 codeload(连接被重置) —— 会卡在 fetch 超时或直接失败,届时请改用方式一或方式四。装完请按方式一的 ⚠️ 自查 manifest(Desktop 只认精确版本/路径型 spec)。

方式三:GitHub Release 预构建 tarball

dsh plugin --profile desktop add -w "https://github.com/hgl011091/dsh-rss-monitor/releases/latest/download/dsh-rss-monitor.tgz"

Release 资产在国内的可达性通常好于 codeload,但同样不保证。装完请按方式一的 ⚠️ 自查 manifest。

方式四:本地克隆 + link(离线 / 开发联调 / 发布前脚底)

1. 克隆(目录随意;lib/ 构建产物已自包含,无需 npm install)
git clone https://github.com/hgl011091/dsh-rss-monitor.git D:\plugins\dsh-rss-monitor

2. 完全退出 DSH Desktop(系统托盘 → 退出;或任务管理器结束所有 DSH Desktop.exe)

3. 官方 CLI 安装(内部转发给 profile 里的 pnpm,自动建 junction + 改 manifest)
dsh plugin --profile desktop add -w "link:D:\plugins\dsh-rss-monitor"

4. 启动 DSH Desktop → 设置 → "RSS 监控"

升级与卸载:

升级(拉新代码后重启 DSH Desktop 即可,junction 指向的是目录本身)
git -C D:\plugins\dsh-rss-monitor pull

卸载
dsh plugin --profile desktop remove dsh-rss-monitor

自动化脚本(做齐健康检查 + 清残留 + 退出 DSH + 安装):

irm https://raw.githubusercontent.com/hgl011091/dsh-rss-monitor/main/install-dsh-desktop.ps1 -OutFile install.ps1
.\install.ps1 -PluginPath D:\plugins\dsh-rss-monitor

⚠️ 三条实测教训(都踩过):

1. 占位路径必须替换。 黏贴 /path/to/... 的话,pnpm 解析失败也会把依赖写到 profile 的 package.json(pnpm 在完成前就落盘),留下一行 link:/path/to/... 并显示"已安装,未生效。"的就是它。清除方法:dsh plugin --profile desktop remove dsh-rss-monitor 或手工删掉那一行。
2. 脚本改 package.json 必须用 -Encoding utf8NoBOM。 Windows PowerShell 5.1 的 -Encoding UTF8 写出带 BOM 的文件,DSH 的 JSON.parse 直接拒绝 → DSH Desktop 整个无法启动(报 Unexpected token '锘?)。最好根本别手工改 manifest,交给 pnpm。
3. 只建 junction 不够。 不改 manifest、不产生"新增"事件,DSH 的 hot-mount 监视器不会挂载它 —— 必须走 dsh plugin add / pnpm add。

故障排查:设置页没有"RSS 监控"?

1. 看 DSH Desktop 是否真加载了 host 端
Get-Content "$env:APPDATA\DSH Desktop\logs\dsh-$(Get-Date -Format yyyy-MM-dd).log" |
Select-String "dsh-rss-monitor" | Select-Object -Last 5
期望看到 [dsh-rss-monitor-host] monitor restored, interval 5 min
→ 有 = host 正常;没 = junction 没建好,回到第二步

2. 看 DSH profile manifest 是不是真的记录了 rss-monitor
Get-Content "$env:USERPROFILE\.dsh\profiles\desktop\package.json" -Raw |
ConvertFrom-Json | Select-Object -ExpandProperty dependencies
期望看到 dsh-rss-monitor: link:D:\plugins\dsh-rss-monitor

3. 看 cordis.yml 有没有 include 该
Get-Content "$env:USERPROFILE\.dsh\profiles\desktop\cordis.yml" -Raw
应该是带 - id: dsh-rss-monitor 的列表;空就说明 hot-mount 监视器没跑(或之前 boot 失败过)
手动补一条也行(DSH 下次启动会合并进 bundle):
@'
- insert:
- id: dsh-rss-monitor
name: dsh-rss-monitor
'@ | Set-Content "$env:USERPROFILE\.dsh\profiles\desktop\cordis.patch.yml" -Encoding utf8NoBOM
然后再次重启 DSH Desktop

🕹 使用

1. RSS 源 → "+ 添加 RSS 源",填名称与 URL,可选关键词过滤,先"测试连接"再保存
2. 邮件通知 → 填 SMTP 主机/端口/账号/密码/收件人,保存后"发送测试邮件"验证(各大邮箱需使用授权码)
3. 运行设置 → 调整检查间隔与"最新发现 / 检查历史"显示条数;顶部开关启停监控
4. 概览 → 查看运行状态、最新发现的最新条目与检查历史;支持一键清除(带确认弹框)

🗓️ 时间窗口 (v0.2.0+)

在"运行设置"中可启用"时间区间"功能:

- 按星期选择:周日~周六任意勾选(不勾选任何天 = 每天)
- 开始 / 结束时间:设置每天的检查窗口(如 09:00–23:00)
- 跨午夜:22:00-06:00 这类跨天窗口自动正确处理
- 窗口内自动检查:只有在窗口期内,定时器才会真正拉取 RSS;窗口外自动暂停
- 窗口外状态显示:UI 实时显示"当前在窗口内/外/未启用"

🎛 架构

dsh-rss-monitor/
├─ src/                 # Host/Client 共享层
│  ├─ protocol.mjs      #   协议单一来源:通道名、端点、限值、归一化规则
│  ├─ monitor.mjs       #   定时调度 + 有界并发检查 + 去重窗口
│  ├─ controller.mjs    #   11 个 RPC 端点的业务处理
│  ├─ config-store.mjs  #   配置存储(原子写、规范化)
│  ├─ state-store.mjs   #   运行状态存储(去重/最近/历史)
│  ├─ feed-fetcher.mjs  #   rss-parser 包装 + 缩略图提取
│  ├─ email-notifier.mjs#   nodemailer 包装(验证 + 重试)
│  ├─ schedule-window.mjs # 时间窗口判定(按星期 + 时间段)
│  └─ rpc.mjs           #   RPC 安装:共享 /api 通道下的精确 Fetch 路由(11 条)
├─ plugin-src/host/     # Host 插件入口(inject: connection, credentials) esbuild 构建
├─ plugin-src/client/   # React 设置页(slots/locale/样式/i18n) esbuild 构建
├─ lib/                 # 构建产物:index.js(Host, ESM node22)、client.js(Client, CJS)
└─ test/                # node:test 单元测试套件

🗓 License

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群