dsh-email-push-master:DSH 代理的離線郵件提醒插件

前言

在使用 DSH 或其他 AI 編碼代理時,經常需要啓動一個長時間運行的任務,然後離開電腦。任務結束後、被阻塞時,或者需要你做決策時,如果不在終端旁,很容易錯過進度更新。

dsh-email-push-master 解決的是這個問題。它通過郵件向你的手機郵箱發送單向通知:當 DSH 代理完成任務、遇到阻塞、準備提問或達到里程碑時,它會發送一封郵件提醒你回來處理。

插件介紹

這是一個由 JamesYasR 維護的 DSH 插件,也是對開源項目 dsh-notify-skill 的一個硬核分支。它的核心設計是將發送器(sender.mjs)打包進技能中,完全依賴 Node.js 內置的 tls 和 net 模塊,不依賴第三方庫。這樣做的好處是發送過程確定性強,並且在 Windows 環境下避免了 .NET SmtpClient 在端口 465 上常見的心跳卡死問題。

核心功能

該插件主要提供以下能力:

  1. 多場景通知:支持在目標完成、任務阻塞、需要決策或長任務里程碑時觸發郵件。
  2. 零依賴發送器:使用 Node.js 原生模塊,無需額外安裝 SMTP 庫。
  3. 智能錯誤處理:對錯誤進行結構化分類(如 535 認證失敗、550 收件人無效、網絡錯誤)。
  4. 自檢功能:提供 --check 標誌,用於在不發送郵件的情況下驗證配置和 SMTP 認證狀態。
  5. 自動推斷 SMTP 主機:針對 QQ 郵箱和 163 郵箱,如果未在配置中指定 smtpHost,插件會自動推斷對應的主機名和端口。

安裝與啓用

通過 DSH 插件機制安裝是最推薦的方式,它會自動註冊到 ctx.skills。

dsh plugin --profile web add dsh-email-push-master

也可以直接從 GitHub 安裝:

dsh plugin --profile web add github:JamesYasR/dsh-email-push-master

安裝完成後,重啓 dsh web 即可在會話技能列表中找到該插件。

典型用法

1. 配置文件

在技能目錄下,將 config.example.json 複製爲 config.json 並填寫。配置項包括髮件人郵箱、授權碼、收件人以及 SMTP 服務器信息。

{
  "email": {
    "smtpHost": "",
    "smtpPort": 465,
    "useSsl": true,
    "from": "your-address@qq.com",
    "authCode": "16-char authorization code",
    "to": "recipient@example.com"
  }
}

如果不填寫 smtpHost,插件會根據郵箱後綴自動推斷(如 @qq.com 對應 smtp.qq.com)。

2. 命令行發送

DSH 代理在運行時會調用打包好的 sender.mjs。命令格式如下:

node sender.mjs "subject" "body"

3. 自檢配置

在正式發送前,建議先運行自檢命令,確認網絡和授權碼無誤:

node sender.mjs --check

適用場景與注意

  • 環境要求:插件要求 Node.js 版本大於等於 18。
  • Windows 兼容性:由於 Windows 原生 SmtpClient 在端口 465 上存在已知問題,該插件使用 node:tls 進行 TLS 連接,解決了這個問題。
  • 安全規範:
    • config.json 和 notify.log 文件已被加入 Git 忽略列表,切勿手動提交或泄露。
    • 插件指令代理絕不在日誌或對話中打印授權碼。
    • 535 錯誤不重試:如果收到 535 認證失敗(通常由風控導致),插件不會自動重試,以防止賬號被進一步鎖定。
  • 其他代理:該插件的設計理念是“告知而非控制”,因此也兼容 Claude Code、Codex 等其他現代智能體,只要它們能讀取 SKILL.md 並調用 sender.mjs 即可。

結語

dsh-email-push-master 通過將 SMTP 邏輯內聯,提供了一個穩定、低風險的郵件通知方案。如果你習慣通過手機郵件處理工作流,這個插件可以作爲 DSH 代理的“離線助手”,確保你不會錯過任何關鍵進度。

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

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

小夜