前言¶
在使用 DSH 或其他 AI 編碼代理時,經常需要啓動一個長時間運行的任務,然後離開電腦。任務結束後、被阻塞時,或者需要你做決策時,如果不在終端旁,很容易錯過進度更新。
dsh-email-push-master 解決的是這個問題。它通過郵件向你的手機郵箱發送單向通知:當 DSH 代理完成任務、遇到阻塞、準備提問或達到里程碑時,它會發送一封郵件提醒你回來處理。
插件介紹¶
這是一個由 JamesYasR 維護的 DSH 插件,也是對開源項目 dsh-notify-skill 的一個硬核分支。它的核心設計是將發送器(sender.mjs)打包進技能中,完全依賴 Node.js 內置的 tls 和 net 模塊,不依賴第三方庫。這樣做的好處是發送過程確定性強,並且在 Windows 環境下避免了 .NET SmtpClient 在端口 465 上常見的心跳卡死問題。
核心功能¶
該插件主要提供以下能力:
- 多場景通知:支持在目標完成、任務阻塞、需要決策或長任務里程碑時觸發郵件。
- 零依賴發送器:使用 Node.js 原生模塊,無需額外安裝 SMTP 庫。
- 智能錯誤處理:對錯誤進行結構化分類(如 535 認證失敗、550 收件人無效、網絡錯誤)。
- 自檢功能:提供
--check標誌,用於在不發送郵件的情況下驗證配置和 SMTP 認證狀態。 - 自動推斷 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 代理的“離線助手”,確保你不會錯過任何關鍵進度。