dsh-auto-email:每天三封 AI 动态邮件

前言

DSH(DeepSeek Harness)的理念是「一切皆插件」,开发者通过插件扩展桌面端智能体的能力。对于习惯用命令行或脚本驱动工作流的用户,手动浏览信源、筛选内容、整理邮件既耗时又难以自动化。x-xyy/dsh-auto-email 插件提供了另一种思路:把它当作命令行工具,在后台定时跑,每天自动把精选的 AI 动态投递到邮箱。

这是什么

dsh-auto-email 是一个为 DSH Desktop 编写的插件,也可以完全脱离 DSH 作为命令行工具使用。它每天定时抓取 10 个信源,通过程序打分和 LLM 排序,选出 3 条最值得关注的 AI 技术动态,生成带四段式解读的邮件推送。

插件零 npm 依赖,只用 Node.js 内置模块。维护者 X-Xyy。

核心功能

插件核心流程如下:

采集 10 个信源 → 时间窗过滤 → 事件聚类 → 程序打分 → LLM 排序
      → 主题多样化精选 3 条 → LLM 写四段式解读 → 渲染邮件 → SMTP 投递

每封邮件包含 3 条动态,每条包含:

  • 中文标题:一句话说明「谁 + 做了什么 + 关键数字」
  • 原文标题:保留原文便于搜索
  • 来源与时间:标注信源层级(T1/T2/T3)、发布时间、主题簇
  • 可信度徽章:🟢 交叉验证 / 🟡 单一来源 / ⚪ 信息不足,由程序客观计算
  • 📌 事实:只复述原文,不添加原文没有的事实
  • 🔍 为什么重要:解释机制与因果
  • 🎯 对你的影响:可操作的判断(要不要跟进、等什么信号)
  • ⚖️ 存疑点:原文没给全的地方如实说明

解读字数按重要性 × 技术新颖度自动伸缩:越难越新的写得越长(120–400 字),单纯的融资稿重要性高但新颖度低,解读就短。

安装与启用

方式 A:dsh plugin(推荐)

dsh plugin --profile web add github:X-Xyy/dsh-auto-email

包里的 cordis.patch.yml 声明了 host 半边的挂载,package.json 的 dsh.bundle 让 loader 自动应用它。重启(或刷新浏览器页面)后侧边栏面板出现。

卸载:

dsh plugin --profile web remove dsh-auto-email

方式 B:本地挂载

一条命令(拷贝 + 挂载,幂等,可回滚):

node scripts/install.mjs --mount      # 先加 --dry-run 看它会写哪里
node scripts/install.mjs --unmount    # 卸载

它把 package.json 与 lib/ 拷到 %APPDATA%\dsh-desktop\plugins\dsh-auto-email,再在 %APPDATA%\dsh-desktop\harness\profiles\web\cordis.patch.yml 里维护一个带围栏标记的挂载块。

配置

凭据文件

凭据不写进配置文件,单独放一个文件:

%APPDATA%\dsh-desktop\dsh-auto-email.secret.json

{
  "deepseek_api_key": "sk-...",
  "smtp_username": "you@qq.com",
  "smtp_auth_code": "你的SMTP授权码",
  "recipients": ["you@qq.com"]
}
  • deepseek_api_key 用 DeepSeek 开放平台的 Key,也可以用环境变量 DEEPSEEK_API_KEY。
  • smtp_auth_code 是邮箱的 SMTP 授权码,不是登录密码。QQ 邮箱在「设置 → 账号 → POP3/SMTP服务」里开启后生成。
  • 用非 QQ 邮箱时,改 email.smtp_host / email.smtp_port / email.use_ssl 即可。

检查是否配好:

node bin/dsh-auto-email.mjs --status

可调项

键 默认 说明
digest.top_n 3 每封邮件几条
digest.window_hours 26 主时间窗(小时)
digest.fallback_window_hours [48, 72] 主窗不够时逐级回溯
digest.min_importance 6 重要性门槛
schedule.time "08:00" 每天推送时刻(HH:MM)
schedule.catch_up_hours 12 错过多久之内还补发
schedule.enabled true 关掉调度,只留手动
digest.send_when_empty true 当天没有任何达标内容时,是否仍发一封「今日无重大动态」
llm.model "deepseek-chat" 排序与解读用的模型

典型用法

命令行工具

node bin/dsh-auto-email.mjs --dry-run -v     # 先干跑看看会选哪三条
node bin/dsh-auto-email.mjs                  # 真发
node bin/dsh-auto-email.mjs --if-due         # 幂等模式,给定时器调用

Windows 任务计划程序里注册一个每天 08:00 的任务,动作填 node <仓库路径>\bin\dsh-auto-email.mjs --if-due。--if-due 保证:没到点不发、今天发过就不再发。

从 Python 版接管历史(可选)

如果之前用过本仓库的 Python 版,它的 seen.json 记录了已推送过的标题哈希。本插件的哈希算法与它逐位一致(都是「标题归一化后取 sha1 的前 20 位十六进制」),可以整库搬过来:

node bin/dsh-auto-email.mjs --migrate <Python 版的 seen.json 路径>

侧边栏面板

DSH 插件列表里启用后,设置区上方会出现「每日AI」入口。面板里可以看今日状态、点立即发送、临时暂停、直接改配置和凭据、浏览历史归档。

它是怎么选的

信源(10 个,按层级加权)

层级 权重 信源 抓取方式
T1 一手官方 1.0 OpenAI News RSS
T1 1.0 Anthropic News 页面解析
T1 1.0 Google DeepMind Blog RSS
T1 1.0 Hugging Face Blog hf-mirror 镜像 RSS
T1 1.0 arXiv cs.AI/CL/LG/CV 官方 API
T2 权威媒体 0.7 量子位 RSS
T2 0.7 TechCrunch AI RSS
T2 0.7 MIT Tech Review AI RSS
T2 0.7 Simon Willison Atom + AI 关键词过滤
T3 社区信号 0.4 Hacker News Algolia API,≥50 分

刻意不接:机器之心(全站 WAF)、TLDR AI / The Rundown / Import AI / The Batch 等 Newsletter、AITOP100 / alphaXiv 等聚合器。理由:Newsletter 和聚合器都是对 T1/T2 的二次加工,接进来等于把同一件事数两遍,会虚增交叉验证的可信度。

三道闸门

闸门 1 · 程序打分

0.35 × 信源层级 + 0.25 × min(独立信源数/3, 1) + 0.20 × 时效衰减
  + 0.20 × 影响信号词命中 − 0.15 ×(摘要为空)

闸门 2 · LLM 逐条打分:重要性 0–10 与技术新颖度 0–10 是两个独立轴。

  • 重要性看影响面;新颖度看有没有技术增量
  • 四条硬性扣分:标题党/PR 软文/空洞评论;二手转述新颖度一律 ≤3;与 AI 技术无关的纯基建/人事/会议预告;摘要为空的条目重要性 ≤4、新颖度 ≤5,不得进精选
  • 融合:final = 0.70 × (0.55×重要性 + 0.45×新颖度)/10 + 0.30 × 程序分

闸门 3 · 精选约束:主窗内重要性 ≥6 的不足 3 条,就回退 48h、再 72h(宁缺毋滥);三条必须来自不同信源、不同主题、不同事件;T3 社区信源永不单独成条,必须有第二个信源印证。

可靠性设计

风险 处理
电脑在推送时刻睡眠/关机 四个触发器:08:00 定时 + 每 30 分钟轮询 + 登录 + 解锁,配合 --if-due 幂等闸门
重复投递 --if-due 读 state.json 的 last_sent_date,当天发过就退出 0
半夜开机被提前推送 --if-due 还有第二道守卫:早于 schedule.time 一律不发
单个信源抓取失败 失败信源在其余信源跑完后统一重试一次;仍失败就如实写进邮件告警条
arXiv / 站点限流 读 Retry-After,指数退避;403/404/410 直接放弃
模型把段标题写进正文 _strip_label 循环剥离
模型把解读写太长 三层控制:字段子预算 → 外科手术式重写 → 按句子边界程序化裁剪
模型幻觉来源 可信度徽章由程序算;无摘要条目降权且不得进精选
状态文件损坏 读失败就从空状态开始(最坏是多发一条,不是不发)
服务器不接受中文发件人 From 显示名做 RFC 2047 编码

适用场景与注意

适合需要每日跟踪 AI 动态但不想手动筛选的信源,特别是对技术细节和可信度有要求的用户。

注意:插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。社区目录与 DeepSeek / 幻方无官方从属关系。

短结尾

dsh-auto-email 把「谁说的、几个来源说的、有没有技术增量、原文给没给细节」变成可审计的分数,并把依据印在邮件里。如果你希望每天早上只看三条经过程序和 LLM 双重筛选的 AI 动态,可以把它加到 DSH 插件列表。

目录页 · GitHub

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

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

小夜