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