前言¶
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 插件列表。