dsh-notify-email:DSH 任務與等待態的 SMTP 郵件通知

前言

跑 DeepSeek Harness(DSH)時,agent 可能在後臺長時間執行,或在 ask_user_question、工具授權處掛起等你操作。若人不在終端前,很容易錯過回合結束或待辦。常見做法是另開監控腳本或第三方推送,SMTP 郵件則往往還要單獨裝庫、把授權碼寫進配置文件。下面介紹社區插件 dsh-notify-email(維護者 HeIIoAgain):在任務結束、等待回答或授權時自動發信,並提供 send_email 工具與附件能力;實現上只用 Node 內置模塊,無額外運行時依賴。

這是什麼

dsh-notify-email 是面向 DeepSeek Harness 的 Cordis 插件,分類爲聯網工具。它通過 SMTP 把提醒和摘要發到你的郵箱,並註冊 send_email 供 agent 主動發信。SMTP 密碼不進 YAML,而是獨立文件或環境變量,每次發送實時讀取。

核心功能

觸發方式 說明
send_email 工具 你對 agent 說「把結果發我郵箱」,或定時任務到點後由 agent 調用;可帶附件
等待回答時 出現需要你選擇或補充信息時自動發提醒(notifyOnQuestion,默認開啓)
等待授權時 工具權限確認掛起時自動發提醒(notifyOnApproval,默認開啓)
回合結束摘要(可選) notifyOnTurnEnd: true 時,每輪結束把最終回覆摘要發到郵箱

自動通知爲 fire-and-forget,不阻塞 DSH 流程;發送失敗只寫 Host 日誌,不影響任務。

附件方面:支持 multipart/mixed、中文文件名(RFC 2231),按擴展名推斷 Content-Type;默認單文件 ≤ 20MB、每封 ≤ 10 個,可通過 maxAttachmentBytes、maxAttachments 調整。自動提醒(提問 / 授權 / 回合結束)不帶附件。

安裝與啓用

需要 Node.js ≥ 22 和可用的 DSH(插件開發時基於 @deepseek-ai/dsh 0.2.1)。安裝命令以倉庫 README 爲準:

# 從 npm(發佈後)
dsh plugin --profile web add dsh-notify-email

# 從 GitHub(commit 固定,推薦)
dsh plugin --profile web add github:HeIIoAgain/dsh-notify-email#<commit-sha>

# 本地目錄(開發調試)
dsh plugin --profile web add link:/path/to/dsh-notify-email

安裝後插件會加入該 profile 的 dsh.profile.bundles。把 web 換成你實際使用的 profile 名即可。

配置

配置寫在 profile 的 patch 層($DSH_HOME/profiles/<profile>/cordis.patch.yml)。config 按 id 覆蓋時需寫全所需字段:

- id: notify-email
  name: 'dsh-notify-email'
  config:
    smtpHost: smtp.qq.com
    smtpPort: 465
    secure: true
    user: you@qq.com          # 發件郵箱(= SMTP 登錄賬號)
    from: you@qq.com          # 發件人地址,一般與 user 相同
    to: you@qq.com            # 收件郵箱,多個用逗號分隔
    subjectPrefix: ''         # 標題前綴,留空則不加
    notifyOnQuestion: true
    notifyOnApproval: true
    notifyOnTurnEnd: false

發件地址必須與 SMTP 登錄賬號一致,否則 QQ / 163 等常見郵箱會拒信;收件地址可以是任意郵箱。

授權碼

SMTP 密碼不要寫進 YAML。推薦獨立文件(改完無需重啓 DSH):

mkdir -p ~/.dsh/notify-email
printf '%s' '你的SMTP授權碼' > ~/.dsh/notify-email/password
chmod 600 ~/.dsh/notify-email/password

也可用 passwordFile 指定路徑,或在啓動 dsh 前 export DSH_SMTP_PASSWORD(對應配置項 passwordEnv)。

常見郵箱參數(節選)

郵箱 smtpHost 端口 / secure 密碼
QQ smtp.qq.com 465 / true 開啓 SMTP 後的授權碼
163 smtp.163.com 465 / true 客戶端授權碼
Gmail smtp.gmail.com 465 / true(或 587 / false) 應用專用密碼
Outlook / Microsoft 365 smtp.office365.com 587 / false 賬戶或應用密碼

587 端口需 secure: false,插件會 STARTTLS;雲環境一般不宜使用 25 端口。

典型用法

  1. 直接對 agent 說:「把剛纔的結果發到我郵箱」 → 調用 send_email。
  2. 帶附件:「把 report.pdf 和 run.log 作爲附件發我郵箱」 → agent 傳 attachments(絕對路徑,或相對會話工作目錄)。
  3. 定時:用 DSH 自帶 schedule_create 建提醒,prompt 寫明「把結果發到郵箱」,到點觸發的回合裏 agent 會調 send_email。
  4. 每輪結束都要摘要:將 notifyOnTurnEnd 設爲 true。
  5. 自動通知未觸發時診斷:將 debugLog 設爲 true,日誌寫入 $DSH_HOME/notify-email/debug.log。

適用場景與注意

適合需要「手機郵箱收 DSH 待辦」、又不想爲 SMTP 再拉一堆 npm 依賴的開發者。插件以當前 dsh 進程權限 運行,附件路徑由調用方給出;安裝前請閱讀 GitHub 源碼 與 MIT 許可證,自行評估敏感內容經郵箱服務商轉發的風險。插件未聲明 Config schema,DSH 設置面板不渲染表單,配置走 patch + 授權碼文件是預期行爲。

若出現 535 authentication failed,優先覈對:客戶端授權碼、SMTP 已開啓、from/user 一致、授權碼未過期。user 或 to 爲空時自動通知不會註冊;手動 send_email 能發而自動提醒不能發時,可對照 README 中的 waterfall 事件說明排查。

結尾

dsh-notify-email 把 DSH 的等待態與可選回合摘要接到任意 SMTP 郵箱,並用零依賴 SMTP 客戶端支持 send_email 與附件。社區目錄頁:SkillHub - dsh-notify-email;源碼與完整配置表:GitHub - HeIIoAgain/dsh-notify-email。

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

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

小夜