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

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

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

小夜